Tensorflow2 LSTM(cuDNN args)与tensorflow1 CuDNNLSTM实现差异

N教皇

在tensorflow 1,还有的层tf.compat.v1.keras.layers.CuDNNLSTM,而在tensorflow 2这一层已经被赞成使用的不提倡使用的是使用cuDNN内置tf.keras.layers.LSTM

  1. `activation` == `tanh`
  2. `recurrent_activation` == `sigmoid`
  3. `recurrent_dropout` == 0
  4. `unroll` is `False`
  5. `use_bias` is `True`
  6. Inputs are not masked or strictly right padded.

用于cuDNN实现。我不知道是否存在未实现的bug或某些差异,但是CuDNNLSTM使用输入偏差循环偏差似乎有所不同,如LSTM上述tf2 cuDNN规则所述,该方法仅使用循环偏差。

相关代码

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM
from tensorflow.compat.v1.keras.layers import CuDNNLSTM

print(tf.__version__)

model1 = Sequential()
model1.add(LSTM(1, activation='tanh', recurrent_dropout=0, unroll=False, use_bias=True, return_sequences=0, input_shape=(1, 1)))
print(model1.summary())

model2 = Sequential()
model2.add(CuDNNLSTM(1, return_sequences=0, input_shape=(1, 1)))
print(model2.summary())
2.2.0
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm (LSTM)               (None, 1)                 12        
=================================================================
Total params: 12
Trainable params: 12
Non-trainable params: 0
_________________________________________________________________
None
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
cu_dnnlstm (CuDNNLSTM)    (None, 1)                 16        
=================================================================
Total params: 16
Trainable params: 16
Non-trainable params: 0
_________________________________________________________________

请注意,总参数之间的差异为N_units * 4,表示每个参数缺少一个额外的偏差向量。

请注意,LSTM的pytorch实现与tf1 CuDNNLSTM匹配,这是我偶然发现的方法。

我是否缺少一些修复程序,或者应该将其提升为github问题?

转移3

不,这不是错误。

的2x偏差CuDNNLSTM是的单独偏差recurrent kernel

当在CuDNNLSTM中提供时tf.keras.layers.LSTM,您会看到代码以这样的方式编写:它不对a使用单独的偏向,recurrent kernel而是调用LSTMCell作为基类并且没有单独的偏向。

您可以model.layers[0].trainable_weights用来查看两个实现之间的偏差形状差异。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用@tffunction的Tensorflow2警告

来自分类Dev

keras tensorflow2获得训练数据的结果

来自分类Dev

Tensorflow2关于形状不匹配的警告,仍在培训

来自分类Dev

TensorFlow2替代tf.io.gfile.Open()?

来自分类Dev

TensorFlow2继续安装相同版本

来自分类Dev

具有所有按行排列的Tensorflow1 concat 2D张量

来自分类Dev

Tensorflow找不到CUDNN

来自分类Dev

Tensorflow 1和2语法差异

来自分类Dev

如何在具有tensorflow2和keras的多GPU上训练模型?

来自分类Dev

tf.nn.ctc_beam_search_decoder()不支持TensorFlow2中的GPU吗?

来自分类Dev

如何仅在Tensorflow2中保存张量而不是模型

来自分类Dev

TensorFlow中的cudnn编译配置

来自分类Dev

如何在TensorFlow中实现卷积LSTM单元?

来自分类Dev

TensorFlow LSTM生成模型

来自分类Dev

如何在tensorflow2中制作这样的数据集:<PrefetchDataset形状:((),()),类型:(tf.string,tf.string)>

来自分类Dev

使用Conda安装Tensorflow 1.15 + CUDA + cuDNN

来自分类Dev

使用 CudnnLSTM 的分布式 Tensorflow

来自分类Dev

tensorflow的实现比火炬的实现慢2倍

来自分类Dev

Tensorflow 2 LSTM模型无法使用序列学习

来自分类Dev

Tensorflow中的LSTM反向传播

来自分类Dev

Tensorflow网格LSTM RNN TypeError

来自分类Dev

Tensorflow中的动态LSTM模型

来自分类Dev

了解Tensorflow LSTM输入形状

来自分类Dev

TensorFlow LSTM预测相同的值

来自分类Dev

将cuDNN内核用于LSTM

来自分类Dev

使用tensorflow 2实现梯度损失

来自分类Dev

运行TensorFlow的CudNN错误:无法设置cudnn过滤器描述符:CUDNN_STATUS_BAD_PARAM

来自分类Dev

Tensorflow检查失败:状态== CUDNN_STATUS_SUCCESS(7 vs.0)无法设置cuDNN流

来自分类Dev

CuDNN与Tensorflow 1.11.0 + Cuda9.0不兼容

Related 相关文章

热门标签

归档