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

时间:2020-06-25 14:57:40

标签: python deep-learning concatenation

我有以下代码,我试图将22张大小为(96、96、96)的3D图像与其对应的测试值(例如,显示为input_tmt)(例如50)组合在一起。换句话说,我希望一幅图像的测试值为50,而另一幅图像的测试值为80。我可以通过CNN运行图像,但是我被卡在了串联层上。

我试图将两个输入值都更改为一维张量,图像的张量分别为(884736,1)和测试值的(22,1),并试图将它们连接起来,但是我收到了错误添加的图层必须是类Layer的实例。找到:Tensor(“ 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)

0 个答案:

没有答案