作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想比较具有卷积网络和循环网络的两个图像。首先,我想将我的第一张图像传递给一些类似 VGG 的堆栈,然后将其输入到第一个 RNN 输入中。然后第二个图像应该通过相同的 VGG,然后进入 RNN 的第二个输入。
如何使用 Keras 实现此拓扑?
循环网络在处理第二个图像时应该记住第一个图像。
更新
假设我有两个输入:
input1 = layers.Input(...)
input2 = layers.Input(...)
目前我有两个 VGG 分支
x1 = vgg_stack(...)(x1)
x2 = vgg_stack(...)(x2)
x = layers.concatenate([x1, x2])
x = final_MLP(...)(x)
我如何将其替换为应用于两个输入的signle vgg_stack
,然后将这些结果传递给RNN
?
最佳答案
您应该尝试使用 TimeDistributed 包装器。您可以找到the doc here
它基本上将批处理后的第一个维度作为“时间维度”,并将您作为参数提供给每个时间步骤的层(或模型?)。所以像这样使用它:
from keras.layers import TimeDistributed
input_layer = Input((num_of_images, image_dims...))
# m_cnn is your VGG like model, taking one image as input.
layer1 = TimeDistributed(m_cnn)(input_layer)
layer2 = YourRNNLayer(...)(layer1)
我希望这对你有意义:)
关于python - 如何在 Keras 中首先通过卷积网络然后通过循环网络传递一对图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45123413/
我是一名优秀的程序员,十分优秀!