所以我正在尝试制作一个包含 150 个类的照片分类器。我正在尝试在谷歌colab TPU上运行它,我知道我需要tfds
try_gcs = True
,为此我需要在谷歌colab云上放置一个数据集。所以我将生成器转换为 tfds,将其存储在本地使用
my_tf_ds = tf.data.Dataset.from_generator(datafeeder.allGenerator,
output_signature=(
tf.TensorSpec(shape=(64,64,3), dtype=tf.float32),
tf.TensorSpec(shape=(150), dtype=tf.float32)))
tf.data.experimental.save(my_tf_ds,filename)
然后我把它发送到GCS上的桶里。 但是当我尝试从我的存储桶加载它时
import tensorflow_datasets as tfds
dsFromGcs = tfds.load("pokemons",data_dir = "gs://dataset-7000")
它不起作用,并提供可用的数据集,例如:
- abstract_reasoning
- accentdb
- aeslc
- aflw2k3d
- ag_news_subset
- ai2_arc
- ai2_arc_with_ir
- amazon_us_reviews
- anli
- arc
不在我的 GCS 存储桶上。
从本地自己加载时:
tfds_from_file = tf.data.experimental.load(filename, element_spec= (
tf.TensorSpec(shape=(64,64,3), dtype=tf.float32),
tf.TensorSpec(shape=(150), dtype=tf.float32)))
它有效,数据集很好。
所以我不明白为什么我不能在 gcs 上阅读它,我们可以在 GCS 上阅读私有 ds 吗?或仅已定义的数据集。我还向公众展示了我Bucket上的角色Storage Legacy Bucket Reader
。
我认为tfds.loaddata_dir
参数是模块将东西本地存储在您的设备上的位置,try_gcs
是是否流式传输数据。因此,data_dir
不能用于将模块指向您的 GCS 存储桶。
以下是您可以尝试的一些想法:
- 可以尝试以下步骤将数据集添加到 TFDS,然后应该能够使用
tfds.load
加载它 - 您可以使用
tf.data.experimental.save
(我认为您已经这样做了)获取正确格式的数据集并将其保存到GCS,然后使用tf.data.experimental.load
加载它,您说它在本地为您工作。您可以按照以下步骤安装gcsfuse
,并使用它来将数据集从 GCS 下载到 Colab。 - 您可以尝试 TFRecord 来加载您的数据集。这是一个带有解释的Codelab,然后这是一个在Codelab中链接的Colab示例