分类标签归档:python

动手学习深度学习系列笔记——使用块的网络 VGG


25 使用块的网络 VGG

目录

Alexnet最大的问题在于长得不规则,结构不甚清晰,也不便于调整。想要把网络做的更深更大需要更好的设计思想和标准框架。

1. VGG块

直到现在更深更大的模型也是我们努力的方向,在当时AlexNet比LeNet更深更大得到了更好的精度,大家也希望把网络做的更深更大。选择之一是使用更多的全连接层,但全连接层的成本很高;第二个选择是使用更多的卷积层,但缺乏好的指导思想来说明在哪加,加多少。最终VGG采取了将卷积层组合成块,再把卷积块组合到一起的思路。

VGG块可以看作是AlexNet思路的拓展,A

Read more

动手学习深度学习系列笔记——AlexNet


AlexNet

本节目录

1.1 2000 流行的机器学习方法——SVM,核方法

  • 核方法替代了之前的神经网络网络方法,SVM对于调参不敏感,现在也有一些应用
  • 本质上是特征提取,具体的方法是选择核函数来计算,把特征映射到高纬空间,使得他们线性可分
  • 经过核函数计算之后,原问题可以转化为凸优化

Read more

动手学习深度学习系列笔记——LeNet卷积神经网络


1.LeNet卷积神经网络

1.1 手写数字识别

  • LeNet网络最早是为了应用于手写数字的识别应用。
  • 应用背景:
    • 邮政局希望可以自动读出信件上的邮政编码
    • 人们希望可以用支票自动取钱
  • 该模型在80年代末的银行被真正的部署

1.2 MNIST

  • LeNet所使用的数据集
  • 50,000个训练数据
  • 10,000个测试数据
  • 图像大小为28*28
  • 10类

1.3 LeNet的具体模型

1.4 总结

  • LeNet是早期成功的神经网络
  • 先使用卷积层来学习图片空间信息
  • 然后使用全连接层来转换到类别空间

2.代码部分

2.1 定义网络结构和准备工作

  • 导入所需的库
#导入所需的库
import

Read more

动手学习深度学习系列笔记——池化层


池化层

本节将介绍池化(pooling)层,它具有目的:类似于数据增强,降低卷积层对位置的敏感性;一定程度减少计算。

最大池化层和平均池化层

与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。 相反,池运算符是确定性的,我们通常计算池化窗口中所有元素的最大值或平均值。这些操作分别称为最大池化层(maximum pooling)和平均池化层(average pooling)。

在这两种情况下,与互相关运算符一样,池化窗口从输入张量的左上角

Read more

动手学习深度学习系列笔记——多个输入和输出通道


21-多个输入和输出通道

本节目录:

1.多个输入通道:

  • 彩色图像可能有RGB三个通道

  • 转换为灰度会丢失信息

  • 每个通道都有一个卷积和,结果是所有通道卷积结果的和

  • 输入X:
  • W
  • 输出Y:

多个输入通道:

import torch
from d2l import torch as d2l

def corr2d_multi_in(X, K):
    return sum(d2l.corr2d(x, k

Read more

动手学习深度学习系列笔记——填充和步幅


20-填充和步幅

1. 填充

填充(Padding)指的是在输入周围添加额外的行/列

维度变化

两种不同的卷积方式: ①Valid 卷积:不进行填充,卷积运算过后得到的矩阵形状为(n-f+1)×(n-f+1)。

②Same 卷积:先对矩阵进行填充,然后再进行卷积运算,使得运算前后矩阵大小不变。

2. 步幅

想法来源:如果按照原来的操作(卷积步长为1),那么给定输入大小为224x224,在使用5x5卷积核的情况下,需要55层才能将输出降低到4x4,也就是说,需要大量的计算才能得到维度较小的输出。

步幅是指行/列的滑动步长

维度变化:

注意:第三点可以当做结论来记(Same卷积或Val

Read more

动手学习深度学习系列笔记——pytorch卷积层


19-卷积层

本讲文字介绍部分请参考沐神在线书籍~:https://zh-v2.d2l.ai/chapter_convolutional-neural-networks/why-conv.html

代码

import torch
from torch import nn

def corr2d(X,K):    #X为输入,K为核矩阵
    h,w=K.shape    #h得到K的行数,w得到K的列数
    Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))  #用0初始化输出矩阵Y
    for i in range(Y.shape[0]):

Read more

动手学习深度学习系列笔记——Pytorch神经网络基础


Pytorch神经网络基础

层和块

在之前的内容中,我们认识了一些神经网络,比如:线性回归,Softmax回归,多层感知机;他们有的是整个模型,有的是一层神经网络,有的甚至只是一个单元,他们的功能以及复杂程度也各不相同,但他们都有着如下三个特征:

  • 接受一些输入
  • 产生对应的输出
  • 由一组可调整参数描述

对于一些复杂的网络,研究讨论比层大但比整个模型小的部分很有意义,因为复杂的网络中经常有重复出现的部分,每个部分也常常有自己的功能。考虑到上面的三个特征,这就使得我们思考是否可以对这些部分进行一个抽象,这就得到了块的概念:块指单个层,多个层组成的部分,或者整个模型本身。使用块对整个模型进行描述就简

Read more

动手学习深度学习系列笔记——预测房价竞赛总结


18-预测房价竞赛总结

本节目录

1.方法总结

下面提供了排行榜前几使用的方法介绍链接

Read more

动手学习深度学习系列笔记——数值稳定性+模型初始化和激活函数


14-数值稳定性+模型初始化和激活函数

本节目录

Read more