什么是 Tensorflow 中 rnn 单元的 cuDNN 实现

What is cuDNN implementation of rnn cells in Tensorflow

要创建 RNN 个单元格,有 类 如 GRUCellLSTMCell 可以稍后用于创建 RNN 层。
还有另外 2 个 类 作为 CudnnGRUCudnnLSTM 可以直接用于创建 RNN 层。

在文档中他们说后者 类 有 cuDNN 实现。当我创建一个 RNN 模型时,为什么我应该使用或不使用这个 cuDNN 实现的 类 而不是经典的 RNN 实现..?

简而言之:cudnnGRU 和 cudnnLSTM 可以/必须在 GPU 上使用,普通的 rnn 实现则不行。所以如果你有 tensorflow-gpu,RNN 单元的 cudnn 实现会 运行 更快。

CuDNNLSTMCuDNNGRU 是由 CuDNN 支持的快速实现。两者都只能是 GPU 上的 运行,使用 TensorFlow 后端。 cuDNN 是一个 GPU 加速的深度神经网络基元库。

cuDNN 为标准例程(例如前向和反向卷积、池化、归一化和激活层)提供高度调整的实现。 cuDNN 是 NVIDIA 深度学习 SDK 的一部分。

cuDNN 亮点包括:

  1. 在 Tesla V100 上训练 ResNet-50 和 GNMT 的速度比在 V100 上快 3 倍。 特斯拉 P100
  2. 改进了 NHWC 对池化和跨步卷积的支持
  3. 提高 ResNet50 和 SSD 等常见工作负载的性能,因为 batchnorm 现在支持带有附加选项的 NHWC 数据布局 将 batchnorm 与 A​​dd 和 ReLu 操作融合