Azzera filtri
Azzera filtri

How to train neural network to generate one output using specific input data?

12 visualizzazioni (ultimi 30 giorni)
Hello esteemed friends, I need help. How to train the neural network using input data (8x4000) and target data (1x4000), and then use the trained neural network using 2 to 3 input data to generate one output? For example using the abalone_dataset.mat, train the neural network using input data (8x4177) which contain length,height, weight, etc, and target data (1x4177) which is the ring size. Then using the trained neural network using 2 to 3 input data which maybe only contain length and height only to generate one output. I'm still new to the neural network and currently using the LSTM for this problem.
load abalone_dataset.mat
[xtrn,ttrn] = abalone_dataset;
numFeatures = 8;
numHiddenUnits = 125;
numResponses = 1;
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits,'OutputMode','last')
fullyConnectedLayer(numResponses)
regressionLayer];
maxEpochs = 70;
miniBatchSize = 27;
options = trainingOptions('adam', ...
'ExecutionEnvironment','cpu', ...
'MaxEpochs',maxEpochs, ...
'MiniBatchSize',miniBatchSize, ...
'GradientThreshold',1, ...
'Verbose',false, ...
'Plots','training-progress');
net = trainNetwork(xtrn,ttrn,layers,options);
I also have problem during the "net = trainNetwork(xtrn,ttrn,layers,options);" command. I really appreciate it if anyone can solve this problem too.

Risposta accettata

Himanshu
Himanshu il 2 Mar 2023
Hello Ahmad,
As per my understanding, you are facing an error while running the “net = trainNetwork(xtrn,ttrn,layers,options);” command. The error doesn’t seem to occur due to this command but because of discrepancy in architecture of the network.
The error message specifies that there is a mismatch between the size of network output and size of target values. The network is trying to predict a single value for each sample but the target data has more than one column. You can fix the error by making the following changes to your network architecture:
layers = [
sequenceInputLayer(numFeatures),
lstmLayer(numHiddenUnits,'OutputMode','sequence'),
fullyConnectedLayer(numResponses),
flattenLayer,
fullyConnectedLayer(numResponses),
regressionLayer]
Here, replace the fully connected layer with a sequence-to-sequence LSTM layer. The output will be a sequence of vectors instead of a single value. Then, add a flatten layer and a fully connected layer to map the sequence to a single scalar output value.
After the above changes, the error can be eliminated and output will be as per the below image.
You can refer to the below documentation to understand more about the "LSTM" layer and "flatten" layer.

Più risposte (0)

Categorie

Scopri di più su Sequence and Numeric Feature Data Workflows in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by