묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
배웠던 내용을 기반으로 match3 인공지능으로 플레이 하는 걸 만들고 있는데.. 질문이 있습니다.
match3 게임을 agent가 플레이 하게 하려는 목적으로 시작 했습니다. 과거 match3 게임 개발해 논게 있어서 AbstractBoard 못쓰고 agent 학습 작업을 하였습니다.mlagent Release 21 버젼을 사용했습니다.먼저 퍼즐판은 8*7이고 블럭은 5색깔을 사용한다고 정의 했습니다.public class Match3MLAgentsBoard : Agent 클레스를 정의 하고유니티 mlagnet match3 샘플을 참고해서 8*7 퍼즐판을 색깔별로 있으면 1 없으면 0을 넣는 소스 입니다.public override void CollectObservations(VectorSensor sensor) { MapBoardData mapBoardData = gameMain.IngameData.CurBoardData; MapData mapData = gameMain.IngameData.MapData; int oneHotSize = 5; for (int y = 0; y < mapData.BoardColumns; y++) { for (int x = 0; x < mapData.BoardRows; x++) { SlotTile slotTile = mapBoardData.GetSlotTile(x, y); var type = slotTile.ColorBlock.BlockColorType; for (var i = 0; i < oneHotSize; i++) { sensor.AddObservation((i == (int)type) ? 1.0f : 0.0f); } } } }유니티 mlagnet match3 샘플을 참고해서 agent가 받는 소스를 만들었습니다.public override void OnActionReceived(ActionBuffers actionBuffers) { int aiIndex = actionBuffers.DiscreteActions[0]; MapBoardData mapBoardData = gameMain.IngameData.CurBoardData; var touchSlotIndex = (SharedInt)gameMain.behavior.GetVariable("touchSlotIndex"); var targetSlotIndex = (SharedInt)gameMain.behavior.GetVariable("targetSlotIndex"); int BoardRows = gameMain.IngameData.MapData.BoardRows; int BoardColumns = gameMain.IngameData.MapData.BoardColumns; int row, col; if (aiIndex < (BoardColumns - 1) * BoardRows) { col = aiIndex % (BoardColumns - 1); row = aiIndex / (BoardColumns - 1); int _Index = GetIndex(col, row); touchSlotIndex.SetValue(_Index); int _tarIndex = GetIndex(col + 1, row); targetSlotIndex.SetValue(_tarIndex); } else { var offset = aiIndex - (BoardColumns - 1) * BoardRows; col = offset % BoardColumns; row = offset / BoardColumns; int _Index = GetIndex(col, row); touchSlotIndex.SetValue(_Index); int _tarIndex = GetIndex(col, row + 1); targetSlotIndex.SetValue(_tarIndex); } Debug.Log("###OnActionReceived - end"); }보상은 매칭되는 블럭이 수 만큼 보상을 주도록 했습니다. 3개 매칭 되면 0.3점 4개가 매칭 되면 0.4점 이런식으로요. match3MLAgentsBoard = gameObject.GetComponent<Match3MLAgentsBoard>(); foreach (DamageObject damageObject in gameMain.IngameData.DamageList) { foreach (var baseObject in damageObject.BaseObjectBlocks) { gameMain.IngameData.mReward += 0.1f; rewardSum += 0.1f; } } match3MLAgentsBoard.AddReward(rewardSum); Behavior Paremeters 세팅 입니다.8*7*5=2808*(7-1) +7*(8-1) =97 해서 나온 값을 넣어 줬습니다.(유니티 셈플 계산법) mlagents-learn "C:\Users\TT\Desktop\ml-agents-release_21\config\ppo\Match3.yaml" --env=C:\MyProject\MatchPuzzle\Client\trunk\MatchPuzzle\run\MatchPuzzle.exe --run-id=InGameMain --force --no-graphics하고 나니 이렇게 나오고 학습이 안되었습니다..그래서 mlagent match3 샘플을 보니.Match3SensorComponentMatch3ActuatorComponent있다는걸 찾았고Match3SensorComponent에 Write(ObservationWriter writer) 부분과 Match3ActuatorComponent의 OnActionReceived(ActionBuffers actions)부분을 흉내 내어 Component을 만들고Match3MLAgentsBoard CollectObservations 함수와 OnActionReceived함수는 주석을 쳤습니다.그리고 실행mlagents-learn "C:\Users\TT\Desktop\ml-agents-release_21\config\ppo\Match3.yaml" --env=C:\MyProject\MatchPuzzle\Client\trunk\MatchPuzzle\run\MatchPuzzle.exe --run-id=PuzzleMatch3Sencor --force --no-graphics 여전히 학습이 안되여서.. 유니티 mlagent가 제공하는 match3 샘플을 돌려 보기로 했습니다. mlagents-learn "C:\Users\TT\Desktop\ml-agents-release_21\config\ppo\Match3.yaml" --env=C:\Users\yree1\Desktop\ml-agents-release_21\Project\Match3Run\UnityEnvironment.exe --run-id=UnityMatch3Data --force --no-graphics 샘플도 딱히 학습이 된다고 보기 어려워서.. 혹시 너무 짧아서 학습이 제대로 안되었다고 생각되어 더 길게 학습을 하였습니다. 여전히 학습이 제대로 안되는거 같아서 mlagnet 셋팅 환경이 문제일지 몰라서 3dball 프로젝트를 돌려 봤습니다.mlagents-learn "C:\Users\TT\Desktop\ml-agents-release_21\config\ppo\3DBall.yaml" --env=C:\Users\yree1\Desktop\ml-agents-release_21\Project\3DBallRun\UnityEnvironment.exe --run-id=3DBallData --force --no-graphics 엄청 학습이 잘됩니다. 3dball만 잘 학습 됩니다..혹시나 싶어서 Release 20에서도 학습을 진행 했지만.. 결과는 똑같이 제대로 학습 되지 않았습니다. 제일 궁금한건 왜 match3 agent가 잘 학습을 못하는지 굼금합니다..제가 만든건 왜 학습이 안되는지..궁금 하지만 더 궁금한건.. 유니티에서 제공하는 match3은 문제가 없을텐데.. 제가 뭔가 명령어 옵션이나.. 등등을 놓친게 있을까요?? 정말 아무것도 손 안되고 Release 21압축 풀고 바로 돌린건데요. 그 외에 몇까지 궁금한게 있습니다.학습을 시키면 어느Step까지 기다리고 학습을 평가 해야 되는지..아까보여 드렸든 match3 보상 값은 올라 갔다 내려갔다 계속 값이 왔다 갔다만 있습니다.. 이걸 계속 기다리다보면 언젠가 학습을 잘하게 되는지..값이 계속 왔다 갔다 거리면 그만 해야 되는지..학습이 실패 했다고 정확하게 아는 방법이 있나요? 유니티 mlagent가 제공하는 match3은 왜 Agent을 상속 받아 CollectObservations,OnActionReceived함수를 정의 안하고.. Match3SensorComponent,Match3ActuatorComponent 만들어서 학습을 진행 했는지 궁금합니다. match3 센서값 엑터값을 위에 적은 방법이 아닌 다른 방식으로 많이 셋팅 해봤습니다. 그러나 제대로 학습 되는 경우가 없었습니다.. 인공지능 ppo 알고리즘이 제대로 된 결과값을 얻을 수 있는 팁이나 약간의 규칙(이렇게 하면 조금 잘된다..) 이런게 있을까요?Match3.yaml 파일만 유일하게 learning_rate_schedule: constant을 쓰고 있습니다. 나머지 파일은 전부 learning_rate_schedule: linear 쓰고 있습니다. constant,linear 차이가 뭔가요?? constant을 linear 로 바꾸고 학습 했지만.. 결과는 여전히 학습 되지 않았습니다.파이썬으로 ppo 구현해서 유니티랑 연동하면 왜 학습을 잘 못하는지.. 어떻게 하면 잘 할수 있는지.. 등등이 도움이 될만한 것들이 있을까요? 기존 유니티가 제공하는 ppo를 쓰지 않고 python으로 제작해서 작업 하면 어떤 이득이 있을까요?match3 게임 말고 다른 게임에 mlagent를 적용하고 싶은데요.. match3 같은 색깔 블럭이면 게속 연결 가능한 게임 입니다. 프렌츠타워 라는게 임이 가장 유명합니다. 사진첨부 합니다.위에 게임처럼 연결 할 수 있는 블럭이 3개 ,4개 5개일수도 8*7이라면 56개 일수도 있는 상황은 Behavior Paremeters 세팅은 어떻게 하나요? 8*7퍼즐판이라면 discrete branches 56이되고 Branch 0~Branch 55까지 다 55값을 넣어서는 학습이 잘 안됩다.. 이걸 어떻게 해야 될지.. 전혀 몰르겠습니다. 긴글 읽어주셔서 감사합니다.. 수업 내용과 직접적인 관련이 없는 내용을 질문해서 죄송합니다. 하지만 여기 말고는 물어볼 곳이 없어서.. 이렇게 글 남기게 되었습니다. 감사합니다.
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mm_faster_rcnn_train_coco_bccd 학습시 수행이 안됩니다
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[20], line 4 2 mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) 3 # epochs는 config의 runner 파라미터로 지정됨. 기본 12회 ----> 4 train_detector(model, datasets, cfg, distributed=False, validate=True) File /opt/conda/lib/python3.10/site-packages/mmdet-2.28.2-py3.10.egg/mmdet/apis/train.py:163, in train_detector(model, dataset, cfg, distributed, validate, timestamp, meta) 156 model = build_ddp( 157 model, 158 cfg.device, 159 device_ids=[int(os.environ['LOCAL_RANK'])], 160 broadcast_buffers=False, 161 find_unused_parameters=find_unused_parameters) 162 else: --> 163 model = build_dp(model, cfg.device, device_ids=cfg.gpu_ids) 165 # build optimizer 166 auto_scale_lr(cfg, distributed, logger) File /opt/conda/lib/python3.10/site-packages/mmcv/utils/config.py:524, in Config.__getattr__(self, name) 523 def __getattr__(self, name): --> 524 return getattr(self._cfg_dict, name) File /opt/conda/lib/python3.10/site-packages/mmcv/utils/config.py:52, in ConfigDict.__getattr__(self, name) 50 else: 51 return value ---> 52 raise ex AttributeError: 'ConfigDict' object has no attribute 'device'^캐글--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-25-adb1a52111f0> in <cell line: 4>() 2 mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) 3 # epochs는 config의 runner 파라미터로 지정됨. 기본 12회 ----> 4 train_detector(model, datasets, cfg, distributed=False, validate=True) 2 frames /usr/local/lib/python3.10/dist-packages/mmcv/utils/config.py in __getattr__(self, name) 50 else: 51 return value ---> 52 raise ex 53 54 AttributeError: 'ConfigDict' object has no attribute 'device'^코랩 안녕하세요 좋은 강의 감사드립니다. import os.path as ospmmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))# epochs는 config의 runner 파라미터로 지정됨. 기본 12회train_detector(model, datasets, cfg, distributed=False, validate=True) 이 셀이 실행시 이러한 오류가 뜨는데 이유를 모르겠습니다
-
미해결뿌리 깊은 딥러닝
loss function 설명에서 질문
복잡한 모델일 수록 local minima와 global minima 의 차이가 거의 없다고 하셨는데요 복잡한 '모델' 이라는 점에서 이 '모델'은 layer로 구성된 neural network 인가요 아니면 loss function을 의미하는 것인가요 ?
-
미해결머신러닝/딥러닝 소개 및 학습을 위한 파이썬 속성 과정
수업진행 파일
깃허브에서 파일다운은 Python_Basic_to_Advanced-main로 했는데 수업진행은 SW_DL_Pytorch-main.폴더로 진행되는거 같습니다 파일 구성내용 자체가 다릅니다 sw폴더는 어디서 다운받나요? crash 부터 따라가려고 합니다
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
안녕하세요 라벨 관련 질문드려요
안녕하세요,제가 직접 가지고 있는 jpg 사진으로 labelme 5.21 버전으로 label하여 json 문서로 출력하려 fast-rcnn이나 mask-rcnn,yolo 으로 segmentation하려고 합니다. 혹시 수업 강의 자료로 할수있는지 궁금해서 질문올립니다~
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
사전 학습 모델에서의 layer 변경에 대한 질문
안녕하세요 강사님, 강의 잘 보고 있습니다.다름이 아니라, pretrained model에서 강의에서와 같이(1) model의 feature extraction 부분에서 Conv2d의 kernel_size를 줄이고 (2) model의 fully connected layer에서 출력 크기를 10으로 줄인 부분에서 의문이 있어서 글을 남기게 되었습니다.(2)의 경우는 사실 fully connected layer가 복잡한 구조..?를 가지지는 않는다고 생각하여 다시 학습하는 데 별로 문제가 없다고 생각합니다.하지만, (1)의 경우, 모델의 초반에서 아예 kernel size를 변경했고, 모델 프리징 강의에서 언급하신 바와 같이 그렇게 바꾸게 되면 임의의 랜덤 값으로 가중치가 초기화된다고 말씀하셨는데..! 그렇다면 Imagenet 모델로 사전 학습한 것이 의미가 있는건지 살짝 의문이 듭니다ㅠㅠ사전 학습 모델의 목적이 그대로 웨이트를 사용한다는 것보다 모델의 구조를 가져온다는 것이라면 납득이 되지만, 사전 학습에서의 가중치가 transfer learning 될 때 어떻게 사용되고 변하는지를 잘 몰라서 이런 궁금증이 생긴 것 같습니다..항상 좋은 강의 감사합니다!!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
이번에 불합격했는데요 ㅠㅠ
올해 말에 다시 보려는데 10월초면 강의가 끝나더라고요ㅜㅜ불합격했는데 수강연장은 안될까요?11월말이 시험인데 ㅠ
-
미해결모두의 한국어 텍스트 분석과 자연어처리 with 파이썬
강의에서 사용하는 csv 파일이 없습니다
0301 KLUE Dacon 데이터셋 소개, 텍스트 길이 분석강의에서 다루는 'topic_dict' csv 파일이 없습니다. 어디서 파일을 구할 수 있나요??
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
비전공자 직장 병행 합격했습니다.
비전공자(심지어 법학 전공입니다)에 직장 병행하면서 시험 준비했는데,강의 듣고 한번에 합격할 수 있었습니다. 강의가 체계적으로 잘 구성되어 있어서정말 도움이 많이 되었습니다. 시험 전날 늦은 시간에 질문 올렸는데도 친절하게 답변해주셔서 감사합니다.답안 제출 못할 뻔 했는데 빠르게 답변해주셔서 숙지하고 답안 잘 제출할 수 있었습니다 ㅎㅎ;
-
미해결[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]
df.corr(numeric_only=True).iplot() 에러 해결 어떻게 해야되나요?
vscode에서 ipynb파일에서 iplot사용 동일한 에러가 발생합니다. 타이타닉 문제로 시작하는 EDA: 수치형 데이터 분석 패턴1에서df.corr(numeric_only=True).iplot(kind='histogram', histfunc='count')했는데해당 에러가 발생합니다.현재 버전은 이렇습니다.plotly==4.14.3cufflinks==0.17.3
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
기분좋은 실기 합격입니다.
기분좋은 실기 합격인데 혹시 점수가 변동될 수가 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
(문의) 불합격해서 시험전 1~2달 전에 재수강하고 싶은데요.
유형2에서 전처리 전에 나머지(스탠다드스켈러, 트레인_테스트, 랜포만) 하고 돌렸을때 에러 떨어져서...긴장해서 시간보내다가...(라벨인코딩이나 겟더미 를 했어햐 하는데... )범주3개를 그냥 지워는 형태로 하고.랜포하고 400대의 평가점수... 그랬더니....유형2의 점수가 10점 주네요..나머지1,3도 모르는 문제+센스부족(오즈비5배)+문제이해부족(유의한 것 쓴 부분도 꺼꾸로 쓴 듯하고요)각각 틀려버려서 불합격했습니다만...궁금한점은...전에 1년짜리로 했는데... 1달 단위로 수강하는게 가능한 것 처럼 보이는데....가능한지요 ?그리고 기출에서 풀이는 있는데...빈노트형태가 없는 것도 있는데,... 이부분도 만들어져 있었으면 좋겠습니다.그리고 별도 최종 모의고사도 1~2개 추가 되었으면 참 좋겠습니다.. 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
제8회 실기 합격
비전공자 이공계 출신으로 직장 다니면서 올해 초시로 필기 준비해서 합격하고 실기 준비하다가, 실기 시험 6일 앞두고 제3유형에서 현타가 와서;; 웹서핑하다가 이 강좌를 발견했습니다. 6/16(일)에 결제하고 정말 열심히 퇴근후 (Python으로) 딴짓을 했습니다. 오늘 사전점수 확인을 했는데(시험장 나와서 제3유형에서 반올림 실수가 생각남;;) 95점(제1유형 30, 제2유형 40, 제3유형 25)으로 합격이네요. 정말 이 강의 덕분입니다. 큰 도움을 받았습니다. 고맙습니다~! *^^*p.s. 제2유형에서 평가지표 MAE가 40.xxx가 나왔는데, 승차인원이 타겟이여서 답 제출시 예측값을 int를 적용해서 제출했습니다(정수로 변경시 MAE는 40으로 내려감). 정수로 굳이 변경할 필요는 없었겠지만 평가지표가 개선되기에 정수형으로 제출했습니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
8회 빅데이터분석기사 합격이요! 좋은 강의 감사합니다.
덕분에 실기 잘 준비할 수 있었습니다. 감사합니다 ^^ 잘 배웠습니다 ㅎㅎ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 2번은 LinearReggression으로는 풀 수 없는건가요?
randomforest로도 해보고 Linear으로도 했는데 최종 제출은 Linear로 제출 했더니 10점이 나왔네요...
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
빅데이터분석기사 합격
비전공자인데, 강사님의 강의를 듣고 한 번에 붙을 수 있었습니다!시험 전까지 강의 문제와 캐글 문제까지 여러 번 복습했고, 그 결과 좋은 점수를 받을 수 있었던 것 같습니다.감사합니다!!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
8회 95점 합격 감사합니다
8회 첫실기 합격했습니다.비 전공자 직장인이라 걱정했는데다행히 한방에 붙었네요 ㅠㅠ 3유형 오즈비 *5 문제를 틀린것 같네요. 캐글 문제는 여유가 없어서 거의 못풀어봤고강의 쭉 보고 잘 안되는 3유형과 1유형 위주로 복습했습니다.마지막에 정리해서 올려주신 2유형 같은 방법으로 풀기, 마인드맵이 많은 도움이 됐습니다.감사합니다.
-
해결됨딥러닝 차세대 혁신기술 - 물리 정보 신경망 입문과 Pytorch 실습
안녕하세요? PINNs 입문공학자 입니다.
안녕하세요? 저는 열수력해석 알고리즘을 개발 중인 Thermal Engineer 입니다. 다중배관에 대한 수력학적 해석 알고리즘을 다루는데, 현재는 배관 내부의 유동해석을 regression 기법을 활용한 근사해를 구하는 방법을 활용중입니다.현재 알고리즘은 1 phase 해석은 어느 정도 수행하지만, 2 phase(non-slip condition) 해석에서 많은 난제가 있었습니다.(음함수 발생 등) 그래서 해당 문제를 머신러닝 기법을 활요하면 좋지 않을까 해서 PINNs에 관심을 갖게 되었습니다. 서론이 길었네요.. 나비에 스톡스 equation에 대한 예제를 pytorch로 구현해서 해를 구하는 방법은 해보신적 있으신지 궁금합니다. 제가 풀려는 문제의 핵심 방정식은 나비에 스톡스 equation에 종속되어 있거든요! 잘아시겠지만, PINNs이 정착해서 가장 각광받을 분야는 열/유체 분야가 될 것 같은데, 이에 대해서는 어떻게 생각하시는 지 궁금합니다^^ 감사합니다. 다른 강의들도 쭉 ~ 따라가며 강사님처럼 해당 분야 speciality를 갖고 싶네요 ^^
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
섹션3
from sklearn.metrics import precision_recall_curve# 실제값 데이터 셋과 레이블 값이 1일 때의 예측 확률을 precision_recall_curve 인자로 입력 precisions, recalls, thresholds = precision_recall_curve(y_test, pred_proba_class1 )print('반환된 분류 결정 임곗값 배열의 Shape:', thresholds.shape)print('반환된 precisions 배열의 Shape:', precisions.shape)print('반환된 recalls 배열의 Shape:', recalls.shape)print('thresholds 5 sample:', thresholds[:5])print('precisions 5 sample:', precisions[:5])print('recalls 5 sample:', recalls[:5]) precision_recall_curve 함수를 이용해 precisions, recalls, thresholds 값을 반환받는 과정입니다.여기서 thresholds의 개수가 precisions, recalls보다 1개 더 적게 나오는 이유가 궁금합니다.위에서 개수 차이로 인해 thresholds값에 따른 precisions, recalls값들이 대응되지 않는 위치에 존재하지 않나요?print('thresholds 5 sample:', thresholds[:5])print('precisions 5 sample:', precisions[1:6])print('recalls 5 sample:', recalls[1:6])이렇게 하는게 옳다 생각했는데 제 생각이 잘못되었는지 궁금합니다.
-
미해결머신러닝 엔지니어 실무
강의에서 제공된 URL 접속이 안됩니다.
해당 강의 자료의 위 링크의 접속이 안됩니다.