如何在Tensorflow 2.0中创建训练、测试和验证分割

bhmjp9jg  于 2023-03-19  发布在  其他
关注(0)|答案(4)|浏览(115)

我是tensorflow的新手,已经开始使用tensorflow 2.0
我已经为多类分类问题建立了一个张流数据集。让我们称之为labeled_ds。我已经准备好了这个数据集,从它们各自的类目录中加载所有的图像文件。我已经沿着这里的教程:tensorflow guide to load image dataset
现在,我需要将labeld_ds拆分为三个不相交的部分:训练、验证和测试。我正在浏览tensorflow API,但没有允许指定分割百分比的示例。我在load method中找到了一些东西,但我不确定如何使用它。此外,我如何使分割分层?

# labeled_ds contains multi class data, which is unbalanced.
train_ds, val_ds, test_ds = tf.data.Dataset.tfds.load(labeled_ds, split=["train", "validation", "test"])

我被困在这里,希望能得到任何关于如何从这里进步的建议。提前感谢。

gtlvzcf8

gtlvzcf81#

请参考以下代码,使用tensorflow 数据集“oxford_flowers102”创建训练、测试和验证拆分

!pip install tensorflow==2.0.0

import tensorflow as tf
print(tf.__version__)
import tensorflow_datasets as tfds

labeled_ds, summary = tfds.load('oxford_flowers102', split='train+test+validation', with_info=True)

labeled_all_length = [i for i,_ in enumerate(labeled_ds)][-1] + 1

train_size = int(0.8 * labeled_all_length)
val_test_size = int(0.1 * labeled_all_length)

df_train = labeled_ds.take(train_size)
df_test = labeled_ds.skip(train_size)
df_val = df_test.skip(val_test_size)
df_test = df_test.take(val_test_size)

df_train_length = [i for i,_ in enumerate(df_train)][-1] + 1
df_val_length = [i for i,_ in enumerate(df_val)][-1] + 1
df_test_length = [i for i,_ in enumerate(df_test)][-1] + 1

print('Original: ', labeled_all_length)
print('Train: ', df_train_length)
print('Validation :', df_val_length)
print('Test :', df_test_length)
ou6hu8tu

ou6hu8tu2#

我有same problem
这取决于数据集,大多数数据集都有训练集和测试集。在这种情况下,您可以执行以下操作(假设80-10-10拆分):

splits, info = tfds.load('fashion_mnist', with_info=True, as_supervised=True,
split=['train+test[:80]','train+test[80:90]', 'train+test[90:]'],
data_dir=filePath)
w8f9ii69

w8f9ii693#

  • 弗朗切斯科·博伊·苏伦对我很有帮助 *
splits, info = tfds.load('fashion_mnist', with_info=True, as_supervised=True, split=['train+test[:80]','train+test[80:90]', 'train+test[90:]'])

(train_examples, validation_examples, test_examples) = splits
vuktfyat

vuktfyat4#

导入tensorflow 数据集:

将tensorflow_datasets导入为tfd

MNIST_info用于在加载MNIST数据集后保存MNIST数据集:

MNIST数据集,MNIST信息= tfds.加载(名称=“MNIST”,信息=真,监督=真)

将MNIST数据集分为两部分,训练和测试数据集:

MNIST_train,MNIST_test = MNIST_数据集[“train”],MNIST_数据集[“test”]
验证样本数=0.1*MNIST信息拆分[“列车”].示例数

(分配10%的训练数据集以创建确认数据集。)

一旦创建了验证数据集,我们就可以将样本转换为整数。

验证样本数= tf.cast(验证样本数,tf.int64)

同样,我们以类似的方式创建了测试样本,

测试样本数= MNIST信息.拆分[“测试”].示例数
测试样本数= tf.cast(测试样本数,tf.int64)
训练样本数= 0.8*MNIST信息拆分[“训练”].示例数

(从测试数据集中分配80%用于创建训练数据集。)

训练样本数= tf.cast(训练样本数,tf.int64)
希望这已经回答了您的问题🙂👍

相关问题