MKL学习——线性代数概念相关

前言

回顾一下BLAS Level 1 2 3中的运算都有什么类型

  • BLAS Level 1

    在BLAS Level 1中,进行的是向量-向量的操作。其中相关概念有

    • 向量类型: 实数域,复数域,共轭
    • 运算操作: 元素求和,向量相加,向量拷贝,点乘,二范数(欧几里得范数),向量绕点旋转,Givens旋转,改进Givens旋转,计算Givens旋转参数,标量与向量的乘积,向量交换,查找最大最小值,复数域向量的绝对值
  • BLAS Level 2

    在BLAS Level 2中,进行的是矩阵-向量的操作。其中相关概念有

    • 矩阵类型: 一般带状矩阵,一般矩阵,Hermitian带状矩阵,Hermitian矩阵,Hermitian压缩矩阵,对称带状矩阵,对称压缩矩阵,对称矩阵,三角带状矩阵,三角压缩矩阵,三角矩阵
    • 运算操作: 矩阵-向量乘积,一阶更新,二阶更新,解线性方程组
  • BLAS Level 3

    在BLAS Level 3中,进行的是矩阵-矩阵的操作。其中相关概念有

    • 矩阵类型:一般矩阵,Hermitian矩阵,对称矩阵,三角矩阵
    • 运算操作: 矩阵乘法,k阶更新,2k阶更新, 解方程

向量矩阵类型学习

向量

  • 实数域

    x=[1 , 2 , 3.1 , 4]

    元素为实数的就叫实数域上的向量

  • 复数域

    x=[i,2i,3i,4i]x=[4i , 32i , 23i , 14i]

    元素为复数的就叫复数域上的向量,第一个向量的实部为0,第二个向量的实部非0

  • 共轭向量

    当两个复数的实部相等,虚部互为相反数时,这两个复数叫做互为共轭复数,实数的共轭复数就是本身

矩阵

  • 一般矩阵

    A=a11a21a31a12a22a32a13a23a33

  • 带状矩阵

    如果矩阵A=aij是一个nn的矩阵,假设在对角边界带状区域之外的所有元素都是0,其中边界范围由常数k1k2决定,那么就有

    j<(ik1)j>(i+k2)aij=0

    这里面的k1称为下带宽(lower bandwidth),k2称为上带宽(upper bandwidth)
    A=a1100a12a2200a23a33

  • 三角带状矩阵

    当带状矩阵的k1=k2=1的时候,就是三角带状矩阵了

    A=B11B2100B12B22B320B23B33B43B34B44B540B45B55B6500B56B66

  • Hermitian矩阵

    Hermitian矩阵(也称为self-adjoint矩阵),是一个复数方阵,与它自己的共轭转置是相等的;也就是说第i行第j列的元素等于它的共轭转置矩阵的第j行第i列,对于所有的索引i,j都有

    aij=aji¯¯¯¯A=AH¯¯¯¯¯

    一个实例就是
    A=22i42+i3i4i1

  • 三角矩阵

    A=a11a21a31an1a22a32an2an,n10an,n

    称为下三角矩阵(lower triangular matrix)或者左三角矩阵(left triangular matrix)。同理还有上三角矩阵就不说了。

  • 对称矩阵

    对称矩阵就是一个转置等于它自身的一个方阵

    A=AT

    例如
    A=173745356

  • 压缩存储

    Cblas中提供了很多压缩存储,但是目前还没分析透彻,有兴趣可以看看英文文档,其中提供了各种转换压缩存储的主程序。主要包含的压缩存储有:

    • 带状压缩存储
    • 按列存储时候Hermitian矩阵的上三角带状存储;按行存储时候Hermitian矩阵的下三角带状存储
    • 对称矩阵的上三角压缩存储;对称矩阵的下三角压缩存储
    • 按列存储时候上三角带状矩阵或者下三角带状矩阵的压缩存储;按行存储的时候上三角带状矩阵或者下三角带状矩阵的压缩存储

向量矩阵操作学习

向量-向量

  • Givens旋转

    直接从维基百科上搬过来:

    == 矩阵表示 ==
    吉文斯旋转表示为如下形式的[[矩阵]]

    G(i,j,θ)=10000cs00sc00001

    这里的 c= cos(θ) 和 s = sin(θ) 出现在第 ”i” 行和第 ”j” 行与第 ”i” 列和第 ”j” 列的交叉点上。就是说,吉文斯旋转矩阵的所有非零元定义如下:
    gkkgiigjjgijgji=1forki,j=c=c=s=s

    乘积 G(i,j,θ)x 表示向量 x(i,j)平面中的逆时针旋转 θ 弧度。

    Givens 旋转在数值线性代数中主要的用途是在向量或矩阵中介入零。例如,这种效果可用于计算矩阵的 QR分解。超过Householder变换的一个好处是它们可以轻易的并行化,另一个好处是对于非常稀疏的矩阵计算量更小。

    == 稳定计算 ==
    当一个吉文斯旋转矩阵 G(i,j,θ)从左侧乘另一个矩阵 A的时候,GA 只作用于A的第 ij 行。所以我们集中于下列问题。给出 ab,找到 c=cos(θ)s=sin(θ) 使得

    [cssc][ab]=[r0]

    明确计算出 θ 是没有必要的。我们转而直接获取 ”c”, ”s” 和 ”r”。一个明显的解是
    rcs=a2+b2=a/r=b/r

矩阵-向量

  • Hermitian矩阵或者其压缩存储形式

    • 一阶更新

    A:=αxconjg(x)+A

    其中x是一个n维向量

    • 二阶更新

    A:=αxconjg(y)+conjg(α)yconjg(x)+A

    其中x,y都是n向量

  • 对称矩阵或者其压缩存储形式

    • 一阶更新

    a:=αxx+A

    ​ 其中xn维矩阵

    • 二阶更新
      A:=αxy+αyx+A

      其中x,y都是n维矩阵

矩阵-矩阵

  • Hermitian矩阵

    • k阶更新

      C:=αAAH+βC

      其中Ank维矩阵,Cnn的Hermitian矩阵

    • 2k阶更新

      C:=αABH+conjg(α)BAH+βC,

      其中A,B都是nk的矩阵,Cnn的Hermitian矩阵

  • 对称矩阵

    • k阶更新

    C:=αAA+βC

    ​ 其中Ank的矩阵,Cnn的矩阵

    • 2k阶更新
      C:=αAB+αBA+βC

      其中A,B都是nk的矩阵,Cnn的矩阵

后续

目前感觉也就这么多内容了。关于后面的稀疏矩阵计算相关内容,等用到了再学习。后面着重实现以下最基本的全矩阵(full matrix)运算,也就是说不考虑矩阵是对称的、Hermitian的或者带状什么的。主要包含向量-向量、矩阵-向量、矩阵-矩阵的乘法关系。

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

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

相关文章

MKL学习——基本操作C++实现

前言 前面介绍了各种向量-向量&#xff0c;矩阵-向量&#xff0c;矩阵-矩阵的函数简介。根据自身目前状况&#xff0c;主要使用实数域的操作&#xff0c;也就是说关注单精度float类型的s和双精度double类型的d。还有就是用的基本都是全矩阵&#xff0c;没有经过压缩&#xff0…

相机矩阵(Camera Matrix)

前言 最近翻阅关于从2D视频或者图片中重构3D姿态的文章及其源码&#xff0c;发现都有关于摄像机参数的求解&#xff0c;查找了相关资料&#xff0c;做一下笔记。 国际惯例&#xff0c;来一波参考网址 透视变换、透镜畸变及校正模型、相机校正(Camera Calibration)、Matlab相…

损失函数梯度对比-均方差和交叉熵

前言 我们都知道在机器学习中&#xff0c;希望算法或者网络收敛更快&#xff0c;有些是对数据预处理&#xff0c;尤其是Batch Normalization&#xff0c;有些是采用不同的激活函数&#xff0c;尤其是Relu激活函数取得了巨大的成功&#xff0c;还有一种加速收敛方法是更换损失函…

如何选择深度学习优化器

前言 转载地址&#xff1a;如何选择深度学习优化器 作者&#xff1a;不会停的蜗牛 CSDN AI专栏作家 在很多机器学习和深度学习的应用中&#xff0c;我们发现用的最多的优化器是 Adam&#xff0c;为什么呢&#xff1f; 下面是 TensorFlow 中的优化器&#xff0c; https://w…

【caffe-Windows】以mnist为例的hdf5单标签处理——matlab实现

前言 主要是想尝试看一下多标签的caffe是如何进行输入输出的&#xff0c;但是目前还未找到基于原始caffe做多标签输入的代码&#xff0c;大部分都是基于源码做了一部分修改实现多标签分类&#xff0c;caffe官网倒是有一个多标签的Python程序&#xff0c;这个我慢慢研究研究&am…

【caffe-Windows】基于Python多标签方法——VOC2012数据集

前言 按照上一篇博客所遗留的话题&#xff1a;多标签分类&#xff0c;进行初步探索&#xff0c;此篇博客针对caffe官网的多分类进行配置&#xff0c;只不过是Python接口的&#xff0c;不过官网在开头说明可以使用HDF5或者LMDB进行操作&#xff0c;只不过Python更加方便罢了 国…

【theano-windows】学习笔记一——theano中的变量

前言 因为目前需要搭建一些关于RBM或者其他之类的模型&#xff0c;感觉不太会折腾caffe&#xff0c;然而我发现了几个有趣网址&#xff0c;使用theano实现了各种各样的模型&#xff0c;所以&#xff0c;尝试学一下theano。主要以官方教程为主&#xff0c;所以博客会以译文的方…

【theano-windows】学习笔记二——theano中的函数和共享参数

前言 上一篇博客中学到了theano中的变量类型&#xff0c;也就是dscalar、dvector之类的, 然后还有一个theano.function和eval函数, 将我们所定义的操作转换成theano可执行的函数&#xff0c;类似于def, 还有就是简单的线性代数运算操作。 在神经网络(NN)中, 我们声明了权重、…

【theano-windows】学习笔记三——theano中的导数

前言 就一个NN而言&#xff0c;包含梯度、偏置、参数更新&#xff0c;而前面第一篇博客学习了theano中符号变量的定义, 第二篇博客学习了变量的随机初始化, 变量之间的互相操作(类似于sigmoid(w∗xb)), 但是参数更新还应涉及到损失函数的偏导计算&#xff0c;这一章节就是看看…

【theano-windows】学习笔记四——theano中的条件语句

前言 按照官网教程&#xff0c;学习条件语句Switch和ifelse的使用 参考地址: conditions 性能对比 ifElse是将布尔变量和两个变量当做输入 Switch是将张量和两个变量当做输入. 因为Switch是元素级操作&#xff0c;所以比ifElse更具一般性 Switch需要对所有输出变量进行评…

【theano-windows】学习笔记五——theano中张量部分函数

前言 至此感觉应该可以写出一个logistic回归程序了&#xff0c;但是为了达到对theano中张量的更灵活的使用, 还是先看一下thenao.tensor对变量都提供了哪些操作&#xff0c;最全的文档戳这里或者这里, 这里就稍微摘取一点自我感觉以后可能用得多的函数 基本张量函数 创建张量…

【theano-windows】学习笔记六——theano中的循环函数scan

前言 Scan是Theano中最基础的循环函数, 官方教程主要是通过大量的例子来说明用法. 不过在学习的时候我比较习惯先看看用途, 然后是参数说明, 最后再是研究实例. 国际惯例, 参考网址 官网关于Scan的11个例子 官网更全面的介绍 简介 用途 递归的一般形式, 可以被用于循环s…

多标签分类、多任务分类、多输出回归概念

前言 虽然不是搞分类的&#xff0c;但是还是看看多标签和多分类的区别。为了避免自己的错误理解, 当然是选择原谅他啊…….找正规文档看哇. 以下翻译分别来自scikit-learn.org和 维基 喂鸡百科 国际惯例&#xff0c;贴上来源: Multiclass and multilabel algorithms Multi-…

【theano-windows】学习笔记七——logistic回归

前言 前面只是学了最基本的theano操作&#xff0c;但是theano中还有很多其他的东西&#xff0c;比如图结构&#xff0c;自定义函数等&#xff0c;这些暂时没有用到就先不看了&#xff0c;后续学啥用啥&#xff0c;没必要一口气吃个胖子&#xff0c;免得消化不良还把前面吃的东…

【theano-windows】学习笔记八——预备知识

前言 按照上一个博客所说的&#xff0c;直接按照深度学习0.1文档进行学习&#xff0c;当然在此之前我们需要了解这一系列教程所需要的数据集&#xff0c;以及一些概念性的东西 国际惯例&#xff0c;参考博客网址&#xff1a; 深度学习0.1文档 深度学习0.1文档-中文翻译 基…

【theano-windows】学习笔记九——softmax手写数字分类

前言 上一篇博客折腾了数据集的预备知识, 接下来按照官方的Deep learning 0.1 documentation一步步走, 先折腾softmax, 关于softmax和logistic回归分类的联系, 我在之前写过一个小博客 国际惯例, 参考博客走一波: Classifying MNIST digits using Logistic Regression soft…

【theano-windows】学习笔记十——多层感知机手写数字分类

前言 上一篇学习了softmax, 然后更进一步就是学习一下基本的多层感知机(MLP)了. 其实多层感知机同时就是w*xb用某个激活函数激活一下, 得到的结果作为下一层神经元的输入x, 类似于 output⋯f3(f2(f1(x∗w1b2)∗w2b2)∗w3b3)⋯output=\cdots f^3(f^2(f^1(x*w^1+b^2)*w^2+b^2)*…

【theano-windows】学习笔记十一——theano中与神经网络相关函数

前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客【theano-windows】学习笔记五——theano中张量部分函数提到的张量的定义和基本运算外, 还有一个方法称为nnet, 如果自己实现过前面两篇博客中的代码就会发现用到了theano.tensor.nnet.sigmoid和thenao.te…

【caffe-windows】全卷积网络特征图分析

前言 突然就想分析一下全卷积网络的转置卷积部分了, 就是这么猝不及防的想法, 而且这个网络对图片的输入大小无要求&#xff0c;这么神奇的网络是时候分析一波了&#xff0c;我个人的学习方法调试代码&#xff0c;然后对照论文看理论 本次分析主要针对每层的权重大小和特征图…

【theano-windows】学习笔记十二——卷积神经网络

前言 按照进度, 学习theano中的卷积操作 国际惯例, 来一波参考网址 Convolutional Neural Networks (LeNet) 卷积神经网络如何应用在彩色图像上&#xff1f; 卷积小知识 三大特性&#xff1a;局部感知(稀疏连接), 权值共享, 池化 上图很重要, 描述的是前一个隐层m-1具有四…