线性回归等知识点打卡

由于之前的知识点只有机器学习的,pytorch几乎没用过,所以这次学习就是个小白,具体的有许多代码都是没见过的。
一、线性回归
1.生成数据集
1) torch.randn(*sizes, out=None)
返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。
2)torch.rand(*sizes, out=None)
返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。
3)torch.normal(means, std, out=None)
返回一个张量,包含了离散正态分布中的一组随机数。、
4)torch.linspace(start, end, steps=100, out=None)
|Data type | CPU tensor |GPU tensor
|-32-bit floating point-|–|
| | |

返回一个1维张量,包含在区间start和end上均匀间隔的step个点。

2.读取数据集
(1)torch.Tensor是一种包含单一数据类型元素的多维矩阵。
Torch定义了7种CPU tensor和8种GPU tensor类型,具体如下:
在这里插入图片描述
(2) torch.utils.data.DataLoader(
dataset,#数据加载
batch_size = 1,#批处理大小设置
shuffle = False,#是否进项洗牌操作
sampler = None,#指定数据加载中使用的索引/键的序列
batch_sampler = None,#和sampler类似
num_workers = 0,#是否进行多进程加载数据设置
collat​​e_fn = None,#是否合并样本列表以形成一小批Tensor
pin_memory = False,#如果True,数据加载器会在返回之前将Tensors复制到CUDA固定内存
drop_last = False,#True如果数据集大小不能被批处理大小整除,则设置为删除最后一个不完整的批处理。
timeout = 0,#如果为正,则为从工作人员收集批处理的超时值
worker_init_fn = None )

3.定义模型
(1)w.requires_grad_(requires_grad=True)
其中,requires_grad=True是为了后面能够用反向传播,即后面在模型训练中l.backward()

(2)nn.Sequential
是一个有序的容器,神经网络模块将按照在传入构造器的顺序依次被添加到计算图中执行,同时以神经网络模块为元素的有序字典也可以作为传入参数。
(3)nn.MSELoss(reduce=False, size_average=False)#均方差损失函数
如果 reduce = False,那么 size_average 参数失效,直接返回向量形式的 loss
如果 reduce = True,那么 loss 返回的是标量

二、softmax和分类模型
1.Fashion-MNIST训练集
Fashion-MNIST是一个替代MNIST手写数字集的图像数据集。 它是由Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自10种类别的共7万个不同商品的正面图片。Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度图片。可以直接用它来测试机器学习和深度学习算法性能,且不需要改动任何的代码。

2.读取数据
(1) class torchvision.datasets.FashionMNIST(root, train=True, transform=None, target_transform=None, download=False)#读取Fashion-MNIST训练集

root(string)– 数据集的根目录,其中存放processed/training.pt和processed/test.pt文件。
train(bool, 可选)– 如果设置为True,从training.pt创建数据集,否则从test.pt创建。
download(bool, 可选)– 如果设置为True,从互联网下载数据并放到root文件夹下。如果root目录下已经存在数据,不会再次下载。
transform(可被调用 , 可选)– 一种函数或变换,输入PIL图片,返回变换之后的数据。如:transforms.RandomCrop。
target_transform(可被调用 , 可选)– 一种函数或变换,输入目标,进行变换。

(2)d2l.load_data_fashion_mnist(batch_size)
d2l模块中读取Fashion-MNIST训练集命令。

3.数据处理
(1)对多维Tensor按维度操作
X = torch.tensor([[1, 2, 3], [4, 5, 6]])
X.sum(dim=0, keepdim=True)# dim为0,按照相同的列求和,并在结果中保留列特征
X.sum(dim=1, keepdim=True)# dim为1,按照相同的行求和,并在结果中保留行特征
X.sum(dim=0, keepdim=False)# dim为0,按照相同的列求和,并在结果中保留列特征
X.sum(dim=1, keepdim=False)# dim为1,按照相同的行求和,并在结果中保留行特征

(2)torch.mm(mat1, #第一个相乘矩阵
mat2, #第二个相乘矩阵
out=None #输出张量)
对矩阵mat1和mat2进行相乘。 如果mat1 是一个n×m张量,mat2 是一个 m×p 张量,将会输出一个 n×p 张量。

4.模型处理
(1)初始化模型参数
1)均匀分布
torch.nn.init.uniform_(tensor, a=0, b=1)
服从~U(a,b) U(a, b)U(a,b)

2).正太分布
torch.nn.init.normal_(tensor, mean=0, std=1)
服从~N(mean,std) N(mean, std)N(mean,std)

3)初始化为常数
torch.nn.init.constant_(tensor, val)
初始化整个矩阵为常数val

(2)损失函数
torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction=‘mean’)#交叉熵损失
参数:
weight(Tensor)- 为每个类别的loss设置权值,常用于类别不均衡问题。weight必须是float类型的tensor,其长度要于类别C一致,即每一个类别都要设置有weight。
size_average(bool)- 当reduce=True时有效。为True时,返回的loss为平均值;为False时,返回的各样本的loss之和。
reduce(bool)- 返回值是否为标量,默认为True
ignore_index(int)- 忽略某一类别,不计算其loss,其loss会为0,并且,在采用size_average时,不会计算那一类的loss,除的时候的分母也不会统计那一类的样本。

二、多层感知机
1.激活函数
激活函数,激活函数可以神经网络模型中的线性转化为非线性。
(1)ReLU函数
ReLU函数只保留正数元素,可以将负数元素清零。
ReLU(x)=max(x,0)
在这里插入图片描述

(2)Sigmoid函数
sigmoid函数可以将元素的值变换到0和1之间,0~1之间恰好也是概率的区间,所以sigmoid函数可以将模型的输出映射到概率上。
sigmoid(x)=1/(1+exp(−x))
在这里插入图片描述
(3)tanh函数
tanh(双曲正切)函数可以将元素的值变换到-1和1之间:
tanh(x)=1−exp(−2x)/(1+exp(−2x))
在这里插入图片描述
关于激活函数的选择:ReLu函数是一个通用的激活函数,目前在大多数情况下使用。但是,ReLU函数只能在隐藏层中使用。用于分类器时,sigmoid函数及其组合通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。在神经网络层数较多的时候,最好使用ReLu函数,ReLu函数比较简单计算量少,而sigmoid和tanh函数计算量大很多。在选择激活函数的时候可以先选用ReLu函数如果效果不理想可以尝试其他激活函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值