从百草园到三味书屋

Recent content on 从百草园到三味书屋

马上订阅 从百草园到三味书屋 RSS 更新: https://youngforever.tech/index.xml

PyTorch深度学习(2)

2020年4月1日 22:51
Deep Learning = Learning Hierarchical Representations 深度学习即学习层次的表征。

1. 卷积神经网络 #

1.1 神经网络可视化(Visualization of neural networks) #

神经网络每一层的操作有点像将空间某些区域进行折叠

1.2 卷积神经网络的起源(Convolutional Neural Network;CNN) #

受到Fukushima在视觉皮层建模方面的启发,使用简单/复杂的细胞层次结构,结合有监督的训练和反向传播,由Yann LeCun教授于88-89年在多伦多大学开发了第一个CNN。

Fukushima的工作具体是什么呢?
手写数字识别。首次提出应用多层简单或者复杂的细胞结构建模,特征:手工加无监督聚类学习。无反向传播。

1.3 卷积神经网络分解 #

通用的CNN架构能被分解为以下几个基本结构。

  • 标准化(Normalisation):对比度标准化等
  • 滤波器组(Filter banks):边缘检测等
  • 非线性化(Non-linearities):稀疏化、ReLU等
  • 池化(pooling):最大池化(max pooling)等

2. 自然信号数据(Natural Signals) #

2.1 自然信号数据特性 #

  • 周期性:在时域很多模式都会重复出现
  • 局部性:相邻的点较相远的点来说更具关联性
  • 合成性:复杂的事物可以由简单的事物组合而成。字母->单词->句子->文章

2.2 对应神经网络中的处理方法 #

  • 周期性$\rightarrow$参数共享
    如果数据存在周期性,可以使用参数共享,即卷积核。
  • 局部性$\rightarrow$稀疏
    如果数据存在局部性,那么每个神经元只需要与前几个神经元连接
  • 合成性$\rightarrow$多层
    即神经网络中多层网络合成最终的结果

3. Pytorch实现Mnist手写字识别 #

# load package and data
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
import matplotlib.pyplot as plt

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

# 神经网络模型偏爱标准化数据,原因是均值为0方差为1的数据在sigmoid、tanh经过激活函数后求导得到的导数很大,
# 反之原始数据不仅分布不均(噪声大)而且数值通常都很大(本例中数值范围是0~255),激活函数后求导得到的导数
# 则接近与0,这也被称为梯度消失。
# 目录放自己下载好的mnist目录,没有下载将download=True,自己新建一个存放数据目录即可
train_loader = torch.utils.data.DataLoader(
 datasets.MNIST('../LSTM_mnist/mnist', train=True, download=False,
 transform=transforms.Compose([
 transforms.ToTensor(),
 # mnist数据集均值0.1307,标准差0.3081
 transforms.Normalize((0.1307,), (0.3081,))
 ])),
 batch_size=64, shuffle...

剩余内容已隐藏

查看完整文章以阅读更多