묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨유니티 머신러닝 에이전트 완전정복 (응용편)
닷지 ckpt 모델 파일을 onnx변환 후 unity에서 추론
안녕하세요. 닷지 ckpt 모델 파일을 onnx로 변환 후 unity에서 추론하는 방법에 대해 알려주실 수 있을까요? 제가 시도를 해보았을 때는 NullReferenceException이 나면서 정상 작동하지 않습니다. ml-agent learn에서 자동으로 출력되는 onnx파일들은 정상 작동이 되구요. 감사합니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
onnx에 대해서
MLAgent환경학습에 보면 학습이 끝나면 결과로onnx파일이 생성된다고 나와있는데DQN을 직접짜는 실습2에서도 맨마지막에 학습이 종료되면 onnx파일이 생성되는건가요? 제 경우엔 생성되지 않던데..1. 직접짜는 방식으로도 onnx는 생성되는게 맞는지2. 생성되지 않는다면 직접짜는 방식으로 어떻게 생성할수 있는지이 두가지가 궁금합니다.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
텐서플로우가 안열립니다
학습은 잘진행되는거같은데 이렇게 있는데 텐서보드에 가면 이렇게 뜨네요 어떻게 하죠?
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DQN을 위한 파라메터값 세팅에서 goal-plus, goal-ex
state_size에서 [3, 64,84]면은 아 알쥐비하고 해상도를 이용해 스테이트사이즈를 세팅했구나를 알겠는데goal-plus하고goal-ex하고나뉘어져 있는 이유를 모르겠습니다.각각goal-plusgoal-ex는 어떤 의미의 집합인가요?
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
dqn 인덱스 에러
dqn 학습 부분에서, index에러가 자꾸 납니다.. dqn.py는 github에 올려져 있는 것을 그대로 사용했습니다. < 에러 코드 >(colab) C:\Users\pss60\Desktop\ML-Agents_Project\agents>python dqn.py Traceback (most recent call last): File "C:\Users\pss60\Desktop\ML-Agents_Project\agents\dqn.py", line 218, in <module> state = preprocess(dec.obs[OBS], dec.obs[GOAL_OBS]) IndexError: list index out of range < GridAgent >using System; using UnityEngine; using System.Linq; using Unity.MLAgents; using Unity.MLAgents.Sensors; using Unity.MLAgents.Actuators; using UnityEngine.Rendering; using UnityEngine.Serialization; using System.Collections.Generic; public class GridAgent : Agent { [FormerlySerializedAs("m_Area")] [Header("Specific to GridWorld")] public GridArea area; public float timeBetweenDecisionsAtInference; float m_TimeSinceDecision; [Tooltip("Because we want an observation right before making a decision, we can force " + "a camera to render before making a decision. Place the agentCam here if using " + "RenderTexture as observations.")] public Camera renderCamera; VectorSensorComponent m_GoalSensor; private Transform agentTrans = null; private Vector3 moveRight = new Vector3(1, 0, 0); private Vector3 moveLeft = new Vector3(-1, 0, 0); private Vector3 moveUp = new Vector3(0, 0, 1); private Vector3 moveDown = new Vector3(0, 0, -1); public enum GridGoal { GreenPlus, RedEx, } // Visual representations of the agent. Both are blue on top, but different colors on the bottom - this // allows the user to see which corresponds to the current goal, but it's not visible to the camera. // Only one is active at a time. public GameObject GreenBottom; public GameObject RedBottom; GridGoal m_CurrentGoal; public GridGoal CurrentGoal { get { return m_CurrentGoal; } set { switch (value) { case GridGoal.GreenPlus: GreenBottom.SetActive(true); RedBottom.SetActive(false); break; case GridGoal.RedEx: GreenBottom.SetActive(false); RedBottom.SetActive(true); break; } m_CurrentGoal = value; } } [Tooltip("Selecting will turn on action masking. Note that a model trained with action " + "masking turned on may not behave optimally when action masking is turned off.")] public bool maskActions = true; const int k_NoAction = 0; // do nothing! const int k_Up = 1; const int k_Down = 2; const int k_Left = 3; const int k_Right = 4; EnvironmentParameters m_ResetParams; public override void Initialize() { m_GoalSensor = this.GetComponent<VectorSensorComponent>(); m_ResetParams = Academy.Instance.EnvironmentParameters; } public override void CollectObservations(VectorSensor sensor) { Array values = Enum.GetValues(typeof(GridGoal)); int goalNum = (int)CurrentGoal; // 현재 에이전트의 x, y 좌표 위치 값을 관측 정보에 추가 sensor.AddObservation(agentTrans.position.x); sensor.AddObservation(agentTrans.position.z); // 각각 도형에 대한 좌표 위치 값을 관측 정보에 추가 List<int> otherPos = area.otherPos; for (int i = 0; i < otherPos.Count; i++) sensor.AddObservation(otherPos[i]); // 목표 지점에 대한 정보 m_GoalSensor.GetSensor().AddOneHotObservation(goalNum, values.Length); } public override void WriteDiscreteActionMask(IDiscreteActionMask actionMask) { // Mask the necessary actions if selected by the user. if (maskActions) { // Prevents the agent from picking an action that would make it collide with a wall var positionX = (int)agentTrans.localPosition.x; var positionZ = (int)agentTrans.localPosition.z; var maxPosition = (int)m_ResetParams.GetWithDefault("gridSize", 5f) - 1; if (positionX == 0) { actionMask.SetActionEnabled(0, k_Left, false); } if (positionX == maxPosition) { actionMask.SetActionEnabled(0, k_Right, false); } if (positionZ == 0) { actionMask.SetActionEnabled(0, k_Down, false); } if (positionZ == maxPosition) { actionMask.SetActionEnabled(0, k_Up, false); } } } // to be implemented by the developer public override void OnActionReceived(ActionBuffers actionBuffers) { // 매 행동마다 -0.01 보상(패널티) 부여 AddReward(-0.01f); var action = actionBuffers.DiscreteActions[0]; // 에이전트가 이동하게 될 위치 값을 저장할 변수 (Vector3) var targetPos = agentTrans.position; switch (action) { case k_NoAction: // do nothing break; case k_Right: // 부여받은 행동이 오른쪽이라면, targetPos = agentTrans.position + moveRight; // 현재 위치에서 1만큼 x축 방향으로 설정 break; case k_Left: targetPos = agentTrans.position + moveLeft; break; case k_Up: targetPos = agentTrans.position + moveUp; break; case k_Down: targetPos = agentTrans.position + moveDown; break; default: throw new ArgumentException("Invalid action value"); } var hit = Physics.OverlapBox( targetPos, new Vector3(0.3f, 0.3f, 0.3f)); // 벽에 부딪히지 않았다면, if (hit.Where(col => col.gameObject.CompareTag("wall")).ToArray().Length == 0) { // 정해진 위치로 이동 agentTrans.position = targetPos; // +오브젝트 만났다면, if (hit.Where(col => col.gameObject.CompareTag("plus")).ToArray().Length == 1) { ProvideReward(GridGoal.GreenPlus); EndEpisode(); } // x오브젝트 만났다면, else if (hit.Where(col => col.gameObject.CompareTag("ex")).ToArray().Length == 1) { ProvideReward(GridGoal.RedEx); EndEpisode(); } } } private void ProvideReward(GridGoal hitObject) { if (CurrentGoal == hitObject) { SetReward(1f); } else { SetReward(-1f); } } // WASD 키보드로 에이전트 이동 public override void Heuristic(in ActionBuffers actionsOut) { var discreteActionsOut = actionsOut.DiscreteActions; discreteActionsOut[0] = k_NoAction; if (Input.GetKey(KeyCode.D)) { discreteActionsOut[0] = k_Right; } if (Input.GetKey(KeyCode.W)) { discreteActionsOut[0] = k_Up; } if (Input.GetKey(KeyCode.A)) { discreteActionsOut[0] = k_Left; } if (Input.GetKey(KeyCode.S)) { discreteActionsOut[0] = k_Down; } } // to be implemented by the developer public override void OnEpisodeBegin() { area.AreaReset(); Array values = Enum.GetValues(typeof(GridGoal)); CurrentGoal = (GridGoal)values.GetValue(UnityEngine.Random.Range(0, values.Length)); } public void FixedUpdate() { WaitTimeInference(); } void WaitTimeInference() { if (renderCamera != null && SystemInfo.graphicsDeviceType != GraphicsDeviceType.Null) { renderCamera.Render(); } if (Academy.Instance.IsCommunicatorOn) { RequestDecision(); } else { if (m_TimeSinceDecision >= timeBetweenDecisionsAtInference) { m_TimeSinceDecision = 0f; RequestDecision(); } else { m_TimeSinceDecision += Time.fixedDeltaTime; } } } }
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
2025년 pip ml agents 설치 에러
이 부분에서 설치시에 계속 에러가 나네요 ㅠㅠERROR: Could not find a version that satisfies the requirement mlagents==0.30.0 (from versions: 0.4.0, 0.10.0.dev1, 0.10.0, 0.10.1, 0.11.0.dev0, 0.11.0, 0.12.0, 0.12.1, 0.13.0, 0.13.1, 0.14.0, 0.14.1, 0.15.0, 0.15.1, 0.16.0, 0.16.1, 0.17.0, 0.18.0, 0.18.1, 0.19.0, 0.20.0, 0.21.0, 0.21.1, 0.22.0, 0.23.0, 0.24.0, 0.24.1, 0.25.0, 0.25.1, 0.26.0, 0.27.0, 0.28.0)ERROR: No matching distribution found for mlagents==0.30.0.
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
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)의 인식이 문제인 것 같습니다. 도움 부탁드립니다.