The problem was the network's divideMode
parameter. The default value for static networks is 'sample'
, and for dynamic networks 'time'
. I haven't found a clear explanation of what the distinction between the two is, but when I initialized a layrecnet
(a layer-recurrent network, supposedly a dynamic network) it would initialize to 'sample'
instead of 'time'
. As a result, it did not divide the data into training, validation, and test sets, but trained on the entire input. Changing that value manually during setup fixed the problem.
From the toolbox documentation:
This property defines the target data dimensions which to divide up when the data division function is called.
In terms of time series data, this seems to correlate to dividing across time versus across trials, so to speak. That is, if data were input as a set of concurrent trials ("concurrent" and "sequential" are sort of data types for NN inputs) and divideMode
were set to 'sample'
, it would pick a subset of trials for training vs. validation vs. testing. If somebody sees this and can contribute a clearer explanation, please do.