多层感知机及其代码实现

多层感知机及其代码实现,第1张

感知机

给定输入x,权重w,偏移b,感知机输出

以上是一个二分类的问题,输出1或者0

训练感知机

不断地训练模型,假如分类不正确,则不断地更新w,b

收敛定理

 感知机的问题

感知机不能拟合XOR函数,它只能产生线性分割面

多层感知机 学习XOR

 当一层解决不了时,可以把函数拆开学习,组合学习到的函数,从一层变成了多层

 

需要引入非线性的激活函数。 

激活函数选择 sigmoid函数

类似于阶跃函数,但是由于阶跃函数断点处不好求导,sigmoid函数是阶跃函数的soft版本,将输入投影到(0,1)

 Tanh函数

将输入投影到(-1,1)

 ReLU激活函数

计算简单,没有指数

 多类分类

引入softmax函数。softmax是把所有输入拉到(0,1)之间的区域,使得y1到yk之和等于1,使得满足概率,具体参考

(1条消息) 入门级都能看懂的softmax详解_bitcarmanlee的博客-CSDN博客_softmaxhttps://blog.csdn.net/bitcarmanlee/article/details/82320853?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165015353116782246412161%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165015353116782246412161&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-82320853.142^v9^control,157^v4^control&utm_term=softmax&spm=1018.2226.3001.4187具体公式如下 

 扩展到多隐藏层,每个隐藏层都有其w1和b

 在建立模型时,我们需要选择有多少个隐藏层,每个隐藏层的大小。一般来说,层数越深,隐藏层越小。

多层感知机就是使用隐藏层和激活函数来得到非线性模型。

多层感知机代码从0实现

首先需要在pycharm中配置d2l的环境,因为下载了anaconda,所以这个配置还是很简单的

在anaconda prompt中激活pytorch,输入以下代码即可安装

pip install d2l

配置所需环境

import torch
from torch import nn
from d2l import torch as d2l

实现一个具有单隐藏层的多层感知机,包含有256个单元

batch_size = 256
train_iter,test_iter = d2l.load_data_fashion_mnist(batch_size)

num_inputs = 784,num_outputs = 10,num_hiddens=256

W1 = torch.randn(num_inputs,num_hiddens,requires_grad=True)
b1 = torch.zero_(num_hiddens,requires_grad=True)
W2 = torch.randn(num_hiddens,num_outputs,requires_grad=True)
b2 = torch.zeros(num_outputs,requires_grad=True)

params = [W1,b1,W2,b2]

实现ReLU激活函数

def relu(X):
    a = torch.zeros_like(X)
    return torch,max(X,a)

实现模型

def net(X):
    X = X.reshape((-1,num_inputs))
    H = relu(X @ W1+b1)
    return (H @ W2+b2)

loss = nn.CrossEntropyLoss()

训练模型

num_epochs,lr = 10,0.1
updater = torch.optim.SGD(params,lr=lr)
d2l.train_ch3(net,train_iter,test_iter,loss,num_epochs,updater)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存