之前有一个微信公众号,但里面写技术文章太不方便,国内的很多博客对数学公式支持也不咋的,所以就萌生了自己建一个的想法。对于不懂Python,不懂HTML的小白,如何才能快速建站。
快速开始
上海电信弄了个精品网,然后国外网站的打开速度就慢了不是一点点,github的很多代码都下载不下来。对于数据科学工作者,这里提供一个各种软件和代码的集成包,可以让你快速开始Blog之路。
(未完待续)
之前有一个微信公众号,但里面写技术文章太不方便,国内的很多博客对数学公式支持也不咋的,所以就萌生了自己建一个的想法。对于不懂Python,不懂HTML的小白,如何才能快速建站。
上海电信弄了个精品网,然后国外网站的打开速度就慢了不是一点点,github的很多代码都下载不下来。对于数据科学工作者,这里提供一个各种软件和代码的集成包,可以让你快速开始Blog之路。
(未完待续)
我们知道很多算法内部都是一些基本运算的组合,比如向量加减法,矩阵加减,矩阵-向量乘积,矩阵乘法,hadamard积,kronecker张量积,元素索引等。而QTT对于这些运算都可以很简单的实现并行。
首先我们来看一下,什么是QTT表示。给定一个多维数组A,其可以是向量,矩阵,或者更高维的数组,这都不是问题。 设A的维数为\(l\),如果它有如下的表示,则我们称其为多维数组A的QTT分解。
那读者肯定得问这里的\(U_k\)和\(\bowtie\)是什么鬼,先不急,假设你已经懂了,就把它看成是一种编码。按这个编码我们来看看常见的运算是怎么实现的。
1.加法
QTT(Quantics Tensor Train)分解是一种适用于任意分层张量(包含多维数组)的张量分解方法, 通过对数组的反复折叠该分解可以达到降维和特征提取的作用。QTT已被证明是一种基于流形学习的降维工具和多尺度的特征提取工具。
定义:给定一个分层张量(包含向量、矩阵等多维数组)A,如果其有如下表示,
其中后面d-1个QTT核满足右正交条件, 则称之为A的QTT分解。
这是一个用MATLAB语言写的QTT-Toolbox,免费提供大家使用,使用后请注明引用,谢谢。工具箱将分层张量新定义成了一个类,分层张量之间的大部分运算都已实现。通过这个模块化编程,我们能更加简单的扩展编程。如果读者发现函数有bug或者实现算法能加速,请邮件告之作者,谢谢。
=============================================
JSong,20-Jul-2015
Last Revision: 11-Aug-2015.
Github:http://github.com/gasongjian/QTT/
citition ...
之前看过一句话,未来领域类专家需求将越来越少,而相应的数据挖掘专家需求将不断增加,这时因为深度学习的核心在于其自适应的特征提取。PCANet是一个基于CNN的简化Deep Learning模型。之所以读它是因为它是基于PCA(SVD)的,其卷积核从图像信号的某种SVD分解得到的,而这也是张量列分解的核心之一。与CNN相比,该网络卷积核是直接通过PCA计算得到的,而不是像CNN一样通过反馈迭代得到的。
从上图可以看到,PCANet的训练分为三个步骤(stage),前两个stage很相似,都是去平均,然后PCA取主成分并卷积,最后一步是二值化和直方图量化。下面按步骤介绍PCANet的训练过程:
一、特征提取
1、First stage:
1)、选取一个\(k_1 \times k_2\)的窗口(通常为\(3 \times 3\)、\(5\times 5\)、\(7\times 7\))来滑动选取图片的局部特征。每张\(m\times n\)大小的图片\(I_i\) ...