我创建了一个模型,但是当我想让模型进行估算时,出现了错误。
inputs = tf.keras.Input(shape=(512, 512,1))conv2d_layer = tf.keras.layers.Conv2D(32, (2,2), padding='Same')(inputs)conv2d_layer = tf.keras.layers.Conv2D(32, (2,2), activation='relu', padding='Same')(conv2d_layer)bn_layer = tf.keras.layers.BatchNormalization()(conv2d_layer)mp_layer = tf.keras.layers.MaxPooling2D(pool_size=(2,2))(bn_layer)drop = tf.keras.layers.Dropout(0.25)(mp_layer)conv2d_layer = tf.keras.layers.Conv2D(64, (2,2), activation='relu', padding='Same')(drop)conv2d_layer = tf.keras.layers.Conv2D(64, (2,2), activation='relu', padding='Same')(conv2d_layer)bn_layer = tf.keras.layers.BatchNormalization()(conv2d_layer)mp_layer = tf.keras.layers.MaxPooling2D(pool_size=(2,2), strides=(2,2))(bn_layer)drop = tf.keras.layers.Dropout(0.25)(mp_layer)flatten_layer = tf.keras.layers.Flatten()(drop)dense_layer = tf.keras.layers.Dense(512, activation='relu')(flatten_layer)drop = tf.keras.layers.Dropout(0.5)(dense_layer)outputs = tf.keras.layers.Dense(2, activation='softmax')(drop)model = tf.keras.Model(inputs=inputs, outputs=outputs, name='tumor_model')model.summary()
训练图像形状 (342, 512, 512, 1)
训练标签形状 (342, 2)
测试图像形状 (38, 512, 512, 1)
测试标签形状 (38, 2)
问题在这里:
pred = model.predict(test_images[12])
警告:tensorflow:模型构建时使用了形状 (None, 512, 512, 1) 作为输入 KerasTensor(type_spec=TensorSpec(shape=(None, 512, 512, 1), dtype=tf.float32, name=’input_1′), name=’input_1′, description=”created by layer ‘input_1′”), 但它被调用时输入的形状与之不兼容,为 (32, 512, 1, 1)。
回答:
错误信息告诉您 test_images.shape 是 (32,512,1,1)。请打印出 test_images.shape,然后找出您创建 test_images 时的问题所在。