我在使用Colab:想运行一个包含argparse函数的.py文件来训练模型
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