BCE Loss binary_cross_entropy(二进制交叉熵)损失,即用于衡量原图与生成图片的像素误差;
kld_loss KL-divergence(KL散度),用来衡量潜在变量的分布和单位高斯分布的差异;
model.train() :启用 BatchNormalization 和 Dropout
model.eval() :不启用 BatchNormalization 和 Dropout
torch.uitls.data.DataLoader
PyTorch中数据读取的一个重要接口是torch.utils.data.DataLoader,该接口定义在dataloader.py脚本中,只要是用PyTorch来训练模型基本都会用到该接口,该接口主要用来将自定义的数据读取接口的输出或者PyTorch已有的数据读取接口的输入按照batch size封装成Tensor,后续只需要再包装成Variable即可作为模型的输入,因此该接口有点承上启下的作用,比较重要。
重要参数
1、dataset(Dataset): 传入的数据集
2、batch_size(int, optional): 每个batch有多少个样本
3、shuffle(bool, optional): 在每个epoch开始的时候,对数据进行重新打乱
4、sampler(Sampler, optional): 自定义从数据集中取样本的策略,如果指定这个参数,那么shuffle必须为False
5、batch_sampler(Sampler, optional): 与sampler类似,但是一次只返回一个batch的indices(索引),需要注意的是,一旦指定了这个参数,那么batch_size,shuffle,sampler,drop_last就不能再制定了(互斥——Mutually exclusive)
6、num_workers (int, optional): 这个参数决定了有几个进程来处理data loading。0意味着所有的数据都会被load进主进程,默认为0。
7、collate_fn (callable, optional):将一个list的sample组成一个mini-batch的函数
8、pin_memory (bool, optional):如果设置为True,那么data loader将会在返回它们之前,将tensors拷贝到CUDA中的固定内存(CUDA pinned memory)中。
9、drop_last (bool, optional): 如果设置为True:这个是对最后的未完成的batch来说的,比如你的batch_size设置为64,而一个epoch只有100个样本,那么训练的时候后面的36个就被扔掉;如果为False(默认),那么会继续正常执行,只是最后的batch_size会小一点。
10、timeout(numeric, optional): 如果是正数,表明等待从worker进程中收集一个batch等待的时间,若超出设定的时间还没有收集到,那就不收集这个内容了。这个numeric应总是大于等于0。默认为0。
11、worker_init_fn (callable, optional): 每个worker初始化函数 If not None, this will be called on each worker subprocess with the worker id (an int in [0, num_workers - 1]) as input,after,seeding and before data loading. (default: None)
numpy.savez(file,args,*kwds)
保存数组到一个二进制的文件中,可以保存多个数组到同一个文件中,保存格式是.npz。就是保存的多个.npy。
numpy.savez_compress:打包压缩 用法和上面一致