PyTorch-使用神经网络拟合数据

人工神经元

深度学习的核心是神经网络:一种能够通过简单函数的组合来表示复杂函数的数学实体。
这些复杂函数的基本构件是神经元,其核心就是输入的线性变换(如,将输入乘以一个数字【权重】,加上一个常数【偏置】),然后应用一个固定的非线性函数,即激活函数。

激活函数

激活函数有2个作用:

  • 在模型的内部,它允许输出函数在不同的值上有不同的斜率,这是线性函数无法做到的。通过巧妙地为许多输出设置不同的斜率,神经网络可以近似任意函数。
  • 在网络的最后一层,它的作用是将前面的线性运算的输出集中到给定的范围内。

我们将讨论一些关于激活函数的一般性问题,这些问题可能在特定情况下被简单地证明是错误的。

  • 激活函数是非线性的。在没有激活函数的情况下,重复应用(w*x+b)会导致相同线性形式(仿射线性)的函数。非线性使得整个网络能够逼近更复杂的函数。
  • 激活函数是可微的,因此可以通过它们计算梯度。

没有这些特性,网络要么退回到线性模型,要么变得难以训练。
以下是函数的真实情况。

  • 它们至少有一个敏感范围,在这个范围内,对输入的变化会导致输出产生相应的变化,这是训练所需要的。
  • 它们包含许多不敏感(或饱和)的范围,即输入的变化导致输出的变化很小或没有变化。

综合起来,所有这些组成了一个非常强大的机制:在一个由线性+激活单元构成的网络中,当不同的输入呈现给网络时,不同的单元会对相同的输入在不同范围内响应;与这些输入相关错误将主要影响在敏感区域工作的神经元,使其他单元不受学习过程的影响。

学习对于神经网络意味着什么

通过一系列线性变换和可微激活建立模型,可以得到近似高度非线性的模型,并且通过梯度下降可以很好地估计其参数。
深度神经网络使我们能够在没有明确模型的情况下近似处理高度非线性的问题。相反,从一个通用的、未经训练的模型开始,我们通过为它提供一组输入和输出以及一个可以反向传播的损失函数,使它专门处理某项任务。使用样本将一个通用模型专门化为一个任务就是我们所说的学习。

PyTorch nn模块

PyTorch有一个专门用于神经网络的子模块,叫作torch.nn,它包含创建各种神经网络结构所需的构建块。按照PyTorch的说法,这些构建块称为模块(在其他框架中,这样的构建块通常称为层)。PyTorch模块派生自基类nn.Module,一个模块可以有一个或多个参数实例作为属性,这些参数实例是张量,它们的值在训练过程中得到了优化。一个模块还可以有一个或多个子模块(nn.Module的子类)作为属性,并且还能够跟踪它们的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值