微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将私人数据从 GCS 流式传输到 google collab TPU

如何解决将私人数据从 GCS 流式传输到 google collab TPU

所以我正在尝试制作一个包含 150 个类的照片分类器。我正在尝试在 google colab TPU 上运行它,我知道我需要一个带有 tfdstry_gcs = True,为此我需要将数据集放在 google 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,dtype=tf.float32)))

它有效,数据集很好。

所以我不明白为什么我不能在 gcs 上读取它,我们可以在 GCS 上读取 private ds 吗?或者只有已经定义的数据集。我还公开了我的 Bucket 上的角色 Storage Legacy Bucket Reader

解决方法

我认为 tfds.loaddata_dir 参数是模块将在您的设备上本地存储内容的位置,而 try_gcs 是是否流式传输数据。因此,data_dir 不能用于将模块指向您的 GCS 存储桶。

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

  1. 您可以尝试使用 these steps 将您的数据集添加到 TFDS,然后您应该可以使用 tfds.load
  2. 您可以使用 tf.data.experimental.save 获取正确格式的数据集(我认为您已经完成了)并将其保存到 GCS,然后使用您所说的 tf.data.experimental.load 加载它你在当地。您可以按照 these steps 安装 gcsfuse 并使用它从 GCS 将您的数据集下载到 Colab。
  3. 您可以尝试使用 TFRecord 加载数据集。 Here 是带有解释的代码实验室,然后 here 是代码实验室中链接的 Colab 示例

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。