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