Perceptron

Perceptron

原理

简单的感知机可以看作一个二分类,假定我们的公式为

f(x) = sign(w *x + b)

我们把 -b 做为一个标准,w* x 的结果与 -b 这个标准比较,

w*x > -b, f(x) = +1

w *x < -b, f(x) = -1

不难看出w是超平面的法向量,超平面上的向量与w的数量积为0。因此这个超平面就可以很好的区分我们的数据集。

而感知机就是来寻找w和b

优化方法

优化方法我们现有的方法比较多,诸如GD、SGD、Minibatch、Adam

当然我们的损失函数也包含多种,常见的有MSE, CrossEntropy.

这边简单展示一下MSE以及GD原理。

5J5vtA.jpg

5J5xfI.jpg

SoftMax

如果我们输出为多分类,那就成为一个SoftMax回归。

SoftMax回归和线性回归一样将输入特征与权重做线性叠加。与线性回归的一个主要不同在于,SoftMax回归的输出值个数等于标签里的类别数。

5JTopn.jpg

MLP

而我们给SoftMax回归增加隐藏层,就是我们所说的多层感知机,而

全连接层只是对数据做仿射变换,我们的方法是引入非线性变换,就是激活函数。

5JTjk4.jpg

代码实现

这边选用CIFAR10数据集来做演示。CIFAR10包含10个类别,每个类别600张32x32的彩色图像。

1.导入依赖包

import torch
import torchvision
from torch import nn
from d2l import torch as d2l
import os
import matplotlib.pyplot as plt
import torchvision.transforms as transforms

2.加载数据集

这边对图片进行归一化处理。

transform = transforms.Compose(
        [transforms.ToTensor(),
        transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))]
    )
train_data = torchvision.datasets.CIFAR10(root="data",download=True,train=True,transform=transform)
train_loader = torch.utils.data.DataLoader(train_data, batch_size=4,
                                          shuffle=True, num_workers=8)

val_data = torchvision.datasets.CIFAR10(root="data",download=True,train=False,transform=transform)
val_loader = torch.utils.data.DataLoader(val_data, batch_size=4,
                                          shuffle=True, num_workers=8)

3.定义模型及参数

用Sequential快速构建,对数据进行展平处理输入尺寸为图片尺寸 x 通道数,输出10分类,hidden layer设置为512。

net = nn.Sequential(
    nn.Flatten(),
    nn.Linear(1024*3, 512),
    nn.ReLU(),
    nn.Linear(512,10)
)

4.训练

损失计算选用交叉熵函数,优化器选用SGD,调用显卡运行。

loss = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(net.parameters(), lr = 0.01)
epochs = 30

device = "cuda:0"
train(net,train_loader,val_loader,epochs,optimizer,loss,device)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XrRdwV5J-1645528506210)(https://z3.ax1x.com/2021/10/26/5I1IN8.jpg)]

结果

可以看出我们的验证准确值过低,这主要是因为数据集特征不明显,我们在更换数据集验证。

更换数据集

选用7分类的海贼王图片进行训练,可以看出训练结果明显优于CIFAR数据集。

5X26HS.jpg

同时我们再挑选一张不在训练集的图片进行验证,发现结果正确。

5X2gAg.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值