How can i correctly an ONNX file into MATLAB?

4 次查看(过去 30 天)
I have imported my ONNX network with the importONNXLayer function, because in the description of the neural network there are 5 operators that are not supported by the MAtlab operators list. I have followed the steps in the documentation to replace the layers to avoid those operators that it does not recognize but i do not get a good result.
It seems to matter but when doing the analysis the errors still appear and the network is not similar to the one i see in ONNX, i attach images to see the comparision. Also i do not know how to solve the problem of importing the number of entries, i attach image:
(Input error)
(ONNX Network)
(Imported ONNX Network)
Also, this ONNX is trained as a reinforcement learning network and I am not convinced to replace certain layers by others. Is there any other way to solve the issue of operadoes?
Attached code:
modelfile="last_FrankaCabinet_ep_1500_rew_1874.9808.onnx";
%lgraph=importONNXNetwork(modelfile)
lgraph=importONNXLayers(modelfile,TargetNetwork="dagnetwork")
lgraph.Layers
%lgraph_layer=importONNXFunction(modelfile,"shufflenltFcn")
%% plot(lgraph_layer)
% Ejemplo para las layers con Placeholder openExample('onnxconverter/ImportONNXModelAsLayerGraphWithPlaceholderLayersExample')
placeholders= findPlaceholderLayers(lgraph)
InputLayer1 = classificationLayer('Name','obs');
outputLayer2 = classificationLayer('Name','OutputLayer_advantages');
outputLayer3 = classificationLayer('Name','OutputLayer_returns');
outputLayer4 = classificationLayer('Name','OutputLayer_actions');
outputLayer5 = classificationLayer('Name','OutputLayer_mu');
outputLayer6 = classificationLayer('Name','OutputLayer_sigma');
%lgraph = replaceLayer(lgraph,'obs',InputLayer1);
lgraph = replaceLayer(lgraph,'OutputLayer_advantages',outputLayer2);
lgraph = replaceLayer(lgraph,'OutputLayer_returns',outputLayer3);
lgraph = replaceLayer(lgraph,'OutputLayer_actions',outputLayer4);
lgraph = replaceLayer(lgraph,'OutputLayer_mu',outputLayer5);
lgraph = replaceLayer(lgraph,'OutputLayer_sigma',outputLayer6);
lgraph.Layers
plot(lgraph);
analyzeNetwork(lgraph)

回答(1 个)

Sanjana
Sanjana 2023-10-31
Hi Gema,
I understand that you are trying to import “ONNX” network, with the “importONNXLayer” function and trying to replace placeholder layers with appropriate built-in layers.
From the network you shared, as per my understanding, I don’t think replacing the placeholder layers with “classificationLayers” is appropriate, as per the operators specified in the onnx network visualization. Whenever replacing placeholder layers, we need to replace the layers with built-in layers that has similar operations.
Please provide the “.onnx” file, to determine the appropriate solution based on the placeholderLayers obtained.
Hope this helps!

类别

Help CenterFile Exchange 中查找有关 Image Data Workflows 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by