python - 获取用于在 tensorflow 中训练自定义模型的 imagenet 数据集的任何简单方法?

标签 python tensorflow

在我的实验中,我想在 imagenet 上训练我的自定义模型数据集。为简单起见,我对 10/100 类分类任务感兴趣。但是,直接下载imagenet数据集来自 tfds需要大量的硬盘空间。是否有任何解决方法可以对 imagenet 进行子集化?数据集所以子集 imagenet数据集是否适合 10/100 类分类任务?有谁知道有什么办法可以做到这一点?任何的想法?
一般来说,cifar10 , cifar100使用 TensorFlow 的函数式 api 非常方便。但是,在我的实验中,我想在 imagenet 上训练我自己的模型。 .我想避免下载 imagenet直接使用数据集,相反,我想要一些较少计算的方法,以便我可以在子集 imagenet 上训练我的自定义模型(10 或 100 级分类)。有什么办法可以做到这一点吗?有什么想法吗?
我尝试下载 imagenet
这是我尝试下载 imagenet本地数据集,然后在 imagenet 上训练我的自定义模型数据集。但是下载和加载用于训练的数据非常耗时。但这就是我所做的:

import keras
import tensorflow as tf
import tensorflow_datasets as tfds

## fetch imagenet dataset directly
imagenet = tfds.image.Imagenet2012()

## describe the dataset with DatasetInfo
C = imagenet.info.features['label'].num_classes
n_train = imagenet.info.splits['train'].num_examples
n_validation = imagenet.info.splits['validation'].num_examples

assert C == 1000
assert n_train == 1281167
assert n_validation == 50000

imagenet.download_and_prepare()   ## need more space in harddrive

# load imagenet data from disk as tf.data.Datasets
datasets = imagenet.as_dataset()
train_data, validation_data= datasets['train'], datasets['validation']
assert isinstance(train_data, tf.data.Dataset)
assert isinstance(validation_data, tf.data.Dataset)
如果我喜欢这个,下载会很耗时,并且需要更多的硬盘空间。有没有更简单的方法来子集imagenet数据集并从 TensorFlow 获取?有谁知道获得更小的更简单的方法 imagenet 10/100 分类任务的数据集?有什么想法吗?
所需的输出
通常我们可以得到cifar10 , cifar100来自 tf.keras.datasets .我们可以将 imagenet 数据集子集到(200k ~ 500K)范围内吗?在 imagenet 上获取用于训练自定义模型的 imagenet 数据集是否有任何不那么痛苦的方法?数据?任何的想法?

最佳答案

我自己想出来的。我需要使用 tiny_imagenet_200 :

import os, sys, wget
from zipfile import ZipFile

url = 'http://cs231n.stanford.edu/tiny-imagenet-200.zip'
tiny_imgdataset = wget.download('http://cs231n.stanford.edu/tiny-imagenet-200.zip', out = os.getcwd())
for file in os.listdir(os.getcwd()):
    if file.endswith(".zip"):
        zip = ZipFile(file)
        zip.extractall()
    else:
        print("not found")

关于python - 获取用于在 tensorflow 中训练自定义模型的 imagenet 数据集的任何简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66288078/

相关文章:

Python - 过滤字典 JSON 响应以仅发回两个值或转换为字符串?

python - 我编写了一个简单的代码来查找两个数字的 GCD,并尝试了 3 个值 (3, 12)、(35, 24)、(24,12)

python - 在 Tensorflow 2 中的每个纪元之后计算每个类的召回率

c++ - 在 TensorFlow 存储库之外构建 TensorFlow C++ 项目?

python - 使用 protobuf 从 tfrecords 文件中提取图像而不运行 TensorFlow session

python - 将 Excel Oracle DB 查询转换为 Python Pandas

python - 根据值替换 DataFrame 中的行

python : Manipulating Arguments from a list of objects.

python - 仅获取张量的一部分的对角线元素

python - 如何在 MNIST 上使用 tf.contrib.model_pruning?