传参方式:
固定传参:在pycharm窗口中直接写好参数,在脚本中把参数写固定
命令行传参:在terminal中打开虚拟环境,然后输入python 脚本名。
对于argparse的理解:命令行传参的一种方式,提供了一个接口
关于argparse的使用可以分为三步:
1.argparse.ArgumentParser:创建一个ArgumentParser空间
2.parser.add_argument:向空间中添加参数,这些参数有各种各样的属性
3.parser.parse_args():将这个空间中的字符串转化为对象,使python语言可以识别
argparse.ArgumentParser的使用:进行命令行参数的解析,用于频繁修改参数,自动生成帮助文档
class argparse.
ArgumentParser
(prog=None, usage=None, description=None, epilog=None, parents[], formatter_class=argparse.HelpFormatter, prefix_chars='-, fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True, exit_on_error=True)
先创建一个ArgumentParser对象,然后通过parser.add_argument向里添加参数。
parser.add_argument的使用:
第一个参数 | 参数名称 | 形式一般是"--name" |
属性 | nargs | 有几个参数 |
type | 传进来的参数是什么类型的,例如int,float等 | |
default | 没有具体的值就使用默认的值 | |
action | 当参数在命令行中出现时,使用的动作的基本类型 | |
help | 对该参数的解释 |
opt=parser.parse_args():将参数字符串转化为对象,并将其设为命名空间(ArgumentParser空间)的一个属性。之后可以从opt中获取空间中对应的值。
在gpu上训练
报错:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking argument for argument mat2 in method wrapper_mm)
原因:没有把model移到cuda上