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

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 Comments

Hey, can you be more specific please? What are uo attempting to train? How large is your data set? Which training options have you selected?
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?
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

Sign in to comment.

Answers (2)

maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.
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.

Categories

Find more on Deep Learning Toolbox in Help Center and File Exchange

Products

Release

R2020a

Asked:

on 28 May 2020

Answered:

on 29 Sep 2020

Community Treasure Hunt

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

Start Hunting!