在使用下面的 ResetStatesCallback 回调函数训练 RNN 模型时,我收到了以下警告信息:
/var/venv/DSTL/lib/python3.4/site-packages/keras/callbacks.py:97: UserWarning: Method on_batch_begin() is slow compared to the batch update (0.791834). Check your callbacks. % delta_t_median)
from keras.callbacks import Callback#Reset count every RESET_STATES_LENGTH#RESET_STATES_LENGTH=8class ResetStatesCallback(Callback): def __init__(self): self.counter = 0 def on_batch_begin(self, batch, logs={}): if self.counter % RESET_STATES_LENGTH == 0: self.model.reset_states() self.counter += 1
为什么我会收到这个消息?我应该尝试做些什么来修复它吗?它真的会让我的训练速度大幅减慢吗?
回答:
请参阅 https://github.com/fchollet/keras/issues/5008 以获取解释。其中提到
您在每个批次后运行类似保存模型或渲染图像的操作,而这些操作所需的时间比批次本身还要长。
因此,看起来在运行时,Keras 已经确定您的回调函数比批次本身还要慢。