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

duh*_*ime 2 keras tensorflow

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

没有注册任何 OpKernel 来支持具有这些属性的 Op 'CudnnRNN'。

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

Dav*_* GG 6

注意:我使用的是 Keras 2.2.4 和 TensorFlow 1.12.0。我能够通过以下步骤解决问题:

1)用CudnnLSTM训练模型并保存模型(model_GPU.json)和权重(*.h5)。

2)为LSTM定义相同的模型改变CudnnLSTM,这必须在没有GPU的系统/计算机中完成,然后您可以保存模型(model_CPU.json)。

2*) 在 LSTM 单元集 activation='tanh',recurrent_activation='sigmoid'。因为这些是 CudnnLSTM 中的默认值。

3) 然后你可以用 CudnnLSTM 训练的权重加载 model_CPU.json。

具体来说,我使用了以下

中央处理器:

from keras.layers import LSTM

Bidirectional(LSTM(hidden_units_LSTM, return_sequences=True,activation='tanh',recurrent_activation='sigmoid'))(output)
Run Code Online (Sandbox Code Playgroud)

图形处理器:

from keras.layers import CuDNNLSTM

Bidirectional(CuDNNLSTM(hidden_units_LSTM, return_sequences=True))(output)
Run Code Online (Sandbox Code Playgroud)