You need to enable JavaScript to run this app. Win10 Anaconda Jupyter运行RNN训练脚本遇argparse及TypeError报错咨询
优惠活动
大模型
产品
解决方案
定价
更多

Win10 Anaconda Jupyter运行RNN训练脚本遇argparse及TypeError报错咨询

问题解决步骤

一、修复Jupyter Notebook环境下argparse必填参数报错

报错核心逻辑:Jupyter运行时,parse_args()默认读取的是ipykernel启动生成的系统参数列表,和脚本内自定义的参数校验逻辑不匹配。之前两次修改无效的根因:

  • 给add_argument加default但保留required=True的写法完全不解决问题:argparse的required校验和default值是独立的,只要参数标记为required=True,无论是否配置default,只要传入的参数列表里没有显式出现这个参数,就会触发必填缺失报错,default值仅对非required参数生效。
  • 直接给parse_args()传关键字参数的写法存在语法错误:parse_args()仅支持两种入参模式,要么不传参读取系统sys.argv,要么传入字符串形式的参数列表,原生签名为parse_args(args=None, namespace=None),传自定义关键字参数会直接触发类型错误,根本不会按预期传值。

可直接落地的修复方案

  • 方案1:修改脚本内参数解析逻辑,在Jupyter环境下手动构造参数列表传入parse_args(),替换原有空参调用:
    args = parser.parse_args([
        "-data_path", r"C:\Users\Firdaus\Desktop\data"
    ])
    
    路径前加r前缀规避Windows路径转义符的识别问题。
  • 方案2:保留原脚本的参数定义不修改,在Jupyter单元格内用%run魔法命令显式传参运行脚本,不要直接在单元格内import或逐行执行脚本代码:
    %run train_rnn_wdcnn_loads.py -data_path "C:\Users\Firdaus\Desktop\data"
    

二、修复命令行运行时TypeError: 'NoneType' object is not iterable报错

报错位置在cwru_data_loader.py第114行,遍历self.loads属性时触发,本质是调用CWRUBearingData类初始化时,漏传了loads参数的值,导致属性被设为类默认的None值,执行循环逻辑时触发类型不匹配错误。

可直接落地的修复方案

  • 打开C:\Users\Firdaus\AppData\Local\Programs\Python\Python38\lib\site-packages\utils\cwru_data_loader.py文件,定位到CWRUBearingData类的__init__构造方法,确认loads参数的位置和默认值(通常默认值为None)。
  • 回到train_rnn_wdcnn_loads.py第107行,补全CWRUBearingData的调用参数,传入符合CWRU数据集规范的负载列表(常见值为[0,1,2,3],对应0HP/1HP/2HP/3HP的电机负载工况),参考写法:
    source_data = CWRUBearingData(
        data_path,
        experiment,
        source,
        loads=[0, 1, 2, 3]
    )
    
  • 额外校验脚本内experiment、source变量的赋值结果,确认两个变量不是None值;同时检查数据路径下的文件层级,需符合cwru_data_loader的读取要求:正常按照数据根目录/实验编号/故障类型/负载值/的结构存放CWRU原始mat文件,避免后续读文件时触发路径不存在的报错。

内容的提问来源于stack exchange,提问作者dzdws

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 11:54:05