“添加的层必须是类层的实例。找到:Tensor(“concatenate_15/concat:0”,shape=(884758,1),dtype=float64)]错误?

2024-09-30 20:38:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,其中我试图将一组22个大小为(96,96,96)的3D图像与其相应的测试值(显示为输入值)50(例如)结合起来。换句话说,我希望一个图像的测试值为50,而另一个图像的测试值为80。我可以通过CNN运行我的图像,但我被困在连接层上

我尝试将两个输入值都更改为1D张量,对于图像和测试值分别为(884736,1)和(22,1),并尝试将它们连接起来,但我收到了错误添加的层必须是类层的实例。发现:张量(concatenate_15/concat:0),shape=(884758,1),dtype=float64)

我已经研究这个问题超过2天了,如果能够解决这个问题,我将不胜感激。多谢各位

batch_size = 2

input_tmt = tf.convert_to_tensor(np.asarray([50., 50., 50., 50., 50., 50., 50., 50., 50., 50., 50.,
                                             80., 80., 80., 80., 80., 80., 80., 80., 80., 80., 80.]).reshape([22, 1]))
input_images = tf.convert_to_tensor(image.flatten().reshape([884736, 1]))
print(type(input_images), input_images.shape, type(input_tmt), input_tmt.shape)

model = Sequential()
model.add(Conv3D(32, [3, 3, 3], padding='same', activation='relu',
                     input_shape=[96, 96, 96, 1]))
model.add(Conv3D(32, [3, 3, 3], padding='same', activation='relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Dropout(0.5))

model.add(Conv3D(64, [3, 3, 3], padding='same', activation='relu'))
model.add(Conv3D(64, [3, 3, 3], padding='same', activation='relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Dropout(0.5))

model.add(Conv3D(128, [3, 3, 3], padding='same', activation='relu'))
model.add(Conv3D(128, [3, 3, 3], padding='same', activation='relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), padding='same'))
model.add(Dropout(0.5))

model.add(Flatten())

model.add(concatenate([input_images, input_tmt], axis = 0))

model.add(Dense(128, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999)
model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])

model.fit(x_train, y_train, batch_size=batch_size, epochs=15)
eval = model.evaluate(x_test, y_test, batch_size=batch_size)
print(eval)

Tags: 图像addinputsizemodelbatchactivationdropout