Keras GradCam在时间分布CNN和LSTM视频序列分类中的应用

Keras GradCam在时间分布CNN和LSTM视频序列分类中的应用,keras,conv-neural-network,lstm,Keras,Conv Neural Network,Lstm,经过几天的努力,我已经找到了任何合理的方法,所以我在这里。 鉴于当前视频课程的特点,我有一个网络,旨在预测下一个视频课程。每个视频由30帧组成。其思想是对每个输入应用特征提取方法,然后输入LSTM+密集层进行预测。 代码如下: video = Input(shape=(30,299,299,3)) inc = InceptionV3(weights='imagenet', include_top=False, input_shape=(299, 299, 3)) cnn_out = Global

经过几天的努力,我已经找到了任何合理的方法,所以我在这里。 鉴于当前视频课程的特点,我有一个网络,旨在预测下一个视频课程。每个视频由30帧组成。其思想是对每个输入应用特征提取方法,然后输入LSTM+密集层进行预测。 代码如下:

video = Input(shape=(30,299,299,3))
inc = InceptionV3(weights='imagenet', include_top=False, input_shape=(299, 299, 3))
cnn_out = GlobalAveragePooling2D()(inc.output)
cnn = Model(inputs=inc.input, outputs=cnn_out)
encoded_frames = TimeDistributed(cnn)(video)
encoded_sequence = LSTM(128, activation='relu', return_sequences=False, kernel_initializer=he_uniform(), bias_initializer='zeros', dropout=0.5)(encoded_frames)
hidden_layer = Dense(1024, activation='relu', kernel_initializer=he_uniform(), bias_initializer='zeros')(encoded_sequence)
outputs = Dense(4, activation="softmax", kernel_initializer=glorot_normal(), bias_initializer='zeros')(hidden_layer)
model = Model(inputs=[video], outputs=outputs)
adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])
我想在CNN的舞台上为每一张图片想象一下功能的激活。因此,如果我查看每个输入图像的显著性图,我可以理解哪些特征比其他特征更重要,从而进行这种预测。 互联网上所有的例子都只面对一个CNN和一个输入图像,有没有办法做到这一点?
非常感谢您的帮助,谢谢

是否要绘制图层的激活图?如果是这样,您可以使用感谢的答复。是的,我知道这个程序包,但问题是我没有能力在cnn生成的每个时间步按顺序取梯度。我想在每个时间步对每个图像应用一种渐变凸轮。但是,是的,我想绘制所需图层的激活图。如果您在上面的代码中看到,时间分布层隐藏了每个时间步的梯度,因此我无法检索它们。我现在尝试在tensorflow2中实现,它为这类东西提供了更合适的工具。