묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DQN 실행 오류
아래와 같이 에러가 발생하는데 원인을 못찾겠습니다. 도움 좀 부탁드립니다. github에 있는 DQN.py를 실행하였습니다. 10 Episode / Step: 152 / Score: -0.34 / Loss: nan / Epsilon: 1.000020 Episode / Step: 332 / Score: -0.57 / Loss: nan / Epsilon: 1.000030 Episode / Step: 455 / Score: -0.51 / Loss: nan / Epsilon: 1.000040 Episode / Step: 754 / Score: 0.01 / Loss: nan / Epsilon: 1.000050 Episode / Step: 1010 / Score: 0.15 / Loss: nan / Epsilon: 1.000060 Episode / Step: 1169 / Score: 0.25 / Loss: nan / Epsilon: 1.000070 Episode / Step: 1376 / Score: 0.20 / Loss: nan / Epsilon: 1.000080 Episode / Step: 1616 / Score: -0.33 / Loss: nan / Epsilon: 1.000090 Episode / Step: 1863 / Score: -0.04 / Loss: nan / Epsilon: 1.0000100 Episode / Step: 2091 / Score: -0.02 / Loss: nan / Epsilon: 1.0000... Save Model to ./saved_models/GridWorld/DQN/20240821214516/ckpt ...110 Episode / Step: 2316 / Score: -0.12 / Loss: nan / Epsilon: 1.0000120 Episode / Step: 2568 / Score: -0.34 / Loss: nan / Epsilon: 1.0000130 Episode / Step: 2755 / Score: -0.78 / Loss: nan / Epsilon: 1.0000140 Episode / Step: 2910 / Score: 0.06 / Loss: nan / Epsilon: 1.0000150 Episode / Step: 3190 / Score: -0.27 / Loss: nan / Epsilon: 1.0000160 Episode / Step: 3484 / Score: -0.48 / Loss: nan / Epsilon: 1.0000170 Episode / Step: 3752 / Score: -0.56 / Loss: nan / Epsilon: 1.0000180 Episode / Step: 3920 / Score: -0.76 / Loss: nan / Epsilon: 1.0000190 Episode / Step: 4142 / Score: 0.19 / Loss: nan / Epsilon: 1.0000200 Episode / Step: 4467 / Score: -0.42 / Loss: nan / Epsilon: 1.0000... Save Model to ./saved_models/GridWorld/DQN/20240821214516/ckpt ...210 Episode / Step: 4771 / Score: -0.30 / Loss: nan / Epsilon: 1.0000Traceback (most recent call last): File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 224, in <module> loss = agent.train_model() File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 141, in train_model q = (self.network(state) * one_hot_action).sum(1, keepdims=True) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1553, in wrappedcall_impl return self._call_impl(*args, **kwargs) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1562, in callimpl return forward_call(*args, **kwargs) File "/Users/neweins/Projects/project_unity/ml-agents/build/GridWorld/ref.py", line 83, in forward x = F.relu(self.conv1(x)) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1553, in wrappedcall_impl return self._call_impl(*args, **kwargs) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1562, in callimpl return forward_call(*args, **kwargs) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/conv.py", line 458, in forward return self._conv_forward(input, self.weight, self.bias) File "/opt/homebrew/Caskroom/miniforge/base/envs/mlagents/lib/python3.10/site-packages/torch/nn/modules/conv.py", line 454, in convforward return F.conv2d(input, weight, bias, self.stride,RuntimeError: Given groups=1, weight of size [32, 6, 8, 8], expected input[32, 168, 3, 64] to have 6 channels, but got 168 channels instead
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
ML-Agents 살펴보기 11페이지 질문입니다.
inference Device 타입이 default, GPU, Burst, CPU 4가지로 말씀주셨습니다. 제가 공부하는 PC환경은 mac인데 default, computer shader, burst, pixel shader로 타입이 보입니다. 왜 차이가 나는지와각 타입의 의미를 알 수 있을까요?
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
배웠던 내용을 기반으로 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값을 넣어서는 학습이 잘 안됩다.. 이걸 어떻게 해야 될지.. 전혀 몰르겠습니다. 긴글 읽어주셔서 감사합니다.. 수업 내용과 직접적인 관련이 없는 내용을 질문해서 죄송합니다. 하지만 여기 말고는 물어볼 곳이 없어서.. 이렇게 글 남기게 되었습니다. 감사합니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
3DBall 학습 중 문제
이런 식으로 잘 실행이 되었는데 이 이후에 이런 문제가 떠버리네요 환경 문제라고 나오는 거 같은데 전혀 모르겠습니다,,
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
mlagents-learn --hlep
학습 하기 전 mlagents-learn --hlep를 실행했는데 이런 문제가 생기네요,, 혹시 어떤 문제일지 알 수 있을까요?
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DQN 환경 학습
DQN 환경 학습에서 conv1 레이어로 들어가는 인풋이 [32,168,3,64] 사이즈로 들어가서 에러가 나는 상황입니다. state size를 확인해보니 84가 아닌 168이 계속 인풋으로 들어오는데, 유니티 환경이 잘못된 것일까요?
-
해결됨유니티 머신러닝 에이전트 완전정복 (응용편)
(PPO 실습 2) total_loss 구하는 코드에서 action entropy 는 어떻게 계산된 것인지 궁금합니다.
우선 좋은 수업 감사드립니다. PPO 알고리즘 수업에서 PPO Actor-Critic Network 의 전체 손실 값은 clipped surrogate objective - c1 * value loss (critic loss) + c2 * action entropy 라고 배웠는데, 관련 부분에 대한 코드를 보면 actor_loss = -torch.min(surr1, surr2).mean() critic_loss = F.mse_loss(value, _ret).mean() total_loss = actor_loss + critic_loss로 action entropy 에 대한 연산은 없는 것 같아 보입니다. 혹시 제가 잘못 알고 있거나, 다른 부분에서 이미 고려된 것이라면, 알려주시길 부탁 드립니다. 아니면 고려하지 않아도 되는 조건이라면 어떤 이유가 있는지 알고 싶습니다. 감사합니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DQN 함수를 어디에다 만들고 실행하나요??>?>
코드 설명과 실제 구동화면을 같이 보여주면 따라하기 편할거 같은데요..실제로 어떻게 구동하는지 나오지 않으니 따라가기 힘드네요
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
갑자기 Template>Scripts 폴더는 어디에서 만들어졌는지...
..
-
미해결유니티 머신러닝 에이전트 완전정복 (응용편)
예제 파일 실행 오류
a09.rnd_ppo.pya11.hypernetworks_ppo.py이 두 파일이 실행이 안됩니다. 나머지 파일은 잘 실행되네요.
-
해결됨유니티 머신러닝 에이전트 완전정복 (응용편)
PPO 알고리즘을 ml-agents learn 명령어로 학습 및 추론할때 메소드 호출 순서 질문
안녕하세요!먼저 기초편에 이어서 응용편 강의를 공개해주셔서 정말 감사합니다!! 해당 강의를 들으면서 PPO 알고리즘을 ml-agents learn 명령어로 학습 할 때와 추론할 때 메소드 호출 순서에 대해서 궁금합니다.이 내용이 궁금한 이유는 각 학습 또는 추론 과정에서 각 메소드별로 연산 시간을 측정하기 위해서 입니다. 관련 자료를 어디서 확인할 수 있을까요? 감사합니다!
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
mlagents-learn 에러 수정 방법을 문의드립니다.
안녕하세요 강의 잘 듣고 있습니다. 제가 Unity에서 3DBall 실행까지는 성공시켰습니다. 그런데 Anaconda 가상 환경에서 mlagents-learn 을 사용하여서 config\ppo\3DBall.yaml 유니티 빌드 경로 --run-id=tutorial_1 을 실행하는 것에서 에러가 떴습니다. 어떻게 수정을 해야 하는자 정말 모르겠습니다. 알려주시면 감사하겠습니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
Pyuthon API 적용
안녕하세요...ML-Agent 책을 사서 보다가 막히는데가 있어서 인강까지..찾아듣게 되었습니다.이전 mlagents-learn 으로는 진행을 했습니다. 이후Python API 예제 코드를 사용해서 학습하려고 합니다.그런데.... cmd 창에서 관련 파이썬 코드 Python_api.py 를 입력하면 아무런 변화가 없습니다.혹시 몰라서 한줄 한줄 입력할 때에는 무언가 변화가 있는거 같은데...파이썬 스크립트로 한꺼번에 진행하려고 하면 변화가 없는데요...어디서 무엇이 문제인지 알아볼 수 있을까요?관련 코드를 vs code로 살펴볼 때..의 mlagents_env.environment 부분에서 에러가 발생한다고 하는데.. 파이썬에서 한줄 한줄 입력할 때에는 괜찮은 거 같은데요... 참고로 윈도우에서 pip 로 python 팩키지 설치 및 가상 환경 구성해서 진행하고 있으며 - ml agents ver 2.0- pyhthon 3.9.9- pytorch 에서 토치 버전은 2.1.0 + cu118 입니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
GridWorld, CollectObservations에서 에러 질문입니다.
비슷한 주제로 네번째 글을 올리게 되었습니다. -.-;매번 답변에 항상 감사드립니다.몇몇 실수를 교정한 현재의 현상을 나열해 드립니다. 책 및 github의 스크립트를 따랐을 때(1) 실행 코드 (2)에러 화면동영상 강의 내용을 따랐을 때(1) 실행코드(2) 에러화면null==sensor 를 null!=sensor로 교정하였을 때(답변해주신 글 도움 받음)(1) 실행코드(2) 에러 화면 ※ observation size (6)와 observation size (2)의 인식이 문제인 것 같습니다. 도움 부탁드립니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
yaml을 이용한 GAIL 및 BC를 mlagents-learn으로 실행 시 에러
python API 를 이용한 BC는 무사히 잘 작동합니다.재밌네요. ㅎㅎ현재는 제목처럼, yaml에 GAIL 및 BC를 설정해서, 유니티의 mlagents-learn으로 실행하는 하는 것을 시도하고 있습니다.Kart.exe 의 창이 뜨고 잘 진행되는 듯하다가 다음과 같이 커맨트창에 에러를 내놓고 꺼집니다.저의 yaml 파일 내용을 다음과 같습니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
GridWorld, 유니티에서 실행하면 observation 관련 에러가 뜹니다.
에러 캡쳐기존에 score가 낮게 나온 것도 이것을 해결하지 않고 빌드해서 그런 것 같습니다.저의 GridAgent.cs에서 CollectObservation 함수 부분 캡쳐유니티 내 에이전트의 인스펙터의 설정도움 부탁드립니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
PPO Parameters에서 normalize 관련 질문입니다.
안녕하세요.개인 프로젝트를 진행하면서 강의를 보면서 많은 도움을 받고 있습니다. 좋은 강의 만들어주셔서 감사합니다.vector observation 입력을 정규화하려면 network settings에 normalize를 true로만 설정하면 되나요?예를 들어 Agent 코드에서 CollectObservation 메소드에 차량의 속도를 아래와 같이 정규화하지 않은 속도만 추가하고 paramater에서 normalize를 true로 설정하면 속도가 자동으로 normalize가 되는지 궁금합니다. public override void CollectObservations(VectorSensor sensor) {sensor.AddObservation(car.velocity);} 감사합니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
GridWorld 가 작동은 잘 되는데, score가 너무 낮게 나와요.
환경(GridWorld.exe)에서 학습하는 모습도 잘 나오고,터미널에서 학습 진행도 잘 되고,tensorboard에서 학습결과 그래프도 잘 나오는데요,정작 학습결과의 내용에서 score가 너무 낮게 나와요.학습이 잘 안 되고 있다는 뜻이겠죠.어디를 손 봐야 좋은 걸까요?DQN, A2C 모두 마찬가지입니다.pytorch 버전이 너무 낮아서 그런가 싶어서 높여줘도 마찬가지고요.(1.6.0 -> 1.12.1)tensorboard의 제 학습 결과 화면입니다.DQN 학습결과A2C 학습결과
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
GridWorld가 움직이지 않고, time out 으로 중지됩니다.
책을 먼저 사서 책 보고 따라하던 중 막혀서, 급하게 강의 등록하고 질문 드립니다.이렇게 좋은 책과 강의에 우선 감사드립니다.오류 문구는 다음과 같습니다.사용 패키지들의 버전을 다음과 같습니다.책 보고 따라 작성한 코드로 이런 현상이 있어서, github에서 다운 받은 파일로 해도 동일 증상입니다.저의 유니티 상의 설정은 다음과 같습니다. 해결에 도움 주시면 감사하겠습니다.
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
싱글에이전트 코드를 멀티에이전트 코드로 수정 관련
안녕하세요.좋은 강의 올려주셔서 항상 감사하게 보고 있습니다.파이썬 코드로 학습 코드를 작성할때 싱글에이전트만 고려한다고 하셨는데 멀티에이전트를 위한 코드를 작성하려면 바뀌는 부분이 많이 있나요?멀티에이전트를 위해서 코드를 수정한다면 참고할 수 있는 자료가 있을까요?적용하고 싶은 알고리즘은 ppo 입니다.감사합니다!