web-dev-qa-db-ja.com

Tensorflow:CPUでCUDNNLSTMでトレーニングされたモデルを使用します

GPUを使用したテンソルフローでCUDNNLSTMを使用してモデルをトレーニングしました。推論のためにCPUでモデルを使用しようとすると、次のエラーが発生します。

Invalid argument: No OpKernel was registered to support Op 'CudnnRNN' with these attrs.  Registered devices: [CPU], Registered kernels:
  <no registered kernels>

     [[Node: cudnn_lstm/CudnnRNN = CudnnRNN[T=DT_FLOAT, direction="bidirectional", dropout=0, input_mode="linear_input", is_training=false, rnn_mode="lstm", seed=87654321, seed2=4567](Reshape_1, cudnn_lstm/zeros, cudnn_lstm/zeros_1, cudnn_lstm/opaque_kernel/read)]]

では、このモデルをCPUでどのように使用できますか?

6
Deepak Banka

これが機能しない理由は、モデルアーキテクチャを含むJSONファイルがまだCuDNNLSTM用に構成されているためです。 KerasはCuDNNLSTMウェイトをLSTMアーキテクチャに自動的にロードできるようになりましたが、アーキテクチャが自動的に変更されることはありません。

これを修正するのは簡単です。jsonファイルを開き、CuDNNLSTMのすべてのインスタンスをLSTMに変更します。 JSONファイルを保存すると、.h5ファイルから重みをロードできるようになります。

0
Derek Pankaew