尝试用python制作机器学习代码.但当第一个历元结束时,我会出错



我正在尝试制作读取图像的机器学习模型。但在第一个历元结束时出错。

tensorflow.python.framework.errors_impl.InvalidArgumentError:要整形的输入是一个值为147456的张量,但请求的形状需要12544的倍数有什么想法吗?

validation_generator = ImageDataGenerator(rescale=1./255)
train_data_gen = train_generator.flow_from_dataframe(
dataframe=df,
#directory="CatDog",   
x_col="images",
y_col="label",
class_mode="binary",
batch_size=64,
target_size=(128,128))
validation_data_gen = validation_generator.flow_from_dataframe(
dataframe=df,
#directory='',
x_col="images",
y_col="label",
class_mode="binary",
batch_size=64,
target_size=(64,64))
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten
model = Sequential([
Conv2D(16, (3,3), activation='relu', input_shape=(128,128,3)),
MaxPool2D((2,2)),
Conv2D(32, (3,3), activation='relu'),
MaxPool2D((2,2)),
Conv2D(64, (3,3), activation='relu'),
MaxPool2D((2,2)),
Flatten(),
Dense(512, activation='relu'),
Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model.summary()
history = model.fit(train_data_gen, epochs=2, validation_data=validation_data_gen)

我不确定是否有完整的代码。已经出现了一些问题。

  1. 第1行:rescale=1./255CCD_ 2将使您的图像从";0~255 8位整数图像";至";0~1浮动图像";。因此,请确保您的培训数据、验证数据和测试数据的格式相同。也就是说,您可能还需要重新缩放train_generator
  2. 第19行:target_size=(64,64)最好使用相同的target_size。如果图像的原始大小足够大,请将target_size设置为不小于模型的input_shape,以避免多次调整图像大小。它可能会丢失您的一些图像信息
  3. 第33行:Dense(1, activation='sigmoid')最后一个Dense layer通常是您的分类层。设置Dense(1, ...)意味着您的标签编号仅为1。如果要将图像分类为猫或狗,可以设置Dense(2, ...)activation='sigmoid'会给你一个模型认为图像与标签匹配程度的百分比。您可能需要使用activation='softmax'来给出分类结果

基本上,我猜,错误是由错误的密集(单位,…(引起的。

相关内容

  • 没有找到相关文章

最新更新