我正在使用LSTM结构:
layers = [ ...
sequenceInputLayer(1)
bilstmLayer(100,'OutputMode','last')
fullyConnectedLayer(2)
softmaxLayer
classificationLayer
];
options = trainingOptions('adam', ...
'MaxEpochs',30, ...
'MiniBatchSize', 150, ...
'InitialLearnRate', 0.01, ...
'GradientThreshold', 1, ...
'plots','training-progress', ...
'Verbose',false);
和net = trainNetwork(XTrain,Ytrain,layers,options);
其中
Xtrain
是1x100的单元格数组(Xtrain{1,1}
是大小为1000x1的数据数组,Xtrain{1,2}
是大小为1000x1等的另一组数据数组)。这意味着我有100个特征向量示例,每个示例的维数均为1000。
Ytrain
是响应变量0/1,并且是大小为100x1的数组。响应的类型为double。
我只是假设MiniBatchSize
参数为150。我尝试使用其他值也说50、60、70 ...似乎没有任何影响性能。因此,我并不完全遵循此参数表示什么以及如何为其找到值。有人可以帮忙解释一下这是什么意思,理想情况下是什么意思吗?谢谢
答案 0 :(得分:1)
该参数实际上在Mathworks documentation page上进行了解释:
用于每次训练迭代的迷你批次的大小,已指定 作为由
MiniBatchSize
和a组成的逗号分隔对 正整数。迷你批次是训练集的子集,它是 用于评估损失函数的梯度并更新 重量。请参阅随机梯度下降。
关于它的含义,在Stackexchange网站here和here和elsewhere on the web上,网络上都有几个答案。通常,它会影响优化算法的收敛性以及计算过程中使用了多少内存。
请注意,只要您没有太多的训练数据,现在to use smaller batch sizes通常是首选。