欢迎光临散文网 会员登陆 & 注册

清华大佬终于把【PyTorch教程】给讲明白了!全程干货无废话,整整150集,还

2022-11-19 14:54 作者:天国12345  | 我要投稿

激活函数:

上面的激活函数是不可导的,所以不能用梯度下降算法

其它激活函数:

sigmoid函数导数推导:


TanH激活函数:在RNN中使用的多





ReLU激活函数:

Relu函数导数的计算过程很简单,大于0时为1,小于0时为零


MSE (Mean Squared Error):均方差



.backward()计算梯度:


用于分类的激活函数:Softmax

soft version of max 扩大化结果差

返回值总和为1,概率






上图中lamda 为激活函数的值,E为mse均方差,t为真实值











上面的函数一般用来判断优化器的效果,函数有四个局部最优解,结果都是0

















熵: entorpy



课时14 张量数据类型-1 P13 - 07:40



标量:

tensor:

a.shape //shape 是属性值

a.shape[0] //返回第维度为0的大小

a.size() //size() 是函数

a.size(0) //返回维度为0的大小


a. numel() //返回tensor的大小

a.dim() //返回维度的大小




torch.tensor()

torch.Tensor()

注意:小写tensor接收数据,Tensor接收维度

torch.tensor([2,3]) //将[2,3]转换成tensor类型

torch.Tensor(2,3) //生成一个2x3的数据类型

生成未初始化数据:

Torch.empty(2,3)

tensor()函数的 默认类型为FloatTensor

设置默认类型

torch.set_default_tensor_type(torch.DoubleTensor)


设置随机初始化:

rand() //采用0~1均匀随机抽样

torch.rand(3,3 ) //生成【0,1)之间的3x3tensor

torch.rand_like(a) //生成和a的shape相同的样本

randint() 函数 [min,max)

torch.randint(min,max,[shape])


torch.randn() //正态分布(0,1) 均值为0,方差为1


torch.randn(3,3) // 生成3X3的矩阵


随机正态分布的表示法:

torch.normal(mean=xx,std=xx,)

mean :为均值, std为方差


ex:

torch.normal(mean=torch.full([10],0), std=torch.arange(1,0,-0.1))

//输出1x10 的一维tensor , 均值是[0,0,0,0,0,0,0,0,0,0], 方差是[1,0.9,0.8,,,,,0]


torch.full() :

生成等差数列:

torch.arange()

torch.linspace(0,10,steps=10)

//从[0,10】中等分出10个数


torch.logspace(0,-1,steps=10)



torch.randperm(10) //生成[0,9) 的随机打散的数



28x28的三通道图片4张

a.shape -> torch.size([4,3,28,28])

a[:2].shape //表示前两张图片

torch.size([2,3,28,28])

a[:2,:1,:,:] // 表示前两张图片的第0个通道的所有数据

a[:2,1:,:,:] //表示前两张图片中从第1通道到最末尾通道的所有数据

a[:2,-1:,:,:;] //表示前两张图片中最后一个通道所有数据


[0:28:2] //表示从【0,28)的没隔2个数采样一次


torch.index_select():




a[...].shape //三点表示任意的维度

x.ge(0.5) // 返回x中大于等于0.5的数

torch.masked_select()


https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/


维度变换:

View 和 reshape 可以通用, reshape是后加的



unsqueeze只增加了数据的维度不改变数值


squeeze() //删除dim=1的所有维度b=torch.randn(1,32,1,1)

b.squeeze().shape -> torch.size([32])

b.squeeze(0).shape ->torch.size([32,1,1])

b.squeeze(-1).shape ->torch.size([1,32,1])

维度扩展操作:

expand 不会主动复制数据,节约内存

Repead 会复制数据



expand操作要求,只能在相同的维度上惊醒扩展,

[1,32,1,1] -> [4,32,14,14]

相同维度上只能从1到多维

上述例子中填入-1表示保存相同的维度



repeat() : 中的参数表示在每个维度上的重复次数



t() 转置操作

只能用作二维中

transpose() 进行维度转换

transpose()之后数据是不连续的,所以要用

.contiguous() 函数让它连续


transpose(1,2) , //表示将第一维和第2维进行交换




permute进行维度转换:

放入的值是原来的维度dim

eg,

b=torch.rand(4,3,28,32)

b.permute(0,2,3,1).shape ->[4,28,32,3]



清华大佬终于把【PyTorch教程】给讲明白了!全程干货无废话,整整150集,还的评论 (共 条)

分享到微博请遵守国家法律