pytorch基础【3】torch运算

文章目录

  • torch运算
      • 基本运算
      • 形状操作
        • 自动调整size (参数-1)
      • 数学运算
      • 逻辑运算
      • 常见的高级操作
      • 随机数生成

torch运算

基本运算

  1. 创建张量:

    import torch# 直接从列表或数组创建张量
    x = torch.tensor([1, 2, 3])
    

    创建特定值的张量:

    # 全零张量
    zeros = torch.zeros(3, 3)# 全一张量
    ones = torch.ones(3, 3)# 单位张量(对角线为1,其余为0)
    eye = torch.eye(3)# 随机张量
    rand = torch.rand(3, 3)# 从均值为0,标准差为1的正态分布中抽取的随机张量
    randn = torch.randn(3, 3)
    

    创建等差数列张量:

    # 从0到10(不包括10)的等差数列,步长为2
    arange = torch.arange(0, 10, 2)
    

    创建特定间隔的数列张量:

    # 从0到10均匀分布的5个数
    linspace = torch.linspace(0, 10, 5)
    
  2. 加法和减法:

    # 加法
    z = x + y  # torch.add(x, y)
    print(z)  # 输出: tensor([5, 7, 9])# 减法
    z = x - y  # torch.sub(x, y)
    print(z)  # 输出: tensor([-3, -3, -3])
    
  3. 乘法和除法:

    # 元素乘法
    z = x * y  # torch.mul(x, y)
    print(z)  # 输出: tensor([ 4, 10, 18])# 元素除法
    z = x / y  # torch.div(x, y)
    print(z)  # 输出: tensor([0.2500, 0.4000, 0.5000])
    
  4. 矩阵乘法:

    a = torch.tensor([[1, 2], [3, 4]])
    b = torch.tensor([[5, 6], [7, 8]])# 矩阵乘法
    z = torch.matmul(a, b)  # 或者 a @ b
    print(z)  # 输出: tensor([[19, 22], [43, 50]])
    

形状操作

  1. 改变形状:view()

    a = torch.tensor([[1, 2, 3], [4, 5, 6]])# 改变形状
    b = a.view(3, 2)
    print(b)
    # 输出:
    # tensor([[1, 2],
    #         [3, 4],
    #         [5, 6]])
    
    自动调整size (参数-1)

    view中一个参数指定为-1,代表自动调整这个维度上的元素个数,以保证元素的总数不变。

    import torch
    x1 = torch.arange(0,16)
    print(x1)
    #a1: tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
    ------------------------------------------------------------------------------------------------------   
    x2 = x1.view(-1, 16)
    x3 = x1.view(-1, 8)
    x4 = x1.view(-1, 4)
    x5 = x1.view(-1, 2)print(x2)
    print(x3)
    print(x4)
    print(x5)x2: tensor([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]])
    x3: tensor([[ 0,  1,  2,  3,  4,  5,  6,  7],[ 8,  9, 10, 11, 12, 13, 14, 15]])
    x4: tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11],[12, 13, 14, 15]])
    x5: tensor([[ 0,  1],[ 2,  3],[ 4,  5],[ 6,  7],[ 8,  9],[10, 11],[12, 13],[14, 15]])
    
  2. 拼接:

    x = torch.tensor([[1, 2], [3, 4]])
    y = torch.tensor([[5, 6], [7, 8]])# 沿着0轴拼接(垂直拼接)
    z = torch.cat((x, y), dim=0)
    print(z)
    # 输出:
    # tensor([[1, 2],
    #         [3, 4],
    #         [5, 6],
    #         [7, 8]])# 沿着1轴拼接(水平拼接)
    z = torch.cat((x, y), dim=1)
    print(z)
    # 输出:
    # tensor([[1, 2, 5, 6],
    #         [3, 4, 7, 8]])
    
  3. 切片:

    a = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 切片
    b = a[:, 1]  # 第二列
    print(b)  # 输出: tensor([2, 5, 8])
    

数学运算

  1. 求和:sum()

    x = torch.tensor([1, 2, 3, 4])# 求和
    sum_x = torch.sum(x)
    print(sum_x)  # 输出: tensor(10)
    
  2. 均值:mean()

    # 均值
    mean_x = torch.mean(x.float())  # 转换为浮点数类型
    print(mean_x)  # 输出: tensor(2.5000)
    
  3. 最大值和最小值:max(),min()

    # 最大值
    max_x = torch.max(x)
    print(max_x)  # 输出: tensor(4)# 最小值
    min_x = torch.min(x)
    print(min_x)  # 输出: tensor(1)
    

逻辑运算

  1. 比较运算:

    x = torch.tensor([1, 2, 3])
    y = torch.tensor([2, 2, 2])# 大于
    print(x > y)  # 输出: tensor([False, False,  True])# 小于
    print(x < y)  # 输出: tensor([ True, False, False])
    
  2. 逻辑与、或:

    a = torch.tensor([True, False, True])
    b = torch.tensor([False, False, True])# 逻辑与
    c = torch.logical_and(a, b)
    print(c)  # 输出: tensor([False, False,  True])# 逻辑或
    c = torch.logical_or(a, b)
    print(c)  # 输出: tensor([ True, False,  True])
    

常见的高级操作

  1. 广播机制:

    a = torch.tensor([1, 2, 3])
    b = torch.tensor([[1], [2], [3]])# 广播机制
    c = a + b
    print(c)
    # 输出:
    # tensor([[2, 3, 4],
    #         [3, 4, 5],
    #         [4, 5, 6]])
    
  2. 自动梯度计算:

    x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)# 前向传播
    y = x + 2
    z = y * y * 2
    out = z.mean()# 反向传播
    out.backward()
    print(x.grad)  # 输出: tensor([4.6667, 6.0000, 7.3333])
    

随机数生成

  1. 从标准正态分布中生成随机张量:

    randn_tensor = torch.randn(3, 3) # 生成一个形状为 (3, 3) 的随机张量,服从标准正态分布
    print(randn_tensor)
    #tensor([[ 1.2335, -0.3941,  0.8990],
    #        [ 0.0470, -1.2671,  0.3248],
    #       [-0.4062, -0.6862,  0.1314]])
    
  2. 生成随机排列:

    randperm_tensor = torch.randperm(10)  # 生成一个从 0 到 9 的随机排列
    print(randperm_tensor)
    #tensor([2, 0, 5, 1, 8, 6, 3, 4, 7, 9])
    
  3. 生成等差数列张量:

    arange_tensor = torch.arange(0, 10, 2) # 生成从 0 到 10(不包括 10)的等差数列,步长为 2
    print(arange_tensor)
    #tensor([0, 2, 4, 6, 8])
    

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

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

相关文章

python调用SDK的问题

问题&#xff1a;Could not find module MvCameraControl.dll 原因&#xff1a;识别环境变量runtime异常 解决&#xff1a;指定具体绝对地址即可。MvCameraControl.dll的位置C:\Program Files (x86)\Common Files\MVS\Runtime\Win64_x64 MvCamCtrldll WinDLL("MvCamer…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 石碑文字组合(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

Rust语言-线程间的消息传递mpsc::Sender

文章目录 Rust语言-线程间的消息传递mpsc::Sender标准库std::sync::mpsc消息通道mpsc::Sender实战举例 Rust语言-线程间的消息传递mpsc::Sender 标准库std::sync::mpsc 官方文档&#xff1a;https://rustwiki.org/zh-CN/std/sync/mpsc/index.html 参考URL: https://course.rs…

[C++][数据结构][哈希表]详细讲解

目录 1.哈希概念2.哈希冲突3.哈希函数4.哈希冲突解决5.闭散列1.何时扩容&#xff1f;如何扩容&#xff1f;2.线性探测3.二次探测 6.开散列(哈希桶)1.概念2.开散列增容3.开散列思考只能存储key为整形的元素&#xff0c;其他类型怎么解决&#xff1f;除留余数法&#xff0c;最好模…

一季度直播6000场,同比增长60%,遥望科技透露重要信息

6月17日&#xff0c;经由深圳证券交易所许可&#xff0c;遥望科技&#xff08;股票代码&#xff1a;002291&#xff09;正式对《年报问询函》进行公开回复&#xff0c;就经营的多个维度做出解释和回应。 在回复中&#xff0c;遥望科技预测2024年毛利率为14.4%&#xff0c;相比…

[absl_py][python]absl_py所有whl文件下载地址汇总

absl_py是Google开发并维护的一个Python软件包&#xff0c;它是C Abseil库的Python版本。该库旨在提供一系列高质量的、跨平台的实用工具&#xff0c;帮助开发者构建大规模软件项目。以下是关于absl_py的详细介绍&#xff1a; 功能概述&#xff1a; 字符串处理&#xff1a;abs…

conda在不同服务器上迁移环境的方法

conda在不同服务器上迁移环境的方法 conda迁移环境&#xff08;若服务器cuda配置相同&#xff09;我的迁移方法&#xff1a;可能要用到的压缩命令和解压命令&#xff1a; 若服务器cuda版本等配置不同 conda迁移环境&#xff08;若服务器cuda配置相同&#xff09; 我的迁移方法…

【CSS in Depth2精译】1.1.1 样式表来源

您添加到网页的样式表并非浏览器呈现样式的唯一来源。样式表有三种不同的类型或来源。您添加到页面的样式称为 作者样式&#xff08;author styles&#xff09;&#xff1b;此外还有 用户样式&#xff08;user styles&#xff09;&#xff0c;即终端用户设置的自定义样式&#…

configure: error: library ‘crypto‘ is required for OpenSSL

1、执行命令&#xff1a;./configure --prefix/opt/app/postgresql --with-openssl 报错&#xff1a; 2、解决办法 执行命令&#xff1a;yum install openssl-devel 重新执行 ./configure --prefix/opt/app/postgresql --with-openssl

Ubuntu服务器的GitLab部署

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

充电学习—3、Uevent机制和其在android层的实现

sysfs 是 Linux userspace 和 kernel 进行交互的一个媒介。通过 sysfs&#xff0c;userspace 可以主动去读写 kernel 的一些数据&#xff0c;同样的&#xff0c; kernel 也可以主动将一些“变化”告知给 userspace。也就是说&#xff0c;通过sysfs&#xff0c;userspace 和 ker…

探索序列到序列模型:了解编码器和解码器架构的强大功能

目录 一、说明 二、什么是顺序数据&#xff1f; 三、编码器解码器架构的高级概述&#xff1a; 3.1 编码器和解码器架构的简要概述&#xff1a; 3.2 训练机制&#xff1a;编码器和解码器架构中的前向和后向传播&#xff1a; 四、编码器解码器架构的改进&#xff1a; 4.1.…

一道session文件包含题

目录 环境说明 session文件包含getshell 审计源码 session包含 base64在session中的解码分析 题目&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Q0BN08b8gWiVE4tOnirpTA?pwdcate 提取码&#xff1a;cate 环境说明 这里我用的是linux&#xff0c;也可以用p…

【论文阅读】-- DeepVisualInsight: 深度分类训练时空因果关系的时间旅行可视化

中文标题 摘要引言动机举例相关工作时间旅行可视化的属性符号定义邻居保护属性边界距离保持属性逆投影保持属性暂时保存属性 方法 δ \delta δ-边界估计(k)-BAVR综合体建设逆投影保持时间连续性 评估案例分析结论参考文献 摘要 了解深度学习模型的预测在训练过程中是如何形成…

[WTL/Win32]_[中级]_[MVP架构在实际项目中应用的地方]

场景 在开发Windows和macOS的界面软件时&#xff0c;Windows用的是WTL/Win32技术&#xff0c;而macOS用的是Cocoa技术。而两种技术的本地语言一个主打是C,另一个却是Object-c。界面软件的源码随着项目功能增多而增多&#xff0c;这就会给同步Windows和macOS的功能造成很大负担…

Linux-远程访问及控制

一、SSH远程管理 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令。与早期的 Telent&#xff08;远程登录…

【Spine学习11】之 战士攻击动作 思路总结(手动调整贝塞尔曲线实现前快后慢)

拿到一份psd文件先观察检查一下图片顺序有没有问题&#xff0c; 重点看一下人物的腿部分层&#xff0c;&#xff08;如果是大小腿分开画的就网格可打可不打&#xff0c;如果是连在一起画的&#xff0c;那必须打网格&#xff09; 拿着剑的时候剑和手的层级有没有错位&#xff0c…

js下拉框选择筛选数据数据联动

在JavaScript中&#xff0c;可以通过事件监听和DOM操作来实现下拉框选择筛选数据的联动。 首先&#xff0c;在HTML中创建两个下拉框&#xff0c;分别为"select1"和"select2"&#xff1a; <select id"select1"><option value"opt…

Android SDK是什么?

在深入探讨Android SDK之前&#xff0c;我们首先需要明确其定义和重要性。Android SDK&#xff0c;全称Android Software Development Kit&#xff0c;是Android应用开发的核心工具集。它提供了一系列开发Android应用所需的工具、库和文档&#xff0c;使开发者能够利用这些资源…

P3391 【模板】文艺平衡树(@无旋Treap,* *)

【模板】文艺平衡树 - 洛谷 题目描述 您需要写一种数据结构&#xff08;可参考题目标题&#xff09;&#xff0c;来维护一个有序数列。 其中需要提供以下操作&#xff1a;翻转一个区间&#xff0c;例如原有序序列是 5 4 3 2 1&#xff0c;翻转区间是 [2,4] 的话&#xff0c;…