将CudnnGRU参数转换为正常权重和偏差

时间:2017-10-20 06:40:51

标签: tensorflow rnn cudnn

我正在使用CudnnGRU中的tensorflow.contrib.cudnn_rnn课程,培训速度要快得多。但是在训练之后我需要将模型移动到不是基于CUDA的系统。那么如何将CudnnGRU参数转换为正常权重和偏差,然后将它们加载到tf.contrib.cudnn_rnn.CudnnCompatibleGRUCell

1 个答案:

答案 0 :(得分:0)

在 Tensorflow 2 版本中,基于 CuDNNGRU 和普通 TensorflowGRU 已被带到同一层,即 tf.keras.layers.GRU
根据可用的运行时硬件和约束,该层将选择基于 cuDNNTensorFlow 的实现。
如果 GPU 可用并且该层的所有参数都满足 CuDNN 内核的要求(详情见下文),该层将使用快速 cuDNN 实现。

使用 cuDNN 实现的要求是:

  1. 激活 == tanh
  2. recurrent_activation == sigmoid
  3. recurrent_dropout == 0
  4. 展开是假的
  5. use_bias 为真
  6. reset_after 为真
  7. 输入,如果使用掩码,严格右填充。
  8. 在最外层上下文中启用了急切执行。