如何在 TensorFlow 中使用我自己的数据将图像拆分为测试和训练集

     2023-03-12     7

关键词:

【中文标题】如何在 TensorFlow 中使用我自己的数据将图像拆分为测试和训练集【英文标题】:How to split images into test and train set using my own data in TensorFlow 【发布时间】:2020-05-24 14:54:50 【问题描述】:

我在这里有点困惑...我刚刚花了一个小时阅读有关如何在 TensorFlow 中将我的数据集拆分为测试/训练的信息。我正在按照本教程导入我的图像:https://www.tensorflow.org/tutorials/load_data/images。显然,可以使用 sklearn:model_selection.train_test_split 拆分为训练/测试。

但我的问题是:我何时将数据集拆分为训练/测试。我已经用我的数据集完成了这个(见下文),现在怎么办?我该如何拆分它?在将文件加载为tf.data.Dataset 之前我必须这样做吗?

# determine names of classes
CLASS_NAMES = np.array([item.name for item in data_dir.glob('*') if item.name != "LICENSE.txt"])
print(CLASS_NAMES)

# count images
image_count = len(list(data_dir.glob('*/*.png')))
print(image_count)


# load the files as a tf.data.Dataset
list_ds = tf.data.Dataset.list_files(str(cwd + '/train/' + '*/*'))

另外,我的数据结构如下所示。没有 test 文件夹,没有 val 文件夹。我需要从那组火车中抽取 20% 的时间进行测试。

train
 |__ class 1
 |__ class 2
 |__ class 3

【问题讨论】:

【参考方案1】:

你可以使用tf.keras.preprocessing.image.ImageDataGenerator:

image_generator = tf.keras.preprocessing.image.ImageDataGenerator(validation_split=0.2)
train_data_gen = image_generator.flow_from_directory(directory='train',
                                                     subset='training')
val_data_gen = image_generator.flow_from_directory(directory='train',
                                                   subset='validation')

请注意,您可能需要为您的生成器设置其他 data-related parameters。

更新:您可以通过skip()take() 获取数据集的两个切片:

val_data = data.take(val_data_size)
train_data = data.skip(val_data_size)

【讨论】:

知道了!谢谢。但是,如果我使用tf.data 加载我的图像,然后使用Dataset.map 创建图像数据集,标签对呢?我现在有我所有的图像在train_ds = prepare_for_training(labeled_ds) 那你会如何分割它?我正在关注本教程:tensorflow.org/tutorials/load_data/images【参考方案2】:

如果您将所有数据都放在同一个文件夹中,并希望使用tf.data 拆分为验证/测试,请执行以下操作:

list_ds = tf.data.Dataset.list_files(str(cwd + '/train/' + '*/*'))
image_count = len(list(data_dir.glob('*/*.png')))

val_size = int(image_count * 0.2) 
train_set = list_ds.skip(val_size)
val_set = list_ds.take(val_size) 

【讨论】:

如何拆分自己的数据集以在 Tensorflow CNN 中进行训练和验证

】如何拆分自己的数据集以在TensorflowCNN中进行训练和验证【英文标题】:HowtosplitowndatasettotrainandvalidationinTensorflowCNN【发布时间】:2017-11-0501:01:56【问题描述】:我正在使用CNNTensorflow代码-->https://www.tensorflow.org/tutorials/layers我... 查看详情

如何在 TensorFlow 2.0 中使用 Dataset.window() 方法创建的窗口?

】如何在TensorFlow2.0中使用Dataset.window()方法创建的窗口?【英文标题】:HowtousewindowscreatedbytheDataset.window()methodinTensorFlow2.0?【发布时间】:2019-08-2102:17:54【问题描述】:我正在尝试使用TensorFlow2.0创建一个数据集,该数据集将返回... 查看详情

在自己的数据集上训练 TensorFlow 对象检测

】在自己的数据集上训练TensorFlow对象检测【英文标题】:TrainTensorflowObjectDetectiononowndataset【发布时间】:2017-12-1121:27:26【问题描述】:在花了几天时间尝试完成这项任务后,我想分享一下我如何回答这个问题的经验:如何使用TS... 查看详情

如何在 TensorFlow 中计算 CNN 的准确度

】如何在TensorFlow中计算CNN的准确度【英文标题】:HowtocomputeaccuracyofCNNinTensorFlow【发布时间】:2017-07-2506:40:51【问题描述】:我是TensorFlow新手。我正在用自己的数据集进行二进制分类。但是我不知道如何计算准确性。谁能帮我做... 查看详情

如何在 RNN TensorFlow 中使用非常大的数据集?

】如何在RNNTensorFlow中使用非常大的数据集?【英文标题】:HowtouseverylargedatasetinRNNTensorFlow?【发布时间】:2017-12-3103:00:47【问题描述】:我有一个非常大的数据集:7.9GB的CSV文件。其中80%作为训练数据,剩下的20%作为测试数据。... 查看详情

如何在 GCP 中运行自己的学习算法?

...taprep。我的问题与模型创建阶段有关。根据一些教程,在TensorFlow中使用DNN或Li 查看详情

如何让 HMM 在 TensorFlow 中处理实值数据

】如何让HMM在TensorFlow中处理实值数据【英文标题】:HowtogetHMMworkingwithreal-valueddatainTensorflow【发布时间】:2021-03-0715:02:51【问题描述】:我正在使用一个包含来自IoT设备的数据的数据集,我发现隐马尔可夫模型非常适合我的用例... 查看详情

tensorflow中tfrecords使用介绍

  这篇文章主要讲一下如何用Tensorflow中的标准数据读取方式简单的实现对自己数据的读取操作.主要分为以下两个步骤:(1)将自己的数据集转化为xx.tfrecords的形式;(2):在自己的程序中读取并使用.tfrecords进行操作&#x... 查看详情

如何在 Tensorflow Keras 中标准化我的图像数据

】如何在TensorflowKeras中标准化我的图像数据【英文标题】:howtonormalizemyimagedatainTensorflowKeras【发布时间】:2020-10-0404:37:46【问题描述】:如前所述,我正在尝试在训练我的模型之前标准化我的数据集。我以前使用tf.keras.preprocessin... 查看详情

如何将 Membership API 与自己的应用程序相关数据结合使用?

】如何将MembershipAPI与自己的应用程序相关数据结合使用?【英文标题】:HowtocombineusingMembershipAPIwithownapplicationrelateddata?【发布时间】:2011-09-2519:42:20【问题描述】:在asp.net4中设计一个新应用程序我必须决定如何使用MSSQLMembership... 查看详情

Tensorflow:如何将预训练模型已经嵌入的数据输入到 LSTM 模型中?

】Tensorflow:如何将预训练模型已经嵌入的数据输入到LSTM模型中?【英文标题】:Tensorflow:Howtoinputdataalreadyembeddedbypre-trainmodelintoaLSTMmodel?【发布时间】:2022-01-2003:06:37【问题描述】:我是TensorFlow的新手。我正在构建一个简单的LSTM... 查看详情

我如何在自己的数据库中使用 firebase 验证

】我如何在自己的数据库中使用firebase验证【英文标题】:Howicanusethefirebaseverificationinmyowndatabase【发布时间】:2021-11-2601:11:45【问题描述】:我正在开发一个应用程序。我正在使用火力和颤振。但现在我将从firebase更改为我自己... 查看详情

tensorflow中数据读取之tfrecords(代码片段)

关于Tensorflow读取数据,官网给出了三种方法:供给数据(Feeding):在TensorFlow程序运行的每一步,让Python代码来供给数据。从文件读取数据:在TensorFlow图的起始,让一个输入管线从文件中读取数据。预加载数据:在TensorFlow图中定... 查看详情

在 Gatsby 配置中,如何将元数据对象隔离到它自己的文件中,但仍然能够在 GraphQL 中使用它?

】在Gatsby配置中,如何将元数据对象隔离到它自己的文件中,但仍然能够在GraphQL中使用它?【英文标题】:InGatsbyconfighowcanIisolatethemetadataobjecttoit\'sownfilebutstillbeabletouseitinGraphQL?【发布时间】:2021-05-0217:19:53【问题描述】:学习Ga... 查看详情

如何避免在 TensorFlow 中添加重复的集合?

】如何避免在TensorFlow中添加重复的集合?【英文标题】:HowdoIavoidaddingduplicatecollectionsinTensorflow?【发布时间】:2017-10-2004:07:59【问题描述】:Tensorflow初学者在这里。我有一段代码(一起)对一组图像进行训练和验证。每隔一段... 查看详情

在 Tensorflow 中使用 BigQueryReader 读取数据

】在Tensorflow中使用BigQueryReader读取数据【英文标题】:readingdatawithBigQueryReaderinTensorflow【发布时间】:2017-08-2111:18:35【问题描述】:我尝试使用来自Tensorflow的BigQueryReader,但我没有成功读取数据。这是我的代码:importtensorflowastffr... 查看详情

如何在 DCGAN 中使用 celebA 数据集

...【发布时间】:2020-04-1809:21:29【问题描述】:我正在尝试Tensorflow的DCGAN教程https://www.tensorflow.org/tutorials/generative/dcgan在页面底部,它说我可以在kaggle上使用celebA数据集尝试这个模型,但是,在尝试了一些方法后,我仍然找 查看详情

如何使用 tensorflow 在 C++ 中训练模型?

】如何使用tensorflow在C++中训练模型?【英文标题】:HowtotrainamodelinC++withtensorflow?【发布时间】:2016-05-2704:25:05【问题描述】:我尝试用深度学习模型训练一个实验。我发现tensorflow是最好的方法。但是存在需要用python编写tensorflow... 查看详情