【问题标题】:How to split my data into train, validation and test datasets?如何将我的数据拆分为训练、验证和测试数据集?
【发布时间】:2022-11-10 14:57:27
【问题描述】:

我正在使用具有以下结构的鲜花数据集:

我已经将这些数据拆分为训练集和验证集,并且我的网络基于这两个集运行。我将数据分成 80:20 的拆分,80 个用于训练,20 个用于验证。我想要一个数据拆分,所以它是 80 个训练、10 个验证和 10 个测试。我的代码在这里:

import pathlib
dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file(origin=dataset_url,
                                   fname='flower_photos',
                                   untar=True)
data_dir = pathlib.Path(data_dir)
#Loader params
batch_size = 32
img_height = 180
img_width = 180
#Training imgs
train_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)
#Validation imgs
val_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="validation",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)

我想知道如何更改此代码以添加测试集以使用来自 tensorflow 的 model.evaluate() 测试我的网络。我想在创建训练/验证集之前从文件夹中获取图像,但无法弄清楚或者是否有更简单的方法。

【问题讨论】:

  • 您是否遵循了 keras 教程?或者阅读文档?他们告诉你如何做到这一点。
  • 您可以使用 tf.keras.utils.split_dataset 函数,将 valid_ds 拆分为 test_ds。

标签: python tensorflow keras deep-learning conv-neural-network


【解决方案1】:

您可以使用 Tensorflow 2.10 中提供的tf.keras.utils.split_dataset API 将数据集拆分为训练和测试集,如下所示

train_ds,test_ds=tf.keras.utils.split_dataset(
    train_ds, left_size=None, right_size=.2,
)

请参阅此gist 以获取工作代码。谢谢!

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 2021-01-19
    • 2016-07-04
    • 2018-01-28
    • 1970-01-01
    • 2013-09-27
    • 2018-11-19
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多