【发布时间】:2021-10-03 23:18:13
【问题描述】:
我想在 colab 或 jupyter 笔记本中执行一个 train.py 脚本。
在运行之前,我必须设置一些变量,例如数据集类型。
我按照我在终端命令中输入的方式执行了操作,但我得到了一个 SyntaxError。
--dataset-type=voc
--dataset-type='voc'
^
SyntaxError: can't assign to operator
从终端执行正常,但如何正确声明变量?
这是train.py的一些代码:
parser = argparse.ArgumentParser(description='Single Shot MultiBox Detector Training With PyTorch')
# Params for datasets
parser.add_argument('--dataset-type', default="voc", type=str,
help='Specify dataset type. Currently supports voc and open_images.')
parser.add_argument('--datasets', '--data', nargs='+', default=["data"], help='Dataset directory path')
parser.add_argument('--balance-data', action='store_true',
help="Balance training data by down-sampling more frequent labels.")
我试过了:
from sys import argv
argv.append('--dataset-type=voc')
这解决了 SyntaxError。
但我最终得到以下错误。还有更多变量要设置,但 --dataset-type 仍然列出。
usage: ipykernel_launcher.py [-h] [--dataset-type DATASET_TYPE]
[--datasets DATASETS [DATASETS ...]]
[--balance-data] [--net NET] [--freeze-base-net]
[--freeze-net] [--mb2-width-mult MB2_WIDTH_MULT]
[--base-net BASE_NET]
[--pretrained-ssd PRETRAINED_SSD]
[--resume RESUME] [--lr LR] [--momentum MOMENTUM]
[--weight-decay WEIGHT_DECAY] [--gamma GAMMA]
[--base-net-lr BASE_NET_LR]
[--extra-layers-lr EXTRA_LAYERS_LR]
[--scheduler SCHEDULER] [--milestones MILESTONES]
[--t-max T_MAX] [--batch-size BATCH_SIZE]
[--num-epochs NUM_EPOCHS]
[--num-workers NUM_WORKERS]
[--validation-epochs VALIDATION_EPOCHS]
[--debug-steps DEBUG_STEPS] [--use-cuda USE_CUDA]
[--checkpoint-folder CHECKPOINT_FOLDER]
ipykernel_launcher.py: error: unrecognized arguments: -f /root/.local/share/jupyter/runtime/kernel-f89b4ea1-0c84-4617-af88-0191a91639c0.json
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2
/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py:2890: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
【问题讨论】:
-
你在 Python 中输入
--dataset-type='voc'? data-set-type 不是全局变量,这不是您设置它的方式。大概您的解析器解析命令行参数,然后将它们合并到某种函数调用中。在那里查看参数的实际使用方式。 -
你能提供一些代码吗?
标签: python jupyter-notebook pytorch syntax-error nvidia-jetson-nano