Keras 如何将掩蔽应用于复杂的CNN+;LSTM网络体系结构?
我有一个处理视频(图像序列)的顺序模型。 我的模型如下所示:Keras 如何将掩蔽应用于复杂的CNN+;LSTM网络体系结构?,keras,Keras,我有一个处理视频(图像序列)的顺序模型。 我的模型如下所示: Time = 0 Time = 1 .... Time = t im@0 im@1 .... im@t | | | CNN CNN .... CNN | | | RNN--------->R
Time = 0 Time = 1 .... Time = t
im@0 im@1 .... im@t
| | |
CNN CNN .... CNN
| | |
RNN--------->RNN---->....------->RNN
|
some prediction
它适用于长度不变的序列。但我希望它能接受可变长度的序列。正如我们所知,在keras中,掩蔽层可以帮助我们处理这种情况,但并非所有层都支持。我有一个相当复杂的CNN架构,所以在CNN之前似乎不可能使用掩蔽层
有没有办法解决这个问题
[编辑]
我发现TimeDistributed包装器可以使应用掩码成为可能。但我不知道我的实现是否正确:
cnn = make_basenet(...) # make backbone network
cnn = TimeDistributed(cnn) # wrap the cnn with TimeDistributed
seq = Sequential() # CNN + LSTM
seq.add(Masking(input_shape=(...)) # Masking for TimeDistributed CNN
seq.add(cnn) # add CNN
seq.add(Masking()) # **This is necessary**
seq.add(LSTM(...)) # add LSTM
如果在LSTM之前省略掩蔽层,则会产生错误。但是如果我加上这个遮罩层,它就可以工作了。我想知道我是否以正确的方式实现了我的模型