Normalization
网络正则化NormalizationBatch NormalizationBN的公式:
BN就是在深度神经网络训练时通过对每一个batch的数据采用均值和方差进行归一化,使得每一层神经网络的输入保持相同的分布,这样能够加快训练的速度。此外,因为在训练时,为每一次迭代求全局的均值和方差是不现实的,因此借鉴moment的方式对均值和方差进行更新,使得每一层归一化的均值和方差都不一样,也相当于引入了噪声,能够增加模型的鲁棒性,有效减少过拟合。
Layer Normalization
BN抹平了不同特征之间的大小关系,而保留了不同样本之间的大小关系。
不同图片的的同一通道的相对关系是保留的,即不同图片的同一通达的特征是可以比较的
同一图片的不同通道的特征则是失去了可比性
LN抹平了不同样本之间的大小关系,而保留了不同特征之间的大小关系。
同一句子中词义向量的相对大小是保留的,或者也可以说LayerNorm不改变词义向量的方向,只改变它的模。
不同句子的词义向量则是失去了可比性。
Batch Normalization 注意事项BatchNorm避坑指南
论文链接
注意此语境下主要讨 ...
Pytorch分布式训练踩坑
踩坑记修改网络模块或者获得模型的某个参数解决方法:model后面添加module
获取到网络模型后,使用并行方法,并将网络模型和参数移到GPU上。注意,若需要修改网络模块或者获得模型的某个参数,一定要在model后面加上.module,否则会报错,比如:
model.img_size 要改成 model.module.img_size
最后一个batch卡死现象:PyTorch 训练时在第一个 epoch 的最后一个 batch 卡死
原因:Pytorch 的多 GPU 处理接口是 torch.nn.DataParallel(module, device_ids),该接口还要求输入数据的 batch 数量要不小于所指定的 GPU 数量。另根据官网的解释和注释 (The batch size should be larger than the number of GPUs used.),batch的数量会均分到每块GPU上进行处理,因此要保证一个整数的关系。
解决方法:一定要注意在使用多块 GPU 训练时,注意 batch_size 的取值,避免出现最后一个 batch 的实际size小 ...
CMUParellelComputer课程概述
课程地址:http://www.cs.cmu.edu/afs/cs/academic/class/15418-f18/www/schedule.html
Lecture 1为什么需要并行计算?单核CPU的性能几乎成指数级增长,而且英特尔在2004已经到达了单核的功耗墙。
在2004年之前想要让程序变得更快,买一个新的机器
但是2004年之后,需要进行并行编程。
目前的CPU架构
最左边的是GPU,右边排列了4块CPU,中间是通讯总线。可见现代CPU都是采用多核设计,以达到更快的速度。
什么是并行计算?A parallel computer is a collection of processing elementsthat cooperate to solve problems quickly。
并行计算器,就是协调多个单核处理器以解决问题。
加速比
$$speedup(using \quad P \quad processors) = \frac{execution \quad time(using \quad 1 \quad processors)}{execution \qu ...
CPU并行计算
Lecture 2 A Modern Multi-Core Processor
理解并行计算的形式
理解延迟(latency)和带宽(bandwidth)
Parallel Execution单线程执行 - 编译器定义例程:使用泰勒公式计算$sin(x)$。
1234567891011121314151617void sinx(int N,int terms, float* x,float* result){ for(int i=0;i<N;i++){ float value = x[i]; float numer = x[i] * x[i] *x[i]; int denom = 6; int sign = -1; for(int j=1;j<= terms;j++){ value += sign * numer / denom; numer *= x[i] * x[i]; denom *= (2*j+2)*(2*j+3); ...
数字图像处理基础(二)
本系列是参考冈萨雷斯《数字图像处理》与斯坦福CS131课程进行自我总结而成的数字图像处理基础知识。
概念
空间域:指的是图像平面本身。空间域中的图像处理方法直接对图像中的像素进行处理
变换域:如频率域。对图像进行变换,变换到变换域中。在变换域中进行处理,处理之后再对图像进行反变换,把结果带回空间域。
空间域变换表达式$$ g(x,y) = T[ f(x,y) ] \tag{1}$$
式中$f(x,y)$是输入图像,$g(x,y)$是输出图像,$T$是在点$(x,y)$的一个领域上定义的针对$f$的算子,或者叫变换函数。
灰度变换灰度变换作为增强图像的一种方法,通常用于调整图像对比度,使得图像满足于“特定”的要求。
常用灰度变换函数有
反转变换
对数变换
幂律变换
分段线性函数变换
比特平面分层 - 可用于图像压缩与重构
图像直方图参考:https://blog.csdn.net/qq_38701868/article/details/89215881
简单来说,直方图就是对数据进行统计的一种方法,并且将统计值组织到一系列实现定义好的 bin 当中。其中, bin 为直方图中经常 ...
数字图像处理基础(一)
本系列是参考冈萨雷斯《数字图像处理》与斯坦福CS131课程进行自我总结而成的数字图像处理基础知识。
数字图像表示数学形式定义令$f(s,t)$表示连续图像函数,通过采样和量化可以将这幅连续图像转化成数字图像$f(x,y)$,该图像有$M$行$N$列,其中$f(x,y)$是离散坐标,函数$f(x,y)$的值表示灰度值。
计算集为了方便存储和处理通常将图像表示成矩阵形式,形式如下$$ A=\left[ \begin{matrix} a_{0,0} & a_{0,1} & \cdots & a_{0,N-1} \ a_{1,0} & a_{1,1} & \cdots & a_{1,N-1} \ \vdots & \vdots & \ddots & \vdots \ a_{M-1,0} & a_{M-1,1} & \cdots & a_{M-1,N-1} \end{matrix} \right] \tag{1}$$
许多图像显示器都是从左上角开始向右移动,每次扫描一行。习惯上将左 ...
Faster-RCNN的pytorch实现
代码来源:https://github.com/jwyang/faster-rcnn.pytorch
代码解读把python2的新版本特性导入到python2当前版本123from __future__ import absolute_import #设置成绝对引用from __future__ import division #使用精确除法from __future__ import print_function #打印函数
导入库12345678910111213141516171819202122232425import _init_paths #自定义包含文件 用于设置环境路径import osimport sysimport numpy as npimport argparseimport pprint #美化打印库import pdb #python调试库import time #python时间函数库,用于计算运行时间import torchfrom torch.autograd import Variableimport torch.nn as nnimport to ...
CPU并行计算
Lecture 2 A Modern Multi-Core Processor
理解并行计算的形式
理解延迟(latency)和带宽(bandwidth)
Parallel Execution单线程执行 - 编译器定义例程:使用泰勒公式计算$sin(x)$。
1234567891011121314151617void sinx(int N,int terms, float* x,float* result){ for(int i=0;i<N;i++){ float value = x[i]; float numer = x[i] * x[i] *x[i]; int denom = 6; int sign = -1; for(int j=1;j<= terms;j++){ value += sign * numer / denom; numer *= x[i] * x[i]; denom *= (2*j+2)*(2*j+3); ...
CMUParellelComputer课程概述
课程地址:http://www.cs.cmu.edu/afs/cs/academic/class/15418-f18/www/schedule.html
Lecture 1为什么需要并行计算?单核CPU的性能几乎成指数级增长,而且英特尔在2004已经到达了单核的功耗墙。
[{"url":"https://s2.loli.net/2024/03/25/vnUhqJ2XPaFVpdL.jpg","alt":"single_chip_performance.jpg"}]
[{"url":"https://s2.loli.net/2024/03/25/rhltZgXQe36CzyJ.jpg","alt":"CPUTrends.jpg"}]
在2004年之前想要让程序变得更快,买一个新的机器
但是2004年之后,需要进行并行编程。
目前的CPU架构
[{"url":"https://s2.loli.net/2024/03/25/6ptGgeORBVDzoPN.jpg","alt ...
SPP-Net的tensorflow实现
代码来源:https://github.com/peace195/sppnet
代码解读导入包123456789101112131415161718import numpy as npimport osimport sysimport tarfilefrom six.moves.urllib.request import urlretrievefrom six.moves import cPickle as picklefrom PIL import Imageimport mathimport randomimport reimport scipy.ioimport PILfrom numpy import *from pylab import *from PIL import Imagefrom collections import defaultdictimport tensorflow as tfimport matplotlib.pyplot as plt
参数设置12345DROPOUT = 0.5 #随机失活概率LEARNING_RATE = 0.1 #VALIDATI ...