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...
剩余内容已隐藏
查看完整文章以阅读更多
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...
剩余内容已隐藏
查看完整文章以阅读更多