You are here

Is it possible to perform just one step of training (not whole epoch)?

I'm aware of IMLTrain.Iteration() method but it performs a whole epoch of training (uses all samples from the training set). I'd like to perform just one training step, e.g. only one pass of backpropagation with given sample (input). Is that possible?

In case anyone is interested why I need this: in my application I use the idea of distorting inputs for better overall results (I do some image recognition). However I need to distort a single sample "on the fly" because I cannot afford to generate a whole distorted training set before an epoch as I would run out of memory.

Neural Network Forums: 
jeffheaton's picture

There is no direct support of this.

I think the easiest way is to create a new training set class. This training set would accept your complete training set but you could tell it to only return ONE (or a range) of elements from the underlying training set. You won't actually create each training set in memory just "virtual it".

The FoldedDataSet does something very close to this. You might even be able to use this dataset. Just specify a fold count that is equal to the total number of elements.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer