Use imported keras network to predict in Simulink

3 ビュー (過去 30 日間)
Chuan Yu
Chuan Yu 2020 年 11 月 16 日
回答済み: Peter Man 2022 年 2 月 3 日
Hi,
I am trying to imported my trained series network from python into Simulink to do prediction following this previous link:https://www.mathworks.com/matlabcentral/answers/592243-import-keras-tensorflow-model-into-simulink. However I am still getting some errors. Can you help me to look into why? I have tested the imported keras network to do prediction on a single sample in a separate m file (PT_NN_Prediction.m). It works fine. However, when I use above link to create a matlab function to call the imported keras network to do prediction in Simulink. It does not work with some errors poped up.
PT_NN_modeling.slx is the simulink model to test the imported keras network prediction.
PTNN.m function is the function that is used to generate the series network.
2020-11-16_17h59_55.png is a screenshot of the errors I got.
And I am using Matlab2019b.
Thanks,
Chuan Yu
  3 件のコメント
Chuan Yu
Chuan Yu 2020 年 11 月 19 日
Hi, I have attached one more zip file with those two files zipped in. Let me know if you need more information. Thanks!
Chuan Yu
Chuan Yu 2021 年 2 月 9 日
Hi,
It has been some time since I posted my question here, can someone help to look into my question and give some answers?
Thanks,
Chuan

サインインしてコメントする。

回答 (1 件)

Peter Man
Peter Man 2022 年 2 月 3 日
Hi Chuan Yu,
In 19b, there isn't a layer specifically for vector inputs, which is why the imported network contains its input layer as imageInputLayer. That means the network is expecting an image - which is an array of dimensions height x weight x channels, (channels is 3 for rgb and 1 for greyscale). You can emulate a vector input by making your vector input be essentially a height=1 and channel=1 image i.e. the input to the network can be [1 2 3] for example. I see that you have essentially this in your attached file PT_NN_Prediction.m.
Now, as for your Simulink model, your model function is expecting an image input too. That means instead of passing in 3 separate scalar inputs, you need a single vector input. Furthermore, you need to ensure that vector input is the correct orientation (i.e. [1,2,3] not [1;2;3]) which means your MATLAB function probably needs to do a transpose on the input e.g.
function y = NNPrediction(x)
persistent mynet;
if isempty(mynet)
mynet = coder.loadDeepLearningNetwork('PTNN','myPTNN');
end
disp(x);
y = predict(mynet,x'); % x might be passed in as [1;2;3] rather than [1,2,3]
end
If you upgrade to a later version (R2021a), if you import your network, the input layer would instead be a featureInputLayer rather than an imageInputLayer. The featureInputLayer is designed for vectorial inputs.

カテゴリ

Help Center および File ExchangeDeep Learning Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by