You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用InceptionV4时遇SystemExit及TypeError问题求助

问题解决步骤

错误原因分析

第一个SystemExit: 2是因为你开启了num_classes的required=True,但运行时没传入这个必填参数;后来移除required=True但没设默认值,导致num_classes为None,后续代码里int(None)触发TypeError。

正确解决方法

方法1:命令行传参(推荐)

恢复原代码的argparse配置:

ap = argparse.ArgumentParser()

ap.add_argument("-g", "--gpus", default=1, type=int,
        help="# of available GPUs")
ap.add_argument("-train", "--train_dir", type=str, default="train/",
    help="train directory")
ap.add_argument("-val", "--val_dir", type=str, default="val/",
        help="val directory")
ap.add_argument("-c", "--checkpoint", type=str, default="no")
ap.add_argument("-classes", "--num_classes", type=int, required=True)
ap.add_argument("-epochs", "--epochs", type=int, default=1000)
ap.add_argument("-steps", "--steps_per_epoch", type=int, default=500)
ap.add_argument("-lr", "--learning_rate", type=float, default='1e-3')
ap.add_argument("-log", "--log_dir", type=str, default="logs/")
args = vars(ap.parse_args())  # 去掉args=[]

然后在命令行运行脚本时,传入你的分类数(比如分类数是10):

python inceptionv4.py --num_classes 10

如果需要修改其他参数,比如训练目录,可一起传入:

python inceptionv4.py -classes 10 -train my_train_data/ -val my_val_data/

方法2:代码内固定默认值

如果不想每次命令行传参,给num_classes设置默认值并移除required=True:

ap.add_argument("-classes", "--num_classes", type=int, default=10)  # 替换10为你的实际分类数

然后保留args = vars(ap.parse_args()),这样运行时会自动使用默认的分类数,无需命令行传参。

为什么之前的操作无效

  • 加args=[]会强制argparse不读取任何命令行参数,必填参数缺失自然报错;
  • 移除required=True但没设默认值,num_classes会变成None,int(None)无法转换触发类型错误;
  • args是argparse返回的字典,不是列表,用args[6]索引取值完全错误,必须用键名args["num_classes"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:01:15