这是我的代码
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内存,剩余的内存处于空闲状态。其余资源相同。)
答案 0 :(得分:0)
如果减小批次大小,则时间将增加,而这在没有调整其他参数的情况下基本上是不可避免的。
请注意,在将批次大小减小到一定程度的同时,会减少MSE,但将其减小到令人惊讶的低值会提高MSE,因此您需要保持平衡。
我确实注意到您当前并未手动调整学习速度,而提高学习速度不仅可以加快您的学习速度,而且还可以防止陷入局部最小值。当然,学习率也太高可能会使您也不太可能达到全球最低水平。
尽管总的来说要取决于您的计算机,但是您可以使用自己的参数。例如,如果您使用的是i7而不是i5,那么您将拥有超线程,这可以加快处理速度。