- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
tensorflow.nn.dynamic_rnn
给定 cell
创建一个循环神经网络,它是 RNNCell
的一个实例,并返回一对包含:
outputs
:RNN 输出张量state
:最终状态这是一个玩具循环神经网络及其输出[*]:
import numpy as np
import tensorflow as tf
dim = 3
hidden = 4
lengths = tf.placeholder(dtype=tf.int32, shape=[None])
inputs = tf.placeholder(dtype=tf.float32, shape=[None, None, dim])
cell = tf.nn.rnn_cell.LSTMCell(hidden, state_is_tuple=True)
output, final_state = tf.nn.dynamic_rnn(
cell, inputs, lengths, dtype=tf.float32)
inputs_ = np.asarray([[[0, 0, 0], [1, 1, 1], [2, 2, 2]],
[[6, 6, 6], [7, 7, 7], [8, 8, 8]],
[[9,9,9], [10,10,10], [11,11,11]]],
dtype=np.int32)
lengths_ = np.asarray([3, 1, 2], dtype=np.int32)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
output_, final_state_ = sess.run(
[output, final_state],
{inputs: inputs_, lengths: lengths_})
print('hidden states:')
print(output_)
print('final state :')
print(final_state_)
输出:
hidden states:
[[[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]
[-3.0096283e-02 1.6747195e-01 2.3113856e-02 -4.5677904e-02]
[-6.0795926e-02 3.5036778e-01 6.0140129e-02 -1.6039203e-01]]
[[-2.1957003e-03 8.1749000e-02 1.2620161e-02 -2.8342882e-01]
[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]
[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]
[[-1.7376180e-04 2.7789388e-02 3.1011081e-03 -3.5858861e-01]
[-2.5059914e-04 4.5771234e-02 4.5708413e-03 -6.5035087e-01]
[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00]]]
final state :
LSTMStateTuple(
c=array([[-1.0705842e-01, 5.2945197e-01, 1.5602852e-01, -2.5641304e-01],
[-3.3140955e-03, 8.6112522e-02, 7.2794281e-02, -3.6088336e-01],
[-3.4701003e-04, 4.6147645e-02, 6.7321308e-02, -8.6465287e-01]],
dtype=float32),
h=array([[-6.0795926e-02, 3.5036778e-01, 6.0140129e-02, -1.6039203e-01],
[-2.1957003e-03, 8.1749000e-02, 1.2620161e-02, -2.8342882e-01],
[-2.5059914e-04, 4.5771234e-02, 4.5708413e-03, -6.5035087e-01]],
dtype=float32))
我的理解是这样的:
c
组件)的最后一个单元状态以及每个序列(h
组件)的最后隐藏状态;因此,我不应该在结局状态的 h
组件和每个序列的最后隐藏状态中获得相同的值吗?
[*] 代码主要灵感来自 this post
最佳答案
最终状态组件的 h
包含 LSTM 的最后输出,并且在 dynamic_rnn 的情况下它考虑了长度 作为参数 (lengths
)
正如您在示例中看到的那样 final_state.h[0]
等于 output[0][2]
,因为第一个示例的长度是 3 , final_state.h[1]
等于 output[1][0]
因为你的第二个例子的长度是 1 等等。
关于python - 隐藏状态与 Tensorflow 的 dynamic_rnn 返回的最终状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969349/
我试图在长字符序列中标记字母。数据的固有结构要求我使用双向方法。 此外基于on this idea我需要在每个时间步访问隐藏状态,而不仅仅是最后一个。 为了尝试这个想法,我使用了固定长度的方法。我目前
我目前正在使用 tf.Dynamic RNN 构建文本分类模型。我的输入长度不同,因此我将输入填充为相同(最大)长度。 我在 tf.nn.dynamic_rnn 中使用了 sequence_lengt
似乎 tf.nn.dynamic_rnn 已被弃用: Warning: THIS FUNCTION IS DEPRECATED. It will be removed in a future vers
我的问题是关于 TensorFlow 方法 tf.nn.dynamic_rnn。它返回每个时间步的输出和最终状态。 我想知道返回的最终状态是最大序列长度的细胞状态,还是由 sequence_lengt
我想加速我的 LSTM 网络,但是当我将它用于 OCR(其中序列具有可变长度)时,我不能使用普通的 LSTM 实现。这就是我使用“tf.nn.dynamic_rnn”的原因。 基于 tensorflo
我正在尝试构建 CNN + RNN 模型,但收到以下错误。任何帮助将不胜感激。 fc2 has shape (?,4096) cell = tf.contrib.rnn.BasicLSTMCell(s
在tensorflow中,tf.nn.static_rnn和tf.nn.dynamic_rnn有什么区别,什么时候用? 两者都采用一个 sequence_length 参数,使计算适应输入的实际长度;
对于单个的 RNNCell , 使用色的 call 函数进行运算时 ,只是在序列时间上前进了一步 。 如使用 x1、 ho 得到此h1, 通过 x2 、 h1 得到 h2 等
我无法理解 tf.nn.dynamic_rnn 的输出 tensorflow 函数。该文档仅说明输出的大小,但并未说明每行/列的含义。从文档: outputs: The RNN output Tens
tensorflow.nn.dynamic_rnn给定 cell 创建一个循环神经网络,它是 RNNCell 的一个实例,并返回一对包含: outputs:RNN 输出张量 state:最终状态 这是
我有一个形状为 [batch, None, dim] 的 3-D 张量,其中第二维(即时间步长)是未知的。我使用 dynamic_rnn 来处理此类输入,如以下代码片段所示: import numpy
我正在尝试使用 tf.nn.dynamic_rnn 在 TensorFlow 0.9.0 中使用词嵌入和递归神经网络编写语言模型。图操作,但我不明白input是怎么回事张量是结构化的。 假设我有一个包
我想保存我的 LSTM 的最终状态,以便在我恢复模型时包含它并可用于预测。如下所述,当我使用 tf.assign 时,Saver 只知道最终状态。但是,这会引发错误(也在下面解释)。 在训练期间,我总
我正在尝试使用低级 API tf.nn.raw_rnn 复制 tf.nn.dynamic_rnn 的行为。为此,我使用相同的数据 block 、设置随机种子并使用相同的 hparams 来创建单元格和
我想构建一个用于回归的玩具 LSTM 模型。 This不错的教程对于初学者来说已经太复杂了。 给定一个长度为 time_steps 的序列,预测下一个值。考虑 time_steps=3 和序列: ar
根据Tensorflow官网,(https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/BasicLSTMCell#zero_state)z
我无法理解 tensorflow 的 dynamic_rnn 的输入参数.如果我能理解如何转换 static_rnn 会很有帮助输入 dynamic_rnn输入。 对于 static_rnn ,输入应
这里我问的是动态行为是如何工作的。这是 tensorflow documentation对于上面的dynamic_rnn函数。该函数创建的 RNN 输入 block 的最大长度是多少?它会根据最大的输
默认情况下,函数 dynamic_rnn 只输出每个时间点的隐藏状态(称为 m),可以通过以下方式获得: cell = tf.contrib.rnn.LSTMCell(100) rnn_outputs
上下文 我正在阅读 Hands on ML 的第二部分并且正在寻找关于何时使用“输出”以及何时在 RNN 的损失计算中使用“状态”的一些清晰度。 在书中(对于那些拥有该书的人,第 396 页),作者说
我是一名优秀的程序员,十分优秀!