TensorFlow端侧训练:如何替换为谷歌云存储自定义数据集?
替换自定义数据集到TensorFlow端侧训练教程的方法
先纠正你的错误代码问题
你之前的写法完全行不通:
- 把GCS控制台的网页链接赋值给变量后调用
load_data()是错的,因为load_data()是TensorFlow内置数据集对象的专属方法,字符串类型没有这个方法。 - 控制台链接是网页界面地址,不是数据集的直接访问路径,你需要用GCS存储桶的直接访问路径:
gs://bucketname/你的数据集目录
最简单的自定义数据集加载方法(适合按类别分文件夹的图像)
TensorFlow提供了tf.keras.utils.image_dataset_from_directory,专门用来加载按类别分文件夹存储的图像数据集,而且直接支持GCS路径,完全匹配你的需求。
假设你的GCS桶里的数据集结构是这样的(和Fashion MNIST的分类逻辑对应):
gs://bucketname/ ├─ train/ │ ├─ class1/ # 比如"T恤"类的所有图像 │ ├─ class2/ # 比如"裤子"类的所有图像 │ └─ ... └─ test/ ├─ class1/ ├─ class2/ └─ ...
对应的代码如下:
import tensorflow as tf # 加载训练集,自动从文件夹名生成标签 train_ds = tf.keras.utils.image_dataset_from_directory( 'gs://bucketname/train', image_size=(28, 28), # 按教程需求调整尺寸,Fashion MNIST是28x28 batch_size=32 # 批次大小和教程保持一致即可 ) # 加载测试集 test_ds = tf.keras.utils.image_dataset_from_directory( 'gs://bucketname/test', image_size=(28, 28), batch_size=32 )
这个方法会自动帮你完成:
- 读取GCS上的图像文件
- 根据文件夹名生成对应的分类标签
- 返回
tf.data.Dataset对象,和教程里Fashion MNIST加载后的数据集格式兼容,直接可以用于后续的模型训练、转换TFLite等步骤
关于你问的类似tf.dataset.fromURL的API
TensorFlow没有直接的tf.dataset.fromURL方法,但image_dataset_from_directory已经支持直接读取GCS路径(gs://开头),只要你的桶是公开可访问的,不需要额外配置就能用。如果是私有桶,只需要在Colab里通过!gcloud auth login完成授权即可。
内容的提问来源于stack exchange,提问作者Booger
相关产品推荐
相关产品推荐

