【问题标题】:CNN classifier unable to classify images in a given datasetCNN 分类器无法对给定数据集中的图像进行分类
【发布时间】:2021-08-03 10:19:33
【问题描述】:

我在一个包含 40 幅花朵图像的训练数据集上使用了以下代码,但 CNN 分类器无法对其进行分类。]

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
from tensorflow.keras.preprocessing.image import ImageDataGenerator
model = Sequential()
model.add(Conv2D(16, (3, 3), input_shape = (32, 32, 3), activation = 'relu'))
model.add(MaxPooling2D(pool_size = (2, 2)))
model.add(Flatten())
model.add(Dense(units = 128, activation = 'relu'))
model.add(Dense(units = 4, activation = 'softmax'))

model.summary()
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
train_datagen = ImageDataGenerator(rescale = 1./255,
                               shear_range = 0.2,
                               zoom_range = 0.2,
                               horizontal_flip = True)
val_datagen = ImageDataGenerator(rescale = 1./255)

training_set = 
train_datagen.flow_from_directory('C:\\Users\\vinay\\flowerclassification\\dataset\\train',
                                             target_size = (32, 32),
                                             batch_size = 8
                                             )
val_set = 
val_datagen.flow_from_directory('C:\\Users\\vinay\\flowerclassification\\dataset\\val',
                                        target_size = (32, 32),
                                       batch_size = 8)

model.fit(training_set,
                     steps_per_epoch = 10,
                     epochs = 25,
                     validation_data = val_set,
                     validation_steps = 4)



model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
model.save_weights("model.h5")
print("Saved model to disk")

/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1940: UserWarning: Model.fit_generator 已弃用,将在未来版本中删除。请使用支持生成器的Model.fit。 warnings.warn('Model.fit_generator 已弃用,'

ValueError Traceback(最近一次调用最后一次) 在 () ----> 1 model.fit_generator(training_set,steps_per_epoch = 10,epochs = 25,validation_data = val_set,validation_steps = 2)

7 帧 /usr/local/lib/python3.7/dist-packages/keras_preprocessing/image/iterator.py in getitem(self, idx) 55'但顺序' 56 '有长度 {length}'.format(idx=idx, ---> 57 长度=len(self))) 58 如果 self.seed 不是无: 59 np.random.seed(self.seed + self.total_batches_seen)

ValueError: 要求检索元素 0,但序列的长度为 0

在上一步中也会打印此消息: 找到属于 0 个类别的 0 个图像。 找到属于 0 个类别的 0 张图片。

【问题讨论】:

  • 欢迎 Vinay Venugopal,请使用python-traceback 发布错误消息。欲了解更多信息,请查看here。由于我们没有输入数据,我们无法为您提供帮助。请提供信息,哪些变量在出错时具有哪些值。您可以启动调试会话或将它们打印在错误之前的行中。

标签: python tensorflow keras conv-neural-network


【解决方案1】:

请通过从model.fit 中删除steps_per_epochvalidation_steps 再次尝试执行相同的上述代码:

model.fit(training_set,
          #steps_per_epoch = 10,
          epochs = 25,
          validation_data = val_set,
         # validation_steps = 4
          )

Steps_per_epochvalidation_steps 不正确。 根据给定的images_countbatch_size,从模型中删除这些本身将计算steps_per_epoch。检查this类似的答案以供参考。

从警告开始,它显示 Model.fit_generator 已弃用。您可以改用model.fit 来删除警告。如果问题仍然存在,请告诉我们。

【讨论】:

    猜你喜欢
    • 2021-09-16
    • 2021-07-15
    • 2016-04-19
    • 1970-01-01
    • 2020-09-03
    • 2021-01-20
    • 2020-04-01
    • 2017-07-18
    • 2018-07-04
    相关资源
    最近更新 更多