李沐深度学习-激活函数/多层感知机文档

multilayer perceptron (MLP):多层感知机(多层神经网络)

(hidden layer)隐藏层:
介于输入层和输出层之间的网络层
输入层不涉及计算,如果一个神将网络由三层组成,则多层感知机层数为2
多层感知机中隐藏层和输出层都是全连接
隐藏层的输出(也叫隐藏层变量或隐藏变量)
隐藏层单元个数≠隐藏层变量个数

将隐藏层的输出作为输出层的输入,联立后得到的式子依然从形式上等价于一个单层神经网络
原因是因为全连接层只是对数据做仿射变换(affine transformation) ,多个仿射变换的叠加仍然是一个仿射变换,所以需要引入非线性变换
例如使用对隐藏变量按元素运算的份线性函数进行变换,再将结果作为下一个全连接层的输入,这个非线性函数即激活函数

激活函数:

1. ReLU(rectified linear unit)
    给定元素x,该函数定义为:ReLu(x)=max(x,0)
2. sigmoid  变换数据到0-1之间
3. tanh 变换数据到-1,1之间

多层感知机的层数以及隐藏层中隐藏单元个数都是超参数,可以人为设定

def cross_entropy(y_hat, y): # 得到y中每行对应索引位置y_hat每行的索引概率,比如y[0]=8,则索引到y_hat[0]=8处的类别概率值0.4
return -torch.log(y_hat.gather(1, y.view(-1, 1))) # 交叉熵只关心对正确类别的预测概率,通过使用gather函数,可以得到2个样本的标签的预测概率。
#这里y_hat.gather(1, y.view(-1, 1))得到的应该是一个具有多个元素的tensor张量,然后torch.log进行了对数计算

cross_entropy()就是一个交叉熵损失函数,相当于loss函数调用 返回的是标签y对应类别的预测概率的自然对数张量
调用时一般是loss(y_hat,y).sum() sum就是为了将这些概率加和,然后在进行反向传播计算(具体这里的逻辑还是不清楚,以后慢慢会懂得)

在torch.nn.CrossEntropyLoss()函数调用时,他已经计算了批次损失的平均值,所以不需要进行sum()

相关推荐

  1. 深度学习-激活函数/感知文档

    2024-01-22 00:20:02       39 阅读
  2. 深度学习-感知从零开始

    2024-01-22 00:20:02       35 阅读
  3. 深度学习-多项式函数拟合试验

    2024-01-22 00:20:02       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 00:20:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 00:20:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 00:20:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 00:20:02       18 阅读

热门阅读

  1. RNN与NLP

    2024-01-22 00:20:02       38 阅读
  2. Centos7 安装Jenkins2.440

    2024-01-22 00:20:02       32 阅读
  3. SpringBoot默认日志输出格式

    2024-01-22 00:20:02       34 阅读
  4. Elasticsearch 数组值的存储详细介绍

    2024-01-22 00:20:02       40 阅读
  5. PHP学习笔记1

    2024-01-22 00:20:02       26 阅读
  6. STL-deque

    2024-01-22 00:20:02       36 阅读
  7. 第二章 使用 SQL Search

    2024-01-22 00:20:02       32 阅读
  8. jwt和token区别是什么

    2024-01-22 00:20:02       38 阅读
  9. Python-利用resource限制资源使用

    2024-01-22 00:20:02       32 阅读