Pytorch-----(6)
一 、问题
如何计算基于不同变量的操作如矩阵乘法。
二、具体实现
0.4版本以前,张量是包裹在变量之中的,后者有三个属性grad、volatile和 requires_grad属性。(grad 就是梯度属性,requires_grad属性就是 是否需要存储梯度,volatile=True是Variable的另一个重要的标识,它能够将所有依赖它的节点全部设为volatile=True,其优先级比requires_grad=True高。因而volatile=True的节点不会求导,即使requires_grad=True,也不会进行反向传播,对于不需要反向传播的情景(inference,测试推断)(从0.4起, Variable 正式合并入Tensor, Variable 本来实现的自动微分功能,Tensor就能支持。读者还是可以使用Variable(tensor), 但是这个操作其实什么都没做。建议读者以后直接使用tensor。)
代码:
z = Variable(torch.Tensor(4, 4).uniform_(-5, 5)) #生成一个4×4 的均匀分布产生的张量;print(z)tensor([[-0.3071, -3.6691, -2.8417, -1.1818],
[-1.4654, -0.4344, -2.0130, -2.3842],
[ 1.3962, 1.4962, -2.0996, 1.8881],
[-1.9797, 0.2337, -1.0308, 0.1266]])print('Requires Gradient : %s ' % (z.requires_grad))
print('Volatile : %s ' % (z.volatile))
print('Gradient : %s ' % (z.grad))
print(z.data)Requires Gradient : False
Volatile : False
Gradient : None
tensor([[-0.3071, -3.6691, -2.8417, -1.1818],
[-1.4654, -0.4344, -2.0130, -2.3842],
[ 1.3962, 1.4962, -2.0996, 1.8881],
[-1.9797, 0.2337, -1.0308, 0.1266]])
三、问题2
如何基于变量计算如矩阵—向量、矩阵—矩阵以及向量—向量计算呢?
四、实现方式
首要的条件是张量的长度或形状必须匹配,才能进行矩阵基础的运算;标量的张量定义就是一个数字,1D张量就是向量,2D张量就是矩阵。n维度矩阵时,就可以归纳为张量。在pytorch中进行代数计算时,矩阵和向量或标量的维度必须匹配。
#张量操作
mat1 = torch.FloatTensor(4,4).uniform_(0,1)
mat1
tensor([[0.9002, 0.9188, 0.1386, 0.3701], [0.1947, 0.2268, 0.9587, 0.2615], [0.7256, 0.7673, 0.5667, 0.1863], [0.4642, 0.4016, 0.9981, 0.8452]])
mat2 = torch.FloatTensor(4,4).uniform_(0,1)
mat2
tensor([[0.4962, 0.4947, 0.8344, 0.6721], [0.1182, 0.5997, 0.8990, 0.8252], [0.1466, 0.1093, 0.8135, 0.9047], [0.2486, 0.1873, 0.6159, 0.2471]])
vec1 = torch.FloatTensor(4).uniform_(0,1)
vec1
tensor([0.7582, 0.6879, 0.8949, 0.3995])# 标量加法
mat1 + 10.5
tensor([[11.4002, 11.4188, 10.6386, 10.8701], [10.6947, 10.7268, 11.4587, 10.7615], [11.2256, 11.2673, 11.0667, 10.6863], [10.9642, 10.9016, 11.4981, 11.3452]])# 标量减法
mat2 - 0.20tensor([[ 0.2962, 0.2947, 0.6344, 0.4721], [-0.0818, 0.3997, 0.6990, 0.6252], [-0.0534, -0.0907, 0.6135, 0.7047], [ 0.0486, -0.0127, 0.4159, 0.0471]])# 向量和矩阵加法mat1 + vec1
tensor([[1.6584, 1.6067, 1.0335, 0.7695], [0.9530, 0.9147, 1.8537, 0.6610], [1.4839, 1.4553, 1.4616, 0.5858], [1.2224, 1.0895, 1.8931, 1.2446]])mat2 + vec1
tensor([[1.2544, 1.1826, 1.7293, 1.0716], [0.8764, 1.2876, 1.7939, 1.2247], [0.9049, 0.7972, 1.7084, 1.3042], [1.0068, 0.8752, 1.5108, 0.6466]])# 如果矩阵维度不同 则不适合矩阵加法和乘法。如果矩阵维度一样,则可以相乘。
“@表示常规的数学上定义的矩阵相乘;*表示两个矩阵对应位置处的两个元素相乘。”
In the following script, the matrix addition throws an error when you multiply similar dimensions—mat1 with mat1. You get relevant results.# matrix-matrix addition
mat1 + mat2
tensor([[1.3963, 1.4135, 0.9730, 1.0422], [0.3129, 0.8265, 1.8577, 1.0867], [0.8722, 0.8766, 1.3802, 1.0910], [0.7127, 0.5888, 1.6141, 1.0923]])
mat1 * mat1
tensor([[0.8103, 0.8442, 0.0192, 0.1370], [0.0379, 0.0514, 0.9192, 0.0684], [0.5265, 0.5888, 0.3211, 0.0347], [0.2155, 0.1613, 0.9963, 0.7143]])
相关文章:
Pytorch-----(6)
一 、问题 如何计算基于不同变量的操作如矩阵乘法。 二、具体实现 0.4版本以前,张量是包裹在变量之中的,后者有三个属性grad、volatile和 requires_grad属性。(grad 就是梯度属性,requires_grad属性就是 是否需要存储梯度&#x…...
leetcode hot100 第三题:最长连续序列(Java)
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出:4 解…...

利用Jaspar进行转录因子结合位点预测
前期我们介绍了如何进行ChIP-qPCR验证,里面提到了一个比较重要的因素——扩增范围的选择及引物的设计。相比双荧光素酶、酵母单杂-点对点验证等允许完整启动子验证的实验,ChIP-qPCR要求单次验证的范围尽量控制在150-200bp内。但一个基因的启动子一般有2-…...
Ubuntu添加系统字体
(2024.6.30) 系统字体保存路径在/usr/share/fonts下,如果此目录下缺少字体,则使用其他可视化api(如Python的pygame库)的默认配置时可能会出现乱码问题。 往Ubuntu中添加字体的方法 方法一:手…...
深度学习相关概念及术语总结2
目录 76.AUC77.DBSCAN聚类78.贝叶斯个性化排序79.BPRBandit算法 76.AUC AUC(Area Under the Curve)是一种常用的评价指标,用于衡量分类模型的性能。AUC值代表了模型在不同阈值下的真阳性率(True Positive Rate)和假阳…...

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真
微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题,本文做了四个仿真,分别为:永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…...

windows环境下创建python虚拟环境
windows环境下创建python虚拟环境 使用virtualenv库创建虚拟环境,可使不同的项目处于不同的环境中 安装方法: pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple pip install virtualenvwrapper-win -i https://pypi.tuna.tsinghua…...
Fragment切换没变化?解决办法在这里
大家好,今天跟大家分享下如何避免fragment切换失败。方法其实很简单,只要在onCreate方法中初始化一个默认的fragment即可。 //开始事务FragmentTransaction transaction getActivity().getSupportFragmentManager().beginTransaction();transaction.rep…...

Linux系统防火墙iptables(下)
备份与还原iptables规则设置 1、yum -y install iptables iptables-services 安装iptables软件包 2、systemctl start iptables.service 开启服务 3、systemctl enable iptables.service 开机自启 我们对iptables命令行中的设置,都是临时设置,只要遇到服…...

你需要精益管理咨询公司的N+1个理由
近年来,精益管理作为一种被全球众多知名企业验证过的成功管理模式,越来越受到企业的青睐。但是,为何在实施精益管理的过程中,众多企业纷纷选择请咨询公司来协助呢?今天,我们就来一起揭秘这背后的原因。 1. …...
[机器学习]-3 万字话清从传统神经网络到深度学习
神经网络(Neural Networks, NNs)是机器学习的一种重要方法,灵感来源于生物神经系统,由大量互联的节点(称为神经元或单元)组成,通过调整这些节点间的连接权重来学习和表示复杂的非线性关系。传统…...

网络安全等级保护2.0(等保2.0)全面解析
一、等保2.0的定义和背景 网络安全等级保护2.0(简称“等保2.0”)是我国网络安全领域的基本制度、基本策略、基本方法。它是在《中华人民共和国网络安全法》指导下,对我国网络安全等级保护制度进行的重大升级。等保2.0的发布与实施,…...

用Lobe Chat部署本地化, 搭建AI聊天机器人
Lobe Chat可以关联多个模型,可以调用外部OpenAI, gemini,通义千问等, 也可以关联内部本地大模型Ollama, 可以当作聊天对话框消息框来集成使用 安装方法参考: https://github.com/lobehub/lobe-chat https://lobehub.com/zh/docs/self-hosting/platform/…...

基于ARM的通用的Qt移植思路
文章目录 实验环境介绍一、确认Qt版本二、确认交叉编译工具链三、配置Qt3.1、修改qmake.conf3.2、创建autoConfig.sh配置文件 四、编译安装Qt五、移植Qt安装目录六、配置Qt creator6.1、配置qmake6.2、配置GCC编译器6.3、配置G编译器6.4、配置编译器套件6.5、创建应用 七、总结…...

IT专业入门,高考假期预习指南
七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。 一、基础课程预习指南 IT专业是一个广泛的领域,涵盖了从软件开…...
芯片详解——AD7606C
芯片详解——AD7606C AD7607C 是一款由 Analog Devices(模拟器件公司)生产的 6 通道同步采样模数转换器(ADC),适用于高速数据采集系统。 工作原理 AD7607C 的工作原理主要包括以下几个步骤: 模拟信号输入:AD7607C 有六个模拟输入通道,可以同时进行采样。这些模拟信号…...

IDEA 编译单个Java文件
文章目录 一、class文件的生成位置二、编译单个文件编译项目报错Error:java: 无效的源发行版: 8 一、class文件的生成位置 file->project structure->Modules 二、编译单个文件 选中文件,点击recompile 编译项目报错 Error:java: 无效的源发行版: 8 Fi…...
人工智能业务分析
人工智能业务分析的组成图 #mermaid-svg-SKV0WrbMSANzQz4U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SKV0WrbMSANzQz4U .error-icon{fill:#552222;}#mermaid-svg-SKV0WrbMSANzQz4U .error-text{fill:#552222;s…...
随机文本生成器
目录 开头程序程序的流程图程序打印的效果(不必细看,因为字符太多)例1例2例3 结尾 开头 大家好,我叫这是我58。看!这下面有一个程序。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <random> #includ…...
java中输入输出流的继承关系
在 Java 中,输入输出流的继承关系主要围绕两个抽象基类展开:字节流基类 InputStream 和 OutputStream,以及字符流基类 Reader 和 Writer。这些类形成了 Java I/O 系统的基础,提供了丰富的子类以适应不同的输入输出需求。 字节流 字节流用于处理原始的二进制数据。 Input…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...