Contrastive-Clustering代码学习——2021-06-19

Contrastive-Clustering代码学习

    • argparse 模块
    • argparse.ArgumentParser()
    • add_argument()
    • 代码中 parser.add_argument(f"--{k}", default=v, type=type(v))
    • 代码-`parse_args()`
    • 代码-`os.path.exists(args.model_path):`
    • 代码-`os.makedirs(args.model_path)`
    • 代码 `manual_seed()`
    • torchvision.Datasets()

argparse 模块

是一个Python 标准库中推荐的命令行解析模块
作用在于,当用命令行启动py脚本时,程序内部如何处理传进来的参数

就如同 ls graph 或者ls -l 一样。
graph是一个位置参数, ls -l 中的-l是可选参数
下面这段代码中,加上这个模块就会输出一些提示信息

Contrastive-Clustering代码学习——2021-06-19_第1张图片

argparse.ArgumentParser()

可以解析命令行参数,将其变成字典

add_argument()

该方法用于指定程序能够接受哪些命令行选项。如加一个位置参数了,加一个可选参数了

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")#这句就给此脚本加了一个未知参数echo。
args = parser.parse_args()#解析
print(args.echo)#对输入的未知参数的处理,这里只是简单地输出到控制台。所以这就是,输入什么打印什么。
parser.add_argument("echo", help="echo the string you use here")
#加上这后面的help注释后,在帮助里就会显示出这个参数如何使用。
parser.add_argument("square", help="display a square of a given number",
                    type=int)
#如果想要对传进来的参数进行一些运算,要注意其类型。默认都是str类型的,因此这里想要开平方,就要制定int类型,否则就是对str进行平方,出错。
#添加可选参数:
parser.add_argument("--verbosity", help="increase output verbosity")
调用的时候需要用这个命令:
 $ python3 prog.py --verbosity 1 #这里制定的1就是verbosity的值。若不指定,其值为NONE
#短选项
parser.add_argument("-v", "--verbose", help="increase output verbosity",
                    action="store_true")
#其中 action="store_true"意思是将其值默认存储为True。因此这就不能赋值了

代码中 parser.add_argument(f"–{k}", default=v, type=type(v))

#这的意思就是,若命令行不给我传参数,我默认就是v这个值,其类型为type(v)
#也就是说,这个脚本依然可以从命令行来给程序传参数。但是很麻烦,所以作者使用
#ymal配置项。
#即,增加了几个可选参数,其默认值已经设定好,是从yaml文件中读取的。
    for k, v in config.items():
        parser.add_argument(f"--{k}", default=v, type=type(v))

代码-parse_args()

将参数字符串转换为对象并将其设为命名空间的属性。 返回带有成员的命名空间。

#这句就是解析命令行传进来的参数,并返回其组成的字典。都是最有需求的操作。
  args = parser.parse_args()

代码-os.path.exists(args.model_path):

就很简单了,判断存在这个目录或者文件不

代码-os.makedirs(args.model_path)

这是递归的创建目录的API。另一个不递归的是os.makedir()

代码 manual_seed()

#都是设置随机数种子。每个依次是:CPU的、所有GPU的、单个GPU的、np的
torch.manual_seed(args.seed)
torch.cuda.manual_seed_all(args.seed)
torch.cuda.manual_seed(args.seed)
np.random.seed(args.seed)

torchvision.Datasets()

是所有数据集的父类,然后其需要实现__getitem__()方法,这个方法是供给dataloader调用的。调用过程中,还可以再加一道手续,即transformtarget_transform,这俩分别是用来对数据和标签进行一些骚操作的。

你可能感兴趣的:(Contrastive-Clustering代码学习——2021-06-19)