我在使用Colab:想运行一个包含argparse函数的.py文件来训练模型

0 投票
1 回答
67 浏览
提问于 2025-04-14 15:34
if __name__ == '__main__':
    torch.cuda.empty_cache()
    
    """Parameters"""
    parser  = argparse.ArgumentParser(description = "Emotion Classifier" )
    parser.add_argument( "--batch", type=int, help = "batch_size", default = 1)
    
    parser.add_argument( "--epoch", type=int, help = 'training epohcs', default = 10) # 12 for iemocap
    parser.add_argument( "--norm", type=int, help = "max_grad_norm", default = 10)
    parser.add_argument( "--lr", type=float, help = "learning rate", default = 1e-6) # 1e-5
    parser.add_argument( "--sample", type=float, help = "sampling trainign dataset", default = 1.0) # 

    parser.add_argument( "--dataset", help = 'MELD or EMORY or iemocap or dailydialog', default = 'MELD')
    
    parser.add_argument( "--pretrained", help = 'roberta-large or bert-large-uncased or gpt2 or gpt2-large or gpt2-medium', default = 'roberta-large')    
    parser.add_argument( "--initial", help = 'pretrained or scratch', default = 'pretrained')
    parser.add_argument('-dya', '--dyadic', action='store_true', help='dyadic conversation')
    parser.add_argument('-fr', '--freeze', action='store_true', help='freezing PM')
    parser.add_argument( "--cls", help = 'emotion or sentiment', default = 'emotion')
        
    args = parser.parse_args()
    
    logger = logging.getLogger(__name__)
    streamHandler = logging.StreamHandler()
    
    # Add the line below to fix the issue.
    sys.exit(main())

这是colab显示的错误信息

usage: colab_kernel_launcher.py [-h] [--batch BATCH] [--epoch EPOCH] [--norm NORM] [--lr LR]
                                [--sample SAMPLE] [--dataset DATASET] [--pretrained PRETRAINED]
                                [--initial INITIAL] [-dya] [-fr] [--cls CLS]
colab_kernel_launcher.py: error: unrecognized arguments: /root/.local/share/jupyter/runtime/kernel-1fba85a1-85fd-4471-a790-9c103c9dcac9.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2
/usr/local/lib/python3.10/dist-packages/IPython/core/interactiveshell.py:3561: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

我有一个叫做 train.py 的文件,我想在我的 colab 上运行它。

1 个回答

0

当你运行 parse_args() 的时候,它会从 sys.argv 中获取值。
我不能测试这个,但当服务器运行 colab 时,它可能会在 sys.argv 中放入一些关于 colab 的信息,这可能会导致问题。

不过,你可以直接在 parse_args() 中放入你的值,比如这样:

args = parser.parse_args( ["--sample", "your_filename"] )

或者你可以用一个空列表来使用默认值:

args = parser.parse_args( [] )

顺便说一下:

我没有看到你的代码在任何地方使用 args,所以我不知道你是否真的需要 ArgumentParser 这些东西。也许你应该把它删掉。

如果你确实在 main() 中使用了 args,那么把它作为参数传递会更清晰,比如这样:

def main(args):       # get `args` in function 
    # ... code ...

# ... 

sys.exit(main(args))  # send `args` to function

撰写回答