Shell | Transformer-xl代码的shell代码实现

发布时间 2023-07-13 17:00:45作者: 张Zong在修行

实现网址:https://github.com/kimiyoung/transformer-xl/tree/master/pytorch

图中的.sh文件就是shell命令实现。可以从文件命名看出,中间段是对应的数据集,第三段是规格。我们点开一个看一下:

#!/bin/bash

if [[ $1 == 'train' ]]; then
    echo 'Run training...'
    python train.py \
        --cuda \
        --data ../data/wikitext-103/ \
        --dataset wt103 \
        --adaptive \
        --n_layer 16 \
        --d_model 410 \
        --n_head 10 \
        --d_head 41 \
        --d_inner 2100 \
        --dropout 0.1 \
        --dropatt 0.0 \
        --optim adam \
        --lr 0.00025 \
        --warmup_step 0 \
        --max_step 200000 \
        --tgt_len 150 \
        --mem_len 150 \
        --eval_tgt_len 150 \
        --batch_size 60 \
        --multi_gpu \
        --gpu0_bsz 4 \
        ${@:2}
elif [[ $1 == 'eval' ]]; then
    echo 'Run evaluation...'
    python eval.py \
        --cuda \
        --data ../data/wikitext-103/ \
        --dataset wt103 \
        --tgt_len 64 \
        --mem_len 640 \
        --clamp_len 400 \
        --same_length \
        --split test \
        ${@:2}
else
    echo 'unknown argment 1'
fi

执行命令

  • Training

    bash run_enwik8_base.sh train --work_dir PATH_TO_WORK_DIR

  • Evaluation

    bash run_enwik8_base.sh eval --work_dir PATH_TO_WORK_DIR

如果你在命令行输入 bash run_wt103_base.sh train --work_dir PATH_TO_WORK_DIR 命令,

  • $0:指的是命令中的run_wt103_base.sh
  • $1:指的是命令中的train
  • $2:指的是命令中的--work_dir
  • $3:指的是命令中的PATH_TO_WORK_DIR

经过if判断语句,条件为 $1位置的参数是否等于train,如果是:

  • 打印“Run training...”
  • 然后执行python 指令,运行 train.py 文件。下面都是对应传入的参数。
  • 其中有一行是${@:2}:表示从第二个参数开始的所有参数。在这个命令中则表示从第二个参数开始的所有参数,即 --work_dirPATH_TO_WORK_DIR

在这个命令中,--work_dir PATH_TO_WORK_DIR 将被传递给 train.py 脚本,这将指定一个工作目录,以便 train.py 可以将模型文件和日志文件保存在这个目录中。可以在 train.py 脚本中使用 argparse 库来解析这些命令行参数,例如:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--work_dir', type=str, default='.', help='path to work directory')
args = parser.parse_args()

print(args.work_dir)  # 输出:PATH_TO_WORK_DIR

在这个例子中,argparse 将解析命令行参数 --work_dir PATH_TO_WORK_DIR,并将其作为一个字符串类型的参数传递给 train.py 脚本。args.work_dir 将包含 PATH_TO_WORK_DIR,可以在脚本中使用这个参数来设置工作目录。

如果条件为 $1位置的参数等于eval

同上,会执行对应python命令。

否则全不是,输出:"unknown argment 1"。