使用tensorflow_datasets.load(TF 2.1)将训练数据分为训练集和验证集

10
我将尝试进行以下Colab项目的运行,但是当我想要将训练数据拆分为验证和训练部分时,出现了以下错误:
KeyError: "Invalid split train[:70%]. Available splits are: ['train']"

我使用以下代码:
(training_set, validation_set), dataset_info = tfds.load(
'tf_flowers',
split=['train[:70%]', 'train[70%:]'],
with_info=True,
as_supervised=True,
)

我该如何修复这个错误?


什么是Colab项目? - furas
https://colab.research.google.com/github/tensorflow/examples/blob/master/courses/udacity_intro_to_tensorflow_for_deep_learning/l06c02_exercise_flowers_with_transfer_learning.ipynb - Pouya Ahmadvand
2个回答

9
根据Tensorflow数据集文档,你提出的方法现在得到支持。可以通过将split参数传递给tfds.load来实现拆分,例如split="test[:70%]"
(training_set, validation_set), dataset_info = tfds.load(
    'tf_flowers',
    split=['train[:70%]', 'train[70%:]'],
    with_info=True,
    as_supervised=True,
)

使用上述代码,training_set有2569个条目,而validation_set有1101个条目。
感谢Saman对API弃用的评论:
在以前的Tensorflow版本中,可以使用现在已被弃用的tfds.Split API。
(training_set, validation_set), dataset_info = tfds.load(
    'tf_flowers',
    split=[
        tfds.Split.TRAIN.subsplit(tfds.percent[:70]),
        tfds.Split.TRAIN.subsplit(tfds.percent[70:])
    ],
    with_info=True,
    as_supervised=True,
)

错误:'Split'对象没有属性'subsplit'。 - Saman
这对我有用,也许你可以更新你的答案:(tfds_train_ds, tfds_test_ds), tfds_info = tfds.load( dataset_name, split=[ 'train[:50%]', 'train[50%:]'], with_info=True) - Saman

0
如果您需要分配trainingvalidationtest子集(70%,15%,15%),这是代码(从here获取)
(training_set, validation_set, test_set), dataset_info = tfds.load(
    'tf_flowers',
    split=['train[:70%]', 'train[70%:85%]', 'train[85%:]',
    with_info=True,
    as_supervised=True,
    )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接