神经网络的反向传播过程详解

版权声明:本文为博主原创文章,转载请注明出处。

神经网络中的数学知识其实并不多,个人认为相比于SVM,随机森林等模型,神经网络中的数学真是太简单了。唯一需要深入理解的一点就是反向传播。这一部分是神经网络工作的核心。要理解反向传播,首先要知道求导的链式规则。或者先看看CS231n课程笔记翻译:反向传播笔记,将有助于理解。本篇博文将根据我认为更容易理解的方式推导反向传播,阐述反向传播的一般性公式。可能某些表述上与教材上不同,但殊途同归。

首先,设第\(l\)层的神经元的输出为\(h_{l,i}\),共有m个神经元。第\(l+1\)层的输出为\(h_{l+1,j}\),共有n个。连接\ [Read More…]

CNN中的batch-normalization及其tensorflow用法

版权声明:本文为博主原创文章,转载请注明出处。

Batch Normalization(以下简称BN)自从2015年被提出后,得到了广泛的应用。相关介绍看这里。

深度学习(二十九)Batch Normalization 学习笔记

Batch Normalization详解

Batch Normalization 批标准化

BN主要有两个好处。第一,将数据归一化到均值为0,方差为1,使数据在一个合理的范围,有效避免了最开始几次迭代的loss震荡。 第二,有效避免了梯度消失和梯度爆炸,使网络迅速收敛。

BN层原理

BN层的思想很简单,就是对每个输入batch做一个归一化 [Read More…]

CNN中1×1卷积核的作用

版权声明:本文为博主原创文章,转载请注明出处。

近年来的一些知名CNN模型中常常可以见到1×1的卷积核。相关介绍可以看这里。

1*1的卷积核与Inception

卷积神经网络中用1*1 卷积有什么作用或者好处呢?

 

以下是我的理解。

其实CNN中1×1卷积层就相当于将输入的特征图(feature maps)按照不同的加权进行线性组合,并输出对应维数的特征图。这里,我们可以规定1×1的卷积层的输出是多少。因此,1×1卷积层可以用来特征升维或者降维。当然我们见的更多的是用其进行降维。

例如,若上一层的feature maps有1000个,尺寸为32×32,经 [Read More…]

二维离散傅里叶变换详解(python实现)

版权声明:本文为博主原创文章,转载请注明出处。

最近在总结一些基本的图像处理算法。二维离散傅里叶变换是将图像从空间域转至频域,在图像增强、图像去噪、图像边缘检测、图像特征提取、图像压缩等等应用中都起着极其重要的作用。频域滤波和空域滤波可以视为对一个问题的两种处理方式。有些问题更适合于在频域中解决。用傅里叶变换表示的函数可以完全通过傅里叶反变换进行重建。若忽略数值精度问题,一幅图像在空域和频域之间转换不会丢失任何信息。

二维傅里叶变换的数学表达

在图像处理中,二维傅里叶变换是离散的,其正变换和逆变换公式如下。

$$F\left( u,v \right) =\sum_{x=0}^{ [Read More…]

拉普拉斯金字塔(Laplace Pyramid)

版权声明:本文为博主原创文章,转载请注明出处。

图像金字塔是一种多分辨率图像处理技术。通过图像金字塔,我们可以获得图像在不同分辨率下的图像。它在图像融合、滤波中都有着广泛的应用。同时,它也是许多复杂算法(如 NCST 变换等)的基础。这篇博文将讲述高斯金字塔、拉普拉斯金字塔,以及一个基本应用——利用拉普拉斯金字塔进行图像融合。

 

高斯金字塔

高斯金字塔原理很简单,利用高斯滤波器对图像进行平滑处理,再进行降采样,即可得到金字塔上一层的图像。上层图像的宽、高为下层的\(\frac{1}{2}\)。opencv中有函数pyrdowm()实现高斯金字塔降采样功能。另外有函数 [Read More…]

win7+anaconda3配置opencv3.3

win7+anaconda3配置opencv3.3

http://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应版本的opencv资源,python3.6, 64位win7则下载opencv_python‑3.3.0‑cp36‑cp36m‑win_amd64.whl。

将下载的文件移动到anaconda3的site-packages文件夹下。

打开cmd控制台,cd到anaconda3的site-packages,使用命令pip install opencv_python‑3.3.0‑cp36‑cp36m‑win_amd64.whl 完场安装。

测试代码:

[crayon-5baa5 [Read More…]

LIBSVM python包的安装和使用

引言

  LIBSVM是台湾大学林智仁等开发的一个开源SVM包,包含SVM各种常见类型、核函数,支持交叉验证等训练策略,简单易用。在作者主页http://www.csie.ntu.edu.tw/~cjlin/可方便地进行下载。博主的python版本是python3.6,用Anaconda3进行包的管理。这篇博文记录libSVM的安装和常见使用。

安装步骤

1.在http://www.csie.ntu.edu.tw/~cjlin下载libSVM包,解压,可以看到以下目录结构。

2.找到windows文件夹下的libsvm.dll,拷贝到C:\Windows\System32 [Read More…]

机器学习算法资料收集(持续更新)

摘要

本文将持续收集讲得比较好的机器学习算法博客、资料、源码等。

 

K-Means聚类算法

聚类分析试图将相似对象归入同一簇。K-均值是发现给定数据集的k个簇的算法。

用scikit-learn学习K-Means聚类

scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法

 

MeanShift聚类算法

Meanshift,聚类算法

基于MeanShift的目标跟踪算法及实现

 

  [Read More…]

高斯过程单分类(GPOCC)方法

高斯过程单分类(GPOCC)方法

版权声明:本文为博主原创文章,转载请注明出处。

摘要

单分类(One Class Classification)问题是指只利用一类样本进行训练的分类问题。高斯过程回归(GPR)和高斯过程分类(GPC)理论完备,应用也较为广泛。利用高斯过程进行单分类的应用目前还不太常见。本文的内容取自论文One-class classification with Gaussian processes,总结了文中利用高斯过程进行单分类的方法,并利用sklearn库进行了单分类的实现。

GP单分类模型原理

之前有讲到利用高斯过程进行回归。预测值的后验分布为

$${f_*}|X,y,{x_*}\t [Read More…]