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

5 次查看(过去 30 天)
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 个评论
Jordan Pauls
Jordan Pauls 2020-5-29
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 2020-6-30
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

请先登录,再进行评论。

回答(2 个)

vaibhav mishra
vaibhav mishra 2020-6-30
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

Nagasai Bharat
Nagasai Bharat 2020-9-29
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.

类别

Help CenterFile Exchange 中查找有关 Sequence and Numeric Feature Data Workflows 的更多信息

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by