python - 层序的输入0与层不兼容
问题描述
我创建了一个模型,然后将其加载到另一个脚本中并尝试从中执行预测,但是我不明白为什么传递给函数的形状不正确。
这是模型的创建方式:
batch_size = 1232
epochs = 5
IMG_HEIGHT = 400
IMG_WIDTH = 400
model1 = np.load("training_data.npy", allow_pickle=True)
model2 = np.load("training_data_1.npy", allow_pickle=True)
data = np.asarray(np.concatenate((model1, model2), axis=0)) # 1232
train_data = data[:-100]
X_train = np.asarray(np.array([i[0] for i in train_data]))
Y_train = np.asarray([i[1] for i in train_data])
validation_data = data[-100:]
X_val = np.asarray(np.array([i[0] for i in validation_data]))
Y_val = np.asarray([i[1] for i in validation_data])
model = Sequential([
Conv2D(16, 3, padding='same', activation='relu',
input_shape=(IMG_HEIGHT, IMG_WIDTH, 3)),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(1)
])
model.compile(optimizer='adam',
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit(X_train, Y_train, steps_per_epoch=batch_size, epochs=epochs,
validation_data=(X_val, Y_val), validation_steps=batch_size)
model.save("test")
这就是我试图做出预测的方式:
batch_size = 1232
epochs = 5
IMG_HEIGHT = 400
IMG_WIDTH = 400
model = tf.keras.models.load_model('test')
test_1 = cv2.imread('./Data/Images/test_no.jpg')
test_1 = cv2.resize(test_1, (IMG_HEIGHT, IMG_WIDTH))
prediction = model.predict([test_1])[0]
print(prediction)
打印测试图像的形状时,输出为:(400, 400, 3)
在传递测试图像进行预测时,我还尝试使用 numpy 操作 reshape 。但是错误总是:
ValueError: Input 0 of layer sequential is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 400, 3]
解决方案
为您的输入添加额外维度 [n_items,400,400,3]
import tensorflow as tf
X_train = tf.expand_dims(X_train, axis =-1)
推荐阅读
- c# - 我想将表单数据发送到 angular9 中的 api。我使用 asp.net 编写了 api
- android - Android 应用程序一直在 Ionic 5 框架上停止
- java - JavaFx:是否可以在复选框中对齐文本内容上方的框?
- c# - 如何在 Xamarin Forms 中使用 Light Theme?
- wordpress - WooCommerce 中的 Cybersource 安全验收
- javascript - 如何完美更改加号和减号以显示打开和关闭图层
- angular - Angular 项目:Chrome 调试器无法正常进行单元测试
- karate - 如何在空手道的if部分下编写多个语句?
- python - sns 中的 catplot 显示实际上不存在的交叉点
- gatsby - 如何合并两个 Gatsby Starter 库?