python自学小记录02
一、pytorch易忘点
1、tensor的创建function可以被查看,requires_grad=true跟踪tensor所有操作
2、调用 .backward()来自动计算所有梯度,该张量的梯度将累积到 .grad 属性中。
若求导tensor是一元(标量),则 .backward()不需参数;
否则, .backward()里要指定一个和待求导的tensor一样规模的tensor做参数。
net.parameters()可获得网络的各层权重。
3、疑惑:net.zero_grad() # zeroes the gradient buffers of all parameters
梯度是累加的,所以每次迭代更新前要清零?
4、totchvision 的包,该包含有支持加载类似Imagenet,CIFAR10,MNIST 等公共数据集的数据加载模块 torchvision.datasets 和支持加载图像数据数据转换模块 torch.utils.data.DataLoade。
二、各种卷积总结推文小记
1、卷积的积分定义,一个函数和它的反转再位移后的函数相交的面积
2、卷积和互相关的区别在互相关没有反转
3、感觉转置卷积就是,把小的feature map扩大,但保持相似的pattern关系。用来对像素分类。
4、为了用上计算机的矩阵运算,filter变稀疏矩阵,img拉伸成列向量。用有规律的稀疏零等价了卷积filter的滑动。
5、已经有空洞卷积结合多尺度卷积,还有加上attention的
6、深度可分离卷积虽然能减少参数加快训练,但对于小模型而言,可能会降低性能。
7、分组卷积能在多个GPU上同时运行。
三、python易忘点
1、
在函数的参数中经常可以看到-1例如x.view(-1, 4)
这里-1表示一个不确定的数,就是你如果不确定你想要reshape成几行,但是你很肯定要reshape成4列,那不确定的地方就可以写成-1
例如一个长度的16向量x,
x.view(-1, 4)等价于x.view(4, 4)
x.view(-1, 2)等价于x.view(8,2)
2、itertools
迭代累加/找符合某条件数
排列组合
3、两个set的&是选两者共有
4、匿名函数使用lambda
5、定义一个class里的__init__函数是前后各两个下划线!
6、class里每个函数都要有self参数,即使调用无参数
7、被继承者放在继承类的括号里
(孙子即使没有显式定义某方法,只要其祖先定义过,孙子就可以调用)
8、重载
9、super()可调用被重载的父类