Python 是否可以只加载TensorFlow数据集的一部分?

Python 是否可以只加载TensorFlow数据集的一部分?,python,tensorflow,tensorflow-datasets,Python,Tensorflow,Tensorflow Datasets,我在Google Colab中有一个笔记本,上面有以下代码: batch_size = 64 dataset_name = 'coco/2017_panoptic' tfds_dataset, tfds_info = tfds.load( dataset_name, split='train', with_info=True) 我想知道是否可以使用tfds\u load功能仅下载部分数据集(例如:5%或X个图像)。据我在文档中看到的,没有这样做的参数。当然,可以在

我在Google Colab中有一个笔记本,上面有以下代码:

batch_size = 64
dataset_name = 'coco/2017_panoptic'

tfds_dataset, tfds_info = tfds.load(
    dataset_name, 
    split='train', 
    with_info=True)
我想知道是否可以使用
tfds\u load
功能仅下载部分数据集(例如:5%或X个图像)。据我在文档中看到的,没有这样做的参数。当然,可以在下载后对数据集进行切片,但是这个特定的数据集(
coco/2017\u Panopic
)是19.57 GiB,下载显然需要相当长的时间;从:

拆分要加载的数据的拆分(例如,'train'、'test'、['train'、'test']、'train[80%:]',…)。请参阅我们的SplitAPI指南。如果没有,将返回Dict[Split,tf.data.Dataset]中的所有拆分

因此,如果我想要MNIST数据集训练集的前5%,我可以这样做:

>>> mnist_ds_5p = tfds.load("mnist", split="train[:5%]")
>>> # looking at the size of the dataset
>>> mnist_ds_5p.cardinality()
<tf.Tensor: shape=(), dtype=int64, numpy=3000>
>>mnist\u ds\u 5p=tfds.load(“mnist”,split=“train[:5%]”)
>>>#查看数据集的大小
>>>mnist_ds_5p.基数()
我们有3000个,所以5%


您可以通过阅读

了解有关拆分语法的更多信息原始问题是关于如何下载数据集的子集

因此,建议使用像
split='train[:5%]”这样的参数作为只下载5%训练数据的方法的答案是错误的。看起来它仍然下载整个数据集,但只加载5%

您可以通过运行
mnist\u ds\u 5p=tfds.load(“mnist”,split=“train[:5%]”
然后是
mnist\u ds=tfds.load(“mnist”,split=“train”)

运行第二个命令后不会进行下载。这是因为在运行第一个命令之后,整个数据集已经被下载和缓存


由于许多数据集都是从压缩表单中获取的,我怀疑有没有简单的方法可以避免下载整个数据集。

谢谢!我把这解释为只能设定分割比例;不是每个分割的实际大小。