003 线性代数

可以使用A.T求矩阵A的转置:

 1. 降维

 1. 降维

可以用tensor.sum()对任意张量进行降维元素求和,这里tensor是某个张量。还可以在sum()中使用参数axis=来指定维度:

 

A.numel()是张量中元素的个数,于是可以使用tensor.sum() / tensor.numel()求张量的平均值:

 

 2. 非降维求和

可以使用tensor.sum()参数中的keep_dims=True来进行非降维求和:

 

 

可以使用tensor.cumsum()计算张量沿某个轴的累计总和,该函数不会在任意轴上降维。

 2. 点积

torch.dot()函数用于计算两个向量的点积。或者可以将两个向量求哈达玛积,再用sum()函数求和:

 

3. 矩阵-向量积

计算矩阵向量积Ax,可以调用torch.mv(A,x):

 

4. 矩阵乘法

计算矩阵乘法AB,可以调用函数torch.mm(A,B):

 

5. 范数

向量的L1范数的定义是向量中所有元素绝对值的和:

 在pytorch中可以先使用torch.abs()函数对向量中所有元素取绝对值,再对取绝对值后的向量(张量)使用sum()计算其和:

 

向量的L2范数定义为对向量中所有元素的平方求和之后,对和值开平方:

在pytorch中可以直接使用tensor.norm()函数求一个向量的二范数,norm()函数的发起者是要求二范数的向量,该函数求二范数不用参数:

 或者使用torch.norm(x)求二范数,这时,参数是待求二范数的向量x。

 

L2范数和L1范数都是Lp范数的特例,向量的Lp范数的定义为:

 

矩阵的二范数和向量的二范数在pytorch中有相似的代码,矩阵的二范数定义为:

 求矩阵二范数的代码:

 

本文转载于网络 如有侵权请联系删除

相关文章

  • 2020 RCTF

    listen附件(提取码:5szj)不愧是杂项,认谱 爷不会Animal附件(提取码:1689)压缩包加密了,需要打开Message得到密码 看过wp知道他是摩斯密码 delay(500)为‘-’,delay(200)为‘.’ 接着按调用顺序拓展解密得到:CQCQCQDEKDEK88SKSK(参考文章)(访问国外网站解压之后拿到cfa和一个二维码,二维码是烟雾弹 流量分析cfa蓝牙文件提取出四张图片,注意到有一个secret图片 stegdetect判断为jphide解密 steghide解密后拿到字符串 aHR0cHMlM0EvL216bC5sYS8yV0VqbjVh base64解密得到短链 https://mzl.la/2WEjn5a 跳转后是一个emoji加密,密钥挨个点过去(坏,发现是一本书,解密即可~

  • 深度分析数据在内存中的存储形式

    大家好,又见面了,我是你们的朋友全栈君。文章目录一、数据的基本类型介绍二、整型在内存中的存储形式1.原码、反码、补码2.大小端介绍3.浮点型在内存中的存储一、数据的基本类型介绍char//字符数据类型 short//短整型 int//整形 long//长整型 longlong//更长的整形 float//单精度浮点数 double//双精度浮点数复制二、整型在内存中的存储形式一个变量的创建是要在内存中开辟空间的。空间的大小是根据不同的类型而决定的。那接下来我们谈谈数据在所开辟内存中到底是如何存储的? 比如:inta=20; intb=-10;复制我们知道为a分配四个字节的空间。 那如何存储? 下来了解下面的概念:1.原码、反码、补码计算机中的整数有三种表示方法,即原码、反码和补码。 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位负整数的三种表示方法各不相同。 原码 直接将二进制按照正负数的形式翻译成二进制就可以。 反码 将原码的符号位不变,其他位依次按位取反就可以得到了。 补码 反码+1就得到补码。 正数的原、反、补码都相同。 对于整形来说:数

  • 用Python让你的爱豆陪你度过2019

    作者|小F来源|法纳斯特本次内容有感于《Python编程快速上手-让繁琐工作自动化》。 根据书中的「处理Excel电子表格」章节内容,做出一份专属日历。使用的模块为openpyxl,一个能读取和修改Excel电子表格的Pyhton模块。实现自动化处理表格信息,摆脱无趣无味。此外还有calendar模块,通过该模块生成日历信息。最后利用openpyxl和calendar库,实现自动化生成爱豆日历。/01/科普在进行代码操作前,简单对相关知识做个简单的学习。一个Excel电子表格文档称为一个工作䈬。一个工作䈬保存在扩展名为「.xlsx」的文件中。划重点,openpyxl只支持「.xlsx」类型的格式。所以对于Excel2003版「.xls」格式是不支持的。每个工作䈬可以包含多个表,又称为工作表。本次生成的信息就是在一个工作䈬,12个工作表内。calendar库主要是生成日历信息。importcalendar #设置每周的起始日期码,为星期天 calendar.setfirstweekday(firstweekday=6) #返回2019年年历 print(calendar.calendar

  • 机房收费系统(VB.NET)——超详细的报表制作过程

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/38356927     之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件。刚开始当然对这块功能很不熟悉,不过探究了一段时间后还是把它做出来了。    下面把在VisualStudio(我用的是VisualStudio2013,如果与您使用的版本不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能详细地记录下来,供初学者学习参考。    做事要有全局观,先看一下成品,做好的报表如下图:    其实能够达到这样的效果需要做两方面的工作:添加报表控件ReportViewer和添加编辑RDLC文件。个人感觉RDLC文件的作用是绑定数据库中需要的数据,ReportViewer则是引用RDLC文件来显示RDLC文件从数据库中绑定的数据。    1、添加报表控件ReportViewer:     添加报表控件很简单:工具箱—报表—Report

  • CentOS7编译安装FFMPEG

    1、需要安装Yasmwget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz复制tar -zxvf yasm-1.3.0.tar.gz复制cd yasm-1.3.0复制./configure复制make && make install复制如果提示出错如下,则安装步骤1yasm/nasmnotfoundortooold.Use–disable-yasmforacrippledbuild. Ifyouthinkconfiguremadeamistake,makesureyouareusingthelatest versionfromGit.Ifthelatestversionfails,reporttheproblemtothe ffmpeg-user@ffmpeg.orgmailinglistorIRC#ffmpegonirc.freenode.net. Includethelogfile“config.log”producedbyconfigureasthiswillhelp solveth

  • Python-GUI|Tk类,属性文档使用指南

    这是一篇tkinter相关API的介绍性地帮助文档,包括常用的包,类结构图,属性取值等,可以作为一个工具文档,供大家查阅。01Tk中的包__main__colorchoosercommondialogconstantsdialogdndfiledialogfontmessageboxscrolledtextsimpledialogtest(package)tixttk02Tk中的类图builtins.objectCallWrapperEventGridImageBitmapImagePhotoImageMiscBaseWidgetToplevel(BaseWidget,Wm)Widget(BaseWidget,Pack,Place,Grid)ButtonCanvas(Widget,XView,YView)CheckbuttonEntry(Widget,XView)FrameLabelLabelFrameListbox(Widget,XView,YView)MenuMenubuttonOptionMenuMessagePanedWindowRadiobuttonScaleScrollba

  • 腾讯云服务网格CAM自定义策略授权

    如您有自定义的权限管理诉求,您可以通过创建CAM自定义策略,并关联至子账号实现自定义授权。您可参考文本并根据实际业务诉求进行配置。CAM元素参考CAM自定义策略核心元素包括:操作(action)、资源(resource)、生效条件(condition)以及效力(effect)。1.操作(action)描述允许或拒绝的操作。操作可以是API(以name前缀描述)或者功能集(一组特定的API,以actionName前缀描述)。该元素是必填项。您可以查看TCM接入CAM的API。2.资源(resource)描述授权的具体数据。资源是用六段式描述。您可以查看TCM资源描述。3.生效条件(condition)描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP地址等信息。4.效力(effect)描述声明产生的结果是“允许”还是“显式拒绝”。包括allow(允许)和deny(显式拒绝)两种情况。该元素是必填项。5.自定义策略样例该策略为:允许对广州的两个mesh实例:mesh-abcd1234和mesh-1234abcd做获取详情操作。{"version&q

  • babylon使用3dsmax导出的obj文件时模型偏暗

    将模型的material的diffuseTexture设置为null即可 作者:馨辰     出处:http://wzxinchen.cnblogs.com/     本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 Blazui组件库:https://github.com/wzxinchen/Blazui BlazAdmin核心组件库:https://github.com/wzxinchen/BlazAdmin BlazAdmin服务端渲染库:https://github.com/wzxinchen/BlazAdmin.ServerRender

  • 注册全局组件

    第一步:给需要注册的全局组件取个name 1<script> 2exportdefault{ 3name:"TypeNav" 4} 5</script>复制 第二部在main.js里引入 1//三级联动路由组件 2importTypeNavfrom'@/pages/Home/TypeNav' 3//第一个参数:全局组件的名字,第二个参数:哪一个组件 4Vue.component(TypeNav.name,TypeNav)复制 第三步应用到需要的地方(注册完全局组件后不需要引入)  1<TypeNav></TypeNav>   

  • 01.linux性能优化-平均负载

    uptime: 21:09:41(time),up35min,(系统运行时间),2users,(登录用户数),loadaverage:0.00,0.01,0.04(平均负载1分钟五分钟十五分钟) 一.平均负载 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数平均负载/CPU核数。 可运行状态:正在使用CPU(running)或正在等待CPU(runnable)的进程 不可中断状态:正在请求硬件响应(可理解为正常服务因得不到硬件响应的持续请求进程) 二.CPU上下文切换 CPU上下文:CPU寄存器:速度极快的内存。程序计数器:存CPU正在执行的指令位置或即将执行的下一条指令位置 CPU上下文切换就是把上一个任务的CPU上下文保存,然后执行新任务的CPU上下文 CPU上下文切换分为进程上下文切换、线程上下文切换、中断上下文切换 (1).进程上下文切换:进程由内核管理调度当发生进程上下文切换时因比特权模式切换(系统调用)多出要保存或恢复进程的虚拟内存、栈、全局变量、内核堆栈、寄存器等内核空间状态因此会耗费大量的使用CPU进程被调到CPU运行情况(进程

  • GET &amp; POST

    HTTP方法:GET对比POST 什么是HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。 HTTP的工作方式是客户机与服务器之间的请求-应答协议。 web浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。 举例:客户端(浏览器)向服务器提交HTTP请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。 两种HTTP请求方法:GET和POST 在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET和POST。 GET -从指定的资源请求数据。 POST -向指定的资源提交要被处理的数据 GET方法 请注意,查询字符串(名称/值对)是在GET请求的URL中发送的: /test/demo_form.asp?name1=value1&name2=value2复制 有关GET请求的其他一些注释: GET请求可被缓存 GET请求保留在浏览器历史记录中 GET请求可被收藏为书签 GET请求不应在处理敏感数据时使用 GET请求有长度限制 GET请求只应当用于取回数据 P

  • 论坛专用

    设置图片显示后台---用户---用户组---系统用户组,编辑游客组,“允许下载/查看附件”选是 后台---论坛---版块管理---编辑---权限相关---“游客下载/查看附件”打钩 后台---全局---积分设置---积分策略---“下载附件”填“-1”;“积分策略下限”填“1”复制  

  • lambda匿名函数

    packagecom.lambda.demo; publicclassdemo1{ publicstaticvoidmain(Stringarg[]){ //第一种常规 //counterc=newRobot(); //test(c); //第二种匿名类 //test(newcounter(){ // //@Override //publicintadd(intx,inty){ ////TODOAuto-generatedmethodstub //returnx+y; //} // //}); //Lambda表达式:使用Lambda必须要有接口,并且要求接口中仅有一个抽象方法; //必须有上下文环境,才能推导出lambda对应的接口 test( (x,y)->x+y ); } publicstaticvoidtest(counterc){ inta=c.add(30,40); System.out.println(a); } }复制  

  • _T(&quot;&quot;) vs L 到底用谁?L!

    一直没有注意这个,今天突然纠结起来这个问题,代码写多了,难免这两个混用。 现在是时候有个结论了:   如果你的工程是unicode编译,那么请明确的使用L! 如果是多字节(ansi),那么请使用_T("")或者更为直接的使用""!   _T()根据编译环境自动选择使用char还是wchar,但是往往你并不需要切换编译环境,即使你切换了往往也还需要做其他的一些移植工作,比如字符串计算长度,这并没有减少你的工作反而会带来不必要的困惑与风险。而且我们强调,当你不需要某些东西的时候就要明确的拒绝(如决绝默认的类的赋值拷贝)。所以如果想用unicode请在代码中明确的标识它,选择L!   如果你已经在工程中大量使用了_T(""),那么替换也很简单,在visualstudio里使用正则表达式替换就可以了,如图    

  • 减少装箱与拆箱

    在.NET中存在一个的冲突,值类型不应该被设计为多态类型,但是.NETFramework又必须把System.Object设计为引用类型,并把它作为整个对象体系的基础。针对这一冲突.NET引入了装箱与拆箱。所谓的装箱就是把值类型放在非类型化的引用对象中,使得需要使用引用类型的地方也可以使用值类型,而拆箱指的是把已经装箱的值复制出来一份。在只能使用System.Object类型或接口类型的地方使用值类型,那么就必定设计到装箱和拆箱操作。但是装箱和拆箱操作严重的影响了所开发的应用程序的性能,并且在部分情况下还会创建对象的临时拷贝,进而会造成难以查找的bug。下面我们就具体来讲解一下如何减少装箱和拆箱。 零、基本方法需要注意 装箱操作会把值类型转换为引用类型,新创建的引用对象被分配在了堆上面,里面包含了对原值的一个拷贝,而且还实现了值类型的所有接口,当有外部代码查询里面的内容时,系统会将里面的原值拷贝一份返回给调用方。这种拷贝仅仅是一次性的,下次再次查询时会重新拷贝一份里面的原值。在.NET2.0以后我们可以使用泛型类型及其方法来取代大部分装箱与拆箱操作,但是.NET中依然存在大量的方

  • 剑指offer刷题第三题

    第三题从尾到头打印链表 思路:一种是反转链表再输出,这样会改变原来结构;另一种是正向遍历,将结果存入栈中,再依次出栈即可,或者使用递归,也是同样的道理。 时间复杂度:O(n)。 代码: /** *publicclassListNode{ *intval; *ListNodenext=null; * *ListNode(intval){ *this.val=val; *} *} * */ importjava.util.ArrayList; importjava.util.Stack; publicclassSolution{ publicArrayList<Integer>printListFromTailToHead(ListNodelistNode){ Stack<Integer>stack=newStack<>(); while(listNode!=null){ stack.add(listNode.val); listNode=listNode.next; } ArrayList<Integer>result=newArra

  • C++中map,multimap和unordered_map的区别

    map、multimap容器 map的所有元素都是pair,同时拥有键值(key)和实值(value) pair的第一元素被视为键值,第二元素被视为实值 性质: 以rb_tree为底层结构,因此元素有自动排序的特性,排序的依据是key; 提供遍历操作和迭代器,正常的++ite遍历,便能得到排序状态; 无法使用map/multimap来改变元素的key,但可以用来改变元素的data。 map元素的key必须独一无二,因此insert()使用的是rb_tree的insert_unique(); multimap元素的key可以重复,因此inset()使用的是rb_tree的insert_equal(). map和multimap:底层实现都是红黑树,所以是有序的,按照key值排序,区别在于map的key值不允许重复,而miltimap的key值可以重复; unordered_map:key不能重复,无序 复制 添加一道Leetcode题 题目: 给定一个排序好的数组arr,两个整数k和x,从数组中找到最靠近x(两数之差最小)的k个数。 返回的结果必须要是按升序排好的。 复制 整数a

  • 我的第一个cpp程序笔记

    std::vector vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 为了可以使用vector,必须在你的头文件中包含下面的代码: #include <vector> vector属于std命名域的,因此需要通过命名限定,如下完成你的代码: using std::vector; vector<int>vInts;  或者连在一起,使用全名: std::vector<int>vInts; http://blog.csdn.net/armman/article/details/1501974 一:find 函数原型: size_tfind(conststring&str,size_tpos=0)const;size_tfind(constchar*s,size_tpos,size_tn)const;s

  • [A类,建模]Performance Modeling and Workflow Scheduling of Microservice-Based Applications in Clouds

    PerformanceModelingandWorkflowSchedulingofMicroservice-BasedApplicationsinClouds IEEETransactionsonParallelandDistributedSystems,2019,CCFA类 第一眼看上去差点被摘要吓到,完全是我的想法的加强升级版。读完之后想了一下,好像跟我的方向也没什么太大关系。 本文要解决的问题是所谓的MAWS-BC问题,全称Microservice-basedApplicationWorkflowSchedulingproblemforminimumend-to-enddelayunderauser-specifiedBudgetConstraint。这个问题更多和工作流相关而不是和调度算法或者资源估计相关。 2RelatedWork 本文的相关工作写得不错,其中的PerformanceModelingandPrediction这里有很多论文我可能需要去看一下。从它写的相关工作可以看到,它引用的很多相关工作都是做executiontime,也就是和本文相关的内容。 对于M

  • JS刷题_链表专题

    1从尾到头打印链表 剑指offer_06题 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 输入:head=[1,3,2] 输出:[2,3,1] 复制 /** *Definitionforsingly-linkedlist. *functionListNode(val){ *this.val=val; *this.next=null; *} */ /** *@param{ListNode}head *@return{number[]} */ varreversePrint=function(head){ constans=[]; while(head){ ans.unshift(head.val); head=head.next; } returnans; }; 复制 2反转链表 剑指offer_24题 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->NULL 复制 思路:每次都需要一个中间节点,

  • C++中 =default,=delete用法

    =default:用于显式要求编译器提供合成版本的四大函数(构造、拷贝、析构、赋值) 例如: classA{ public: A()=default; A(constA&a)=default; A&operator=(A&); ~A()=default; }复制   我们只能对具有合成版本的成员函数使用=default; =delete,用于定义删除函数,在旧标准下,我们如果希望阻止拷贝可以通过显式声明拷贝 构造函数和拷贝赋值函数为private,但新标准下允许我们定义删除函数,例如: structNoCopy{ NoCopy()=default; NoCopy(constNoCopy&)=delete;//阻止拷贝 NoCopy&operator=(constNoCopy&)=delete;//阻止赋值 ~NoCopy()=default; }复制   =delete可以告知编译器,不生成默认的这些成员。 这里有两点要注意: 1、=delete可以使用在任意的函数上(可以引导函

相关推荐

推荐阅读