当我运行最后一部分来训练模型时,我无法检查图像是否有错误。正如你所看到的,我想检测我是否能够训练我的模型来检测动物,例如动物。猫和狗之间。 数据集。
import pandas as pd
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense
# Initiallising the CNN
classifier = Sequential()
#Convolution
classifier.add(Conv2D(32,(3,3), input_shape = (64, 64, 3), activation = 'relu'))
# Pooling
classifier.add(MaxPooling2D(pool_size = (2,2)))
# Adding a second convolutional layer
classifier.add(Conv2D(32, (3,3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2,2)))
# Flattening
classifier.add(Flatten())
# Full connection
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
# Compiling the CNN
classifier.compile(optimizer = 'adam', loss= 'binary_crossentropy', metrics = ['accuracy'])
# Fitting the CNN to the images
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
training_set = train_datagen.flow_from_directory(r"D:\Neural Network\Neural Network Full Course-20240203T042209Z-001\Neural Network Full Course - Copy\Neural Network\training_set",
target_size= (64,64),
batch_size = 32,
class_mode = 'categorical')
test_datagen = ImageDataGenerator(rescale = 1./255)
test_set = test_datagen.flow_from_directory(r"D:\Neural Network\Neural Network Full Course-20240203T042209Z-001\Neural Network Full Course - Copy\Neural Network\test_set",
target_size= (64,64),
batch_size = 32,
class_mode = 'categorical')
classifier.fit(training_set,
steps_per_epoch=700,
epochs=10,
validation_data=test_set,
validation_steps=10)
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
training_set = train_datagen.flow_from_directory(r"D:\Neural Network\Neural Network Full Course-20240203T042209Z-001\Neural Network Full Course - Copy\Neural Network\training_set",
target_size= (64,64),
batch_size = 32,
class_mode = 'categorical')
test_datagen = ImageDataGenerator(rescale = 1./255)
test_set = test_datagen.flow_from_directory(r"D:\Neural Network\Neural Network Full Course-20240203T042209Z-001\Neural Network Full Course - Copy\Neural Network\test_set",
target_size= (64,64),
batch_size = 32,
class_mode = 'categorical')
##### Here i am getting error
classifier.fit(training_set,
steps_per_epoch=700,
epochs=10,
validation_data=test_set,
validation_steps=10)
错误:
问题似乎出在
fit
函数中每个时期的步数。该错误消息表明您的数据集或生成器没有提供足够的批次来满足给定数量的epochs的指定steps_per_epoch。
在您的情况下,您设置了
steps_per_epoch=700
,这意味着训练过程预计会在一个时期内看到 700 批数据。然而,training_set生成器生成的实际批次数量可能小于该数量,从而导致错误。
要解决此问题,您可以将
steps_per_epoch
参数调整为更接近生成器生成的实际批次数的值,或者完全删除 steps_per_epoch
参数,从而允许训练过程自动确定步骤数基于数据集大小和批量大小。
这是我的更新版本的 fit 函数,没有
steps_per_epoch
参数:
classifier.fit(training_set, epochs=10, validation_data=test_set, validation_steps=10)
通过这样做,TensorFlow 将根据数据集的大小和批量大小自动计算每个 epoch 的步骤。