使用shell脚本运行python程序

在训练深度学习模型时,为了解放生产力,避免手动调参等,一般写成shell脚本的形式,执行一次shell就可以把所有的python程序给运行完毕。

例如,我需要探究batchsize的影响,一般新手入门可能这样做:

  1. 设置batchsize=8,运行一次main.py程序。
  2. 设置batchsize=16,运行一次main.py程序。
  3. 设置batchsize=32,运行一次main.py程序。
  4. 设置batchsize=64,运行一次main.py程序。

如果用shell就可以这样写:

train.sh:

#!/bin/bash

$python main.py --bs 8
$python main.py --bs 16
$python main.py --bs 32
$python main.py --bs 64

当然也可以这样写:

train.sh

#!/bin/bash

# 指定参数范围
BS=(8 16 32 64)

# 循环遍历所有的参数
for i in "${BS[@]}"
do
	# 调用 main.py,并传递当前的i值作为参数
	$python main.py --bs $i
done

然后,一行代码就可以执行上述train.sh文件:

$ bash train.sh

接下来是本文的重点,如何解决运行脚本路径问题?

一般我们会在python工程下新建一个scripts文件,并将所有的脚本.sh文件全面放在这里。下面介绍如何执行scripts文件下的脚本。

我的python工程文件树如下:

My_project
|-- datasets
|-- logs
|-- models
|-- scripts
|   `-- train1.sh
|   `-- train2.sh
|   `-- train3.sh
|-- main.py

其中,train1.sh代码如下:

#!/bin/bash

$python main.py --bs 8
$python main.py --bs 16
$python main.py --bs 32
$python main.py --bs 64

正确运行train1.sh代码的方式:

  1. 通过cd将路径切换到根目录My_project下 (不要进入scripts文件夹下)。
    在这里插入图片描述
  2. 在当前My_project 路径下执行:$ bash scripts/train1.sh

注: 如果train1.shmain.py在同一级目录,则直接运行$ bash train1.sh

你可能感兴趣的:(#,Python,python,开发语言)