神经网络与深度学习(三)——卷积神经网络基础

卷积神经网络基础

  • 1.为什么要学习神经网络
    • 1.1全连接网络问题
    • 1.2深度学习平台简介
    • 1.3PyTorch简介
    • 1.4简单示例
  • 2.卷积神经网络基础
    • 2.1进化史
    • 2.2特征提取
    • 2.3基本结构
  • 3.学习算法
    • 3.1前向传播
    • 3.2误差反向传播
      • 3.2.1经典BP算法
      • 3.2.2卷积NN的BP算法
  • 4.LeNet-5网络
    • 4.1网络介绍
    • 4.2网络结构详解
    • 4.3LeNet5代码实现

1.为什么要学习神经网络

1.1全连接网络问题

  • 链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合问题
    e.g.输入为1000×1000图像 ,隐含层有 1M 个节点,则输入->隐含层间有1×1012数量级的参数

  • 解决算的慢的问题:减少权值连接,每一个节点只连接到上一层的少数神经元,即局部连接网络
    神经网络与深度学习(三)——卷积神经网络基础_第1张图片

  • 解决难以收敛的问题:权值过多容易产生过拟合问题,如何消除?
    联想到人类解决问题的思路->信息分层处理,每一层在上一层提取特征的基础上进行再处理,抽象出更高级别的特征。
    神经网络与深度学习(三)——卷积神经网络基础_第2张图片

1.2深度学习平台简介

神经网络与深度学习(三)——卷积神经网络基础_第3张图片

1.3PyTorch简介

是什么?

  • PyTorch是一个 Python 的深度学习库 。它最初由Facebook人工智能研究小组开发而优步的Pyro软件则用于概率编程。
  • 最初PyTorch由Hugh Perkins开发作为基于Torch框架的LusJIT的Python 包装器。PyTorch在Python中重新设计和实现Torch同时为后端代码共享相同的核心C库。
  • 除了Facebook之外Twitter、GMU和Salesforce等机构都采用了PyTorch。
  • 到目前据统计已有80%的研究采用PyTorch包括Google。

基本概念

  • 张量(Tensor)
    是一个物理量,对高维(维数 ≥ 2)的物理量进行“量纲分析”的一种工具。
    简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组称为三阶张量…
  • 计算图
    用 “ 结点 ”(nodes)和 “ 线 ”(edges)的有向图来描述数学计算的图像。“ 节点 ” 一般用来表示施加的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“ 线 ” 表示 “ 节点 ” 之间的输入/输出关系。这些数据 “ 线 ” 可以输运 “ size可动态调整 ” 的多维数据数组,即 “ 张量 ”(tensor)
    神经网络与深度学习(三)——卷积神经网络基础_第4张图片
  • 注意
    使用 tensor 表示数据
    使用Dataset、DataLoader读取样本数据和标签
    使用变量(Variable)存储神经网络权值等参数
    使用计算图(Computational Graph)来表示计算任务
    在代码运行过程中同时执行计算图

1.4简单示例

构建简单的计算图,每个节点将零个或多个tensor作为输入,产生一个tensor作为输出。PyTorch中,所见即为所得,tensor的使用和numpy中的多维数组类似:

import torch

x_const = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([3.0, 4.0, 5.0])
output 

你可能感兴趣的:(神经网络,深度学习,cnn)