【问题标题】:Concatenate 2 Tensorflow dataset for model training连接 2 个用于模型训练的 TensorFlow 数据集
【发布时间】:2021-08-20 22:52:52
【问题描述】:

我有 2 个包含 (384,384) 张图像的 tensorflow 数据集,我想将它们用作我的 model.train() 的输入数据和标签数据

data = tf.keras.preprocessing.image_dataset_from_directory('path1', labels=None, image_size=(384,384), batch_size=1)
labels = tf.keras.preprocessing.image_dataset_from_directory('path2', labels=None, image_size=(384,384), batch_size=1)

但它不允许我将 xy 作为数据集传递。

model.train(data, labels, epochs=5)

ValueError:使用数据集作为输入时不支持y 参数。

那么在这种情况下我该怎么办?

【问题讨论】:

    标签: tensorflow deep-learning tensorflow-datasets


    【解决方案1】:

    此错误表明您的第一个参数 (data) 包含数据和标签(一个元组),并且 model.fit() 不希望得到另一个参数为 y,因为您已指定 labels

    基于此doc: 如果不指定label_mode 参数,则默认为int。那么,这个对象返回的是:

    • 如果label_modeNone,它会产生float32 形状的张量(batch_size, image_size[0], image_size[1], num_channels)
    • 否则,它会产生一个元组(图像、标签),其中图像的形状为(batch_size, image_size[0], image_size[1], num_channels),如果label_modeint,则标签为int32 形状的张量(batch_size,)。李>

    推理:

    只需将另一个参数传递为label_mode 并将其设置为None,如下所示:

    data = tf.keras.preprocessing.image_dataset_from_directory('path1', labels=None, label_mode=None, image_size=(384,384), batch_size=1)
    labels = tf.keras.preprocessing.image_dataset_from_directory('path2', labels=None, label_mode=None, image_size=(384,384), batch_size=1)
    

    【讨论】:

      猜你喜欢
      • 2021-05-13
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      相关资源
      最近更新 更多