Keras:在没有GPU的主机上使用CuDNNLSTM构建的加载模型

时间:2018-10-19 21:15:32

标签: tensorflow keras

我训练了一个使用CuDNNLSTM单元的keras模型,现在希望将该模型加载到缺少GPU的主机设备上。由于CuDNNLSTM单元需要GPU,因此加载过程会爆炸,并抛出:

  

尚未注册任何OpKernel支持这些属性的Op'CudnnRNN'。

是否有一些后门程序可以让我在没有GPU的主机上加载模型?任何建议都将非常有帮助!

1 个答案:

答案 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))(输出)