无法在 Unity 的旧版 ML-agents 上使用经过训练的模型

问题描述

我正在使用旧的 Unity 项目进行培训,但遇到了几个问题:

  1. 我能够进行训练并生成 .nn 文件,但是每当我将文件放入大脑时,它都会显示错误消息,内容argumentexception off-axis dimensions must match

Unity 控制台显示如下:

ArgumentException: Off-axis dimensions must match
Barracuda.TensorExtensions.Concat (Barracuda.TensorShape[] shapes,system.int32 axis) (at <1071b9a446b04698af9605e3e272de23>:0)
Barracuda.ModelAnalyzer.ListTemporaryTensorShapes (Barracuda.Model model,System.Collections.Generic.IDictionary`2[TKey,TValue] inputShapes,System.Collections.Generic.IDictionary`2[System.String,Barracuda.TensorShape]& shapesByName) (at <1071b9a446b04698af9605e3e272de23>:0)
Barracuda.ModelAnalyzer.TryGetoutputTensorShape (Barracuda.Model model,System.String output,Barracuda.TensorShape& shape) (at <1071b9a446b04698af9605e3e272de23>:0)
Barracuda.ModelAnalyzer.TryGetoutputTensorShape (Barracuda.Model model,Barracuda.TensorShape& shape) (at <1071b9a446b04698af9605e3e272de23>:0)
Barracuda.ModelMetadataExtensions.GetShapeByName (Barracuda.Model model,System.String name) (at <1071b9a446b04698af9605e3e272de23>:0)
MLAgents.InferenceBrain.BarracudamodelParamloader.CheckOutputTensorShape (MLAgents.InferenceBrain.BarracudamodelParamloader+ModelActionType isContinuous,system.int32 modelActionSize) (at Assets/ml-agents-master/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/BarracudamodelParamloader.cs:476)
MLAgents.InferenceBrain.BarracudamodelParamloader.GenerateChecks () (at Assets/ml-agents-master/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/BarracudamodelParamloader.cs:186)
MLAgents.InferenceBrain.BarracudamodelParamloader.GetLoaderAndCheck (Barracuda.IWorker engine,Barracuda.Model model,MLAgents.BrainParameters brainParameters) (at Assets/ml-agents-master/UnitySDK/Assets/ML-Agents/Scripts/InferenceBrain/BarracudamodelParamloader.cs:46)
MLAgents.LearningBrain.ReloadModel (system.int32 seed) (at Assets/ml-agents-master/UnitySDK/Assets/ML-Agents/Scripts/LearningBrain.cs:126)
MLAgents.LearningBrainEditor.OnInspectorGUI () (at Assets/ml-agents-master/UnitySDK/Assets/ML-Agents/Editor/LearningBrainEditor.cs:60)
UnityEditor.InspectorWindow.DoOnInspectorGUI (System.Boolean rebuildOptimizedGUIBlock,UnityEditor.Editor editor,System.Boolean wasVisible,UnityEngine.Rect& contentRect) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1625)
UnityEngine.GUIUtility:ProcessEvent(Int32,IntPtr)
  1. 我已经尝试训练“球平衡”示例并且也能够完成训练部分,但是当 python 尝试将 .pb 文件转换.nn 文件时发生错误。({{虽然示例提供的 1}} 文件工作得很好)
.nn

我使用的是 Unity 2018.3.11 和 ML-agent 0.8.1

我已将 Converting ./models/test-0/3DBallLearning/frozen_graph_def.pb to ./models/test-0/3DBallLearning.nn IGnorED: Cast unkNown layer IGnorED: Range unkNown layer IGnorED: Transpose unkNown layer IGnorED: Shape unkNown layer IGnorED: TensorArrayV3 unkNown layer IGnorED: TensorArrayV3 unkNown layer IGnorED: Shape unkNown layer IGnorED: Range unkNown layer IGnorED: TensorArrayScatterV3 unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Less unkNown layer IGnorED: Enter unkNown layer IGnorED: Less unkNown layer IGnorED: Enter unkNown layer IGnorED: LogicalAnd unkNown layer IGnorED: LoopCond unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: TensorArrayReadV3 unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Split unkNown layer IGnorED: TensorArrayWriteV3 unkNown layer IGnorED: Enter unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: Exit unkNown layer IGnorED: Exit unkNown layer IGnorED: Exit unkNown layer IGnorED: TensorArraySizeV3 unkNown layer IGnorED: Range unkNown layer IGnorED: TensorArrayGatherV3 unkNown layer IGnorED: Range unkNown layer IGnorED: Transpose unkNown layer IGnorED: Range unkNown layer IGnorED: Transpose unkNown layer IGnorED: Shape unkNown layer IGnorED: TensorArrayV3 unkNown layer IGnorED: TensorArrayV3 unkNown layer IGnorED: Shape unkNown layer IGnorED: Range unkNown layer IGnorED: TensorArrayScatterV3 unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Merge unkNown layer IGnorED: Less unkNown layer IGnorED: Enter unkNown layer IGnorED: Less unkNown layer IGnorED: Enter unkNown layer IGnorED: LogicalAnd unkNown layer IGnorED: LoopCond unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: Switch unkNown layer IGnorED: TensorArrayReadV3 unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Enter unkNown layer IGnorED: Split unkNown layer IGnorED: TensorArrayWriteV3 unkNown layer IGnorED: Enter unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: NextIteration unkNown layer IGnorED: Exit unkNown layer IGnorED: Exit unkNown layer IGnorED: Exit unkNown layer IGnorED: TensorArraySizeV3 unkNown layer IGnorED: Range unkNown layer IGnorED: TensorArrayGatherV3 unkNown layer IGnorED: Range unkNown layer IGnorED: Transpose unkNown layer IGnorED: StopGradient unkNown layer Traceback (most recent call last): File "C:\Users\chick\anaconda3\envs\ml-agents\Scripts\mlagents-learn-script.py",line 33,in <module> sys.exit(load_entry_point('mlagents','console_scripts','mlagents-learn')()) File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\learn.py",line 262,in main run_training(0,run_seed,options,Queue()) File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\learn.py",line 95,in run_training tc.start_learning(env,trainer_config) File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\trainer_controller.py",line 235,in start_learning self._export_graph() File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\trainer_controller.py",line 120,in _export_graph self.trainers[brain_name].export_model() File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\trainer.py",line 171,in export_model self.policy.export_model() File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\policy.py",line 203,in export_model tf2bc.convert(self.model_path + '/frozen_graph_def.pb',self.model_path + '.nn') File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\tensorflow_to_barracuda.py",line 1007,in convert o_model.inputs = {i:o_input_shapes[i] for l in o_model.layers for i in l.inputs if i not in all_layers and i not in o_model.memories} File "e:\ml car\assets\ml-agents-master\ml-agents\mlagents\trainers\tensorflow_to_barracuda.py",in <dictcomp> o_model.inputs = {i:o_input_shapes[i] for l in o_model.layers for i in l.inputs if i not in all_layers and i not in o_model.memories} KeyError: 'lstm_policy/rnn/while/Switch:1' 添加到我的项目设置中,但它似乎不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...