矩阵加法

MATLAB基础(3)

落爺英雄遲暮 提交于 2019-12-26 09:34:29
1.MATLAB的运算 本次介绍的是MATLAB中的运算符。分别有算术运算符,关系运算符和,逻辑运算符。 表3.1 算术运算符 运算符 说明 运算符 说明 + 加法 .\ 左除法 - 减法 \ 矩阵左除法 .* 乘法 .^ 求幂 * 矩阵乘法 ^ 矩阵求幂 ./ 右除法 .' 转置 / 矩阵右除法 ' 矩阵求秩,复数求共轭 表3.2 关系运算符 运算符 说明 函数 < 小于 lt(a,b) <= 小于等于 le(a,b) > 大于 gt(a,b) >= 大于等于 ge(a,b) == 恒等于 eq(a,b) ~= 不等于 ne(a) 表3.3 逻辑运算符与函数对应表 运算符 说明 函数 & 与运算 and(a,b) | 或运算 or(a,b) ~ 非运算 not(a) xor 异或 xor(a,b) 2.MATLAB的矩阵 表3.4 构造特殊矩阵函数表 函数 说明 ones(n); ones(n,m) 建立一个元素都为1的矩阵 zeros(n); zeros(n,m) 建立一个元素都为0的矩阵 eye(n); eye(n,m) 建立一对角线元素为1,其他元素都为0的矩阵 diag(v); diag(X); diag(v,k); diag(X,k) 将一个向量变成一个对角矩阵,或求一个矩阵的对角元素 magic(n) 建立一个方阵使得它的每一行,每一列,和对角线元素的和都相等

矩阵快速幂

折月煮酒 提交于 2019-12-25 03:30:02
矩阵快速幂 顾名思义,矩阵快速幂可以 简单理解 为在矩阵上实现 快速幂操作 并且达到一定的目的。 但是,矩阵快速幂很抽象,本文将分为以下部分进行介绍: 1.矩阵乘法(了解矩阵乘法的可以跳过) 2.引入及算法实现 3.应用 1.矩阵乘法 我们定义一个有 M * N 个数排列的 M 行 N 列的矩阵 , 简称 M * N 的矩阵 e.g.一个 2 * 3 的矩阵 1 3 3 2 1 8 对于 矩阵加法 ,只能是 两个大小相同 的矩阵相加(及 M = M· && N = N·) 这个很好理解,但对于 矩阵乘法 ,就相对复杂。 矩阵乘法只适用于 第一个矩阵的 列数 和 第二个矩阵的 行数 相等时,才能相乘。 如: A矩阵 2 行 3 列 , B 矩阵 3 行 2 列 ,答案矩阵 2 行 2 列 。 简单来说,既是 C 矩阵的行数由 A 矩阵行数决定 , C 矩阵的列数由 B 矩阵列数决定。 C中每一个值运算方法如下: C中第 i 行 j 列 元素 = ( k 属于 1 ~ A的列数 ) A中第 i 行 k 列 元素 * B中第 k 行 j 列 元素 之和。 有一种特殊的矩阵:单位矩阵,它从左上角到右下角的对角线上的元素均为1,除此以外全都为0。它在矩阵乘中相当于数乘中的1,即任何矩阵乘它都等于本身。 顺便提一下,矩阵乘法满足结合律,分配律,但不满足交换律(定义条件不符合) 2

机器学习数学基础-线性代数

≡放荡痞女 提交于 2019-12-23 00:04:45
前言 AI(人工智能)现在火的一塌糊涂,其实在AI领域,机器学习已广泛应用在搜索引擎、自然语言处理、计算机视觉、生物特征识别、医学诊断、证券市场分析等领域,并且机器学习已经是各大互联网公司的基础设施,不再是一个新鲜的技术。但当你真的开始学习机器学习的时候,就会发现上手门槛其实还挺高的,这主要是因为机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。 本文主要介绍一下机器学习涉及到的一些最常用的的数学知识,方便大家在学习机器学习的时候,能扫除一些基础障碍。 标量(scalar) 标量是一个单独的数,一般用普通小写字母或希腊字母表示,如 等。 向量(vector)相关 向量的定义 把数排成一列就是向量,比如: 向量一般用粗体小写字母或粗体希腊字母表示,如 等(有时候也会用箭头来标识,如 ),其元素记作 。 向量默认为列向量,行向量需要用列向量的转置表示,例如 等。 物理专业视角:向量是空间中的箭头,决定一个向量的是它的长度和方向 计算机专业视角:向量是有序的数字列表 数学专业视角:向量可以是任何东西,只要保证两个向量相加以及数字与向量相乘是有意义的即可 运算规则 向量的加法和数量乘法定义: 加法 相同维数的向量之间的加法为: 数量乘法 任意的常数 和向量的乘法为: 在给定数 及向量 的情况下 张成空间 张成空间是向量 和

理解矩阵乘法

陌路散爱 提交于 2019-12-20 02:31:23
大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 矩阵减法也类似。 矩阵乘以一个常数,就是所有位置都乘以这个数。 但是,等到矩阵乘以矩阵的时候,一切就不一样了。 这个结果是怎么算出来的? 教科书告诉你,计算规则是,第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。 也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。 怎么会有这么奇怪的规则? 我一直没理解这个规则的含义,导致《线性代数》这门课就没学懂。研究生时发现,线性代数是向量计算的基础,很多重要的数学模型都要用到向量计算,所以我做不了复杂模型。这一直让我有点伤心。 前些日子,受到 一篇文章 的启发,我终于想通了,矩阵乘法到底是什么东西。关键就是一句话, 矩阵的本质就是线性方程式,两者是一一对应关系。 如果从线性方程式的角度,理解矩阵乘法就毫无难度。 下面是一组线性方程式。 矩阵的最初目的,只是为线性方程组提供一个简写形式。 老实说,从上面这种写法,已经能看出矩阵乘法的规则了:系数矩阵第一行的2和1,各自与 x 和 y 的乘积之和,等于3。不过,这不算严格的证明

矩阵与行列式的几何意义

旧街凉风 提交于 2019-12-20 02:29:05
作者:童哲 链接:https://www.zhihu.com/question/36966326/answer/70687817 来源:知乎 著作权归作者所有,转载请联系作者获得授权。 行列式这个“怪物”定义初看很奇怪,一堆逆序数什么的让人不免觉得恐惧,但其实它是有实际得不能更实际的物理意义的, 理解只需要三步 。这酸爽~ 1,行列式 是针对一个 的矩阵 而言的。 表示一个 维空间到 维空间的线性变换。那么什么是线性变换呢?无非是一个压缩或拉伸啊。假想原来空间中有一个 维的立方体(随便什么形状),其中立方体内的每一个点都经过这个线性变换,变成 维空间中的一个新立方体。 2,原来立方体有一个体积 ,新的立方体也有一个体积 。 3,行列式 是一个数对不对?这个数其实就是 ,结束了。 就这么简单?没错,就这么简单。 所以说:行列式的本质就是一句话: 行列式就是线性变换的放大率! 理解了行列式的物理意义,很多性质你根本就瞬间理解到忘不了!!!比如这个重要的行列式乘法性质: 道理很简单,因为放大率是相乘的啊~! 你先进行一个 变换,再进行一个 变换,放大两次的放大率,就是式子左边。 你把“先进行 变换,再进行 变换”定义作一个新的变换,叫做“ ”,新变换的放大律就是式子右边。 然后你要问等式两边是否一定相等,我可以明确告诉你:too simple 必须相等。因为其实只是简单的把事实陈述出来了

1124:矩阵加法

假装没事ソ 提交于 2019-12-15 18:02:09
【题目描述】 输入两个n行m列的矩阵A和B,输出它们的和A+B。 【输入】 第一行包含两个整数n和m,表示矩阵的行数和列数(1≤n≤100,1≤m≤100)。 接下来n行,每行m个整数,表示矩阵A的元素。 接下来n行,每行m个整数,表示矩阵B的元素。 相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。 【输出】 n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。 【输入样例】 3 3 1 2 3 1 2 3 1 2 3 1 2 3 4 5 6 7 8 9 【输出样例】 2 4 6 5 7 9 8 10 12 #include<iostream> using namespace std; int i,j; #define A 100+5 int main() { int m,n; int sum=0; cin>>m>>n; int a[A][A],b[A][A]; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>a[i][j]; } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>b[i][j]; b[i][j]+=a[i][j]; } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { cout<<b[i][j]<<" "; } cout<

【矩阵分析】自学笔记(一)

百般思念 提交于 2019-12-11 23:27:00
向量空间 向量空间又称线性空间,是线性代数的中心内容和基本概念之一。在解析几何里引入 向量 概念后,使许多问题的处理变得更为简洁和清晰,在此基础上的进一步抽象化,形成了与 域 相联系的向量空间概念。譬如, 实系数多项式 的集合在定义适当的运算后构成向量空间,在代数上处理是方便的。单变元实函数的集合在定义适当的运算后,也构成向量空间,研究此类函数向量空间的数学分支称为泛函分析。 纯量域(标量域) 标量(scalar),亦称“无向量”。有些物理量,只具有数值大小,而没有方向,部分有正负之分。物理学中,标量(或作 纯量 )指在坐标变换下保持不变的物理量。用通俗的说法,标量是只有大小,没有方向的量。 逆元素 逆元素是指一个可以取消另一给定元素运算的元素,在数学里,逆元素广义化了加法中的加法逆元和乘法中的倒数。 张成空间 基 在线性代数中,基(也称为基底)是描述、刻画向量空间的基本工具。向量空间的基是它的一个特殊的子集,基的元素称为基向量。向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。如果基中元素个数有限,就称向量空间为有限维向量空间,将元素的个数称作向量空间的维数。 来源: CSDN 作者: Tsin # 链接: https://blog.csdn.net/tsin94/article/details/103493678

论文笔记(一)SecureML: A System for Scalable Privacy-Preserving Machine Learning

风格不统一 提交于 2019-12-08 20:57:38
SecureML:A system for Scalable Privacy-Preserving Machine Learning 1 摘要及介绍 1.1 模型的大致架构 首先,主要模型中主要有客户端和两台服务器,假设这两台服务器不会恶意合作。   整个训练过程大致分为在线和离线两个阶段,在线阶段的主要任务就是利用本文提出的安全算数技术在共享的十进制数上进行模型的更新,根据混淆电路的思想,除了最后能得到的模型,什么数据也不会暴露出来;离线阶段的主要任务是服务于在线阶段的乘法运算——利用线性同态加密或者不经意传输生成必要的三元组,因为这个开销比较大,后期还提出了一种改进,用客户端来辅助生成三元组; 1.2 主要贡献 为线性回归、逻辑回归、神经网络这三种机器学习算法开发出了新型的隐私保护的深度学习协议 开发出了支持在共享的十进制数上的安全算数操作的技术 对于那些非线性激活函数,如sigmoid softmax,提出了一种支持安全多方计算的替代方案 以上提出的所有技术相较于目前的技术,在保证安全的前提下,速度上都有很大的提升 1.2.1 为三种机器学习算法开发出的隐私保护的协议 线性回归、逻辑回归和神经网络这三种机器学习方案非常简单但也非常常用,而且他们之间思想类似且一种递进的趋势。 所谓思想类似指的是他们都是有监督的机器学习算法,思路都是先前馈,算出交叉熵之后,在利用随机梯度下降

深度学习入门之数学基础概念

独自空忆成欢 提交于 2019-12-06 16:33:48
深度学习之线代复习 标量、向量、矩阵和张量 标量(scalar):一个标量就是一个单独的数。 向量:一个向量是一列数,这些数是有序排列的。我们可以把向量看作空间中的点,每个元素是不同坐标轴上的坐标。 矩阵:矩阵是一个二维数组,其中的每一个元素被两个索引(而非 一个)所确定。 张量(tensor):在某些情况下,我们会讨论坐标超过两维的数组。一般地,一 个数组中的元素分布在若干维坐标的规则网格中,我们称之为张量。 矩阵的向量相乘 在深度学习中, 我们也使用一些不那么常规的符号。我们允许矩阵和向量相 加,产生另一个矩阵:C = A + b,其中 C i , j C_{i,j} C i , j ​ = A i , j A_{i,j} A i , j ​ + b j b_j b j ​ 。换言之,向量 b 和矩阵 A 的每一行相加。这个简写方法使我们无需在加法操作前定义一个将向量 b 复制 到每一行而生成的矩阵。这种隐式地复制向量 b 到很多位置的方式,被称为广播。 A ⊙ B(dot product)被称为元素对应乘积(element-wise product)或者Hadamard乘积(Hadamard product) 矩阵乘积满足分配律,结合率,但不一定满足AB=BA的交换律。 单位矩阵和逆矩阵 任意 向量和单位矩阵相乘,都不会改变。我们将保持 n 维向量不变的单位矩阵记作 I n

python numpy的基本操作

三世轮回 提交于 2019-12-06 01:09:23
站长资讯平台 :文章目录 0、NumPy 与 ndarry 1、数组属性查看:类型、尺寸、形状、维度 2、numpy元素中数据存储方式,数据类型,类型转换 2.1 查看元素数据存储类型 2.2 元素数据存储类型转换 3、List类型与numpy. ndarray类型的互相转换 4、创建 ndarray 数组 4.1 方法一:列表转换 4.2 zero,ones,empty函数创建特殊数组 4.3 arrange linspace 创建线性数组 5、矩阵的索引与打印 6、矩阵的运算 6.1 基础运算 6.2 点乘 6.3 其他矩阵特征运算 6.3 排序、转置、数值裁剪 7、其他操作 7.1 横纵向的拼接 7.2 矩阵添加或拼接新元素(append或concatenate) 7.3 新增维度 7.4 增减数组维度 7.5 矩阵的切片 7.6 reshape,ravel,flatten,transpose,shape,resize更改数组形状 8、常用操作 8.1 元素平方和 8.2 numpy转换成tensorflow的tensor LAST、未来得及添加的内容 0、NumPy 与 ndarry NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生。 它提供: 快速高效的多维数组对象 ndarray; 直接对数组执行数学运算及对数组执行元素级计算的函数;