1.张量
a=torch.randn(2,3)
a=torch.rand(2,3,28,28)
torch.rand_like(a)
torch.randint(1,10,[3,3])
torch.normal(mean=torch.full([10],0),std=torch.arange(1,0,-0.1))
torch.randperm(2)
(1)randn 生成标准正态分布的伪随机数(均值为0,方差为1)
(2)rand 生成均匀分布的伪随机数。分布在(0~1)之间
(3)三维常用于RNN,四维常用于CNN[b,c,h,w] =[图片数,通道,宽,高]
(4)normal可以指定平均数和方差
(5)randperm随机打散
a.torch.tensor(1)
a.dim()
0
(1)维度是1
torch.tensor([1.1,2.2])
tersor([1.1000,2.2000])
torch.FloatTensor(2)
tensor([3.2239e-25,4.5915e-41])
torch.FloatTensor([2.,3.2])
tensor([2.0000,3.2000])
(1)tensor里边加内容
(2)FloatTensor/Tensor里边可以加现有内容也可以加维度,再随机生成
a.dim()
a.shape
a.size()
(1)shape后无括号
#维度
view/reshape
squeeze/unsqueeze
transpose/t/permute
expand/repeat
(1)unsqueeze可以增加维度,squeeze减少维度
(2)expand扩张 1->N(推荐)
(3)transpose一次只能交换两个维度
(4)t只能转置2维的
(5)permute直接写新的维度顺序
cat/stack
split:by length
chunk:by num
(1)cat/stack用于合并;cat原有维度合并;stack会合并出一个新维度
(2)split/chunk用于拆分
add/sub/mul/div
mm/matmul/@ #矩阵相乘
pow
sqrt/rsqrt
exp#自然数e指数
round*四舍五入
#近似值计算
a=torch.tensor(3.14)
a.floor(),a.ceil(0,a.trunc(),a.frac()
(tensor(3.),tensor(4.),tensor(3.),tensor(0.1400))
(1)mm只能计算两维
(2)pow(2)=**2
(3)sqrt指开方;rsqrt指 平方根的倒数
#statistics
norm
mean sum
max,min,argmin,argmax
kthvalue,topk
(1)norm(1/2,dim)找范数
(2)max,min返回内容,argmin,argmax(keepdim=true可以保持返回的维度不变)返回索引
(3)topk(largest=False找到后面k个)返回某一维度前k个内容和索引
#高级用法
where/gather
用法示意图:
2.损失函数
(1)均方误差
M S E = 1 n ∑ i = 1 n ( Y i − Y i ^ ) 2 MSE=\frac{1}{n}\sum_{i=1}^n(Y_i-\hat{Y_i})^2 MSE=n1i=1∑n(Yi−Yi^)2
(2)交叉熵损失函数
熵(不确定性,惊喜程度程度):如果一个事件发生的概率越小,那么这个事件的不确定性就越大,消除这个不确定性所需要获取的信息就越多。
H
(
p
)
=
−
∑
p
i
l
o
g
2
(
p
i
)
H(p)=-\sum{p_ilog_2(p_i)}
H(p)=−∑pilog2(pi)
交叉熵 p代表事件真实的概率分布,q代表我们预测的概率分布
H
(
p
,
q
)
=
−
∑
p
i
l
o
g
2
(
q
i
)
H(p,q)=-\sum{p_ilog_2(q_i)}
H(p,q)=−∑pilog2(qi)
交叉熵=熵+KL散度
H
(
p
,
q
)
=
H
(
p
)
+
D
K
L
(
p
∣
∣
q
)
H(p,q)=H(p)+D_{KL}(p||q)
H(p,q)=H(p)+DKL(p∣∣q)
pytorch编码时注意: cross_entropy=softmax+log+nll_loss