问题描述
我们决定将代码库从Tensorflow 1.13.1迁移到Tensorflow 2.3。
除使用Tensorboard回调训练LSTM模型外,其他所有事情似乎都能正常运行。在第一批培训之后,培训过程将永远停止(也许Tensorboard等待永不结束的摘要操作?)。
经过一些研究,似乎问题出在依赖cuDNN实现的LSTM层。确实,当迫使Tensorflow退回到原始LSTM层实现时,一切都按预期工作(给它与cuDNN实现不兼容的参数,参见https://www.tensorflow.org/api_docs/python/tf/keras/layers/LSTM)。
是否有解决此问题的建议?有人对Tensorboard为什么不能与LSTM层的cuDNN实现一起工作有任何想法吗?
# Callbacks
log_dir = './logs'
callbacks = [TensorBoard(log_dir=log_dir)] # Training works without this callback
# Model
words = Input(shape=(max_sequence_length,))
x = Embedding(input_dim,embedding_size,weights=[embedding_matrix],trainable=False)(words)
x = Bidirectional(LSTM(40,return_sequences=True))(x) # Setting recurrent_dropout = 0.1 makes the training work (using the vanilla LSTM implementation)
hidden = concatenate([
GlobalMaxPooling1D()(x),GlobalAveragePooling1D()(x),])
hidden = add([hidden,Dense(40,activation='relu')(hidden)])
out = Dense(3,activation='softmax',kernel_initializer='glorot_uniform')(hidden)
model = Model(inputs=words,outputs=[out])
model.compile(optimizer=Adam(lr=0.01),loss='categorical_crossentropy')
# Fit
fit_history = model.fit(
x_train,y_train,batch_size=batch_size,epochs=epochs,validation_data=validation_data,callbacks=callbacks
)
更新:
在另一台计算机(Windows 10)上进行了尝试,一切似乎都能正常工作...
但是,工作中的计算机大多位于Windows 7上(发生在2台单独的PC上),并且我们正在使用虚拟环境。
另一个提示:python和我们的库安装在不同的硬盘驱动器上是否可能导致此问题? (这是出现问题的设置的相似之处之一)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)