1.
importlib.import_module()
导入当前包下的preprocessor_name(vctk.py)模块.Preprocessor
2.
functools.partial()
https://www.cnblogs.com/wxys/p/13756552.html
3.
是Python
的进程池的一种调用方法
多进程模式最大的优点就是稳定性高,因为每个进程独立拥有自己的调度资源,一个Worker
的崩溃不会影响其余进程的运行和调度。
多线程模式通常比多进程快一点,但由于每个线程共享所在进程的调度资源,所以在该进程下的任意一个线程的崩溃都会导致整个进程的崩溃。
4.
Tqdm 是一个快速,可扩展的Python进度条
5.
torch.manual_seed(seed)
·在神经网络中,参数默认是进行随机初始化的。如果不设置的话每次训练时的初始化都是随机的,导致相同结构,学习率,迭代次数等的网络训练结果不同。如果设置初始化,则每次初始化都是固定的。
固定随机数种子是非常重要的。如果使用的是PyTorch等框架,还要看一下框架的种子是否固定了。如果你用了cuda,还有cuda的随机数种子。
if args.seed is not None:
random.seed(args.seed) #
torch.manual_seed(args.seed) #为CPU设置种子用于生成随机数,以使得结果是确定的
torch.cuda.manual_seed(args.seed) #为当前GPU设置随机种子;
cudnn.deterministic = True
#如果使用多个GPU,应该使用torch.cuda.manual_seed_all()为所有的GPU设置种子
·seed
seed
计算机并不能产生真正的随机数,而是已经编写好的一些无规则排列的数字存储在电脑里,把这些数字划分为若干相等的N份,并为每份加上一个编号,编号固定的时候,获得的随机数也是固定的。
torch.manual_seed(1)用于设置随机初始化的种子,即上述的编号1,编号固定,每次获取的随机数固定。
· flag设置
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
cudnn.benchmark
,设置这个 flag 为 True
,我们就可以在 PyTorch 中对模型里的卷积层进行预先的优化,也就是在每一个卷积层中测试 cuDNN 提供的所有卷积实现算法,然后选择最快的那个
torch.backends.cudnn.deterministic,将这个 flag 置为True的话,每次返回的卷积算法将是确定的,即默认算法。如果配合上设置 Torch 的随机种子为固定值的话,应该可以保证每次运行网络的时候相同输入的输出是固定的
6.
pickle.load()
7
**()
如果一个函数定义中的最后一个形参有 ** (双星号)前缀,所有正常形参之外的其他的关键字参数都将被放置在一个字典中传递给函数
可以看到,b 是一个dict 对象实例,接收了关键字参数b 和c