machine-learning - 在 TensorFlow 中实现多层 RNN 最有效的方法是什么?

标签 machine-learning tensorflow neural-network deep-learning recurrent-neural-network

我试图弄清楚在输入上运行一个 RNN,然后在这些输出上重复运行另一个 RNN(一次一个水平层)是否更有效。或者一次对所有层运行一个时间步(一次一个垂直层)。

我知道tensorflow的MultiCellRNN类执行后者。为什么选择这种方法而不是前者?前者同样有效吗?是否存在对所有层一次进行一个时间步长更好的情况?

参见http://karpathy.github.io/2015/05/21/rnn-effectiveness/供多层 RNN 引用。

最佳答案

1:如何轻松实现 RNN 使用 lstm 单元,它们通常更好(没有梯度消失问题),并且 tensorflow 使得很容易通过以下方式实现它们:

从tensorflow.python.ops.rnn_cell导入BasicLSTMCell ... 单元 = BasicLSTMCell( state_dim ) stacked_lstm = tf.nn.rnn_cell.MultiRNNCell([cell]*num_layers, state_is_tuple=True)

在 tensorflow 网站上了解更多信息:https://www.tensorflow.org/tutorials/recurrent/

2:水平还是深? 就像您可以拥有多层神经网络一样,您也可以拥有多层 RNN。将 RNN 单元视为神经网络中的一个层,这是一个允许您记住顺序输入的特殊层。根据我的经验,您的网络中仍然会有线性变换(或深度),但拥有多层 lstm 单元的问题取决于您的网络拓扑、偏好和计算能力。 (越多越好)输入和输出的数量取决于你的问题,据我所知,没有多个水平 RNN 单元这样的东西,只有深度。 所有计算都是按深度一次一个输入完成的。 您引用的多层函数非常棒,它在幕后为您处理所有计算,只需告诉它您想要多少个单元格,它就会完成其余的工作。

祝你好运

关于machine-learning - 在 TensorFlow 中实现多层 RNN 最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41335799/

相关文章:

python - 使用自定义层保存 Keras 模型

python-3.x - Keras 中的值错误 : How could I get the model fitted?

nlp - 用于 OCR 的多层感知器

machine-learning - 为什么 Adam 的学习率会增加?

python - 神经网络Python错误 "Failed to get convolution algorithm"

python - 计算矩阵列平均值

python - 使用 OpenCV 3.4 加载 CNN tensorflow 模型时出错

python - 为什么自动编码器与编码器 + 解码器的预测不同?

python - 在 Python 中将单词分类

python - 与 SKlearn 精确召回曲线计算的混淆