我无法理解tf.nn.dynamic_rnntensorflow函数的输出.该文档只是告诉输出的大小,但它没有说明每行/列的含义.从文档:
输出:RNN输出
Tensor.如果time_major == False(默认),这将是一个
Tensor形状:[batch_size, max_time, cell.output_size].如果time_major == True,这将是一个
Tensor形状:[max_time, batch_size, cell.output_size].注意,如果
cell.output_size是整数或TensorShape对象的(可能是嵌套的)元组,那么outputs将是具有
与cell.output_size包含与形状数据对应的形状的张量的具有相同结构的元组cell.output_size.州:最终状态.如果
cell.state_size是int,则会形成[batch_size, cell.state_size].如果它是
TensorShape,这将形成[batch_size] + cell.state_size.
如果它是一个(可能是嵌套的)int的元组TensorShape,那么这将是一个具有相应形状的元组.
的outputs张量是3 d矩阵但到底是什么每行/列表示?
jde*_*esa 29
tf.dynamic_rnn提供两个输出,outputs和state.
outputs包含每个时刻RNN小区的输出.假设默认值time_major == False,假设您有一个由10个示例组成的输入,每个示例包含7个时间步长,并且每个时间步长都有一个大小为5的特征向量.然后你的输入将是10x7x5(batch_sizex max_timex features).现在,您将此作为输入提供给输出大小为15的RNN单元.从概念上讲,每个示例的每个时间步都输入到RNN,并且您将获得每个步长的15长矢量.这就是outputs包含这种情况的张量,在这种情况下,大小为10x7x15(batch_sizex max_timex cell.output_size),每个时间步长都有RNN单元的输出.如果您只对单元格的最后一个输出感兴趣,则可以只切片时间维度以选择最后一个元素(例如outputs[:, -1, :]).state包含处理所有输入后的RNN状态.请注意,与outputs此不同,它不包含有关每个时间步的信息,而只包含有关最后一个的信息(即最后一个之后的状态).根据您的情况,州可能有用也可能没用.例如,如果您有很长的序列,您可能不希望/能够在一个批处理中处理它们,并且您可能需要将它们分成几个子序列.如果你忽略了state,那么每当你给出一个新的子序列时,就好像你开始一个新的子序列; 但是,如果你还记得状态(例如输出它或将其存储在变量中),你可以稍后(通过initial_state参数tf.nn.dynamic_rnn)反馈它,以便正确地跟踪RNN的状态,并且只将它重置为完成整个序列后的初始状态(通常为全零).形状state可以根据您使用的RNN单元而有所不同,但是,通常,每个示例都有一些状态(一个或多个尺寸为batch_sizex的张量state_size,state_size取决于单元格的类型和大小).| 归档时间: |
|
| 查看次数: |
6446 次 |
| 最近记录: |