转置矩阵

sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】

梦想与她 提交于 2020-03-18 15:16:15
转置矩阵 Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^ 题目链接: http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1592 题目描述 把矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵,记作A'或A。 给你一个矩阵,求它的转置矩阵。 输入 输入数据的第一行是两个正整数R和C(1<=R,C<=10),分别代表矩阵的行数和列数。接下来R行,每行C个空格隔开的整数。 输出 输出转置后的矩阵,每行中相邻的两个数用空格隔开。 示例输入 3 3 1 2 3 4 5 6 7 8 9 示例输出 1 4 7 2 5 8 3 6 9 提示 代码: 1 #include<iostream> 2 #include<string.h> 3 #include<string> 4 using namespace std; 5 struct vode 6 { 7 int i,j; 8 int date; 9 }; 10 struct node 11 { 12 int mu,nu,tu; 13 struct vode data[1000]; 14 }; 15 struct node M,T; 16 void zhuanzhi(); 17 int main()

转置卷积、微步卷积、空洞卷积是什么?

此生再无相见时 提交于 2020-03-04 21:17:21
文章目录 转置卷积(deconvolution) 微步卷积 空洞卷积(膨胀卷积) 转置卷积(deconvolution) 转置卷积是一个将低维特征转换到高维特征。为什么叫做转置卷积呢?其实就是引入了转置的思想。 假设我们现在有一个p维的向量Z,然后有个d维的向量X,p<d. 这样就会出现 Z = W·X,其中W的维度为(p,d),叫做转换矩阵. 现在,我们要从Z通过相似的方法来得到X,这样我们不难想到: X= W.T · X 其中W.T的维度是(d,p),但是这两个W并不是同一个值,而是具有转置的形式而已。 上面的例子是一维向量的情况,在卷积操作中,也可以借用这个思想,从低维到高维的转变可以在形式上看成是转置操作。 比如我们现在对一个4 * 4的输入做3 * 3的卷积操作(m=3,stride=1,padding=0),得到一个2 * 2的特征映射 如果我们想对这个2 * 2特征映射进行3 * 3卷积,并反过来得到4 * 4的输出,就可以用到转置卷积: 如上图所示,对2 * 2的特征映射先做 (m-1)padding 得到6 * 6的输入,然后对其进行3*3的卷积操作,从而得到4 * 4的特征映射。 同样,这个两个3 * 3的卷积参数不是一致的,都是可学习的。 微步卷积 微步卷积其实是一个转置卷积的一个特殊情况,就是卷积操作的 stride ≠ 1 。因为在现实中

机器学习之支持向量机

删除回忆录丶 提交于 2020-02-08 20:31:39
SVM与神经网络 支持向量机并不是神经网络,这两个完全是两条不一样的路吧。不过详细来说,线性SVM的计算部分就像一个单层的神经网络一样,而非线性SVM就完全和神经网络不一样了(是的没错,现实生活中大多问题是非线性的),详情可以参考知乎答案。 这两个冤家一直不争上下,最近基于神经网络的深度学习因为AlphaGo等热门时事,促使神经网络的热度达到了空前最高。毕竟,深度学习那样的多层隐含层的结构,犹如一个黑盒子,一个学习能力极强的潘多拉盒子。有人或许就觉得这就是我们真正的神经网络,我们不知道它那数以百千计的神经元干了什么,也不理解为何如此的结构能诞生如此美好的数据 —— 犹如复杂性科学般,处于高层的我们并不能知道底层的”愚群“为何能涌现。两者一比起来,SVM似乎也没有深度学习等那么令人狂热,连Hinton都开玩笑说SVM不过是浅度学习(来自深度学习的调侃)。 不然,个人觉得相对于热衷于隐含层的神经网络,具有深厚的数学理论的SVM更值得让我们研究。SVM背后伟大的数学理论基础可以说是现今人类的伟大数学成就,因此SVM的解释性也非神经网络可比,可以说,它的数学理论让它充满了理性,这样的理性是一个理工科生向往的。就如,你渴望知道食物的来源以确定食物是否有毒,如果有毒是什么毒,这样的毒会在人体内发生了什么反应以致于让你不适 —— 我的理性驱使我这么想,一个来路不明的食物是不能让我轻易接受的。

深度学习(三)——卷积神经网络

寵の児 提交于 2020-01-27 22:29:23
深度学习(三)——卷积神经网络 文章目录 深度学习(三)——卷积神经网络 概述 CNN的神经网络层 卷积层 卷积核和卷积操作 零填充和填充卷积 感受野与扩张卷积 池化层 全连接层 转置卷积层 感兴趣区域(RoI)池化层 概述 这篇博文主要讨论 卷积神经网络 (Convolutional Neural Networks,CNN)。CNN是目前最流行的神经网络类型之一,特别是对于图像或是视频这种高维数据。与 多层感知器 不同,CNN层中的每层单元是一个二维(或高维)滤波器,这样的滤波器又被称为 卷积核 ,它能够对输入数据进行卷积运算,这是最关键的区别。 CNN的产生也同样来源于人类对自我认知过程的思考。考虑人类辨识一头大象的过程,人类往往是在看到大象的一部分,才能够辨识出这是大象的。例如看到大象的大耳朵、长鼻子、粗壮的腿等。但在计算机中,图像的每一个像素点都是三个数字。人类辨识图像的过程启示我们在辨识过程中, 单一的像素点是没有意义 的,只有将像素点放在一块区域中,才能显示出它的作用。 因此,利用卷积核,可以将一块区域中的像素值进行一些运算得到一个值,就实现了上面的过程。也因为这个,CNN在计算机视觉领域得到了非常广泛的应用。接下来就依次介绍CNN的各个组成部分和一些模型上的细节。 CNN的神经网络层 CNN是由几个基本构建块组成的,称为 CNN层 。最基本的CNN具备的层次有:

leetcode867 C++ 32ms 转置矩阵

萝らか妹 提交于 2020-01-20 00:41:53
class Solution { public: vector<vector<int>> transpose(vector<vector<int>>& A) { vector<vector<int>> res; if(A.empty() || A[0].empty()){ return res; } int h = A.size(); int w = A[0].size(); vector<int> row; for(int ww=0;ww <w; ww++){ row.clear(); for(int hh=0; hh<h;hh++){ row.push_back(A[hh][ww]); } res.push_back(row); } return res; } }; 来源: https://www.cnblogs.com/theodoric008/p/9419032.html

perl 转置矩阵

不问归期 提交于 2019-12-04 20:59:04
这里提供一个转置矩阵的perl脚本,R语言中的t()函数同样也能实现转置 1 use strict; 2 3 open A,"$ARGV[0]"; 4 5 my %ha; 6 my $head=<A>; 7 chomp($head); 8 my @tag=split /\s+/,$head; 9 10 while(<A>){ 11 chomp; 12 my @each=split; 13 for(my $i=0;$i<@each;$i++){ 14 $ha{$tag[$i]}.=$each[$i]."\t"; 15 } 16 } 17 18 close A; 19 20 foreach my $k(@tag){ 21 print "$k\t$ha{$k}\n"; 22 } 来源: https://www.cnblogs.com/mmtinfo/p/11883511.html

转置卷积、反卷积、小数步长卷积

匿名 (未验证) 提交于 2019-12-03 00:28:02
Transposed Convolution, Fractionally Strided Convolution or Deconvolution 转载自: https://buptldy.github.io/2016/10/29/2016-10-29-deconv/ 最近才知道反卷积就是转置卷积,查了查资料,觉得这篇博客写的很不错。 反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其之后的工作中(Adaptive deconvolutional networks for mid and high level feature learning)。随着反卷积在神经网络可视化上的成功应用,其被越来越多的工作所采纳比如:场景分割、生成模型等。其中反卷积(Deconvolution)也有很多其他的叫法,比如:Transposed Convolution,Fractional Strided Convolution等等。 这篇文章的目的主要有两方面: 1. 解释卷积层和反卷积层之间的关系; 2. 弄清楚反卷积层输入特征大小和输出特征大小之间的关系。 卷积层大家应该都很熟悉了,为了方便说明,定义如下: - 二维的离散卷积( N = 2 N = 2

数组的转置和换轴

China☆狼群 提交于 2019-12-02 20:15:24
转置是一种特殊的 数据重组形式,可以返回底层数据的视图而不需要复制任何内容。数组拥有transpose方法,也有特殊的 T 属性: import numpy as np arr = np.arange(15).reshape((3,5)) print(arr) print('------------|') arr=arr.T #把arr数组给转置了,行列互换 print(arr) #计算矩阵内积会使用 np.dot arr1 = np.random.randn(6,3) print(arr1) print('------------------') arr2 =np.dot(arr1.T, arr1 print(arr2) [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] ------------| [[ 0 5 10] [ 1 6 11] [ 2 7 12] [ 3 8 13] [ 4 9 14]] [[-0.10721531 -0.9623694 2.40925637] [ 1.37846812 -1.08492064 1.52178665] [ 2.27103816 0.05325764 0.06673496] [-0.07155395 0.21708365 -0.7271715 ] [-1.54946414 -0.10253511 0

LeetCode 867. 转置矩阵

烂漫一生 提交于 2019-11-30 13:37:07
题目链接: https://leetcode-cn.com/problems/transpose-matrix/ 给定一个矩阵 A, 返回 A 的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 输入:[[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]] 示例 2: 输入:[[1,2,3],[4,5,6]] 输出:[[1,4],[2,5],[3,6]] 提示: 1 <= A.length <= 1000 1 <= A[0].length <= 1000 1 class Solution { 2 public int[][] transpose(int[][] A) { 3 int[][] newA=new int[A[0].length][A.length]; 4 for(int i=0;i<A.length;i++){ 5 for(int j=0;j<A[0].length;j++){ 6 newA[j][i]=A[i][j]; 7 } 8 } 9 return newA; 10 } 11 } 来源: https://www.cnblogs.com/shixinzei/p/11595002.html

矩阵的逆矩阵 和 转置矩阵

最后都变了- 提交于 2019-11-30 13:19:30
这几天用到了逆矩阵,就在这里总结一下逆矩阵和转置矩阵。 逆矩阵 逆矩阵就是一个矩阵的逆向。比如一个点乘以一个矩阵后得到了一个新的点的位置,如果想通过这个点再获得矩阵转换前的位置,那我们就需要乘以这个矩阵的逆矩阵。 在Three.js里面,我们可以通过 new THREE.Matrix4().getInverse(matrix4) 方法来获得一个矩阵的逆矩阵。 具有的性质: 可逆矩阵一定是方阵。 如果矩阵是可逆的,那它的逆矩阵具有唯一性。 矩阵A的逆矩阵的逆矩阵,等于它自身。 Three.js获得一个矩阵的逆矩阵: var m = `new THREE.Matrix4().getInverse(matrix4); Three.js求逆矩阵源码: getInverse: function ( m, throwOnDegenerate ) { // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm var te = this.elements, me = m.elements, n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], n12 = me[ 4 ], n22 = me[ 5 ]