上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 在这一节里,我们将总结PCA,ZCA白化算法,并描述如何使用高效的线性代数库来实现它们。首先,我们需要确保数据的均值(近似)为零。对于自然图像,我们通过减去每个图像块(patch)的均值(近似地)来达到这一目标。为此,我们计算每个图像块的均值,并从每个图像块中减去它的均值。Matlab实现如下:avg = mean(x, 1); % 分别为每个图像块计算像素强度的均值。 x = x - repmat(avg, size(x, 1), 1);下面,我们要计算,如果你在Matlab中实现(或者在C++, Java等中实现,但可以使用高效的线性代数库),直接求和效率很低。不过,我们可以这样一... 阅读全文
posted @ 2014-02-21 14:45 Providence 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 介绍我们已经了解了如何使用PCA降低数据维度。在一些算法中还需要一个与之相关的预处理步骤,这个预处理过程称为白化。举例来说,假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性;更正式的说,我们希望通过白化过程使得学习算法的输入具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差。2D的例子下面我们先用前文的2D例子描述白化的主要思想,然后分别介绍如何将白化与平滑和PCA相结合。如何消除特征之间的相关性?在前文计算时实际上已经消除了输入特征之间的相关性。得到的新特征的分布如下图所示:这个数据的协方差矩阵如下:( 阅读全文
posted @ 2014-02-21 11:44 Providence 阅读(13715) 评论(0) 推荐(0) 编辑
摘要: 主成分分析(PCA)是一种能够极大提升无监督特征学习速度的数据降维算法。更重要的是,理解PCA算法,对实现白化算法有很大帮助,很多算法都先用白化算法作预处理步骤。假设你使用图像来训练算法,因为图像中相邻的像素高度相关,输入数据是有一定冗余的。具体来说,假如我们正在训练的16×16灰度值图像,记为一个256维向量,其中特征值对应每个像素的亮度值。由于相邻像素间的相关性,PCA算法可以将输入向量转换为一个维数低很多的近似向量,而且误差非常小。在我们的实例中,使用的输入数据集表示为,维度即。假设我们想把数据从2维降到1维。(实际应用中,我们也许需要把数据从156维降到50维;在这里使用低维 阅读全文
posted @ 2014-02-21 08:38 Providence 阅读(1915) 评论(0) 推荐(0) 编辑
摘要: matlab中函数imresize简介:函数功能:该函数用于对图像做缩放处理。调用格式:B = imresize(A, m)返回的图像B的长宽是图像A的长宽的m倍,即缩放图像。 m大于1, 则放大图像; m小于1, 缩小图像。B = imresize(A, [numrows numcols])numrows和numcols分别指定目标图像的高度和宽度。 显而易见,由于这种格式允许图像缩放后长宽比例和源图像长宽比例相同,因此所产生的图像有可能发生畸变。[...] = imresize(..., method)method参数用于指定在改变图像尺寸时所使用的算法,可以为以下几种:'near 阅读全文
posted @ 2014-02-20 20:37 Providence 阅读(10518) 评论(0) 推荐(0) 编辑
摘要: 函数简介函数功能:实现图像矩阵的归一化操作。所谓"归一化"就是使矩阵的每个元素的值都在0和1之间。该函数在数字图像处理中经常用到。调用格式:I = mat2gray(A, [amin amax])将图像矩阵A中介于amin和amax的数据归一化处理,其余小于amin的元素都变为0,大于amax的元素都变为1。I = mat2gray(A)将图像矩阵A归一化为图像矩阵I,归一化后矩阵中每个元素的值都在0到1范围内(包括0和1)。其中0表示黑色,1表示白色。程序示例:在命令窗口中输入:>> test = [1 2 3; 4 5 6]test =1 2 34 5 6& 阅读全文
posted @ 2014-02-20 20:18 Providence 阅读(5185) 评论(0) 推荐(0) 编辑
摘要: ndims是matlab中求一个数组维数的函数。调用格式:n=ndims(A)将A的维数返回给变量n。n>=2n=ndims(A)与n=length(size(A))是等价的MATLAB函数flipdim简介用法:Flipdim(X,dim),其中X表示一个矩阵,dim指定翻转方式。功能:Flipdim函数是matlab中使矩阵按特定轴翻转的函数。Flipdim(X,dim)中,X表示一个矩阵,dim指定翻转方式。dim为1,表示按行翻转,2表示按列翻转。[1] 因此有如下结论:flipdim(A,1)和flipud(A)是等价的,flipdim(A,2)和fliplr(A)是等价的。需 阅读全文
posted @ 2014-02-20 14:32 Providence 阅读(2238) 评论(0) 推荐(0) 编辑
摘要: 函数原型: B=im2col(A,[m n],block_type)功能:将矩阵A分为m×n的子矩阵,再将每个子矩阵作为B的一列(1)当block_type为distinct时,将A分解为互不重叠的子矩阵,并转换成列。若不足m×n,以0补足。例: A=15 36 4240 67 88 32 5059 74 27 81 44 59 53 1526 39 20 76 83 15 9 54 68 82 38 77 20 11 8575 70 43 22 17 41 14 5624 44 89 79 86 75 68 9344 2 39 95 99 83 50 7069 33 77 阅读全文
posted @ 2014-02-20 11:07 Providence 阅读(4247) 评论(0) 推荐(0) 编辑
摘要: B = prod(A)将A矩阵不同维的元素的乘积返回到矩阵B。如果A是向量,prod(A)返回A向量的乘积。如果A是矩阵,prod(A)返回A每一列元素的乘积并组成一个行向量B。B = prod(A,dim)沿着指定的dim标量的维计算A矩阵的乘积。注:dim=2表示沿行计算行的乘积,结果组成一个列向量。dim=1表示沿列计算列的乘积,结果组成一个行向量。A = 1 2 3 4 5 6 7 8prod(A)ans =5 12 21 32prod(A,2)ans = 24 1680prod(A,1)ans =5 12 21 32 阅读全文
posted @ 2014-02-19 11:58 Providence 阅读(2514) 评论(0) 推荐(0) 编辑
摘要: 如果给定一个神经网络,我们假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像PCA那样,找到可以代表原信息的主要成分。具体过程简单的说明如下:1)给定无标签数据,用非监督学习学习特征:在我们之前的神经网络中,如第一个图,我们输入的样本是有标签的,即(input, target),这样我们根据当前输出和target(label)之间的差去改变前面各层的参数,直到收敛。但现在我们只 阅读全文
posted @ 2014-02-19 09:32 Providence 阅读(9961) 评论(1) 推荐(1) 编辑
摘要: 目前为止,我们已经讨论了神经网络在有监督学习中的应用。在有监督学习中,训练样本时有类别标签的。现在假设我们只有一个没带类别标签的训练样本集合,其中。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如。下图是一个自编码神经网络的示例。自编码神经网络尝试学习一个的函数。换句话说,它尝试逼近一个恒等函数,从而使得接近于输入。恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。举例来说,假设某个自编码神经网络的输入是一张图像(共100个像素)的像素灰度值,于是,其隐藏层中有50 阅读全文
posted @ 2014-02-18 21:35 Providence 阅读(2323) 评论(0) 推荐(1) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页