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

Posted

技术标签:

【中文标题】将 CudnnGRU 参数转换为正常的权重和偏差【英文标题】:Convert CudnnGRU params to normal weights and bias 【发布时间】:2018-04-01 07:16:32 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

使用cuDNN 实现的要求是:

    激活 == tanh recurrent_activation == sigmoid recurrent_dropout == 0 展开是假的 use_bias 为真 reset_after 为真 输入(如果使用掩码)严格右填充。 在最外层上下文中启用了急切执行。

【讨论】:

以上是关于将 CudnnGRU 参数转换为正常的权重和偏差的主要内容,如果未能解决你的问题,请参考以下文章

权重和偏差扫描无法使用 pytorch 闪电导入模块

MLP(multi-layer perceptron)

如何显示 LinearRegression() 的权重和偏差?

感知器权重更新规则的直觉

如何找出 RBM 无法正常工作的原因?

在 PyTorch 中,默认情况下如何初始化层权重和偏差?