What to do when training doesn't fit training data well?

6 visualizaciones (últimos 30 días)
Jordan Pauls
Jordan Pauls el 28 de Mayo de 2020
Respondida: Nagasai Bharat el 29 de Sept. de 2020
Hello,
I've been working on a Deep Learning system to learn some simple communication system properties and I'm having trouble with training/predicting. First, the training process quickly goes to zero, which would indicate that it has fit the data well, or even overfit the training data.
However, when using the predict function on the training data to double check, the plot indicates that the network does not predict the data well:
And cross validation prediction is even worse:
Does anyone have a guess as to why the training process shows an error close to zero, but both training set and cv set prediction is poor?
Thanks!
  3 comentarios
Jordan Pauls
Jordan Pauls el 29 de Mayo de 2020
Hi,
I'm attempting to train a Deep Neural Network for calculating a wireless channel covariance matrix based on a channel conditions matrix. For training examples, the input I'm using is randn(Rx,Tx), and the output is a slightly modified Singular Value Decomposition of the input.
The network is built with the following:
layers_1 = [
imageInputLayer(Input_Layer_Size,'Name','SeqInput') %36 input features
fullyConnectedLayer(128,"Name","fc_1")
reluLayer("Name","relu_1")
fullyConnectedLayer(128,"Name","fc_2")
reluLayer("Name","relu_2")
fullyConnectedLayer(128,"Name","fc_3")
reluLayer("Name","relu_3")
fullyConnectedLayer(128,"Name","fc_4")
reluLayer("Name","relu_4")
fullyConnectedLayer(128,"Name","fc_5")
reluLayer("Name","relu_5")
fullyConnectedLayer(64,"Name","fc_6")
fullyConnectedLayer(length(Output_Layer_Size),"Name","fc_7")
regressionLayer("Name","regressionoutput")];
with these training options:
options = trainingOptions('adam', ...
'InitialLearnRate',0.01,...
'LearnRateSchedule','piecewise', ...
'LearnRateDropFactor',0.8, ...
'LearnRateDropPeriod',10, ...
'MaxEpochs',50, ...
'MiniBatchSize',256, ...
'Plots','training-progress');
net1 = trainNetwork(Input_Train,Output_Train,layers_1,options);
So far I've tried training with 10,000 and 100,000 training examples and there doesn't seem to be a difference. I'm mainly wondering, why does training show such a low error almost immediately, but the network doesn't seem to fit the data well? Since the actual values are so small and the network outputs variables of type 'single', could it be a precision error?
vaibhav mishra
vaibhav mishra el 30 de Jun. de 2020
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

Iniciar sesión para comentar.

Respuestas (2)

vaibhav mishra
vaibhav mishra el 30 de Jun. de 2020
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

Nagasai Bharat
Nagasai Bharat el 29 de Sept. de 2020
Hi,
This issue may be mainly due to the overfitting of the data with respect to your model. As dropout is already applied while training you could use regularization methods (E.g. Batch Normalization, L2 Norm) to the model while training. Also, you could try altering the learning rate so that the model does not overfit.
You can refer to the following documentation and other similar training functions.

Categorías

Más información sobre Sequence and Numeric Feature Data Workflows en Help Center y File Exchange.

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by