每天进步一点点 -- pytorch学习:张量的介绍与创建

news2024/10/6 12:23:12

推荐查看的文档:机器视觉全栈|机器视觉教程|docsify|pytorch官方教程中文版|opencv-python官方教程中文版|open3D(0.15.1)官方教程中文版

Tensors个人理解为在GPU上工作的数组和矩阵,既然是数组和矩阵,那么里面也保存一些类型的内容,Tensor类型都包含如下,在不同的设备上运行,类型也不一样:

 初始化tensor与理解张量

(1)张量的初始化和类型

data = [[1, 2], [2, 3]]
x_data = torch.tensor(data)

#Python自带的type方法只能查看到时Tensor,无法查看到具体的tensor类型
print(type(data)) # <class 'list'>
print(type(x_data)) # <class 'torch.Tensor'>

# 仅Tensor对象有的type方法
print(x_data.type()) # torch.LongTensor,自动推断成LongTensor
#print(data.type())   # 会报错,非tensor对象,无法使用

# Tensor自带的isInstance方法即可以判断tensor,也可以判断非tensor对象
print(isinstance(x_data,torch.LongTensor))  #True
print(isinstance(data,torch.LongTensor))    #false

# 张量(向量),神经网络的b(bias)
# 直接创建
print(torch.tensor([1.1, 2.2]))  # tensor([1.1000, 2.2000])
print(torch.FloatTensor(2))  # tensor([3.5873e-43, 2.0000e+00]) 2代表向量长度为2,值为随机

data = np.ones(2)  # 从numpy创建tensor
print(data)  # [1. 1.]
data_tensor = torch.from_numpy(data)
print(data_tensor) # tensor([1., 1.], dtype=torch.float64)

(2)获取矩阵的size/dim/shape

        下面这个博客很好的介绍了dim,通过下面的案例,看一下size/dim/shape的区别pytorch中dim的含义及相关做法_取个名字真难呐的博客-CSDN博客_pytorch的dim

      【快速理解张量】通过torch.rand和举例通俗解释张量tensor_Neo很努力的博客-CSDN博客_torch.rand

x = torch.rand(2, 3, 4, 5)
print(x)
       [  # 0 维 1个元素
        [ # 1 维 2个元素
         [ # 3维 4个元素
          [0.7900, 0.3519, 0.2816, 0.3071, 0.7786], # 4维 5个元素
          [0.7649, 0.4460, 0.7359, 0.6503, 0.0960],
          [0.9055, 0.2015, 0.9697, 0.7157, 0.4706],
          [0.3957, 0.3493, 0.0409, 0.1304, 0.0248]
         ],

         [
          [0.3118, 0.0097, 0.4654, 0.0384, 0.5897],
          [0.3590, 0.9403, 0.9745, 0.6553, 0.3921],
          [0.8680, 0.9558, 0.2972, 0.4599, 0.6051],
          [0.8654, 0.5385, 0.0939, 0.6930, 0.4148]
         ],

         [
          [0.4586, 0.4279, 0.1924, 0.4297, 0.9618],
          [0.4627, 0.2492, 0.2574, 0.3442, 0.7872],
          [0.5375, 0.1170, 0.0672, 0.4515, 0.9849],
          [0.8033, 0.5539, 0.1909, 0.9696, 0.6049]
         ]
        ],


        [
         [
          [0.2846, 0.4734, 0.5478, 0.5626, 0.4522],
          [0.4783, 0.4525, 0.3988, 0.5499, 0.5277],
          [0.8804, 0.3285, 0.0620, 0.9264, 0.6451],
          [0.7034, 0.8597, 0.4179, 0.9200, 0.1851]
         ],

         [
          [0.5449, 0.5049, 0.8411, 0.7550, 0.3722],
          [0.0635, 0.7115, 0.0919, 0.0649, 0.9048],
          [0.7832, 0.5186, 0.5093, 0.0201, 0.6582],
          [0.2729, 0.4594, 0.7123, 0.5449, 0.7297]
         ],

         [
          [0.9535, 0.8421, 0.6229, 0.1735, 0.6973],
          [0.5910, 0.1106, 0.5080, 0.2239, 0.1200],
          [0.4912, 0.8273, 0.6190, 0.2189, 0.1312],
          [0.7433, 0.3109, 0.0515, 0.8466, 0.5950]
         ]
        ]
       ]
x = torch.rand(2, 3, 4, 5)
print(x)
print(x.shape) # torch.Size([2, 3, 4, 5])
print(x.shape[0]) # 2
print(x.shape[1]) # 3
print(x.shape[2]) # 4
print(x.shape[3]) # 5
print(x.size()) # torch.Size([2, 3, 4, 5])
print(x.size(0)) # 2
print(x.size(1)) # 3
print(x.size(2)) # 4
print(x.size(3)) # 5
print(x.dim()) # 4维

(3)元素总数

print(x.numel()) #120 = 2*3*4*5 返回张量元素总数,元素类型不一样,占用的内存也不一样

创建Tensor,直接参考下面的文档吧,这块已经不用单独写了

机器视觉全栈|机器视觉教程|docsify|pytorch官方教程中文版|opencv-python官方教程中文版|open3D(0.15.1)官方教程中文版

注:使用未初始化的tensor时,随机出来的值会特别大或者特别小,因此后序操作务必将未初始化的Tensor初始化

        默认使用tensor类型是floatTensor,使用torch.set_default_tensor_type(torch.DoubleTensor)修改默认类型

        建议使用rand随机初始化,最大值最小值是在[0-1]之间的

print(torch.Tensor(2, 3))
tensor([[1.1561e+19, 6.8794e+11, 2.7253e+20],
        [3.0866e+29, 1.1547e+19, 4.1988e+07]])

print(torch.FloatTensor(2, 3))
tensor([[1.1561e+19, 6.8794e+11, 2.7253e+20],
        [3.0866e+29, 1.1547e+19, 4.1988e+07]])

print(torch.IntTensor(2, 3))
tensor([[1595961953, 1394617393, 1634492771],
        [1886999666, 1595948901, 1277176882]], dtype=torch.int32)
torch.set_default_tensor_type(torch.DoubleTensor)
print(torch.tensor([2, 3]).type()) # torch.LongTensor,常用Double
data = [[1, 2], [2, 3]]
print(torch.rand(3, 3))
tensor([[0.3682, 0.3060, 0.5121],
        [0.4005, 0.3738, 0.8740],
        [0.3723, 0.0709, 0.7200]])

print(torch.rand_like(torch.tensor(data), dtype=torch.float))
tensor([[0.1732, 0.5935],
        [0.5803, 0.4345]])

print(torch.randint(1, 10, [3, 3]))  # 1是最小值,10是最大值,后面的是shape可以多个
tensor([[7, 8, 2],
        [5, 4, 8],
        [4, 5, 7]])

常用初始化

print(torch.randn(3, 3))  # 正太分布的3行3列矩阵
print(torch.arange(1, 10, 2))  # 1-10,step是2
print(torch.full([3, 3], 7))  # 3行3列,填充7
print(torch.linspace(0, 4, steps=4))  # 0-10 共4个点等分
print(torch.logspace(0, 1, steps=10))  # 10的0次方-10的一次方1 等分成10个
print(torch.ones(3, 3))
print(torch.zeros(3, 3))
print(torch.eye(3, 3))
print(torch.randperm(10)) # 0-9 共10个数,随机打散

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

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

相关文章

圣天诺加密狗(HASP)破解

圣天诺加密狗&#xff08;HASP&#xff09;破解 一、编写测试程序 dll代码&#xff1a; #include "pch.h" #include<stdlib.h> BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case D…

[附源码]计算机毕业设计和vue的茶文化交流平台的设计与实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

SVG 实现拟物态圆环进度条

前言 &#x1f44f;SVG 实现拟物态圆环进度条&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义一个圆角矩形作为父容器&#xff0c;背景色为–bg --bg: #edf1f5;<div class"container">&l…

lunar.js 基本使用学习笔记

文章目录lunar 基本使用学习笔记介绍基本使用部分文档 API 转载阳历相关的方法 APISolar 阳历阳历实例化阳历对象可以使用多种字符串输出方式&#xff1a;获取年、月、日儒略日获取星期判断是否闰年获取节日星座阳历日期推移&#xff08;可**跳过节假日、周六周日**&#xff09…

[附源码]Nodejs计算机毕业设计基于Java的医院预约挂号系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

SpringMVC的传参方式?

Request参数传递 1. Servlet传统API 2. Map/Model/ModelMap 作用域&#xff1a;request Map 是原生态的JDK类 Model/ModelMap 是Spring的类 除了来源不同&#xff0c;传递参数的功能都一致&#xff0c;用哪个都可以 Session参数传递 1. 传统方法HttpServletSession 2. …

[附源码]计算机毕业设计工程施工多层级管理架构Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python列表(list)原址反序的4种方法

Python列表(list)原址反序的方法 (本文获得CSDN质量评分【x】)【学习的细节是欢悦的历程】Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 自学并不是什么神秘的东西&a…

利用图文和代码深度解析操作系统OS内存泄漏检测实现原理与算法机制以及常见的泄露原因和解决方案

利用图文和代码深度解析操作系统OS内存泄漏检测实现原理与算法机制以及常见的泄露原因和解决方案。 计算机科学中,内存泄漏是一种资源泄漏。发生这种情况时,不再需要的内存未被释放,计算机程序以错误的方式管理内存分配。当对象存储在内存中但不能被运行代码无法访问时,也…

[附源码]Python计算机毕业设计殡仪馆管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

mha

MySQL MHA 报错处理 ​​​​​​- 走看看安装环境&#xff1a;CentOS 6.5 MySQL 5.7.22 MHA 0.56 1、找不到mysql 命令 Sat Mar 23 07:17:50 2019 - [info] Connecting tohttp://t.zoukankan.com/102x-p-10583959.html 实验 详解MHA搭建过程中的遇到的各种问题_时代广场的蟋蟀…

竞赛题-6257. 删除每行中的最大值

题目&#xff1a; 给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元素。如果存在多个这样的值&#xff0c;删除其中任何一个。将删除元素中的最大值与答案相加。 注意 每…

[附源码]Python计算机毕业设计大型零售电商平台——购物车管理子系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

[附源码]Python计算机毕业设计SSM基于的砂石矿山管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[Linux学习笔记] 浅谈信号(文章含不少学习资源)

百金买骏马,千金买美人,万金买爵禄,何处买青春? 目录 信号的概念 信号的种类: kill -l 命令可以查看信号列表 man 7 signal 查看信号详细内容 信号的产生 补充知识 Core Dump(转储内存) 补充知识:与信号相关的数据结构 对于不可靠信号 接收信号 信号的处理: 阻塞信号集: 未决信…

qt之QCustomPlot动态更改曲线数量,单光标查看数值,选中曲线单独显示查看趋势

一、前言 本博客介绍如何由浅入深的使用一些qcustomplot的用法&#xff0c;对于开源的qcustomplot来说&#xff0c;功能实在实在是太强大了&#xff0c;如果只用于显示简单的曲线真是太浪费前人的心血了&#xff0c;本文就来介绍一些好玩的用法&#xff0c;可以实现的功能有&am…

基于javaweb的学籍管理系统计算机专业毕业论文java毕业设计开题报告

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 计算机毕业设计java毕设之基于javaweb的学籍管理系统-IT实战营_哔哩哔哩_bilibili项目资料网址: http://itzygogogo.com软件下载地址:http://itzy…

论文笔记:Template-Based Named Entity Recognition Using BART

论文来源&#xff1a;ACL 2021 Finding 论文链接&#xff1a;https://aclanthology.org/2021.findings-acl.161.pdf 论文代码&#xff1a;GitHub - Nealcly/templateNER: Source code for template-based NER 笔记仅供参考&#xff0c;撰写不易&#xff0c;请勿恶意转载抄袭…

[附源码]Python计算机毕业设计大学生扶贫创业平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

[附源码]Python计算机毕业设计SSM基于的企业人事管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…