Issue with LSTM OutputMode='last' in MATLAB Deep Learning HDL Toolbox

11 views (last 30 days)
Hi all!
I am profiling the performance of the MATLAB Deep Learning HDL Toolbox for an LSTM-based model trained on the IMDb dataset.
I leave below the code I am running:
% Initialize model (code generated by the Deep Network Designer App after importing the tensorflow model)
params = load("params_2025_01_22__11_31_51.mat");
net = dlnetwork;
tempNet = [
sequenceInputLayer(1,"Name","embedding_input","MinLength", 235)
lstmLayer(32,"Name","lstm","outputMode", "last", "BiasInitializer","narrow-normal","InputWeightsInitializer","narrow-normal","RecurrentWeightsInitializer","narrow-normal")
fullyConnectedLayer(1,"Name","dense","Bias",params.dense.Bias,"Weights",params.dense.Weights)
sigmoidLayer("Name","dense_sigmoid")
];
net = addLayers(net,tempNet);
% clean up helper variable
clear tempNet;
net = initialize(net);
% Initialize dlhdl processor with default configuration
hPC = dlhdl.ProcessorConfig
% Optimize configuration for the target network
optimizeConfigurationForNetwork(hPC, net)
hPC.estimateResources
hPC.estimatePerformance(net)
I noticed that the "outputMode='last'" property of the LSTM layer generates the following error when customizing the processor for the target network:
"Error using dnnfpga.macros.verifyRNNLayerParameters
The layer 'lstm' has an OutputMode of 'last' which is not supported.
Error in dnnfpga.macros.createLSTMLayerNet
Error in dnnfpga.macros.Macros.createNet
Error in dnnfpga.compiler.optimizations.preprocessNetworkForDLP
Error in dnnfpga.compiler.cnn5ProcessorFrontend/runFrontend
Error in dnnfpga.compiler.cnn5ProcessorFrontend/doit
Error in dnnfpga.config.CNN5ProcessorConfig/optimizeConfigurationForNetwork
Error in lstm_imdb_test (line 26)
optimizeConfigurationForNetwork(hPC, net)"
I temporarly switched this property to 'sequence' and it seems working.
Please, can you help me find any explanation for this problem?
Thanks in advance for your help!

Accepted Answer

Wang Chen
Wang Chen on 28 Jan 2025
Hi Tommaso,
The "OutputMode" property = "last" is not supported in Deep Learning HDL Toolbox yet.
"When generating code for a network using this layer, these limitations apply:
  • The input must be of single data type.
  • The OutputMode property must be set to sequence."
As a work-around, you could use "OutputMode" property = "sequence", and pick out last time step's output from the complete output sequences.
Thanks,
Wang

More Answers (0)

Categories

Find more on FPGA, ASIC, and SoC Development in Help Center and File Exchange

Products


Release

R2024a

Community Treasure Hunt

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

Start Hunting!