这是我的代码
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内存未使用一半,剩余内存处于空闲状态。其余资源情况相同。)
回答:
如果你减少批量大小,那么时间将会增加,这在不调整其他参数的情况下基本上是不可避免的。
请注意,虽然在一定程度上减小批量大小可以降低你的MSE,但将其降低到一个荒谬的低值会使其上升,因此你需要保持一个平衡。
我注意到你目前没有手动调整学习率,增加学习率不仅可以加速你的结果,还可以帮助避免陷入局部最小值。当然,学习率过高也可能使你不太可能达到全局最小值。
你可以尝试调整你的参数,不过总的来说,这将取决于你的计算机。例如,如果你有一颗i7而不是i5处理器,你拥有超线程技术,这可能会加速这个过程。