矩阵

卷积的含义-详解

隐身守侯 提交于 2019-12-12 08:10:53
原文链接: 点击此处看知乎原文 最近需要用到卷积对图像进行处理,不明白卷积的含义,找资料的时候在知乎找到一个很优秀的评论,特此记录一下。以下内容来自于原文复制: 对卷积的困惑 卷积这个概念,很早以前就学过,但是一直没有搞懂。教科书上通常会给出定义,给出很多性质,也会用实例和图形进行解释,但究竟为什么要这么设计,这么计算,背后的意义是什么,往往语焉不详。作为一个学物理出身的人,一个公式倘若倘若给不出结合实际的直观的通俗的解释(也就是背后的“物理”意义),就觉得少了点什么,觉得不是真的懂了。 ​并且也解释了,先对g函数进行翻转,相当于在数轴上把g函数从右边褶到左边去,也就是卷积的“卷”的由来。 然后再把g函数平移到n,在这个位置对两个函数的对应点相乘,然后相加,这个过程是卷积的“积”的过程。 这个只是从计算的方式上对公式进行了解释,从数学上讲无可挑剔,但进一步追问,为什么要先翻转再平移,这么设计有何用意?还是有点费解。 在知乎,已经很多的热心网友对卷积举了很多形象的例子进行了解释,如卷地毯、丢骰子、打耳光、存钱等等。读完觉得非常生动有趣,但过细想想,还是感觉有些地方还是没解释清楚,甚至可能还有瑕疵,或者还可以改进(这些后面我会做一些分析)。 带着问题想了两个晚上,终于觉得有些问题想通了,所以就写出来跟网友分享,共同学习提高。不对的地方欢迎评论拍砖。。。 明确一下

论文解读:(TranSparse)Knowledge Graph Completion with Adaptive Sparse Transfer Matrix

社会主义新天地 提交于 2019-12-12 06:27:25
论文解读:(TranSparse)Knowledge Graph Completion with Adaptive Sparse Transfer Matrix   先前的基于深度学习的知识表示模型TransE、TransH、TransR(CTransR)和TransD模型均一步步的改进了知识表示的方法,在完善知识图谱补全工作上逐渐提高效果。通过先前的模型,我们基本掌握了知识表示的学习方法:首先通过投影策略将实体和关系映射到对应的语义空间,其次均使用得分函数 f ( h , t ) = ∣ ∣ h + r − t ∣ ∣ f(h,t)=||h+r-t|| f ( h , t ) = ∣ ∣ h + r − t ∣ ∣ 表示实体对的评分。另外使用负采样生成错误样本进行训练,使得正确的样本得分函数值降低,错误样本的得分函数值升高。然而这些模型均忽略了图谱的两个重要特性: 异质性(heterogeneity) 和 不平衡性(imbalance) 。图谱中的异质性是指不同关系对应的实体对数量不一致,例如对于关系 r r r 链接的所有实体对数量可能非常多,而对于 r ′ r' r ′ 链接的所有实体对数量可能只有1个。不平衡性是指头尾实体的数量不一致,例如形如对于(地名,local,洲名)的三元组,地名可能成千上万个,而洲名只有七个。由于数量的不对等

矩阵乘法

孤人 提交于 2019-12-12 02:41:42
flag 蓝桥杯第17天 题目介绍 问题描述   输入两个矩阵,分别是m s,s n大小。输出两个矩阵相乘的结果。 输入格式   第一行,空格隔开的三个正整数m,s,n(均不超过200)。   接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。   接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。 输出格式   m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。 样例输入 2 3 2 1 0 -1 1 1 -3 0 3 1 2 3 1 样例输出 -3 2 -8 2 提示 矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。 例如样例中C(1,1)=(1,0,-1) (0,1,3) = 1 * 0 +0 1+(-1)*3=-3 思路 读取输入数据到两个二维数组中,再根据乘法公式进行计算即可 一次就通过(1.0s擦边,毕竟三重循环) 代码 import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner input = new Scanner ( System . in ) ; int m = input . nextInt ( ) ; int s = input .

协同过滤算法

ε祈祈猫儿з 提交于 2019-12-11 23:19:20
推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结。 1. 推荐算法概述 推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了。概括来说,可以分为以下5种: 基于内容的推荐 这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。这一类由于需要NLP的基础,本文就不多讲,在后面专门讲NLP的时候再讨论。 协调过滤推荐 本文后面要专门讲的内容。协调过滤是推荐算法中目前最主流的种类,花样繁多,在工业界已经有了很多广泛的应用。它的优点是不需要太多特定领域的知识,可以通过基于统计的机器学习算法来得到较好的推荐效果。最大的优点是工程上容易实现,可以方便应用到产品中。目前绝大多数实际应用的推荐算法都是协同过滤推荐算法。 混合推荐 这个类似我们机器学习中的集成学习,博才众长,通过多个推荐算法的结合,得到一个更好的推荐算法,起到三个臭皮匠顶一个诸葛亮的作用。比如通过建立多个推荐算法的模型,最后用投票法决定最终的推荐结果。混合推荐理论上不会比单一任何一种推荐算法差,但是使用混合推荐

因子分析和PCA总结

左心房为你撑大大i 提交于 2019-12-11 21:16:56
因子分析和 PCA 定义 因子分析就是数据降维工具。 从一组相关变量中 删除冗余或重复 ,把相关的变量放在一个因子中,实在不相关的因子有可能被删掉。 用一组较小的 “ 派生 ” 变量表示相关变量 ,这个派生就是新的因子 。形成彼此相对独立的因素 ,就是说新的因子彼此之间 正交 。 应用 筛选变量。 步骤 3.1 计算所有变量的相关矩阵 3.2 要素提取 ,仅在此处需要使用 PCA 3.3 要素轮换 3.4 就基本因素的数量作出最后决定 3.1 计算所有变量的相关矩阵 构建数据矩阵,该数据矩阵是相关矩阵(矩阵里面全是相关系数), PCA 之后变为因子矩阵。 绝对值大于 0.3 的相关系数表示可接受的相关性 ,即相关系数大于 0.3 则把它们放在一堆。 3.2 要素提取 ,仅在此处需要使用 PCA (当然也有其他方法, 要素提取使用不同方法有不同结果)按照对方差的解释程度排序。 连续分量解释总样本方差的逐渐变小的部分,并且所有的分量彼此不相关。 确定因子数:特征值大于 1 3.3 要素轮换 因素轴转为了让因子之间差距尽量大。 非旋转因素通常不是很容易解释的 ( 比如因素 1与所有变量都相关,因素二与前四个变量相关) 对因素进行旋转,使它们更有意义,更易于解释 (每个变量都与最小数量的因素相关联)。 不同旋转方法会识别不同因素,这与要素提取使用不同方法有不同结果是一样的。 3.4

Octave中的矩阵常用操作2

梦想与她 提交于 2019-12-11 20:40:28
sum(a):矩阵里的数据求和 prod(a):乘积 floor(a):向上取整 ceil(a):向下取整 max(A,[],1):取每一列的最大值 max(A,[],2):取每一行的最大值 max(max(A)):矩阵里的最大值 来源: https://www.cnblogs.com/liuxjie/p/12024942.html

树转二维数组的方法

前提是你 提交于 2019-12-11 18:27:31
需求如下: let arr = [ { code: "A001", level: 1, childs: [ { code: "A002", level: 2, childs: [ { code: "A005", level: 3, childs: [] }, { code: "A006", level: 3, childs: [] } ] }, { code: "A003", level: 2, childs: [] }, { code: "A004", level: 2, childs: [] } ] } ]; 将上面的数据转换为二维数组: [ [ { code: "A001", level: 1 }, { code: "A002", level: 2 }, { code: "A005", level: 3 }, ], [ { code: "A001", level: 1 }, { code: "A002", level: 2 }, { code: "A006", level: 3 }, ], [ { code: "A001", level: 1 }, { code: "A003", level: 2 } ], [ { code: "A001", level: 1 }, { code: "A004", level: 2 } ] ] 方法: function traverse

奇异值分解(SVD)与主成分分析(PCA)

给你一囗甜甜゛ 提交于 2019-12-11 18:14:30
奇异值分解(SVD)与主成分分析(PCA) 1 算法简介 奇异值分解(Singular Value Decomposition),简称SVD,是线性代数中矩阵分解的方法。假如有一个矩阵A,对它进行奇异值分解,可以得到三个矩阵相乘的形式,最左边为m维的正交矩阵,中间为m*n 的对角阵,右边为n维的正交矩阵: A = U Σ V T A=U\Sigma V^{T} A = U Σ V T 这三个矩阵的大小如下图所示: 矩阵 Σ \Sigma Σ 除了对角元素其他元素都为0,并且对角元素是从大到小排列的,前面的元素比较大,后面的很多元素接近0。这些对角元素就是奇异值。( u i u_i u i ​ 为m维行向量, v i v_i v i ​ 为n维行向量) Σ \Sigma Σ 中有n个奇异值,但是由于排在后面的很多接近0,所以我们可以仅保留比较大的前r个奇异值,同时对三个矩阵过滤后面的n-r个奇异值, 奇异值过滤之后,得到新的矩阵: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Y9zuN9s-1576054984887)(./Img/fig2.png)] 在新的矩阵中, Σ \Sigma Σ 只保留了前r个较大的特征值: 实际应用中,我们仅需保留三个比较小的矩阵,就能表示A,不仅节省存储量,在计算的时候更是减少了计算量。SVD在信息检索(隐性语义索引

numpy

别来无恙 提交于 2019-12-11 15:57:40
1、numpy基础结构 导入txt数据 输出数据类型( 类型转换 m1=m1.astype(int) ) 数据类型必须同一类型 数据选取 数据判断并获取 有25那行的数据 2、numpy矩阵运算 基本运算 m1.min()、m1.max() 按行按列求和: 常用函数 a.ndim 纬度 a.dtype.name 类型名称 a.size 元素数 特殊方法 np.ones((2,3,4),dtype=np.int) 代表2个上面那样的矩阵 设置步长 选取随机数 矩阵运算 a=np.floor(10*np.random.random((3,4))) floor向下取整 a.ravel() 将矩阵拉成向量,与reshape相反 a.T 行列变换 矩阵的拼接 np.hstack((a,b)) 恒向拼接 np.vstack((a,b)) 纵向拼接 矩阵的切分 np.hsplit(a,3) 横向切分成3块 np.hsplit(a,(3,4)) 指定切分位置第三列后和第四列后 不同复制操作对比 a=np.floor(10*np.random.random((3,4))) b=a 等号复制 id号相同值相同 c=a.view() id号不同,但值一同改变 d=a.copy() id号不同,值不同,完全拷贝 矩阵的索引序列 求最大值 索引ind=data.argmax(axis=0)

8矩阵函数的求法

霸气de小男生 提交于 2019-12-11 11:43:51
1利用零化多项式求矩阵函数 求出特征多项式,设其阶数为n 列出 g ( λ ) = ∑ i = 0 n − 1 c i λ i g(\lambda)=\sum_{i=0}^{n-1}c_i\lambda^i g ( λ ) = ∑ i = 0 n − 1 ​ c i ​ λ i 列出n个线性方程组 g ( λ ) = f ( λ ) , g ( 1 ) ( λ ) = f ( 1 ) ( λ ) . . . g ( n − 1 ) ( λ ) = f ( n − 1 ) ( λ ) , g(\lambda)=f(\lambda),g^{(1)}(\lambda)=f^{(1)}(\lambda)...g^{(n-1)}(\lambda)=f^{(n-1)}(\lambda), g ( λ ) = f ( λ ) , g ( 1 ) ( λ ) = f ( 1 ) ( λ ) . . . g ( n − 1 ) ( λ ) = f ( n − 1 ) ( λ ) , 解出 g ( λ ) g(\lambda) g ( λ ) 求解 g ( A ) g(A) g ( A ) 2例 求n个线性方程组和求n-1阶矩阵,计算量还是蛮大的 来源: CSDN 作者: 三省少年 链接: https://blog.csdn.net/xd15010130025/article/details