使用 CNN 的多类图像分类中的错误

Posted

技术标签:

【中文标题】使用 CNN 的多类图像分类中的错误【英文标题】:Errors in Multi class image classification using CNN 【发布时间】:2021-12-25 06:46:03 【问题描述】:

我对 CNN 和 python 还很陌生,我正在尝试对包含 3 个类的图像进行分类。每当我尝试训练我的模型时,我都会收到错误:TypeError:无法将 0.6 转换为 dtype int64 的 EagerTensor。我不完全确定该怎么做或如何解决它,希望能提供任何帮助。

代码如下:

train_gen=ImageDataGenerator(rescale=1./255)

validation_gen=ImageDataGenerator(rescale=1./255)

train_generator=train_gen.flow_from_dataframe(
    train_df,
    "/Users/danieladegborioye/Documents/school/FIFTH YEAR/ENGR 418 Applied Machine learning /Lego_dataset_1/training/",
    x_col='filename',
    y_col='category',
    target_size=(150,150),
    class_mode="categorical",
    batch_size=32
)

validation_generator=validation_gen.flow_from_dataframe(
    validate_df,
    "/Users/danieladegborioye/Documents/school/FIFTH YEAR/ENGR 418 Applied Machine learning /Lego_dataset_1/training/",
    x_col='filename',
    y_col='category',
    target_size=(150,150),
    class_mode="categorical",
    batch_size=32
)


epochs=10
batch_size=10

history=modell.fit(
    train_generator,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=total_validate/batch_size,
    steps_per_epoch=total_train/batch_size,
    callbacks=callbacks
)

【问题讨论】:

不确定是什么问题,但我建议您确保类别列中的值是字符串。使用 train_df['category']=train_df['category'].astype(str) 【参考方案1】:

如果batch_size 大于total_validatetotal_train,则steps_per_epoch 将小于1,从而导致'TypeError: Cannot convert 0.6 to EagerTensor of dtype int64'

【讨论】:

以上是关于使用 CNN 的多类图像分类中的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Keras 进行多类图像分类的多重预测

Keras CNN:图像的多标签分类

在 CNN 提取特征之上使用 SVM - 如何进行多类分类?

我的 CNN 分类器对随机图像给出了错误的预测

使用 Keras 稀疏分类交叉熵进行像素级多类分类

如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?