神经网络简介(pytorch)

Posted 编程基础深度学习论文

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络简介(pytorch)相关的知识,希望对你有一定的参考价值。

pytorch手册笔记

https://github.com/zergtant/pytorch-handbook

有些引用了吴恩达视频中的板书和图片


神经网络的表示

我们有输入特征 ,它们被竖直地堆叠起来,这叫做神经网络的输入层。它包含了神经网络的输入;然后中间一层我们称之为隐藏层的四个结点。图中最后一层只由一个结点构成,而这个只有一个结点的层被称为输出层,它负责产生预测值。


激活函数

为什么激活函数都是非线性的

简单来说多层线性激活函数效果和一层一样


启动jupyter notebook

调包

import torchimport torch.nn.functional as Fimport matplotlib.pyplot as pltimport numpy as np

sigmod 函数

神经网络简介(pytorch)

输出为(0,1)常用作二分类

x= torch.linspace(-10,10,60)ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data', 0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data', 0))plt.ylim((0, 1))sigmod=torch.sigmoid(x)plt.plot(x.numpy(),sigmod.numpy())

神经网络简介(pytorch)

tanh 函数

神经网络简介(pytorch)

输出区间是在(-1,1)之间

ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data', 0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data', 0))plt.ylim((-1, 1))tanh=torch.tanh(x)plt.plot(x.numpy(),tanh.numpy())

神经网络简介(pytorch)

ReLU 函数

Relu(Rectified Linear Units)修正线性单元

a = max(0,z)

也就是说:z>0时,梯度始终为1,从而提高神经网络基于梯度算法的运算速度。然而当 z<0时,梯度一直为0。ReLU函数只有线性关系(只需要判断输入是否大于0)不管是前向传播还是反向传播,都比sigmod和tanh要快很多

ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data', 0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data', 0))plt.ylim((-3, 10))relu=F.relu(x)plt.plot(x.numpy(),relu.numpy())

神经网络简介(pytorch)

Leaky Relu 函数

为了解决relu函数z<0时的问题出现了 Leaky ReLU函数,该函数保证在z<0的时候,梯度仍然不为0。ReLU的前半段设为αz而非0,通常α=0.01

ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data', 0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data', 0))plt.ylim((-3, 10))l_relu=F.leaky_relu(x,0.1) # 这里的0.1是为了方便展示,理论上应为0.01甚至更小的值plt.plot(x.numpy(),l_relu.numpy())


以上是关于神经网络简介(pytorch)的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch 之 神经网络 Mnist 分类任务

搞定《动手学深度学习》-(李牧)PyTorch版本的所有内容

神经网络简介(pytorch)

PyTorch从入门到精通100讲-Pytorch Geometric 从原理到实战应用案例(附代码)

pytorch生成对抗网络GAN的基础教学简单实例(附代码数据集)

pytorch 入门指南