Hello,
I read a lot of Q&A about neural nets on MATALB Answers lately. Someone (sadly I wasn't able to find the post again) mentioned to set the dividing funcion of the input data to ''. i.e.
NN = narxnet(0:5, 1:5, [10 10]); % creation of a narxnet
NN.divideFcn = ''; % usually I use 'divideblock' here
I get different results for NN.divideFcn = '' or NN.divideFcn = 'divideblock'.
My question is: How does this divideFcn behave. Or does this line of code lead to some default value for the divideFcn?
Thank you in advance for your answers.

 採用された回答

Greg Heath
Greg Heath 2015 年 12 月 9 日

0 投票

In general you can specify
1. The type of data division
2. The trn/val/test ratios
If you don't specify anything, you will get the default of random data division with trn/val/test ratios 0.7/0.15/0.15.
If you specify ' ' or 'dividetrain', you will get no division i.e., 100/0/0.
If you only specify 'divideblock' the data will be divided into 3 solid blocks of trn/val/test with the default 0.7/0.15/0.15 ratios. However, you can also specify another set of block ratios. This is the datadivision I typically recommend for timeseries prediction.
The disappointing part of this thread is that you should have figured this out by
1. Reading the help and doc documentations for the
different datadivision options.
2. Demonstrating the options on a small data example.
For example,
input = 1:10; target = input.^2;
Hope this helps.
Thank you for formally accepting my answer

4 件のコメント

Greg Heath
Greg Heath 2015 年 12 月 9 日
編集済み: Greg Heath 2016 年 1 月 4 日
>> lookfor divide ...
divideblock - Partition indices into three sets using blocks of indices.
divideind - Partition indices into three sets using specified indices.
divideint - Partition indices into three sets using interleaved indices.
dividerand - Partition indices into three sets using random indices.
dividetrain - Partition indices into training set only.
% net.divideFcn = ' '; is the same as net.divideFcn = dividetrain';
>> help divideblock
[trainInd,valInd,testInd] =
divideblock(Q,trainRatio,valRatio,testRatio)
takes a number of samples Q and divides up the sample indices
1:Q between training, validation and test indices.
divideblock returns the first N1 indices as trainInd, the next
N2 indices as valInd and the remaining N3 indices as testInd.
The sum of N1, N2 and N3 is Q, and the proportions between them
match the three ratios.
For example, here 250 samples are divided into 70% for training,
15% for validation and 15% for testing.
[trainInd,valInd,testInd] = divideblock(250,0.7,0.15,0.15)
Here is how to ensure a network will perform the same kind of
data division when it is trained:
net.divideFcn = 'divideblock';
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio = 0.15;
net.divideParam.testRatio = 0.15.
See also divideind, divideint, dividerand, dividetrain.
Reference page in Help browser
doc divideblock
>> doc divideblock
....
% REPEAT FOR THE OTHER FOUR OPTIONS
Fabio Muratore
Fabio Muratore 2015 年 12 月 9 日
Thank you Greg Heath. I recognize that this would have been easy to figure out...
For people with the same question: This information was essential for me
dividetrain - Partition indices into training set only.
net.divideFcn = ' '; % is the same as net.divideFcn = dividetrain';
-----
But there appears a new question out of your answer:
How does a neural network, e.g. narxnet, learn (supervised learning) without targets?
Greg Heath
Greg Heath 2015 年 12 月 10 日
編集済み: Greg Heath 2016 年 1 月 4 日
If you look at the figures in the help and doc documentation, you will see that
timedelaynet is trained with targets and external inputs; and
deployed with external inputs that generate outputs.
narnet is trained in the open-loop (OL) configuration with
targets replacing external inputs. It is deployed in the
closed-loop (CL) configuration with output feedback replacing
the open-loop target inputs.
narxnet is trained in the OL configuration with both external
inputs and target inputs. It is deployed with external inputs
and output feedback replacing OL target inputs.
Hope this helps.
Greg
bear96
bear96 2020 年 1 月 1 日
Hello, I was wondering if there is any way to obtain the testing/validation/training samples that have been specified by 'dividerand'?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeDeep Learning Toolbox についてさらに検索

質問済み:

2015 年 12 月 8 日

コメント済み:

2020 年 1 月 1 日

Community Treasure Hunt

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

Start Hunting!

Translated by