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

Machine learning 在TensorFlow中实现多层RNN最有效的方法是什么?,machine-learning,tensorflow,neural-network,deep-learning,recurrent-neural-network,Machine Learning,Tensorflow,Neural Network,Deep Learning,Recurrent Neural Network,我试图找出在输入端运行一个RNN,然后在这些输出端重复运行另一个RNN(一次一个水平层)是否更有效。或者对所有层一次运行一个时间步(一次一个垂直层) 我知道tensorflow的MultiCellRNN类实现了后者。为什么选择这种方法而不是前者?前者是否同样有效?是否存在对所有层一次执行一个时间步的情况 有关多层RNN的参考,请参阅。1:如何轻松实现RNN 使用lstm单元,它们通常更好(没有消失的梯度问题),tensorflow通过以下方式使实现它们变得非常容易: 从tensorflow.py

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

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


有关多层RNN的参考,请参阅。

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

从tensorflow.python.ops.rnn_单元格导入BasicLSTMCell ... 单元=基本单元(状态) 堆叠的\u lstm=tf.nn.rnn\u cell.MultiRNNCell([cell]*num\u layers,state\u为\u tuple=True)

更多信息,请访问tensorflow网站:

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


祝你好运

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

从tensorflow.python.ops.rnn_单元格导入BasicLSTMCell ... 单元=基本单元(状态) 堆叠的\u lstm=tf.nn.rnn\u cell.MultiRNNCell([cell]*num\u layers,state\u为\u tuple=True)

更多信息,请访问tensorflow网站:

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


祝您好运

如果您按顺序运行所有内容,那么这两种方法之间的性能差异应该不会太大(除非我在这里监督缓存位置)。后一种方法的主要优点是,可以对多个层进行并行计算

例如,当当前时间步长的结果通过第二层传播时,您可以在第一层中开始下一个时间步长的计算,而不是等待输入通过两层传播


免责声明:我不认为自己是一个性能专家。

如果你按顺序运行所有的东西,两种方法之间的性能差异就不应该太大了(除非我在这里监督一些缓存局部性的东西)。后一种方法的主要优点是,可以对多个层进行并行计算

例如,当当前时间步长的结果通过第二层传播时,您可以在第一层中开始下一个时间步长的计算,而不是等待输入通过两层传播

<免责声明:我不认为自己是一个表演专家。