【问题标题】:deep learning Denoisy Model with imageDataGenerator使用 imageDataGenerator 的深度学习去噪模型
【发布时间】:2023-03-29 05:58:01
【问题描述】:

我有这个代码:

epochs =50
batch_size = 5
validation_split = 0.2


datagen = tf.keras.preprocessing.image.ImageDataGenerator(validation_split=validation_split )


train_generator = datagen.flow(
    X_train_noisy, y_train_denoisy, batch_size=batch_size, 
    subset='training'
)

val_generator = datagen.flow(
    X_train_noisy, y_train_denoisy, batch_size=batch_size,
    subset='validation'
)

history = model.fit(train_generator,
         steps_per_epoch=(len(X_train_noisy)*(1-validation_split)) // batch_size, epochs=epochs,
                    validation_data = val_generator, validation_steps=(len(X_train_noisy)*validation_split)//batch_size)

X_train_noisy 和 y_train_denoisy 是 ndarray ([20,512,512,1]) p.e.但我得到这个错误:

训练和验证子集在拆分后具有不同数量的类

我该如何解决?

谢谢!

【问题讨论】:

    标签: python tensorflow autoencoder


    【解决方案1】:

    可能发生的情况是,当数据被拆分以进行训练和验证时,选择用于验证的文件集不包括一个或多个类中的任何文件。当您的数据集较小时,可能会发生这种情况。尝试将validation_split 增加到更大的值,比如0.5,看看问题是否消失。它应该。然后减小验证拆分的大小,直到错误再次发生。这将确定您可以使用的最小拆分值。请记住拆分是随机的,因此请将拆分值设置为高于最小值。 另一种(更好的)替代方法是使用 sklearn train_test_split 拆分数据。这个函数有一个参数stratify,它可以拆分数据,但确保所有类都包含在两个组件中。见下面的代码

    from sklearn.model_selection import train_test_split
    X_train_noisy, X_valid_noisy, y_train_denoisy, y_valid_denoisy=train_test_split(X_train_noisy,
           y_train_denoisy, test_size=validation_split, 
          shuffle=True, random_state=123, 
          stratify=y_train_denoisy)
    

    现在在 model.fit 中使用这些拆分变量

    【讨论】:

    • 错误在train_generator中:训练和验证子集在拆分后具有不同的类数。如果你的 numpy 数组是按标签排序的,你可能想要打乱它们。
    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 2023-04-10
    • 1970-01-01
    • 2017-10-22
    • 2018-02-03
    • 1970-01-01
    • 2019-12-10
    • 2015-12-31
    相关资源
    最近更新 更多