Fitnet: Out of memory error solved by transposing?

5 views (last 30 days)
Here's the code:
net_set = fitnet (4, 'trainlm');
my_ANN = train (net_set, input,output)
Input and output both are 49736x3 arrays.
Here's the exact error:
Error using backpropJacobianStatic
Requested 447628x447628 (1492.9GB) array exceeds maximum array size preference (31.9GB). This might cause MATLAB to become
unresponsive.
When I transpose the arrays, it runs with no problems:
my_ANN = train (net_set, input.',output.')

Accepted Answer

Chunru
Chunru on 19 Oct 2021
Edited: Chunru on 19 Oct 2021
When you use "my_ANN = train (net_set, input,output)", your network will have a input/output size of 49736, which results in many weights in your network. If you use "my_ANN = train (net_set, input.',output.')", the network input/output size is only 3 and the weights in different layers are small so you can train the networkd with no problem.
net_set = fitnet (4, 'trainlm');
input = randn(49736, 3);
output = randn(49736, 3);
my_ANN = train (net_set, input',output');
% To see the trained network architecture
% view(my_ANN)
  3 Comments
Chunru
Chunru on 19 Oct 2021
if you train the network with a set of 10 coordinates (10x3 inputs and 10x3 outputs), then you have a network with 10 inputs neurons, 4 hidden neurons, and 10 output neurons. There 4x10 weights between input and hidden layers, and 4x10 weights between hidden and output layers (ignoring the bias). So you have around 80 unknown weights. There are only 3 training samples. If the network were a linear one, you would have 3 equations with around 80 unknowns and the system would be under-determined. So you don't have enough train data to train the system in this case and hence the prediction can be any wild guess.
Pelajar UM
Pelajar UM on 19 Oct 2021
Thanks. I think I didn't make myself clear enough.
The idea is to use more data for training so that the network can get familiar with and handle more possible combinations of x,y,z. So that's why I want to do the training with 10x3 input/output.
Are you saying that this network once fully trained (so it is pre-trained at this point, no more training) cannot be used to predict 1x3 output based on 1x3 input (basically one coordinates at a time)?
In otherwords, the number of input/output during prediction have to match what was exactly used to train the network?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!