主要是根据李沐老师的b站课程,会把自己遇到的各种问题总结写出来,包括一些要点
(具体日后再补,准备写这个笔记的时候环境已经装好了)
1、torch.arange/torch.tensor的用法在上一篇中列举了,此处不再赘述
以及,torch.cat的时候注意dim,0和1代表行连接或者列连接
2、独热编码问题
inputs = data.iloc[:, 0:2] inputs = inputs.fillna(inputs.mean())
取均值后的结果:
这一步的目的我理解是对nan的部分做一下处理,以免后续读特征的时候取不到'nan'会报错,同时把特征数字化,以便机器学习。get_dummies即独热编码,相当于把具有n维子值得某特征展开成n个特征,如A[a,b,c]-->[A-a,A-b,A-c]:
具体解析可以参考:
独热编码(One-Hot Encoding)介绍及实现
https://blog.csdn.net/baidu_31437863/article/details/83788786
这一part有线代基础的会相对好理解,but毕业好几年,当年数学也没好好学,从头恶补了可以说是orz……
一些基础知识:
范数:
https://zhuanlan.zhihu.com/p/26884695
https://www.jianshu.com/p/f0e41ebe5e4b
正定矩阵:
https://zhuanlan.zhihu.com/p/81169491?ivk_sa=1024320u
1、按特定轴求和
sum_X = X.sum(axis=0, keepdims=True)
用X.cumsum的话可以求所有的sum
axis=0结果按行显示,axis=1结果按列显示
2、矩阵、向量求积
这里我只print了最后两个矩阵相乘的结果,注意mv mm的不同
A = torch.arange(20, dtype=torch.float32).reshape((5,4))
y = torch.ones(4, dtype=torch.float32)
x = torch.arange(4, dtype=torch.float32)
#torch.dot(x, y) #求点积
mv = torch.mv(A, x) #mv是把x看做4行1列的向量
B = torch.ones(4, 3)
mm = torch.mm(A, B) #mm是把B看做4行3列的矩阵
print(A, B, mm, sep='\n')
输出结果:
tensor([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.],
[16., 17., 18., 19.]])
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
tensor([[ 6., 6., 6.],
[22., 22., 22.],
[38., 38., 38.],
[54., 54., 54.],
[70., 70., 70.]])
3、范数
#——————求范数——————
u = torch.tensor([3, -4], dtype=torch.float32)
u2 = torch.norm(u) #2范数,针对二维向量
u3 = torch.norm(torch.ones(4, 9)) #F范数,元素的平方和再开根,针对矩阵
print(u2, u3)
输出结果:
tensor(5.) tensor(6.)