如何解决将私人数据从 GCS 流式传输到 google collab TPU
所以我正在尝试制作一个包含 150 个类的照片分类器。我正在尝试在 google colab TPU 上运行它,我知道我需要一个带有 tfds
的 try_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.load 的 data_dir
参数是模块将在您的设备上本地存储内容的位置,而 try_gcs
是是否流式传输数据。因此,data_dir
不能用于将模块指向您的 GCS 存储桶。
以下是您可以尝试的一些想法:
- 您可以尝试使用 these steps 将您的数据集添加到 TFDS,然后您应该可以使用
tfds.load
- 您可以使用
tf.data.experimental.save
获取正确格式的数据集(我认为您已经完成了)并将其保存到 GCS,然后使用您所说的tf.data.experimental.load
加载它你在当地。您可以按照 these steps 安装gcsfuse
并使用它从 GCS 将您的数据集下载到 Colab。 - 您可以尝试使用 TFRecord 加载数据集。 Here 是带有解释的代码实验室,然后 here 是代码实验室中链接的 Colab 示例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。