Hello World感知机,懂你我心才安息

单层神经网络

把一个多元一次方程(需要拟合的目标方程)画为神经网络

神经元:1、x1、x2每个圈为一个神经元

输入层:1、x1、x2整体为输入层,神经网络中输入层永远只有一层,且每个神经元只能有一个特征

输出层:在线性回归中输出层起着加和的作用

正向传播:输入层上每个神经元的特征与对应连线上的权重相乘,最后由输出层汇总结果

手动实现正向传播

importtorch

X=torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]],dtype=torch.float32)

#tensor([[1.,0.,0.],

#[1.,1.,0.],

#[1.,0.,1.],

#[1.,1.,1.]])

w=torch.tensor([-0.2,0.15,0.15],dtype=torch.float32)

#tensor([-0.2000,0.1500,0.1500])

输出层的结果为

zhat=torch.mv(X,w)

#tensor([-0.2000,-0.0500,-0.0500,0.1000])

torch.nn.Linear实现正向传播

importtorch

X=torch.tensor([[0,0],[1,0],[0,1],[1,1]],dtype=torch.float32)

#tensor([[0.,0.],

#[1.,0.],

#[0.,1.],

#[1.,1.]])

torch.random.manual_seed(0)

output=torch.nn.Linear(2,1)

zhat=output(X)

对torch.nn.Linear类实例化,需要输入两个参数,上一层的神经元个数,这一层的神经元个数。因为输入层特征矩阵X只有两个特征,所以上一层的神经元个数=2,这一层是输出层只有一个神经元所以这一层的神经元个数=1

在实例化中,会自动生成神经连接上的权重w和截距b,但因为是随机生成的需要设置随机数,确保每次运行都生成相同的权重w和截距b。

但是因为w和b是随机生成的所以输出层的结果zhat和手动算的不一样,这只是为了演示正向传播过程。神经网络需要通过多次

感知机处理2分类问题

上边的神经网络只能处理回归问题,而不能给出具体的分类,因此需要在输出层增加一个离散函数,根据数值大小把zhat分为不同的分类。

感知机是单层神经网络,输出层使用sign(阶跃函数、符号函数)对zhat处理,从而得到2分类输出结果

与门问题

与门问题,即X的第二列和第三列取逻辑and得到的结果0,0,0,1,需要用感知机预测这个2分类问题

importtorch

X=torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]],dtype=torch.float32)

#tensor([[1.,0.,0.],

#[1.,1.,0.],

#[1.,0.,1.],

#[1.,1.,1.]])

w=torch.tensor([-0.2,0.15,0.15],dtype=torch.float32)

输出层的结果为,因为感知机使用的是sign函数,返回的结果是-1和1代表了两个分类,那么这里的-1就是0即False而1代表1即True

zhat=torch.mv(X,w)

#tensor([-0.2000,-0.0500,-0.0500,0.1000])

output=torch.sign(zhat)

#tensor([-1.,-1.,-1.,1.])

那么权重w是怎么得到的呢,可以使用梯度下降方法通过迭代找到损失函数最小值,从而得到w

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现...
    寇元宝阅读 1,120评论 0 0
  • 1.安装 https://pytorch.orgpip3 config set global.index-url ...
    dingtom阅读 357评论 0 0
  • transformers是huggingface提供的预训练模型库,可以轻松调用API来得到你的词向量。trans...
    晓柒NLP与药物设计阅读 8,143评论 0 10
  • 1.tensor类型数据操作 随机生成5*3的tensor y = torch.rand(5, 3)print(y...
    Diros1g阅读 577评论 0 0
  • 建议大家可以配合跟着B站的跟李沐学AI。但是datawhale 也是讲的非常好的课程。 代码演示部分:配合本章学习...
    def1037aab9e阅读 428评论 0 0