这个文章cover了一下需求:
train.py
train.py
文件需要传入参数seed
,train.py
文件中,需要import
位于其他.py文件中自定义的class/ function本文涉及到的文件的组织架构为:
- PAProj
- GT_model
- GT_2.py # 含有自定义的函数,被train.py import
- MLP
- net_saved # 保存模型的路径
- train.py # 最终执行的文件
- Data
train.py
需要import
位于其他.py文件中自定义的class/ function,例如 train.py
中的这一句:from GT_model.GT_2 import eq1 as EQ1
train.py
时,如果GT_model
这个路径下没有__init__.py
文件,其实也是可以运行的GT_model/__init__.py
__init__.py
文件用于标记一个目录为Python的包(package),这样该目录下的Python文件就能被组织进同一个命名空间。__init__.py
文件不是强制性的,但是是标准的。train.py
使用的路径最好写成绝对路径,一种常见的格式为: data_root = "D:/Desktop/PROJ/PAProj"
net_root_path = os.path.join(data_root, "MLP/net_saved/")
import sys
sys.path.insert(0, 'D:\\Desktop\\PROJ\\PAProj')
这个语句将指定的目录D:\\Desktop\\PROJ\\PAProj
添加到Python的模块搜索路径的最前面。因此当我们尝试导入一个模块时,Python解释器将首先在这个目录下查找该模块
argparse
语句import argparse
# 创建一个解析器对象
parser = argparse.ArgumentParser(description="Train under a specific seed.")
# 添加一会我们要在cmd中传入的seed参数
parser.add_argument("--seed", type=int, required=True, help="Train under a specific seed.")
# 解析命令行参数
args = parser.parse_args()
seed = args.seed
base
环境# base环境:
conda activate
# xx环境
conda activate xx
D:
cd D:\Desktop\PROJ\PAProj
train.py
for %i in (62 149 508) do D:\Anaconda\python.exe "MLP\train.py" --seed %i
D:\Anaconda\python.exe
PAProj
,我们想要运行的文件可以写相对路径,但是一定要加引号:"MLP\train.py"
以上教程有很多不合适的地方,主打一个能用就行:)