코랩에서 cartpole_reinforce.ipynb 실행시킬때 아래와 같은 에러 발생합니다. ValueError: Layer "my_model_1" expects 3 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 1, 4) dtype=float32>] 에러나는 소스 위치는 아래 화면에서 "y_pred = self(states, training=True)" 부분에서 에러가 발생됩니다. class MyModel(tf.keras.Model): def train_step(self, data): in_datas, out_actions = data states, action_matrix, rewards = in_datas[0], in_datas[1], in_datas[2] with tf.GradientTape() as tape: y_pred = self(states, training=True) action_probs = K.sum(action_matrix*y_pred, axis=-1) loss = -K.log(action_probs)*rewards trainable_vars = self.trainable_variables gradients = tape.gradient(loss, trainable_vars) self.optimizer.apply_gradients(zip(gradients, trainable_vars)) tensorflow 버젼 : 2.9.2 이며, 모델에 3개의 값을 주어야 하는데, 1개만 받아서 그런것 같습니다. 해결 방법 알려 주시기 바랍니다. 감사합니다.
C:\Unity\ml-agents-release_17>mlagents-learn config\ppo\3DBall.yaml --env=..3DBall\3Dball --run-id=tutorial_1 위 명령을 수행하니 아래 오류가 나타납니다. 'mlagents-learn'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 아나콘다 환경에서 해야 하는지요? 강의 ml-agent 설치 내용에는 아나콘다 환경 얘기가 없어는데, 강사님의 터미날 환경에서는 갑자기 아나콘다 환경이 나오고, 저는 기본 환경에서 명령을 수행하니 오류가 났습니다. 어떤 문제가 있는 것인지요?
안녕하세요, 드론 오브젝트를 통해 학습하는 부분에서, 목표물이 등속(드론보다는 느리게) 이동하는 것을 가정하여 코드를 작성하려고 합니다. 이 경우, DroneSetting.cs 부분에만 코드를 부분적으로 수정해서 작성할 수 있을까요? 아니면 어떤 부분의 수정이 추가적으로 필요할까요?
이거 스크립트 다 따라서 작성해야 하나요 아니면 따로 다운받을 수 있는 곳이 있나요? 영상 보면서 다 따라서 작성해봤는데... 안될꺼라 생각했는데 역시 안되네요. 주피터에서 작성했고 코드를 몇번 더 컴토했는데 잘 안되네요.. 일단 경로 설정부터 이해가 잘 안가네요. 6분15초에 나오는 ckpt 파일이랑 events 파일은 어떻게해서 만들어진건가요? save_path 랑 load_path 를 지정해야하는데 어떤걸 입력해야 하는지 잘 모르겠습니다. 처음부터 끝까지 실행해서 트론시물레이션이 작동되는 영상은 혹시 없는가요?..
안녕하세요, 강의 잘 수강하고 있습니다. 드론 에셋을 가져와서 스크립트를 작성하는 과정에 있는데, 아래와 같은 오류가 발생하여 질문드립니다. CS0246: The type or namespace name 'DroneSetting' could not be found 에러가 발생했는데, 어떻게 해결할 수 있을까요? Unity 버전은 2021.2.16f1 을 사용하고 있으며, ML Agents는 2.0.0-exp.1, ML Agents Extensions는 0.4.0-preview 버전입니다. 코드는 아래와 같습니다. using UnityEngine; using Unity.MLAgents; using Unity.MLAgents.Actuators; using Unity.MLAgents.Sensors; using PA_DronePack; public class DroneAgent : Agent { public PA_DroneController dcoScript; public DroneSetting area; public GameObject goal; float preDist; private Transform agentTrans; private Transform goalTrans; private Rigidbody agent_Rigidbody; public override void Initialize() { base.Initialize(); dcoScript = gameObject.Getcomponent<PA_DroneController>(); agentTrans = gameObject.transform; goalTrans = goal.transform; agent_Rigidbody = gameObject.GetComponent<agent_Rigidbody>(); Academy.Instance.AgentPreStep += WaitTimeInterference; } public override void CollectObservations(VectorSensor sensor) { //거리벡터 sensor.AddObservation(agentTrans.position - goalTrans.position); //속도벡터 sensor.AddObservation(agent_Rigidbody.velocity); //각속도벡터 sensor.AddObservation(agent_Rigidbody.angularVelocity); } public override void OnActionReceived(ActionBuffers actionBuffers) { AddReward(-0.01f); var actions = actionBuffers.ContinuousActions; float moveX = Mathf.Clamp(actions[0], -1, 1f); float moveY = Mathf.Clamp(actions[1], -1, 1f); float moveZ = Mathf.Clamp(actions[2], -1, 1f); dcoScript.DriveInput(moveX); dcoScript.StrafeInput(moveY); dcoScript.LiftInput(moveZ); float distance = Vector3.Magnitude(goalTrans.position - agentTrans.position); if(distance <=0.5f) { SetReward(1f); EndEpisode(); } else if(distance >10f) { SetReward(-1f); EndEpisode(); } else { floar reward = preDist - distance; AddReward(reward); preDist = distance; } } public override void OnEpisodeBegin() { area.AreaSetting(); preDist = Vector3.Magnitude(goalTrans.position - agentTrans.position); } public override void Heuristic(in ActionBuffers actionsOut) { var continuousActionsOut = actionsOut.ContinuousActions; continuousActionsOut[0] = Input.GetAxis("Vertical"); continuousActionsOut[1] = Input.GetAxis("Horizontal"); continuousActionsOut[2] = Input.GetAxis("Mouse ScrollWheel"); } public float DecisionWaitingTime = 5f; float m_currentTime = 0f; public void WaitTimeInterference(int action) { if(Academy.Instance.IsCommunicatorOn) { RequestDecision(); } else { if(m_currentTime >=DecisionWaitingTime) { m_currentTime = 0f; RequestDecision(); } else { m_currentTime += m_currentTime.fixedDeltaTime; } } } } 아울러, 드론 에셋 가져오기 & 오브젝트 추가 강의에서, PA_Drone Axis Input과 PA_Drone Controller도 체크를 할 수 없게 되면서, "The associated script can not be loaded. Please fix any compile erroes and open Prefab Mode and assign a valid script to the Prefab Asset" 이라는 문구가 나오는데, 이 문제는 어떻게 해결할 수 있을지 질문드립니다. 두 오류가 연관이 있을 수도 있겠습니다. 확인해 주시면 감사하겠습니다
안녕하세요 대표 강사님인 규식님을 비롯한 여러분의 선생님들을 이렇게 강좌로 볼 수 있다니 너무 반갑습니다. 유튜브 등에서 목소리를 자주 들어서 그런지 내적 친밀감이 느껴집니다. 개인적으로 저는 텐서플로로 배우는 유니티MLAgents 강화학습 교재를 구매하여 독학을 하고 있었습니다.*절판된 책을 어렵게 구했습니다. 하지만 2년여의 시간이 흐르면서 그 사이에 유니티 최신버전이 나오기도하였고 저는 맥북을 이용하고 있어서 독학으로 따라가기에는 부담이 있다고 생각하고 있던 찰나에 이 강좌를 발견하였습니다. 좋은 강의 앞으로 열심히 듣고 많이 배우겠습니다, 감사합니다.