在张量流中,如何迭代存储在张量中的一系列输入?
In tensorflow, how to iterate over a sequence of inputs stored in a tensor?
我正在尝试使用 RNN 解决变长多变量序列分类问题。
我定义了以下函数来获取序列的输出(即在输入序列的最终输入后 RNN 单元的输出)
def get_sequence_output(x_sequence, initial_hidden_state):
previous_hidden_state = initial_hidden_state
for x_single in x_sequence:
hidden_state = gru_unit(previous_hidden_state, x_single)
previous_hidden_state = hidden_state
final_hidden_state = hidden_state
return final_hidden_state
这里 x_sequence
是形状 (?, ?, 10)
的张量在哪里?是批量大小和第二?用于序列长度,每个输入元素的长度为 10。gru
函数采用前一个隐藏状态和当前输入并吐出下一个隐藏状态(标准门控循环单元)。
我收到一个错误:'Tensor' object is not iterable.
如何按顺序迭代张量(一次读取单个元素)?
我的 objective 是对序列中的每个输入应用 gru
函数并获得最终的隐藏状态。
您可以使用将第一个维度转换为列表的解包函数将张量转换为列表。还有一个 split 函数可以做类似的事情。我在我正在处理的 RNN 模型中使用 unstack。
y = tf.unstack(tf.transpose(y, (1, 0, 2)))
在这种情况下 y 以形状 (BATCH_SIZE, TIME_STEPS, 128) 开始每个时间步。现在 y 列表中的每个元素如果形状为 (BATCH_SIZE, 128),我可以将它输入我的 RNN。
在TF>=1.0中,tf.pack
和tf.unpack
分别重命名为tf.stack
和tf.unstack
我正在尝试使用 RNN 解决变长多变量序列分类问题。
我定义了以下函数来获取序列的输出(即在输入序列的最终输入后 RNN 单元的输出)
def get_sequence_output(x_sequence, initial_hidden_state):
previous_hidden_state = initial_hidden_state
for x_single in x_sequence:
hidden_state = gru_unit(previous_hidden_state, x_single)
previous_hidden_state = hidden_state
final_hidden_state = hidden_state
return final_hidden_state
这里 x_sequence
是形状 (?, ?, 10)
的张量在哪里?是批量大小和第二?用于序列长度,每个输入元素的长度为 10。gru
函数采用前一个隐藏状态和当前输入并吐出下一个隐藏状态(标准门控循环单元)。
我收到一个错误:'Tensor' object is not iterable.
如何按顺序迭代张量(一次读取单个元素)?
我的 objective 是对序列中的每个输入应用 gru
函数并获得最终的隐藏状态。
您可以使用将第一个维度转换为列表的解包函数将张量转换为列表。还有一个 split 函数可以做类似的事情。我在我正在处理的 RNN 模型中使用 unstack。
y = tf.unstack(tf.transpose(y, (1, 0, 2)))
在这种情况下 y 以形状 (BATCH_SIZE, TIME_STEPS, 128) 开始每个时间步。现在 y 列表中的每个元素如果形状为 (BATCH_SIZE, 128),我可以将它输入我的 RNN。
在TF>=1.0中,tf.pack
和tf.unpack
分别重命名为tf.stack
和tf.unstack