【发布时间】:2021-05-24 06:07:24
【问题描述】:
我正在尝试构建一个 ResNet 对三个输入图像分别进行特征检测的网络。在特征检测之后,三个并行分支与密集层相结合。尝试为模型提供一些输入时会引发错误。
#basis model
in1 = Input(shape=(224, 224, 3), name='base_image')
in2 = Input(shape=(224, 224, 3), name='image1')
in3 = Input(shape=(224, 224, 3), name='image2')
ResNet = ResNet50(
include_top=False,
weights="imagenet",
input_shape=(224, 224, 3)
)
ResNet.trainable = False
out1 = ResNet(in1)
out2 = ResNet(in2)
out3 = ResNet(in3)
basis1 = GlobalAveragePooling2D()(out1)
basis1 = Dropout(0.7)(basis1)
basis1 = Flatten()(basis1)
basis2 = GlobalAveragePooling2D()(out2)
basis2 = Dropout(0.7)(basis2)
basis2 = Flatten()(basis2)
basis3 = GlobalAveragePooling2D()(out3)
basis3 = Dropout(0.7)(basis3)
basis3 = Flatten()(basis3)
#own model
concat = Concatenate()([basis1, basis2, basis3])
dense_1 = Dense(2048, activation='relu')(concat)
dense_2 = Dense(1024, activation='relu')(dense_1)
output = Dense(1, activation='softmax')(dense_2)
my_model = Model(inputs = [in1, in2, in3], outputs=output)
images 数组(肯定)返回一个形状为 (224, 224, 3) 的图像
testX = [
[images[0], images[1], images[2]],
[images[3], images[4], images[5]],
[images[6], images[7], images[8]]
]
testY = [
[1.0],
[0.0],
[1.0]
]
my_model.compile(optimizer=SGD(learning_rate=0.001, momentum=0.9, nesterov=True), loss='binary_crossentropy', metrics=['binary_accuracy'])
my_model.fit(testX, y=testY, epochs = 5, verbose=2)
在 fit() 中导致以下错误:
ValueError: Data cardinality is ambiguous:
x sizes: 224, 224, 224, 224, 224, 224, 224, 224, 224
y sizes: 1, 1, 1
Make sure all arrays contain the same number of samples.
这个方法似乎忽略了第一个子数组?我已经被困了很长时间了。
【问题讨论】:
-
你有 9 张图像,但只有 3 个基本事实,这是你的问题;如果每一行都是 3 通道图像,则将它们连接起来。
标签: python tensorflow keras input tensorflow2.0