エラー The Communicator was unable to connect.
UnityAgentsException: The Communicator was unable to connect. Please make sure the External process is ready to accept communication with Unity.
MLAgents.Batcher.SendAcademyParameters (MLAgents.CommunicatorObjects.UnityRLInitializationOutput academyParameters) (at Assets/ML-Agents/Scripts/Batcher.cs:91)
MLAgents.Academy.InitializeEnvironment () (at Assets/ML-Agents/Scripts/Academy.cs:321)
MLAgents.Academy.Awake () (at Assets/ML-Agents/Scripts/Academy.cs:230)
MLAgents.Batcher.SendAcademyParameters (MLAgents.CommunicatorObjects.UnityRLInitializationOutput academyParameters) (at Assets/ML-Agents/Scripts/Batcher.cs:91)
MLAgents.Academy.InitializeEnvironment () (at Assets/ML-Agents/Scripts/Academy.cs:321)
MLAgents.Academy.Awake () (at Assets/ML-Agents/Scripts/Academy.cs:230)
UnityAgentsException:Communicatorは接続できませんでした。外部プロセスがUnityとの通信を受け入れる準備ができていることを確認してください。
原因・2つ
1 実行が始まらない場合は、開始するフォルダーを間違えている可能性があります。
実行が始まらない場合は、開始するフォルダーを間違えている可能性があります。ML-Agentsのリポジトリーを展開した
ml-agents-master
フォルダーにいることを確認してください。また、Anaconda Promptで
参考 Unity ML-AgentsをWindows10で使う 2018年11月版 - tanaka's Programming Memotanaka's Programming Memomlagents-learn config/trainer_config.yaml --run-id=firstRun --train
コマンドを実行したあと、UnityでPlayしないまま1分程度放置すると待機が終わってUnity側でエラーが発生します。Anaconda Promptを実行してUnityでPlayするようメッセージが表示されたら、速やかにUnityの方もPlayしてください(2018/11/9追記)
2 フォルダのアドレスに日本語が混じっている
おそらくこれも原因
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public class VisualLearning : MonoBehaviour { //☆配列の調整 //隠れ層の調整 public int numHiddenMax = 1; //入力層の調整 public int numInputMax = 1; //出力層の調整 public int numOutputMax = 1; //☆GameObjectのインポート //隠れ層の調整 public GameObject Hidden; //入力層の調整 public GameObject Input; //出力層の調整 public GameObject Output; //☆GameObjectをスポーンする場所 //隠れ層の調整 public Vector3 vecHidden = new Vector3(0,0,0); //入力層の調整 public Vector3 vecInput = new Vector3(-1,0,0); //出力層の調整 public Vector3 vecOutput = new Vector3(1,0,0); //☆ステータスの調整 //隠れ層の調整 public bool[] boolHidden; //入力層の調整 public bool[] boolInput; //出力層の調整 public bool[] boolOutput; //☆ノードのリストの調整 public List<GameObject> nodeHidden = new List<GameObject>(); // Start is called before the first frame update void Start() { //☆配列の調整 //☆ステータスの調整 //隠れ層の調整 boolHidden = new bool[numHiddenMax]; for (int i = 0; i < numHiddenMax; i++) { boolHidden[i] = false; } //入力層の調整 boolInput = new bool[numHiddenMax]; for (int i = 0; i < numInputMax; i++) { boolInput[i] = false; } //出力層の調整 boolOutput = new bool[numHiddenMax]; for (int i = 0; i < numOutputMax; i++) { boolOutput[i] = false; } //☆スポーンの調整 //☆配列の調整 //隠れ層の調整 for (int i = 0; i < numHiddenMax; i++) { //ゲームオブジェクトのインポート nodeHidden.Add(Hidden); //スポーンする位置の調整 vecHidden = vecHidden + new Vector3(0,0,2); nodeHidden[i] = Instantiate(Hidden, vecHidden,Quaternion.identity); //名前の変更 nodeHidden[i].name = "Hidden" + Convert.ToString(i); } //入力層の調整 for (int i =0; i < numInputMax; i++) { vecInput = vecInput + new Vector3(0,0,2); Instantiate(Input, vecInput,Quaternion.identity); } //出力層の調整 for (int i =0; i < numOutputMax; i++) { vecOutput = vecOutput + new Vector3(0,0,2); Instantiate(Output, vecOutput,Quaternion.identity); } } // Update is called once per frame void Update() { if(boolHidden[0] == false){ } } } |
コメントを残す