LSTM Matlab中的MiniBatchSize参数的含义是什么

时间:2018-09-19 22:44:51

标签: matlab machine-learning neural-network deep-learning lstm

我正在使用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 ...似乎没有任何影响性能。因此,我并不完全遵循此参数表示什么以及如何为其找到值。有人可以帮忙解释一下这是什么意思,理想情况下是什么意思吗?谢谢

1 个答案:

答案 0 :(得分:1)

该参数实际上在Mathworks documentation page上进行了解释:

  

用于每次训练迭代的迷你批次的大小,已指定   作为由MiniBatchSize和a组成的逗号分隔对   正整数。迷你批次是训练集的子集,它是   用于评估损失函数的梯度并更新   重量。请参阅随机梯度下降。

关于它的含义,在Stackexchange网站herehereelsewhere on the web上,网络上都有几个答案。通常,它会影响优化算法的收敛性以及计算过程中使用了多少内存。
请注意,只要您没有太多的训练数据,现在to use smaller batch sizes通常是首选。