PyTorch基本使用-张量的基本运算及函数计算

文章目录

    • 1. 张量数值计算
      • 1. 1 张量基本运算
      • 1.2 点乘运算
      • 1.3 矩阵运算
    • 2. 张量运算函数

1. 张量数值计算

1. 1 张量基本运算

加减乘除取负号:

addsubmuldivneg

add_ sub_、 mul_ div_neg_ (其中带下划线的版本会修改原数据)

data = torch.randint(0,10,[2,3])
print(data)
# 不修改原数据 相当于 data = data + 5
new_data=data.add(5)
print(new_data)
# 修改原数据 相当于 data += 3
data.add_(3)
print(data)

输出结果:

tensor([[8, 8, 4],[4, 1, 0]])
tensor([[13, 13,  9],[ 9,  6,  5]])
tensor([[11, 11,  7],[ 7,  4,  3]])

1.2 点乘运算

点乘运算是指两个同维矩阵相同位置的元素相乘,使用 mul或 运算发 *实现。

data1 = torch.randint(0,10,[2,3])
data2 = torch.randint(0,10,[2,3])
data3 = data1.mul(data2)
data4 = data1*data2
print(data1)
print(data2)
print(data3)
print(data4)

输出结果:

tensor([[4, 3, 8],[7, 4, 6]])
tensor([[0, 1, 9],[9, 8, 0]])
tensor([[ 0,  3, 72],[63, 32,  0]])
tensor([[ 0,  3, 72],[63, 32,  0]])

1.3 矩阵运算

矩阵乘法运算要求第一个矩阵 shape: (n, m),第二个矩阵 shape: (m, p), 两个矩阵点积运算 shape 为: (n, p)。

  1. 运算符 @ 用于进行两个矩阵的乘积运算
  2. torch.matmul对进行乘积运算的两矩阵形状没有限定.对数输入的 shape 不同的张量, 对应的最后几个维度必须符合
    矩阵运算规则
data1 = torch.tensor([[1, 2], [3, 4], [5, 6]])
data2 = torch.tensor([[5, 6], [7, 8]])
print('data1--->',data1)
print('data2--->',data2)
data3 = data1 @ data2
print('data3--->',data3)
data4 = torch.matmul(data1, data2)
print('data4--->',data4)

输出结果:

data1---> tensor([[1, 2],[3, 4],[5, 6]])
data2---> tensor([[5, 6],[7, 8]])
data3---> tensor([[19, 22],[43, 50],[67, 78]])
data4---> tensor([[19, 22],[43, 50],[67, 78]])

2. 张量运算函数

PyTorch 为每个张量封装了很多实用的计算函数:

  • 均值
  • 平方根
  • 求和
  • 指数计算
  • 对数计算等等
data = torch.randint(1,10,[2,3],dtype=torch.float64)
print('data--->',data)
# 1. 计算均值
# 注意:tensor 必须为 Float 或者 Double 类型
print('均值:',data.mean())
print('列计算均值:',data.mean(dim=0))
print('行计算均值:',data.mean(dim=0))
# 2. 计算总和
print('求和:',data.sum())
print('列求和:',data.sum(dim=0))
print("行求和:",data.sum(dim=1))
# 3. 计算平方
print('平方:',torch.pow(data,2))
# 4. 计算平方根
print('平方根:',data.sqrt())
# 5. 指数计算,e ^ n 次方
print('e ^ n 次方:',data.exp())
# 6. 对数计算
print('e为底:',data.log())
print('2为底:',data.log2())
print('10为底:',data.log10())

输出结果:

data---> tensor([[8., 6., 7.],[9., 3., 7.]], dtype=torch.float64)
均值: tensor(6.6667, dtype=torch.float64)
列计算均值: tensor([8.5000, 4.5000, 7.0000], dtype=torch.float64)
行计算均值: tensor([8.5000, 4.5000, 7.0000], dtype=torch.float64)
求和: tensor(40., dtype=torch.float64)
列求和: tensor([17.,  9., 14.], dtype=torch.float64)
行求和: tensor([21., 19.], dtype=torch.float64)
平方: tensor([[64., 36., 49.],[81.,  9., 49.]], dtype=torch.float64)
平方根: tensor([[2.8284, 2.4495, 2.6458],[3.0000, 1.7321, 2.6458]], dtype=torch.float64)
e ^ n 次方: tensor([[2980.9580,  403.4288, 1096.6332],[8103.0839,   20.0855, 1096.6332]], dtype=torch.float64)
e为底: tensor([[2.0794, 1.7918, 1.9459],[2.1972, 1.0986, 1.9459]], dtype=torch.float64)
2为底: tensor([[3.0000, 2.5850, 2.8074],[3.1699, 1.5850, 2.8074]], dtype=torch.float64)
10为底: tensor([[0.9031, 0.7782, 0.8451],[0.9542, 0.4771, 0.8451]], dtype=torch.float64)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 Python 实现 UDP 通信?

1. UDP通信基础 UDP(用户数据报协议)是一种无连接的传输层协议,它提供了一种不可靠的数据传输服务,但具有较低的延迟和较小的开销。在Python中,可以使用socket模块来实现UDP通信。 2. 实现UDP服务端 import socketd…

【保姆级】Mac如何安装+切换Java环境

本文从如何下载不同版本的JDK,到如何丝滑的切换JDK,以及常见坑坑的处理方法,应有尽有,各位看官走过路过不要错过~~~ 下载⏬ 首先上官网: https://www.oracle.com/ 打不开的话可以使用下面👇这个中文的 https://www.oracle.com/cn/java/technologies/downloads/a…

Android -- WebView之loadData加载html字符串显示网页

目录 前言1. loadUrl 加载网页地址2. loadData 加载Html字符来显示网页3. loadDataWithBaseURL4. 总结 前言 最近在给一个老项目做64位so文件的适配,当应用发布到应用市场上后,用户反馈64位手机上的网页加载不出内容,但32位的手机上是正常…

WebSocket解读

WebSocket是一种网络通信协议,它允许在单个TCP连接上进行全双工通信,即服务器和客户端可以同时发送和接收数据。这种协议非常适合需要实时数据交换的应用场景,如在线聊天、实时数据更新、协同办公等。 WebSocket的工作原理 握手阶段&#x…

Docker在Ubuntu和CentOS系统下的安装

目录 1. 各版本平台支持情况2. 在Ubuntu系统下安装docker3. 常见报错4. Docker的镜像源修改5. Docker目录修改6. 在CentOS系统下安装docker 1. 各版本平台支持情况 (1)平台支持情况如下: Server 版本 桌面版本 2. 在Ubuntu系统下安装docker…

Ansible-Playbook基础学习

一.Ansible Playbook基本介绍 1.Playbook 介绍 Ansible Playbook 是 Ansible 的核心组件之一,它是一个用于配置管理、应用部署和任务自动化的文本文件,使用 YML格式编写。YML 的语法简洁明了,易于阅读和编写,使得用户可以方便地…

基于PHP课堂签到系统的设计与实现

摘 要 随着教育业的迅速发展和学生人数的不断增加,导致在班级登记制度中传统的“点到”方式不能适应学校的实际需要。从而需要设计一个好的课堂签到系统将会对课堂签到管理工作带来事半功倍的效果。文章着重介绍了基于实践应用的班级签到系统的开发流程&#xff0c…

MTK android12 user版本默认开启root权限,添加su

1、需求 : 客户要求在user版中默认开启root权限,添加su。2、实现: From cc066de135c93975d4a50b71c63447c50065195b Mon Sep 17 00:00:00 2001 From: ***** Date: Wed, 11 Dec 2024 16:33:36 0800 Subject: [PATCH] ?UTF-8?q?[root]user…

openjdk17 jvm加载class文件,解析字段和方法,C++源码展示

##构造方法ClassFileParser,parse_stream解析文件流 ClassFileParser::ClassFileParser(ClassFileStream* stream,Symbol* name,ClassLoaderData* loader_data,const ClassLoadInfo* cl_info,Publicity pub_level,TRAPS) :_stream(stream),_class_name(NULL),_load…

蓝桥杯我来了

最近蓝桥杯报名快要截止了,我们学校开始收费了,我们学校没有校赛,一旦报名缴费就是省赛,虽然一早就在官网上报名了,但是一直在纠结,和家人沟通,和朋友交流,其实只是想寻求外界的支持…

Nginx 缓存那些事儿:原理、配置和最佳实践

Nginx 缓存那些事儿:原理、配置和最佳实践 在当今的互联网世界,网站的访问量和数据处理量不断攀升,如何确保用户能够快速、稳定地访问我们的网站,已经成为每个运维工程师面临的挑战。幸运的是,Nginx 作为一款高性能的…

【智体OS】官方上新发布智体电视:基于rtpc和rttouchpad实现智体电视的手机遥控-可安装任意PC应用用于智体电视

【智体OS】官方上新发布智体电视:基于rtpc和rttouchpad实现智体电视的手机遥控-可安装任意PC应用用于智体电视 dtns.network是一款主要由JavaScript编写的智体世界引擎(内嵌了three.js编辑器的定制版-支持以第一视角浏览3D场馆),…

ES(elasticsearch)整合Spring boot使用实例

1.1通过docker安装es详细教程参考 docker部署elasticsearch(内涵集群部署的compose文件)-CSDN博客 2.1创建MySQL数据库,通过sql命令进行表的创建与数据的写入(sql命令如下) /*Navicat Premium Data TransferSource Server : localSo…

GitHub使用

太久不用GitHub发现自己又有些不会了,突发奇想为何不把每次看到的有指导意义的博客收录一下以便下次查阅呢 如何上传文件夹到GitHub上(配图详解)?_github上傳資料夾-CSDN博客 github上如何删除自己的仓库_github删除仓库-CSDN博…

单独测试 pyautogui 的鼠标点击功能,确保它能够在当前环境中正常工作,鼠标自动点击的录制回放功能

感谢您提供的详细日志信息。根据您的反馈,问题可能出在 pyautogui 没有正确获取鼠标焦点或无法在预期的位置执行点击操作。我们将采取以下步骤来进一步诊断和解决这个问题: 1. **确保 pyautogui 正确执行点击操作**: - 我们将添加更多的调…

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

coco数据集转换SAM2格式

coco是一个大json汇总了所有train的标签 SAM2训练一张图对应一个json标签 import json import os from pycocotools import mask as mask_utils import numpy as np import cv2def poly2mask(points, width, height):points_array np.array(points, dtypenp.int32).reshape(-…

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的,该函数需要接收一个对象作为参数,该对象可添加 template、data、methods 等属性。 template …

LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Ollama与OpenWebUI

背景 你是不是也有私有化部署大模型的需求?如今有了 Ollama , HuggingFace , ModelScope 等开源平台,我们可以非常方便地搭建一个属于自己的大模型,如果网速给力,真是分分钟~~。简单起见,这篇文…

使用字典进行动态编程

在你的程序中,你想要执行各种计算,例如计算卫星的总数。 此外,当你进行更高级的编程时,你可能会发现你需要从文件或数据库中加载此类信息,而不是直接编码到 Python 中。 为了帮助支持这些场景,Python 使你…