李宏毅机器学习课程10~~~卷积神经网络


卷积的意义


数字图像是一个二维的离散信号,对数字图像做卷积操作其实就是利用卷积核(卷积模板)在图像上滑动,将图像点上的像素灰度值与对应的卷积核上的数值相乘,然后将所有相乘后的值相加作为卷积核中间像素对应的图像上像素的灰度值,并最终滑动完所有图像的过程。

这里写图片描述

这张图可以清晰的表征出整个卷积过程中一次相乘后相加的结果:该图片选用3*3的卷积核,卷积核内共有九个数值,所以图片右上角公式中一共有九行,而每一行都是图像像素值与卷积核上数值相乘,最终结果-8代替了原图像中对应位置处的1。这样沿着图片一步长为1滑动,每一个滑动后都一次相乘再相加的工作,我们就可以得到最终的输出结果。除此之外,卷积核的选择有一些规则:

1)卷积核的大小一般是奇数,这样的话它是按照中间的像素点中心对称的,所以卷积核一般都是3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。
2)卷积核所有的元素之和一般要等于1,这是为了原始图像的能量(亮度)守恒。其实也有卷积核元素相加不为1的情况,下面就会说到。3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

卷积操作有两个问题:
1. 图像越来越小;
2. 图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少。因此需要padding。

卷积核大小通常为奇数
一方面是为了方便same卷积padding对称填充,左右两边对称补零;
n+2p-f+1=n
p=(f-1)/2
另一方面,奇数过滤器有中心像素,便于确定过滤器的位置。

更多细节见
理解图像卷积操作的意义
padding

输入:n*c0*w0*h0
输出:n*c1*w1*h1
其中,c1就是参数中的num_output,生成的特征图个数w1=floor((w0+2*pad-kernel_size)/stride)+1;向下取整h1=floor((h0+2*pad-kernel_size)/stride)+1;向下取整
如果设置stride为1,前后两次卷积部分存在重叠。如果设置pad=(kernel_size-1)/2,则运算后,宽度和高度不变。
由pad, kernel_size和stride三者共同决定。

更多细节可见卷积步长

不同卷积核下卷积意义

我们经常能看到的,平滑,模糊,去燥,锐化,边缘提取等等工作,其实都可以通过卷积操作来完成,下面我们一一举例说明一下:
(1)一个没有任何作用的卷积核:

这里写图片描述

将原像素中间像素值乘1,其余全部乘0,显然像素值不会发生任何变化。
(2)平滑均值滤波:
选择卷积核:
这里写图片描述
该卷积核的作用在于取九个值的平均值代替中间像素值,所以起到的平滑的效果:

这里写图片描述

这里写图片描述

(3)高斯平滑:
卷积核:
这里写图片描述
高斯平滑水平和垂直方向呈现高斯分布,更突出了中心点在像素平滑后的权重,相比于均值滤波而言,有着更好的平滑效果。
这里写图片描述

(4)图像锐化:
卷积核:
这里写图片描述

该卷积利用的其实是图像中的边缘信息有着比周围像素更高的对比度,而经过卷积之后进一步增强了这种对比度,从而使图像显得棱角分明、画面清晰,起到锐化图像的效果。
这里写图片描述

除了上述卷积核,边缘锐化还可以选择:

这里写图片描述

(5)梯度Prewitt:
水平梯度:
这里写图片描述

这里写图片描述
垂直梯度:

这里写图片描述

这里写图片描述

梯度Prewitt卷积核与Soble卷积核的选定是类似的,都是对水平边缘或垂直边缘有比较好的检测效果。

(6)Soble边缘检测:
Soble与上述卷积核不同之处在于,Soble更强调了和边缘相邻的像素点对边缘的影响。
水平梯度:
这里写图片描述

这里写图片描述

垂直梯度:

这里写图片描述

这里写图片描述

以上的水平边缘与垂直边缘检测问题可以参考:Soble算子水平和垂直方向导数问题

(7)梯度Laplacian:

卷积核:
这里写图片描述

这里写图片描述

Laplacian也是一种锐化方法,同时也可以做边缘检测,而且边缘检测的应用中并不局限于水平方向或垂直方向,这是Laplacian与soble的区别。下面这张图可以很好的表征出二者的区别:来源于OpenCV官方文档
这里写图片描述

这里写图片描述

代码实现

可以利用OpenCV提供的filter2D函数完成对图像进行卷积操作,其函数接口为:

CV_EXPORTS_W void filter2D(
InputArray src, 
OutputArray dst, 
int ddepth,
InputArray kernel, 
Point anchor=Point(-1,-1),
double delta=0, 
int borderType=BORDER_DEFAULT );

第一个参数: 输入图像
第二个参数: 输出图像,和输入图像具有相同的尺寸和通道数量
第三个参数: 目标图像深度,输入值为-1时,目标图像和原图像深度保持一致。
第四个参数: 卷积核,是一个矩阵
第五个参数:内核的基准点(anchor),其默认值为(-1,-1)说明位于kernel的中心位置。基准点即kernel中与进行处理的像素点重合的点。
第五个参数: 在储存目标图像前可选的添加到像素的值,默认值为0
第六个参数: 像素向外逼近的方法,默认值是BORDER_DEFAULT。

#include <iostream>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace  cv;int main()
{Mat srcImage = imread("1.jpg");namedWindow("srcImage", WINDOW_AUTOSIZE);imshow("原图", srcImage);Mat kernel = (Mat_<double>(3,3) << -1, 0 ,1,-2, 0, 2,-1, 0, 1);Mat dstImage;filter2D(srcImage,dstImage,srcImage.depth(),kernel);namedWindow("dstImage",WINDOW_AUTOSIZE);imshow("卷积图",dstImage);waitKey(0);return 0;
}

所以代码的实现就非常简单了,不同的卷积操作只需要改变卷积核kernel 即可。

更多细节见
理解图像卷积操作的意义

TensorFlow基本操作 实现卷积和池化


A Beginner’s Guide To Understanding Convolutional Neural Networks


卷积的可视化图


A guide to convolution arithmetic for deep learning

A guide to convolution arithmetic for deep learning-github


原来,动物的眼睛看世界都是自带滤镜的!
看问题的角度不一样,导致图像识别的任务就不一样。


Why CNN for Image-motivation


CNN的动机就是减少参数。CNN相当于Fully Connected Network简化版本. CNN的Function set 的Space 比较小,而Fully Connected Network的Function set 的Space 比较大。

这里写图片描述

pattern 往往小于图片,因此neuron没有必要discover整副图片

这里写图片描述

同样的pattern可能出现到图片中不同的位置

这里写图片描述

下采样不会影响图片辨识的结果

这里写图片描述
这里写图片描述

Convolution考虑Property1 和Property2,Pooling考虑的是Property3.

convolution卷积 也称为核,滤波器,Feature Detection.

这里写图片描述

这里写图片描述

卷积层两个主要优势:共享参数和稀疏连接。

共享参数

这里写图片描述

稀疏连接

这里写图片描述

卷积神经网络有一定的平移不变性属性

例如平移图像中的猫,依然可以检测到平移后的猫,这是因为局部连接,猫的特征在同一副图的任何位置都可被检测出来,只要这个滤波器检测到猫的特征,那么不论猫在图像中的任何位置都是可以被检测出来的。

CNN具有一定的平移、旋转和缩放不变性

CNN 的平移不变性的一个重要来源就是池化(Pooling)操作。
池化可以提供一定的平移、旋转不变性。maxpool能保证在在一定范围内平移特征能得到同样的激励,也就是说最大池化操作会提取出相同的值而不管你是否有一定程度内的平移或旋转。CNN具有一定的旋转缩放不变性,见How is a convolutional neural network able to learn invariant features?但是这个旋转不变性是有一定的角度控制的,当然起作用的是maxpooling 层,当我们正面拍一些照片的时候,也许我们学习得到的一些地方的activation会比较大,当我们略微的转过一点角度之后,由于maxpooling的存在,会使得我们的maxpooling依然在那个地方取到最大值,所以有一定的旋转不变性。但是,对于角度很大的来说,maxpooling可能也会失效,所以需要一定的data augmentation,或者你也可以提高maxpooling的窗口,来提高一定的旋转不变性。。所以说maxpooling的窗口越大可以旋转保持抽取特征不变性的角度就越大。现在很多人解决这种问题的方法都是用data augmentation。

data augmentation:人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批”新”的数据

权值共享还赋予了卷积网络对平移的容忍性,而池化层降采样则进一步降低了输出参数量,同时赋予模型对轻度变形的容忍性,提高了模型的泛化能力。

为何使用卷积?

这里写图片描述

pool层的组合方式

这里写图片描述

这里写图片描述

各种好基本网络结构组合的方式

这里写图片描述

http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2017/Lecture/Basic%20Structure%20(v8).pdf

权值共享这个词说全了就是整张图片在使用同一个卷积核内的参数,比如一个3*3*1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。说的再直白一些,就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片。

!LeNet首次把卷积的思想加入到神经网络模型中,这是一项开创性的工作,而在此之前,神经网络输入的都是提取到的特征而已,就比如想要做一个房价预测,我们选取了房屋面积,卧室个数等等数据作为特征。而将卷积核引入到了神经网络去处理图片后,自然而然就会出现一个问题,神经网络的输入是什么?如果还是一个个像素点上的像素值的话,那就意味着每一个像素值都会对应一个权系数,这样就带来了两个问题:
1.每一层都会有大量的参数
2.将像素值作为输入特征本质上和传统的神经网络没有区别,并没有利用到图像空间上的局部相关性。

而权值共享的卷积操作有效解决了这个问题,无论图像的尺寸是多大,都可以选择固定尺寸的卷积核,LeNet中最大的卷积核只有5*5*1,而在AlexNet中最大的卷积核也不过是11*11*3。而卷积操作保证了每一个像素都有一个权系数,只是这些系数是被整个图片共享的,着大大减少了卷积核中的参数量。此外卷积操作利用了图片空间上的局部相关性,这也就是CNN与传统神经网络或机器学习的一个最大的不同点,特征的自动提取。

这也就是为什么卷积层往往会有多个卷积核(甚至几十个,上百个),因为权值共享后意味着每一个卷积核只能提取到一种特征,为了增加CNN的表达能力,当然需要多个核,不幸的是,它是一个Hyper-Parameter。
更多细节见
如何理解卷积神经网络中的权值共享

卷积层在CNN中扮演着很重要的角色——特征的抽象和提取

在CNN中,卷积核的尺寸是人为指定的,但是卷积核内的数全部都是需要不断学习得到的。比如一个卷积核的尺寸为3*3*3,分别是宽,高和厚度,那么这一个卷积核中的参数有27个。

在这里需要说明一点:
卷积核的厚度=被卷积的图像的通道数
卷积核的个数=卷积操作后输出的通道数

池化操作(Pooling)用于卷积操作之后,其作用在于特征融合和降维,其实也是一种类似卷积的操作,只是池化层的所有参数都是超参数,都是不用学习得到的。
这里写图片描述

上面这张图解释了最大池化(Max Pooling)的操作过程,核的尺寸为2*2,步长为2,最大池化的过程是将2*2尺寸内的所有像素值取最大值,作为输出通道的像素值。
除了最大池化外,还有平均池化(Average Pooling),也就是将取最大改为取平均。
一个输入为224*224*64的图像,经过最大池化后的尺寸变为112*112*64,可以看到池化操作的降维改变的是图像的宽高,而不改变通道数。


设计CNN


这里写图片描述

3X3意味着用3X3可以catch 到这个pattern---Property 1

Pattern Size <= 3X3

这里写图片描述

3X3 filter的设计使得pattern响应最大的设计为好。—-Property 2

同样的pattern,filter都会使得其响应最大,所以在不同位置pattern 都可以使用同样的filter.

这里写图片描述

这里写图片描述

最大池化,平均池化,随机池化。可以同时做最大池化和平均池化。

1) mean-pooling,即对邻域内特征点只求平均,对背景保留更好;
2) max-pooling,即对邻域内特征点取最大,对纹理提取更好;
3) Stochastic-pooling,介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样;

4) 重叠池化(Overlapping Pooling)
重叠池化的相邻池化窗口之间会有重叠区域。该部分详见 Krizhevsky, I. Sutskever, andG. Hinton, “Imagenet classification with deep convolutional neural networks”

5) 空间金字塔池化(Spatial Pyramid Pooling)
空间金字塔池化拓展了卷积神经网络的实用性,使它能够以任意尺寸的图片作为输入。该部分详见Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,这篇paper主要的创新点在于提出了空间金字塔池化。paper主页:http://research.microsoft.com/en-us/um/people/kahe/eccv14sppnet/index.html 这个算法比R-CNN算法的速度快了n多倍。
理解见# 深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测

image.png

6) ROIs Pooling
ROI pooling layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采样到一个7x7的特征图.对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个7*7*512维度的特征向量作为全连接层的输入.

pooling是一种信息汇集,信息粗粒度化

SUM Pooling, AVE Pooling, MAX Pooling,MOP Pooling, CROW Pooling , RMAC Pooling

SUM pooling基于SUM pooling的中层特征表示方法,指的是针对中间层的任意一个channel(比如VGGNet16, pool5有512个channel),将该channel的feature map的所有像素值求和,这样每一个channel得到一个实数值,N个channel最终会得到一个长度为N的向量,该向量即为SUM pooling的结果。

作者:小白菜
链接:https://www.zhihu.com/question/41948919/answer/196459630


Max pooling的主要功能是downsamping,却不会损坏识别结果。 这意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息。
这里写图片描述

最大化操作的功能是只要在任何一个象限内提取到某个特征,它都会保留在最大池化的输出里。池化层并没有参数学习,梯度下降无需改变任何值。

这里写图片描述

池化层


这里写图片描述

这里写图片描述

这里写图片描述

filter为何随着层数加深而越来越多,这是因为前面的层是catch 比较小的patter,后面的层是catch 比较丰富的pattern,所以需要的参数比较多,因而需要更多的filter.

这里写图片描述

有些问题不适合使用Pooling,要根据具体问题来设计CNN结构。

pooling是一种信息汇集,信息粗粒度化。Pooling实际上也可以当做一种尺度缩放,conv后面不一定要有pooling。

conv后面不一定要有pooling.像VGG结构,都会在很多个conv之后才加一个pooling. ResNet, 152层里面总共就三四个pooling. Pooling只是用来减小feature map的大小,可能其实并不是那么必要。在论文Striving for Simplicity: The All Convolutional Net研究表明用stride大于1的conv来代替pooling效果是一样的。


Convolution v.s. Fully Connected


这里写图片描述

卷积后的图像比原图小

原图中的每个patch,在卷积后的图像中都有多个位置对应。(多个filter卷积后的图),上图中每个3X3的patch,都有两个位置对应,因为使用了两个filter.

这里写图片描述

彩图中的原图中有三个通道,那么对应的每个filter也应该有三个通道,这些filter都是通过学习得到的。


该部分内容转自:YJango的卷积神经网络——介绍
Depth维的处理

现在我们已经知道了depth维度只有1的灰度图是如何处理的。 但前文提过,图片的普遍表达方式是下图这样有3个channels的RGB颜色模型。 当depth为复数的时候,每个feature detector是如何卷积的?

这里写图片描述

**现象:**2x2所表达的filter size中,一个2表示width维上的局部连接数,另一个2表示height维上的局部连接数,并却没有depth维上的局部连接数,是因为depth维上并非局部,而是全部连接的。

在2D卷积中,filter在张量的width维, height维上是局部连接,在depth维上是贯串全部channels的。

类比:想象在切蛋糕的时候,不管这个蛋糕有多少层,通常大家都会一刀切到底,但是在长和宽这两个维上是局部切割。

下面这张图展示了,在depth为复数时,filter是如何连接输入节点到输出节点的。 图中红、绿、蓝颜色的节点表示3个channels。 黄色节点表示一个feature detector卷积后得到的Feature Map。 其中被透明黑框圈中的12个节点会被连接到黄黑色的节点上。

    在输入depth为1时:被filter size2x2所圈中的4个输入节点连接到1个输出节点上。在输入depth为3时:被filter size2x2,但是贯串3个channels后,所圈中的12个输入节点连接到1个输出节点上。在输入depth为n时:2x2xn个输入节点连接到1个输出节点上。

这里写图片描述

这里写图片描述

这里写图片描述

注意:三个channels的权重并不共享。 即当深度变为3后,权重也跟着扩增到了三组,如式子(3)所示,不同channels用的是自己的权重。 式子中增加的角标r,g,b分别表示red channel, green channel, blue channel的权重。

这里写图片描述 (3)

计算例子:用x_{r0}表示red channel的编号为0的输入节点,x_{g5}表示green channel编号为5个输入节点。x_{b1}表示blue channel。如式子(4)所表达,这时的一个输出节点实际上是12个输入节点的线性组合。

这里写图片描述

这里写图片描述

每个filter会在width维, height维上,以局部连接和空间共享,并贯串整个depth维的方式得到一个Feature Map

这里写图片描述

这里写图片描述

更多细节理解见
3D卷积

Summary of notation
这里写图片描述

这里写图片描述


这里写图片描述

这里写图片描述

这里写图片描述

Convolution中每个neuron仅仅连接了9个input,而不是连接所有的input.


CNN in Keras


这里写图片描述

这里写图片描述

filter为何随着层数加深而越来越多,这是因为前面的层是catch 比较小的patter,后面的层是catch 比较丰富的pattern,所以需要的参数比较多,因而需要更多的filter.

这里写图片描述

这里写图片描述

有些问题不适合使用Pooling,要根据具体问题来设计CNN结构。


这里写图片描述

这里写图片描述

(5x5+1)x8=208
(5x5+1)x16=416
400x120+1=48001
120x84+1=10081

卷积核的厚度=被卷积的图像的通道数
卷积核的个数=卷积操作后输出的通道数

池化层不需要训练参数。全连接层的参数最多。卷积核的个数逐渐增多。激活层的size,逐渐减少。

卷积神经网络示例


分析CNN的结果


1. First Convolution Layer

这里写图片描述

查看第一个layer,这是因为第一个layer通常是比较简单的可理解的layer. 而第二个layer或者后面的layer,往往不可理解,说白了就是生成了我们无法理解的东西。

2. How about higher layer?

这里写图片描述

Higher layers,通常是其他层layer的输出结果,所以管辖的范围比较大,所以查看higher layer会看到比较大的范围(前面filter的结果组合)。不同的filter对应不同的pattern.

3. What does CNN learn?

这里写图片描述

这里写图片描述

找到一张图片使得某个filter响应最大。相当于filter固定,未知的是输入的图片。

这里写图片描述

对Fully connected Network做同样的分析。

这里写图片描述

这里写图片描述

同样可以对要求的未知图像做一些限制,比如加regulation项。

遮挡某个部位,来判别该部位对模型的影响。

这里写图片描述

这里写图片描述


Deep Dream

这里写图片描述

强化CNN所看到的东西。使得每个filter得到的结果夸张化,大的更大,小的更小。

这里写图片描述

这里写图片描述

画风迁移

这里写图片描述

这里写图片描述

CNN的一些filter结果代表内容,一些filter结果代表风格。在找另外一张图片,使得一些filter结果更像内容,另外一些filter结果更像风格。

https://deepart.io/


DeepDream的代码实现
Understanding Deep Dreams
Inceptionism: Going Deeper into Neural Networks
Autoencoding beyond pixels using a learned similarity metric

更多解读见
瞎谈CNN:通过优化求解输入图像


Alphago


这里写图片描述

这里写图片描述

这里写图片描述


参考文献


Home: http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

YJango的卷积神经网络——介绍

问题

1. Pooling 同时max, average?
2. 查看Fully Connected Network 中第一层layer,看看具体是代表的什么?
3. 多个不同核,是否可以借助手动设置呢?
4. P24里面的 50X11X11 如何得出的呢?解释见YJango的卷积神经网络——介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab自带的插值函数interp1的四种插值方法

x0:2*pi; ysin(x); xx0:0.5:2*pi;%interp1对sin函数进行分段线性插值&#xff0c;调用interp1的时候&#xff0c;默认的是分段线性插值 y1interp1(x,y,xx); figure plot(x,y,o,xx,y1,r) title(分段线性插值)%临近插值 y2interp1(x,y,xx,nearest); figure plot(x,y,o,xx,y2,r); …

拉格朗日插值法(Lagrange)

拉格朗日插值法是基于基函数的插值方法&#xff0c;插值多项式可以表示为&#xff1a; 其中称为 i 次基函数 Matlab中拉格朗日插值法函数为:Language 功能&#xff1a;求已知点数据点的拉格朗日多项式 调用格式&#xff1a;fLagrange(x,y) 或者 f ’Lagrange(x,y,x0) 其中&a…

当你在应用机器学习时你应该想什么

如今, 机器学习变得十分诱人, 它已在网页搜索, 商品推荐, 垃圾邮件检测, 语音识别, 图像识别, 自然语言处理等诸多领域发挥重要作用. 和以往我们显式地通过编程告诉计算机如何进行计算不同, 机器学习是一种数据驱动方法(data-driven approach). 然而, 有时候机器学习像是一种”…

利用均差的牛顿插值法(Newton)

函数f的零阶均差定义为 &#xff0c;一阶定义均差为&#xff1a; 一般地&#xff0c;函数f 的k阶均差定义为&#xff1a; 或者上面这个式子求的k1阶均差 利用均差的牛顿插值法多项式为&#xff1a; 简单计算的时候可以观看下面的差商&#xff08;均差&#xff09;表&#xff1a…

深度学习(Deep Learning)读书思考三:正则化

概述 正则化是机器学习中非常重要并且非常有效的减少泛华误差的技术&#xff0c;特别是在深度学习模型中&#xff0c;由于其模型参数非常多非常容易产生过拟合。因此研究者也提出很多有效的技术防止过拟合&#xff0c;比较常用的技术包括&#xff1a; 参数添加约束&#xff0c;…

利用差分的牛顿插值法(Newton)

差分牛顿插值法要求是等距的。 先来看三个概念 差分与均差的关系如下&#xff1a; 牛顿(Newton)插值的基本公式为&#xff1a; 由于差分插值是等距的&#xff0c;所以可以设xx0nh 对于上式 再由差分和均差的关系&#xff0c;可以将上面的黄色部分也就是牛顿插值基本公式转换…

埃尔米特(Hermite)插值

Hermite插值满足在节点上等于给定函数值&#xff0c;而且在节点上的导数值也等于给定的导数值。对于高阶导数的情况&#xff0c;Hermite插值多项式比较复杂&#xff0c;在实际情况中&#xff0c;常常遇到的是函数值与一阶导数给定的情况。在此情况下&#xff0c;n个节点x1,x2,……

keras创建模型

关于Keras模型 Keras有两种类型的模型&#xff0c;序贯模型&#xff08;Sequential&#xff09;和函数式模型&#xff08;Model&#xff09;&#xff0c;函数式模型应用更为广泛&#xff0c;序贯模型是函数式模型的一种特殊情况。 Sequential models&#xff1a;这种方法用于实…

多项式曲线拟合最小二乘法

对给定的试验数据点(xi,yi)(i1,2,……,n),可以构造m次多项式 数据拟合的最简单的做法就是使误差p(xi)-yi的平方和最小 当前任务就是求一个P(x)使得 从几何意义上讲就是寻求给与定点(xi,yi)距离的平方和最小的曲线yp(x)&#xff0c;函数p(x)称为拟合函数或者是最小二乘解&#x…

运动合成——机器学习技术

参考文献&#xff1a;《人体运动合成中的机器学习技术合成综述》 根据机器学习的用途分类&#xff0c;在图形学中使用到的大致如下&#xff1a; 1> 回归和函数逼近。回归是一种插值技术&#xff0c;分析已知数据点来合成新的数据。 2> 降维。从高维数的运动数据…

ICA独立成分分析—FastICA基于负熵最大

1. 概念 官方解释&#xff1a;利用统计原理进行计算的方法&#xff0c;是一种线性变换。 ICA分为基于信息论准则的迭代算法和基于统计学的代数方法两大类&#xff0c;如FastICA算法&#xff0c;Infomax算法&#xff0c;最大似然估计算法等。 这里主要讨论FastICA算法。 先来…

tensorboard的可视化及模型可视化

待整理 How to Check-Point Deep Learning Models in Keras LossWise Tensorboard 中文社区 谷歌发布TensorBoard API&#xff0c;让你自定义机器学习中的可视化 查找tensorflow安装的位置 pip show tensorflow-gpu Name: tensorflow-gpu Version: 1.0.1 Summary: TensorFl…

隐马尔科夫模型——简介

1. 前言 学习了概率有向图模型和概率无向图模型&#xff0c;回头再看了一下隐马尔可夫模型(hidden Markov model&#xff0c;HMM)。 HMM属于树状有向概率图模型&#xff0c;主要用于对时序数据的建模&#xff0c;它的潜在变量是离散的&#xff1b;而另一种状态空间模型&…

训练的神经网络不工作?一文带你跨过这37个坑

近日&#xff0c;Slav Ivanov 在 Medium 上发表了一篇题为《37 Reasons why your Neural Network is not working》的文章&#xff0c;从四个方面&#xff08;数据集、数据归一化&#xff0f;增强、实现、训练&#xff09;&#xff0c;对自己长久以来的神经网络调试经验做了 37…

HMM——前向算法与后向算法

1. 前言 前向算法和后向算法主要还是针对HMM三大问题之一的评估问题的计算&#xff0c;即给定模型参数&#xff0c;计算观察序列的概率。文章不介绍过多公式&#xff0c;主要看两个例子 复习一下HMM的三大要素&#xff08;以海藻&#xff08;可观测&#xff09;和天气&#x…

HMM——维特比算法(Viterbi algorithm)

1. 前言 维特比算法针对HMM第三个问题&#xff0c;即解码或者预测问题&#xff0c;寻找最可能的隐藏状态序列&#xff1a; 对于一个特殊的隐马尔可夫模型(HMM)及一个相应的观察序列&#xff0c;找到生成此序列最可能的隐藏状态序列。 也就是说给定了HMM的模型参数和一个观测…

HMM——前向后向算法

1. 前言 解决HMM的第二个问题&#xff1a;学习问题&#xff0c; 已知观测序列&#xff0c;需要估计模型参数&#xff0c;使得在该模型下观测序列 P(观测序列 | 模型参数)最大&#xff0c;用的是极大似然估计方法估计参数。 根据已知观测序列和对应的状态序列&#xff0c;或者说…

Web安全(吴翰清)

安全工程师的核心竞争力不在于他能拥有多少个 0day&#xff0c;掌握多少种安全技术&#xff0c;而是在于他对安全理解的深度&#xff0c;以及由此引申的看待安全问题的角度和高度。 第一篇 我的安全世界观 脚本小子 “Script Kids”。 黑客精神所代表的 Open、Free、Share。…

机器学习两种方法——监督学习和无监督学习(通俗理解)

前言 机器学习分为&#xff1a;监督学习&#xff0c;无监督学习&#xff0c;半监督学习&#xff08;也可以用hinton所说的强化学习&#xff09;等。 在这里&#xff0c;主要理解一下监督学习和无监督学习。 监督学习&#xff08;supervised learning&#xff09; 从给定的训…

Tensorflow中padding的两种类型SAME和VALID

边界补充问题 原始图片尺寸为7*7&#xff0c;卷积核的大小为3*3&#xff0c;当卷积核沿着图片滑动后只能滑动出一个5*5的图片出来&#xff0c;这就造成了卷积后的图片和卷积前的图片尺寸不一致&#xff0c;这显然不是我们想要的结果&#xff0c;所以为了避免这种情况&#xff…