Keras - 试图连接两个输入
Keras - Trying to concatenate two inputs
我的模型有两个输入,都是张量(一个是输入层,另一个是嵌入层)。我使用的是用于张量的 concatenate
而不是用于层的 Concatenate
。我以前这样做没有问题,但我目前使用的是不同的数据集,其中输入具有不同的形状。我想要做的是将图像与嵌入矩阵连接起来并将其传递到 densenet121:
-----------
|embedding|
| |
-----------
| image |
-----------
这是它们的原始形状:
Image: (?, 224, 224, 1)
embedding: (?, 200, 224)
很明显,它们的大小不同(一个是正方形,一个更像是矩形)并且有不同数量的暗淡。所以我尝试按如下方式连接:
merged = Concatenate([text_embedding, squeeze(image_input, axis=-1)], axis=1, name='merged')
挤压背后的原因是因为它的形状是 (?, 224, 224, 1) 并且嵌入如上所示。我怀疑它可能必须是以下两件事之一:
- 连接轴错误
- concat 函数无法对这些输入进行操作(因为它们可能是层,必须使用 Concat?)
- 也许两种形状都必须有 4 个暗淡?
我收到以下错误:
默认值:
ValueError: Shape must be rank 4 but is rank 3 for 'sequential_11/densenet121/zero_padding2d_21/Pad' (op: 'Pad') with input shapes: [?,424,224], [4,2].
对于 1) 我尝试将连接轴设置为 2 并得到:
ValueError: A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 200, 224, 1), (None, 224, 224, 1)]
对于 2) 将 concat
更改为 Concat
TypeError: __init__() got multiple values for argument 'axis'
for 3) 我试过:expand_dims(text_embedding, axis=-1)
得到:AttributeError: 'NoneType' object has no attribute '_inbound_nodes'
知道如何解决这个问题吗?
好的,找到我的答案:
expandedText = Lambda(lambda x: expand_dims(x, axis=-1))
merged = concatenate([expandedText(text_embedding), image_input], axis=1, name='merged')
显然你必须先把它变成一个图层,然后才能制作找到的图表 。
我的模型有两个输入,都是张量(一个是输入层,另一个是嵌入层)。我使用的是用于张量的 concatenate
而不是用于层的 Concatenate
。我以前这样做没有问题,但我目前使用的是不同的数据集,其中输入具有不同的形状。我想要做的是将图像与嵌入矩阵连接起来并将其传递到 densenet121:
-----------
|embedding|
| |
-----------
| image |
-----------
这是它们的原始形状:
Image: (?, 224, 224, 1)
embedding: (?, 200, 224)
很明显,它们的大小不同(一个是正方形,一个更像是矩形)并且有不同数量的暗淡。所以我尝试按如下方式连接:
merged = Concatenate([text_embedding, squeeze(image_input, axis=-1)], axis=1, name='merged')
挤压背后的原因是因为它的形状是 (?, 224, 224, 1) 并且嵌入如上所示。我怀疑它可能必须是以下两件事之一:
- 连接轴错误
- concat 函数无法对这些输入进行操作(因为它们可能是层,必须使用 Concat?)
- 也许两种形状都必须有 4 个暗淡?
我收到以下错误:
默认值:
ValueError: Shape must be rank 4 but is rank 3 for 'sequential_11/densenet121/zero_padding2d_21/Pad' (op: 'Pad') with input shapes: [?,424,224], [4,2].
对于 1) 我尝试将连接轴设置为 2 并得到:
ValueError: A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 200, 224, 1), (None, 224, 224, 1)]
对于 2) 将 concat
更改为 Concat
TypeError: __init__() got multiple values for argument 'axis'
for 3) 我试过:expand_dims(text_embedding, axis=-1)
得到:AttributeError: 'NoneType' object has no attribute '_inbound_nodes'
知道如何解决这个问题吗?
好的,找到我的答案:
expandedText = Lambda(lambda x: expand_dims(x, axis=-1))
merged = concatenate([expandedText(text_embedding), image_input], axis=1, name='merged')
显然你必须先把它变成一个图层,然后才能制作找到的图表