How to create a custom multi input layer for sequence model

6 views (last 30 days)
I want to develop similsr type of architechture and Matlab does not support 2 input sequence to one model. Hence could you please let me know some perfect example of deveoping custom layer for inputs like this.
Capture.JPG
I have also tried to develop the same model in keras and try to import. But it is not helpful as well.
pasted image 0.png
Please help and Thanks in Advance
  2 Comments
Maryam Khairunissa
Maryam Khairunissa on 27 May 2021
hi,
have you solved this issue? I have similar case but for 3 sequence input layers.
Gawsalyan Sivapalan
Gawsalyan Sivapalan on 27 May 2021
Hi,
Unfortuntely I coudn't get help from MATLAB teams. I tried editing a custom layer but it didn't get accepted by the MLToolbox as it was keep throwing error saying mismatch in size for backpropagation (You can try it as well). Therefore, I developbed my own ML toolbox in matlab for the purpose. https://github.com/gawsalyan/FloatingPoint-NN-from-scratch-MATLAB
Please feel free to contribute to the code base if possible or let me know of any errors as it is solely developed by myself. If you need a fixedpoint version, you can look into my github for the same.
It is very similar to how you create layers in original MATLAB ML Toolbox.
Hope this will help.
P.S.: - Unfortunately I have developed and tested only few layers LSTM and MLP mainly. Only SGD for learning is used.
Cheers!
Siva

Sign in to comment.

Accepted Answer

Kenta
Kenta on 29 Mar 2020
As of 2019b, a new system called "custom training loop" which enables you to implement multi-input CNN is available.
For example, you can refer to the example below.
As of 2019a, to implement multi-input CNN is not easy. If you can update the version of Matlab, please try the example below.
  1 Comment
Van Vy
Van Vy on 22 Oct 2021
Could you please explain more about the connect layer? If I have 3 inputs, how can I fix the layers? I have trouble with 3 inputs and connectLayers() function. it shows input 1 and input 3 only. Here is my code:
layers2=renameLayer(layers2,'_2');
layersRemoved=[layers(1:end);concatenationLayer(1,3,'Name','cat')];
lgraphAggregated = addLayers(layerGraph(layersRemoved),layers2(1:end));
lgraphAggregated = connectLayers(lgraphAggregated,'fc_2','cat/in2');
layers3=renameLayer(layers3,'_3');
layersRemoved1=[layers2(1:end);concatenationLayer(1,3,'Name','cat')];
lgraphAggregated = addLayers(layerGraph(layersRemoved),layers3(1:end));
lgraphAggregated = connectLayers(lgraphAggregated,'fc_3','cat/in3');

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!