深度学习,从零实现多层感知机——李沐老师的课程笔记

深度学习,从零实现多层感知机——李沐老师的课程笔记

对于深度学习,非常推荐李沐老师的课程,受益匪浅

课程视频10 多层感知机 + 代码实现 - 动手学深度学习v2_哔哩哔哩_bilibili

这里对源码做一些注释,希望大家可以更好理解这里面的意思

没有基础不知道软件如何安装的可以看Python深度学习:安装Anaconda、PyTorch(GPU版)库与PyCharm_哔哩哔哩_bilibili

有基础的也可以直接看代码,来加深理解

若有差错,请与我联系探讨pwp

首先是概念:


单层感知机用wx+b来模拟分割线,进行分类,而遇到图中这种情况,则无法正确分类;
这个时候得用多层感知机的理念:
首先用两层分割线,第一层分割线X(h=sigmoid(wx+b))划分出3,4为负,1,2为正,
然后第二层分割线Y(o=w‘h+b)将1转为负,3转为正,此时就可以分辨了

但是这里注意,Y轴很好解决,但是x轴就不好解决了,因为相同x值(如点1,3)要得到两个不同的y值,用线性函数做不到,所以要用非线性函数,这个非线性函数作为激活函数来使如同X轴分割。

比如h不用sigmoid函数,那么把o中h代换,得到的w‘wx的w’w也是一个普通线性,所以不行


##激活函数
sigmoid
 


Tanh
 

ReLU:最常用的,简单,快速,不用算指数
 

然后是代码:

这里把W1和W2全部用zero来设置初始为0,会使得loss降不下来,巨高无比,大概在2.3,图像中都显示不出来,关于d2l报错和不显示loss看我上一篇softmax

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

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


num_inputs , num_outputs , num_hiddens = 784 , 10 , 256
# 这个nn.parameter是为了让他变为leaf tensor,因为乘了0.01,有了操作就不是leaf tensor
W1 = nn.Parameter(
    torch.randn(num_inputs, num_hiddens, requires_grad=True) * 0.01)
# W1 = torch.zeros(num_inputs , num_hiddens , requires_grad = True)
b1 = torch.zeros(num_hiddens , requires_grad = True)

W2 = nn.Parameter(
    torch.randn(num_hiddens , num_outputs , requires_grad = True)* 0.01)
# W2 = torch.zeros(num_hiddens , num_outputs , requires_grad = True)
b2 = torch.zeros(num_outputs , requires_grad = True)

params = [W1, b1, W2, b2]


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


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

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值