具有共享权重和“开放”节点的Tensorflow中反向传播的工作原理

时间:2018-07-31 07:08:46

标签: tensorflow backpropagation encoder

我的设置是动态编码器(encoder_1),我使用共享权重多次复制了他。并将其状态反馈到第二个动态编码器(encoder_2)。问题是,即使批量处理,所需的encoder_1操作数也不同。 现在,我进行了所有计算(不需要的数据都填充了0),并且coder_2具有正确的“ sequence_length”参数,因此第二步不使用来自encoder_1的0。

这肯定不是一个优雅的解决方案,但是如果您要计算的话,我想向您请教。因为我不想通过该0的计算反向传播任何东西。我希望这不会发生,因为编码器_2不使用编码器_1的0计算。

让我稍微看一下我的问题:

A batch with batch_size=3:

[A, B, C, D] (need 4x encoder_1)

[E, F, G, 0] (need 3x encoder_1)

[H, i, 0, 0] (need 2x encoder_1)


my encoder_1:

[A, E, H] --> [encoder_1] --> [c1, c2, c3]

[B, F, I] --> [encoder_1, shared_weights] --> [c4, c5, c6]

[C, G, 0] --> [encoder_1, shared_weights] --> [c7, c8, some_bad_numbers]

[D, 0, 0] --> [encoder_1, shared_weights] --> [c9, some_bad_numbers, some_bad_numbers]


my encoder_2:

[[c1, c2, c3]
[c4, c5, c6]
[c7, c8, bad] 
[c9, bad, bad]]

with sequence_length=[3, 3, 2, 1]

--> [encoder_2] --> [c10, c11, c12, c13] (no bad numbers anymore)

0 个答案:

没有答案