tensorflow.load 对比下载 URL

tensorflow.load vs download URL

我是TensorFlow 2的初学者,我使用的是tensorflow 2.3.1版本。

我想构建一个基于 Inception v3 的图像分类器。在使用 Inception 网络中的数据之前,我必须先准备数据。对于此任务,我将使用 'oxford_flower102' 数据集。找到了两种获取数据集的方法,但不知道在什么情况下应该使用哪种方法

  1. 通过使用 tfds.load
import tensorflow as tf
dataset, dataset_info = tfds.load('oxford_flowers102, with_info=True, as_supervised=True)

  1. 通过 URL
  2. 下载数据集
from six.moves import urllib
import os
import tarfile

FILE_NAME='102flowers.tgz'
FLOWERS_DIR = os.getcwd() + '/jpg'

def download_images():
   downloadedPath = os.getcwd()+ '/'+FILE_NAME
   if not os.path.exists(downloadedPath):
       download_ulr='http://www.robots.ox.ac.uk/~vgg/data/flowers/102/102flowers.tgz'
       urllib.request.urlretrieve(download_ulr,FILE_NAME)
   else:
       print('dataset already downloaded in : ', downloadedPath)

def extract_tgz_file():
   if not os.path.exists(FLOWERS_DIR):
       print('extracting files ...')
       tar=tarfile.open(FILE_NAME, "r:gz")
       tar.extractall()
       tar.close()
       print('files now extracted in : ', FLOWERS_DIR)
   else:
       print('extraced file already exists in : ', FLOWERS_DIR)

def make_dataset_ready():
   download_images()
   extract_tgz_file()

第一种方法要短得多,而且很容易将训练数据集和测试数据集分开。第二种方式更长,并且必须手动完成训练和测试数据集的拆分。现在让我回答我的问题:

  1. 第二种方式有什么好处,通过 URL 下载并稍后将数据集手动拆分为训练和测试数据集?
  2. 我的目标是稍后将数据集输入 inception v3,使用 tfds.load() 函数对这项任务有什么缺点吗?

感谢支持!

  • tfds.load 是tensorflow的实用方法,你可以使用它 下载一组预定义的数据集。使用这个的好处 方法是 returns tf.data.Dataset 中的数据可以是 直接用于训练模型。它还 returns 第二个值 tfds.core.DatasetInfo 类型,其中包含有关的信息 数据集。
  • urllib.request.urlretrieve 是从 url 下载数据的 python 模块。因此,您必须下载 url 上托管的数据集,了解其格式并将其转换为可用于训练模型或进行推理的格式。
  • 如果你的意图是在tensorflow中训练一个inception模型那么它的意思是完全使用tfds.load下载数据并使用tensorflow数据集来训练它。
  • 但是,如果您的数据集不作为 tfds.load 命名数据集的一部分提供,则您必须下载数据并将其转换为所需格式,一种方法是使用 urllib