python&pytorch基础知识点
0、python教程
菜鸟教程:Python 字典(Dictionary)
单个的星号*操作,表示展开一个可迭代的数据,双星号如果在函数定义时,做为输入,可以用来匹配关键字参数,并且在调用时候,将关键字参数的关键字和输入值,组成字典
Python的表达式加星号*和双星号**的用法
with还可以很好的处理上下文环境产生的异常
Python中with的用法_Ego_Bai的博客-CSDN博客_python with
它是一个对函数的类型注解,简单表示方法什么都不返回。这个类型注解是在Python3.5介绍进来的。
注解表示函数的返回类型,用标识符-> 。它是可选的,如果删掉,什么都不会影响
是参数的类型建议符,函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型,类型建议符并非强制规定和检查,也就是说即使传入的实际参数与建议参数不符,也不会报错,但会有警告。
def Sum(num1: int, num2: int=100) -> int:
sum = num1 + num2
return sum
“单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据;
在类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样p[key] 取值,当实例对象做p[key] 运算时,会调用类中的方法__getitem__
问题: 看pytorch的dataset的代码cifar10里面的__getitem__函数里面没有限制index长度?怎么保证数据读取时停止的?
torchvision.datasets.cifar - Torchvision 0.12 documentation
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
python enumerate用法总结
lambda在Python编程中使用的频率非常高,我们通常提及的lambda表达式其实是python中的一类特殊的定义函数的形式,使用它可以定义一个匿名函数。即当你需要一个函数,但又不想费神去命名一个函数,这时候,就可以使用 lambda了。例如g=lambda x : x+1
python中lambda的用法_abyss-phospherus的博客-CSDN博客_lambda python
会根据提供的函数对指定序列做映射,在写返回值等需要转换的时候比较常用
我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。
转自:Zhihao:python @property的介绍与使用
转自:python中使用下划线命名的规则_weixin_52012241的博客-CSDN博客_python下划线命名规则
Python collections模块之defaultdict()详解
Python setattr() 函数
在python3中按数据类型的可变与不可变大致分为如下几种类型,前面已经介绍了另外几种了。今天讲讲set。
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
Python中集合set的使用详解_涤生大数据的博客-CSDN博客_python set
action='store_true' 这个参数给“--cuda” 这设置了默认值ture,这样这个参数就不用像其他参数一样给等号和默认值了,当然类似还有还有action='store_false';
合并两个元组,返回一个元组;
a : int = 2
资料灰灰:在Python中指定变量类型
菜鸟资料:Python 字典(Dictionary)
特性:缩进,序列,动态性,匿名、嵌套函数,自省
2和3的别:3定义个格式print("abc"),数据类型上只有int没有long,3还有range,
数据类型:int float 字符串 列表 函数
bool, int , float,复杂类型,None类型
容器:
(1)序列容器:6种,string,unicode,list(列表),tuple(元组),buffer,range
列表[] ,元组()元素不能改
(2)关联容器:dict(字典) set(集合)
set([1,2,3]) 无序唯一的存放元素
if for while break contine
函数 lambda
第5章 类和对象
类、实例、方法
构造函数__init__,析构函数__del__
继承:单一继承、多重继承、方法重载
关联和依赖
try except else final
模块对应文件,包对应文件夹,包下方__init__.py 文件保障记录包下的所有模块
import module,form module import fun,区别在于后者在引用是不用一直写module
(1)元类型 type
(2)新类型:
实例方法,第一个参数是self,只有实例可调用
类方法,第一个参数是类本身,默认cls,类可以调用&一个参数是self
静态方法 ,不需要一个参数是self,类可以调用&一个参数是self
第9章 迭代器、生成器、修饰器
迭代器 __iter__ next
生成器 yield
修饰器 (Decorator) @
括号的问题
b相比a增加了一个括号,但是a和b的值是一样的,因为zeros、rand、ones函数还有第二个参数dtype=torch.float32,默认不写dtype是float32,所以b外面的括号是为dtype准备,但是Tensor是不能有第二层括号的
两种方式的输出是一样的,0表示列的最大值,1表示行的最大值。
0表示第0维的最大值,每个子数组出一个数算大值;
1表示第1维的最大值,也就是每个子数组内部的最大值;
机器学习中的数学--激活函数:基础知识_von Neumann的博客-CSDN博客
· 激活函数(一):Sigmoid函数
· 激活函数(二):双曲正切函数(Tanh函数)
· 激活函数(三): 线性整流函数(ReLU函数)
· 激活函数(四):Leaky ReLU函数
· 激活函数(五):ELU函数
· 激活函数(六):Parametric ReLU(PReLU)函数
· 激活函数(七):Softmax函数
· 激活函数(八):Swish函数
· 激活函数(九):Maxout函数
· 激活函数(十):Softplus函数
· 激活函数(十一):Softsign函数
· 激活函数(十二):高斯误差线性单元(GELUs)
另外有nn.softmax、nn.LogSoftmax,见参考资料
另外有torch.softmax
参考资料:
悲恋花丶无心之人:Pytorch中Softmax和LogSoftmax的使用
a=torch.tensor([5,5,5,5]).float()
a = torch.tensor([1,2,3]).to(dtype=torch.float)
torch.mul(a, b) 是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵,和a*b效果相同。其实这个矩阵或者向量的乘法操作就是H a d a m a r d HadamardHadamard乘积哈达玛乘积,具体操作细节查看这个。这个操作跟乘以b一样。
torch.mm(a, b) 是矩阵a和b矩阵相乘,比如a的维度是(1, 2),b的维度是(2, 3),返回的就是(1, 3)的矩阵。这个操作很熟悉了,这就是很常用的矩阵运算。
ShuYini:Pytorch常用的交叉熵损失函数CrossEntropyLoss()详解
softmax+log_nllloss=crossentropyloss
事件的信息量定义为期望,很多事件的期望用熵来标识
LK散度就是相对熵,相对熵=熵+交叉熵
蔡杰:简单的交叉熵,你真的懂了吗?
学习资料:External Resources
斯坦福课程作业:https://medium.com/stanford-cs224w/recommender-systems-with-gnns-in-pyg-d8301178e377
Introduction by Example
plantoid数据集不能引入的问题处理方法:PyG的Planetoid无法直接下载Cora等数据集的3个解决方式_诸神缄默不语的博客-CSDN博客_cora数据集下载
pytorch官网:
PyTorch
PYG :
PyG Documentation
OBG :https://ogb.stanford.edu/
会议:https://logconference.org/
nvidia-smi
watch -n 0.5 nvidia-smi
linux查看GPU使用情况 linux如何查看GPU使用情况
6、sparse特征
在ogbn-arxiv数据集上,边的特征用稀疏特征比用稠密特征准确率可以可以30%->60%,效果非常明显