通过convnet传递视频帧并获得输出要素图后,如何将该数据传递到LSTM?另外,如何通过CNN将多个帧传递给LSTM?
在其他作品中,我想用CNN处理视频帧以获得空间特征.然后我想将这些特征传递给LSTM以对空间特征进行时间处理.如何将LSTM连接到视频功能?例如,如果输入视频是56x56,然后当通过所有CNN层时,请说它是20:5x5.它们如何逐帧连接到LSTM?他们首先要通过一个完全连接的层吗?谢谢,乔恩
我正在尝试找出如何匹配activation=sigmoid正确activation=softmax的model.compile()损失参数。特别是那些与binary_crossentropy.
我研究了相关主题并阅读了文档。我还建立了一个模型并让它与 一起工作,sigmoid但没有softmax。我无法让它与“ from_logits”参数正常工作。
具体来说,这里说:
参数:
from_logits:是否output预期为 Logits 张量。默认情况下,我们认为output编码了概率分布。
这对我来说,如果你使用sigmoid激活,你想要“ from_logits=True”。对于softmax激活,默认情况下您需要“ from_logits=False”。这里我假设sigmoid提供logits并softmax提供概率分布。
接下来是一些代码:
model = Sequential()
model.add(LSTM(units=128,
input_shape=(n_timesteps, n_features),
return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(units=64, return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(units=32))
model.add(Dropout(0.3))
model.add(Dense(16, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)
请注意,最后一行正在使用sigmoid激活。然后:
model.compile(optimizer=optimizer,
loss='binary_crossentropy',
metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它使用默认的“from_logits=False”,它期望概率分布。
如果我执行以下操作,则会失败:
model.compile(optimizer=optimizer,
loss='binary_crossentropy',
metrics=['accuracy'],
from_logits=True) # For 'sigmoid' in above …Run Code Online (Sandbox Code Playgroud)