【问题标题】:What is cuDNN implementation of rnn cells in Tensorflow什么是 Tensorflow 中 rnn 单元的 cuDNN 实现
【发布时间】:2018-11-13 17:19:09
【问题描述】:
要创建RNN 单元格,可以使用GRUCell 和LSTMCell 等类,稍后可以使用它们创建RNN 层。
还有另外两个类CudnnGRU和CudnnLSTM可以直接用来创建RNN层。
在文档中他们说后面的类有cuDNN 实现。当我创建RNN 模型时,为什么我应该使用或不使用这个cuDNN 实现的类而不是经典的RNN 实现......?
【问题讨论】:
标签:
python-3.x
tensorflow
cudnn
【解决方案1】:
简而言之:cudnnGRU 和 cudnnLSTM 可以/必须在 GPU 上使用,普通的 rnn 实现不能。所以如果你有 tensorflow-gpu,RNN 单元的 cudnn 实现会运行得更快。
【解决方案2】:
CuDNNLSTM 和CuDNNGRU 是由CuDNN 支持的快速实现。两者都只能在带有 TensorFlow 后端的 GPU 上运行。 cuDNN 是一个 GPU 加速的深度神经网络原语库。
cuDNN 为标准例程(例如前向和后向卷积、池化、归一化和激活层)提供高度优化的实现。 cuDNN 是 NVIDIA 深度学习 SDK 的一部分。
cuDNN 的亮点包括:
- 在 Tesla V100 上对 ResNet-50 和 GNMT 的训练速度比在 Tesla V100 上快 3 倍
特斯拉 P100
- 改进了 NHWC 对池化和跨步卷积的支持
- 提高 ResNet50 和 SSD 等常见工作负载的性能,因为 batchnorm 现在支持 NHWC 数据布局并增加了一个选项
将 batchnorm 与 Add 和 ReLu 操作融合