我正在尝试使用TF 1.9 / 1.10在GPU机器(AWS p3x2,Volta)上训练基本网络。不是Keras-仅限于TF。
基于[相当有限的文档],我的目标是训练cudnnLSTM单元,保存检查点,然后在CPU上恢复推理。按照这个目标,我认为cudnnCompatibleLSTM是可行之路,因为它应该从GPU特定的LSTM实现中吸取权重。
无论我如何尝试,都会出现以下错误:
NotFoundError (see above for traceback): Key caseTesting/testbed/rnn/multi_rnn_cell/cell_0/cudnn_compatible_lstm_cell/bias not found in checkpoint [[Node: caseTesting/testbed/save/RestoreV2 = RestoreV2[dtypes=[DT_FLOAT, DT_FLOAT],
_device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_ caseTesting/testbed/save/Const_0_0, caseTesting/testbed/save/RestoreV2/tensor_names, caseTesting/testbed/save/RestoreV2/shape_and_slices)]]
另一个相关的问题是cudnnCompatibleLSTM和cudnnLSTM在数学上并不相同。对于初始化的单元格,我得到不同的结果。 [由某些tf.constant()初始化为初始化程序,没有保存/恢复]。似乎cudnnLSTM确实依赖于随机种子[dropout为零],这意味着正在进行一些唯一的张量/张量初始化,将其与cudnnCompatibleLSTM分开。
有人知道吗?
答案 0 :(得分:0)
一些答案:
假设您已经阅读了有关cudnnLSTM + cudnnCompatibleLSTM的文档[可悲的是,大部分都是代码中的文档]
with tf.variable_scope("cudnn_lstm"):
作用域
阻止对于cudnnLSTM和标准LSTM的数学不等式,无可厚非。尽管我确定可以通过一些黑客手段来完成,但仍不确定如何将“忘记门”初始化为1.0。