如何在Azure ML Notebook中正确引用Blob容器文件夹训练图像分类模型
解决Azure ML Notebook中用TensorFlow加载Blob容器图像数据的问题
核心问题原因
TensorFlow的tf.keras.preprocessing.image_dataset_from_directory仅支持本地文件系统路径或云存储的挂载路径,无法直接解析Azure ML专属的azureml://协议路径,这是你尝试三种方式均失败的核心原因。
正确操作步骤
挂载Azure Blob存储到计算实例本地路径
在Notebook中通过Azure ML SDK将Blob容器挂载到计算实例的本地目录,让TensorFlow能像访问本地文件一样读取数据。示例代码:from azureml.core import Workspace, Datastore # 加载当前工作区 ws = Workspace.from_config() # 获取目标Blob对应的Datastore(替换为你的Datastore实际名称) datastore = Datastore.get(ws, datastore_name='workspaceblobstore') # 将Datastore挂载到计算实例的临时路径 mount_context = datastore.mount('/tmp/azureml_blob_mount') mount_context.start() # 验证挂载结果 import os print(os.listdir('/tmp/azureml_blob_mount'))使用挂载后的本地路径加载数据
挂载完成后,直接传入挂载路径下的Train/Test文件夹路径即可:import tensorflow as tf # 定义训练集和测试集的本地挂载路径 train_dir = '/tmp/azureml_blob_mount/Train' test_dir = '/tmp/azureml_blob_mount/Test' # 加载训练数据集 train_dataset = tf.keras.preprocessing.image_dataset_from_directory( train_dir, image_size=(224, 224), batch_size=32, label_mode='categorical' # 适配9类分类任务 ) # 加载测试数据集 test_dataset = tf.keras.preprocessing.image_dataset_from_directory( test_dir, image_size=(224, 224), batch_size=32, label_mode='categorical' )训练结束后卸载挂载(可选)
完成训练后可卸载挂载释放计算实例资源:mount_context.stop()
关键注意事项
- 权限验证:确保计算实例拥有Blob存储的访问权限,自定义Datastore需确认存储账户密钥或SAS令牌配置正确。
- 路径大小写:Azure Blob存储路径区分大小写,代码中路径需与容器内文件夹名称完全匹配。
- 磁盘空间:若图像数据量较大,需确认计算实例临时磁盘空间足够容纳挂载的数据。
内容的提问来源于stack exchange,提问作者user3043636
相关产品推荐
相关产品推荐

