python - ValueError:形状为 (256,256,1) 的不可广播输出操作数与广播形状 (256,256,3) 不匹配
问题描述
我正在使用 CNN 训练灰度图像数据集(5 类)。图像大小为(100,100),像素值介于 0-1 代码之间:
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
import cv2
train = ImageDataGenerator(rescale=(100,100,1))
validation = ImageDataGenerator(rescale=(100,100,1))
train_dataset = train.flow_from_directory('C:/Users/abdul/OneDrive/Desktop/New folder/FYP/final/images/train',color_mode='grayscale')
validate_dataset = validation.flow_from_directory('C:/Users/abdul/OneDrive/Desktop/New folder/FYP/final/images/validate',color_mode='grayscale')
model = tf.keras.models.Sequential([
#convolutional layer
tf.keras.layers.Conv2D(32,(3,3), activation ="relu", input_shape = (100,100,1)),
# Flatten units
tf.keras.layers.Flatten(),
# Add a hidden layer with dropout
tf.keras.layers.Dense(128, activation="relu"),
tf.keras.layers.Dropout(0.5),
# Add an output layer with output units for all 10 digits
tf.keras.layers.Dense(4, activation="softmax")
])
# Train neural network
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_dataset, epochs=10,validation_data = validate_dataset)
解决方案
您的数据生成器存在一些问题。在rescale
您错误地设置输入大小(可能)时,您应该在其中设置一些用于规范化输入的因素。根据文档:
rescale:重新缩放因子。默认为无。如果 None 或 0,则不应用重新缩放,否则我们将数据乘以提供的值(在应用所有其他转换之后)。
而且,默认情况下,target_size
是256 x 256,但您的模型输入是100 x 100,因此您需要正确指定否则数据加载器将生成一个形状为默认值 256 的图像。根据医生
target_size:整数元组(高度,宽度),默认值:(256, 256)。找到的所有图像都将调整到的尺寸。
通过这些更改,您应该执行以下操作:
train = ImageDataGenerator(rescale=1/255.)
train_dataset = train.flow_from_directory('./train',
color_mode='grayscale',
class_mode='categorical', # one hot or 'sparse' if labels are integer
target_size=(100, 100))
对验证部分执行相同的操作。
推荐阅读
- nginx - 为什么 NGINX 会出现 504 网关超时错误?
- flutter - Flutter - 检查 TextFormField 的验证
- typescript - 基于 Typescript 中的参数类型的条件返回类型
- java - JSP 文件中的 Lambda 表达式将无法编译(续)
- python - 如何将以某个值开头的字符串分隔到单独的列中?
- react-native - 参数未定义不是路由反应本机中的对象
- azure - 如何使用 Azure Cosmos DB Spark 仅将不存在的记录写入 Cosmos DB?
- python - 当我在 python 上使用 timediff 时发生错误
- c# - ASP.NET Core MVC 视图中的 Razor Pages 路由问题
- batch-file - Windows批处理文件的颜色输出,在vscode片段中