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

Python中train_files和val_files未定义的NameError错误求助

解决NameError: 'train_files'和'val_files'未定义的问题

这个错误的核心是:代码执行到使用train_files和val_files的位置时,这两个变量还未被定义,或者定义的作用域无法被当前代码访问。以下是具体排查和解决步骤:

  • 确保变量已提前定义
    在使用这两个变量之前,必须添加代码对它们进行赋值,赋值方式取决于你的数据来源:

    # 示例1:从本地目录读取文件路径列表
    import os
    # 训练集文件路径
    train_dir = "./path/to/train/directory"
    train_files = [os.path.join(train_dir, fname) for fname in os.listdir(train_dir) 
                   if os.path.isfile(os.path.join(train_dir, fname))]
    # 验证集文件路径
    val_dir = "./path/to/val/directory"
    val_files = [os.path.join(val_dir, fname) for fname in os.listdir(val_dir) 
                 if os.path.isfile(os.path.join(val_dir, fname))]
    

    如果你的数据来自CSV、数据库或其他数据集API,只需将对应逻辑替换即可,关键是让train_files和val_files指向有效的文件路径列表。

  • 检查变量作用域
    如果train_files和val_files是在某个函数内部定义的,外部代码无法直接访问。比如:

    def load_dataset():
        # 函数内部定义的变量仅在函数内有效
        train_files = [...]
        val_files = [...]
    

    解决方法是让函数返回这两个变量,在外部接收后再使用:

    def load_dataset():
        train_files = [...]
        val_files = [...]
        return train_files, val_files
    
    # 在使用前获取变量
    train_files, val_files = load_dataset()
    
  • 核对变量拼写
    Python是大小写敏感语言,确认使用的变量名和定义时完全一致,比如不要把train_files写成train_file或TrainFiles。

完成上述步骤后,再执行你提供的代码:

STEPS_PER_EPOCH = len(train_files)//BATCH_SIZE
VAL_STEPS = len(val_files)//BATCH_SIZE

history = model.fit_generator(generator  = batch_generator(train_files, BATCH_SIZE),
                              epochs     = NUM_EPOCHS,
                              steps_per_epoch = STEPS_PER_EPOCH,
                              class_weight = cl_weight, # Check if providing class weight is useful
                              validation_data = batch_generator(val_files, BATCH_SIZE), 
                              validation_steps = VAL_STEPS, 
                              callbacks = callbacks_list,
                             )

即可避免NameError错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:21:15