keras-onnx icon indicating copy to clipboard operation
keras-onnx copied to clipboard

Basic LSTM Model getting KeyNotFoundException when importing to Unity

Open yfedberts opened this issue 4 years ago • 0 comments

I have a keras model converted to .onnx however when I attempt to insert it into Unity, it does not work. Any advice? I've tried keras2onnx and onnxmltools but alas same results. Can't find any information regarding this online.

The following error was produced.

Asset import failed, "Assets/Models/LSTM-Model.onnx" > KeyNotFoundException: The given key was not present in the dictionary.
System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) (at <fb001e01371b4adca20013e0ac763896>:0)
Unity.Barracuda.ONNX.ONNXModelConverter.BuildNodeSkipList (Onnx.GraphProto graph) (at Library/PackageCache/com.unity.barracuda@071ded3dad/Barracuda/Runtime/ONNX/ONNXModelConverter.cs:1383)
Unity.Barracuda.ONNX.ONNXModelConverter.ConvertOnnxModel (Onnx.ModelProto onnxModel) (at Library/PackageCache/com.unity.barracuda@071ded3dad/Barracuda/Runtime/ONNX/ONNXModelConverter.cs:1153)
Unity.Barracuda.ONNX.ONNXModelConverter.Convert (Google.Protobuf.CodedInputStream inputStream) (at Library/PackageCache/com.unity.barracuda@071ded3dad/Barracuda/Runtime/ONNX/ONNXModelConverter.cs:82)
Unity.Barracuda.ONNX.ONNXModelConverter.Convert (System.String filePath) (at Library/PackageCache/com.unity.barracuda@071ded3dad/Barracuda/Runtime/ONNX/ONNXModelConverter.cs:60)
Unity.Barracuda.ONNXModelImporter.OnImportAsset (UnityEditor.Experimental.AssetImporters.AssetImportContext ctx) (at Library/PackageCache/com.unity.barracuda@071ded3dad/Barracuda/Editor/ONNXModelImporter.cs:44)
UnityEditor.Experimental.AssetImporters.ScriptedImporter.GenerateAssetData (UnityEditor.Experimental.AssetImporters.AssetImportContext ctx) (at <9ddd600ae5964fe0b21a870e08c53748>:0)

My model is a very simple and basic model:

n_timesteps, n_features, n_outputs = trainX.shape[1], trainX.shape[2], trainy.shape[1]
model = Sequential()
model.add(LSTM(self.units, input_shape=(n_timesteps,n_features)))
model.add(Dropout(self.dropout))
model.add(Dense(self.units, activation=self.activation))
model.add(Dense(n_outputs, activation=self.activation2))
model.compile(loss=self.loss, optimizer=self.optimizer, metrics=self.metrics)
# fit network
history = model.fit(trainX, trainy, epochs=self.epochs, batch_size=self.batch_size, verbose=self.verbose,
validation_data=(testX,testy), validation_batch_size=self.batch_size)

Any help would be appreciated

yfedberts avatar Oct 26 '20 08:10 yfedberts