我训练了一个使用CuDNNLSTM
单元的keras模型,现在希望将该模型加载到缺少GPU的主机设备上。由于CuDNNLSTM
单元需要GPU,因此加载过程会爆炸,并抛出:
尚未注册任何OpKernel支持这些属性的Op'CudnnRNN'。
是否有一些后门程序可以让我在没有GPU的主机上加载模型?任何建议都将非常有帮助!
答案 0 :(得分:3)
注意:我正在使用Keras 2.2.4和TensorFlow 1.12.0。 我可以通过以下步骤解决该问题:
1)使用CudnnLSTM训练模型,并保存模型(model_GPU.json)和权重(* .h5)。
2)定义用于LSTM的更改CudnnLSTM的相同模型,这必须在没有GPU的系统/计算机中完成,然后可以保存模型(model_CPU.json)。
2 *)在LSTM单元集中,激活=“ tanh”,recurrent_activation =“ Sigmoid”。由于这些是CudnnLSTM中的默认值。
3)然后,您可以加载带有CudnnLSTM训练的权重的model_CPU.json。
具体来说,我使用了以下
CPU: 从keras.layers导入LSTM
双向(LSTM(hidden_units_LSTM,return_sequences = True,activation ='tanh',recurrent_activation ='Sigmoid'))(输出)
GPU: 从keras.layers导入CuDNNLSTM
双向(CuDNNLSTM(hidden_units_LSTM,return_sequences = True))(输出)