将私人数据从GCS流式传输到谷歌协作TPU



所以我正在尝试制作一个包含 150 个类的照片分类器。我正在尝试在谷歌colab TPU上运行它,我知道我需要tfdstry_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 存储桶。

以下是您可以尝试的一些想法:

  1. 可以尝试以下步骤将数据集添加到 TFDS,然后应该能够使用tfds.load加载它
  2. 您可以使用tf.data.experimental.save(我认为您已经这样做了)获取正确格式的数据集并将其保存到GCS,然后使用tf.data.experimental.load加载它,您说它在本地为您工作。您可以按照以下步骤安装gcsfuse,并使用它来将数据集从 GCS 下载到 Colab。
  3. 您可以尝试 TFRecord 来加载您的数据集。这是一个带有解释的Codelab,然后这是一个在Codelab中链接的Colab示例

相关内容

  • 没有找到相关文章

最新更新