将 CudnnGRU 参数转换为正常的权重和偏差
Posted
技术标签:
【中文标题】将 CudnnGRU 参数转换为正常的权重和偏差【英文标题】:Convert CudnnGRU params to normal weights and bias 【发布时间】:2018-04-01 07:16:32 【问题描述】:我使用的是tensorflow.contrib.cudnn_rnn
的CudnnGRU
类,训练速度快很多。但是,在训练之后,我需要将模型移动到不基于 CUDA 的系统中。那么如何将CudnnGRU
参数转换为正常的权重和偏差,然后将它们加载到tf.contrib.cudnn_rnn.CudnnCompatibleGRUCell
中?
【问题讨论】:
【参考方案1】:在基于GRU
的CuDNNGRU
和普通Tensorflow
的Tensorflow 2 版本中,已被带到同一层tf.keras.layers.GRU。
根据可用的运行时硬件和约束,该层将选择基于 cuDNN
或 TensorFlow
的实现。
如果 GPU 可用并且该层的所有参数都满足CuDNN
内核的要求(详情请参见下文),则该层将使用快速的cuDNN
实现。
使用cuDNN
实现的要求是:
-
激活 == tanh
recurrent_activation == sigmoid
recurrent_dropout == 0
展开是假的
use_bias 为真
reset_after 为真
输入(如果使用掩码)严格右填充。
在最外层上下文中启用了急切执行。
【讨论】:
以上是关于将 CudnnGRU 参数转换为正常的权重和偏差的主要内容,如果未能解决你的问题,请参考以下文章