有没有一种方法可以在减少batch_size的同时减少执行时间?

时间:2019-08-27 20:30:30

标签: python tensorflow machine-learning keras deep-learning

这是我的代码

for i in range(10):
    model = Sequential()
    model.add(CuDNNLSTM(1))
    model.add(Dense(1))

    model.compile(loss='mean_squared_error', optimizer=optimizers.adam())

    model.fit(x_train, y_train, epochs=20, batch_size=16, verbose=0)

    p = model.predict(x_test)
    mse = mean_squared_error(y_test, p)
    if mse < minval:
        model.save('best.h5')

如果我增加batch_size,MSE也会上升。因此,要减少MSE,我必须减少batch_size

增加batch_size的问题是时间。随着batch_size的减少,执行时间将大大增加。

我想知道如何在不更改硬件的情况下通过减少batch_size来提高执行速度。

或者如何在保持batch_size不变的同时降低MSE?在这段代码中,batch_size对MSE的影响最大。

对于个人的信息,计算机资源仍然保留。我想利用所有剩余资源来节省时间,但是我很好奇我能做些什么。 (未使用一半的GPU内存,剩余的内存处于空闲状态。其余资源相同。)

1 个答案:

答案 0 :(得分:0)

如果减小批次大小,则时间将增加,而这在没有调整其他参数的情况下基本上是不可避免的。

请注意,在将批次大小减小到一定程度的同时,会减少MSE,但将其减小到令人惊讶的低值会提高MSE,因此您需要保持平衡。

我确实注意到您当前并未手动调整学习速度,而提高学习速度不仅可以加快您的学习速度,而且还可以防止陷入局部最小值。当然,学习率也太高可能会使您也不太可能达到全球最低水平。

尽管总的来说要取决于您的计算机,但是您可以使用自己的参数。例如,如果您使用的是i7而不是i5,那么您将拥有超线程,这可以加快处理速度。