1、shuffle=True用于打乱数据集,每次都会以不同的顺序返回
2、data_clean() 数据清洗,排除一些无法输入的数据
3、pretrained=True远程获取已训练好的模型参数
4、item()取出单元素张量的元素值并返回该值,保持原元素类型不变。,即:原张量元素为整形,则返回整形,原张量元素为浮点型则返回浮点型
5、img = img.convert("RGB") 将4通道改为3通道
6、torch.tensor.detach():从计算图中分类,并返回一个新的张量,并且这个新的张量的requires_grad的属性为False。
torch.tensor.detach_():张量tensor会被从计算图中分离出来,并把它设置成叶子张量,并且这个分离出来的张量的requires_grad的属性为False。
7、Batch Size定义:一次训练所选取的样本数。
注意:Batch Size增大了,要到达相同的准确度,必须要增大epoch。
8、format函数是python中的格式化函数,可以对数字或者字符串进行格式化操作,使用{}来指定对应的参数,可以接受不限个参数,位置可以不按顺序。在{}中可以指定索引输出对应位置的字符串。
9、注意只有Image类型的图片才有save方法,tensor和numpy类型的自然是没有的。因为本文对于图片的操作都用PIL来实现,所以保存图片也用的此方法。同样的思想,还可以用opencv库来实现。
10、conda和pip有区别,可能绝大多数使用者感觉不到两者太大区别,但我仍然建议能用conda安装的优先使用conda,尽量使用conda的环境隔离功能,为不同的任务创建不同的环境。如果某个包conda没有,再使用pip安装。其实,对于绝大多数人,只要你不搞GPU计算、不依赖很多底层库,pip已经能够满足需求。但是我仍然推荐使用conda。
11、首先激活EDSR环境(专门为超分辨率新建的环境,输入conda activate EDSR),linux下运行.sh文件,进入到对应目录下,使用 ./+文件名运行。
12、genfromtxt
将每个非空行拆分为一个字符串序列。刚刚跳过空行或注释行。delimiter
关键字用于定义拆分应如何进行,单个字符标记列之间的间隔。例如,逗号分隔文件(CSV)使用逗号(,
)或分号(;
)作为分隔符
13、clamp 和 clamp_
没有下划线时不改变原来的对象,有下划线时会改变原来的对象
14、cv2.imwrite()第一个是要存图像的文件名,第二个是要保存的图像。
15、可以从to_tensor()函数看到,函数接受PIL Image或numpy.ndarray,将其先由HWC转置为CHW格式,再转为float后每个像素除以255.(等于进行了归一化)
16、Normalize:逐channel的对图像进行标准化(均值变为0,标准差变为1),可以加快模型的收敛(对图片处理不要进行Normalize会更好)