我的设置是动态编码器(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)