所以我从magenta运行此代码并做了一些修改:
outputs, final_state = tf.nn.dynamic_rnn(
self.cell,
m_seq,
sequence_length=lens,
initial_state=initial_state,
swap_memory=swap_memory,
parallel_iterations=parallel_iterations)
其中self.cell
是具有两个图层的MultiRNN单元格,m_seq
是一个具有形状[1,38]的热长度向量,state
是两个{{1}的元组LSTMStateTuple
和c
的形状为[128,512](批量大小和图层大小)。
当我跑步时,我得到:
InvalidArgumentError(参见上面的回溯):ConcatOp:输入的维度应该匹配:shape [0] = [1,38] vs. shape [1] = [128,512]
现在我明白这意味着输入h
和状态之间不匹配。但是,两个尺寸都必须匹配(1和128,38和512)?我真的不明白为什么会这样。为什么他们必须匹配,因为这是一个充满活力的人。
答案 0 :(得分:0)
答案 1 :(得分:0)
ConcatOp : Dimensions of inputs should match
我相信这回答了我的问题。 batch-size(第一个参数)必须匹配,但第二个(sequence-length)不需要匹配,因为它是动态RNN。在任何情况下,都可以使用占位符来采用不同的批量大小。