Azure Machine Learning运行Keras多分类训练脚本数据集读取报错求助
问题根因
两个报错的核心原因是远程训练脚本的运行环境与本地主AML代码环境完全隔离:
- 直接用
pd.read_csv("test_data")报错是因为你没有将AML数据集挂载到远程作业的运行路径,远程容器内不存在对应文件 - 调用
dataset.get_by_name()报错是因为远程脚本里没有初始化Workspace对象,也没有导入Dataset类,且主代码中的dataset变量无法传递到远程运行环境
代码修改方案
1. 主AML代码修改
你主代码中已经获取了test_data数据集,仅需在ScriptRunConfig配置中新增数据集挂载参数即可,不需要在本地提前将数据集转成DataFrame,相关冗余代码可删除。
修改后的ScriptRunConfig部分代码如下:
from azureml.core import ScriptRunConfig src = ScriptRunConfig(source_directory=script_folder, script='EnsemblingModel.py', # 新增:挂载test_data数据集并将挂载路径作为参数传递给训练脚本 arguments=[dataset.as_named_input('test_data').as_mount()], compute_target=compute_target, environment=keras_env)
其余主代码无需改动。
2. EnsemblingModel.py训练脚本修改
你需要新增参数解析逻辑接收数据集挂载路径,删除原有错误的读数据代码,修改后的数据读取部分代码如下:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import argparse # 新增参数解析库 import os # 其他库导入代码保持不变 # 新增:参数解析,获取数据集挂载路径 parser = argparse.ArgumentParser() parser.add_argument('--test_data', type=str) args = parser.parse_args() # 替换原有错误读数据代码 dataframe = pd.read_csv(args.test_data, header=None) dataset = dataframe.values # 后续X/y提取、模型训练代码保持不变
如果你的test_data是多文件数据集,挂载路径为文件夹,可替换读数据代码为:
data_path = os.path.join(args.test_data, "你的实际数据文件名.csv") dataframe = pd.read_csv(data_path, header=None)
AML结合Keras使用学习资源
- Azure Machine Learning官方文档内置的深度学习训练专项指南,包含Keras/TensorFlow适配的完整样例
- Azure官方示例仓库提供的端到端Keras多分类训练、超参调优、模型部署完整代码模板
- 微软Learn平台"使用AML训练和评估深度学习模型"系列学习路径,包含从零开始的实操练习
内容的提问来源于stack exchange,提问作者WPB
相关产品推荐
相关产品推荐

