Pytorch:Torch数据类型学习整理与记录

news2024/11/15 18:03:57

文章目录

  • 前言
  • 一、Tensor数据类型简介
    • Tensor数据类型是什么?
    • Tensor数据类型有哪些
        • 指定调用的API生成相关数据类型
        • dtype属性指定Tensor内置的简单数据类型
  • 二、Tensor数据类型的基本使用
    • Tensor初始化
        • 基于list列表和nparray
    • Tensor相关API
        • 基于指定Tensor类型进行初始化
        • 基于Randn生成正态分布的Tensor
        • 基于Rand生成均匀分布的Tensor
        • torch.zeros/ones/empty
  • 三、Tensor数据类型特点
    • 1.几种数据类型的比较和说明
        • List和Nparray比较
        • Numpy和Tensor比较
  • 总结


前言

本文记录笔者在学习Pytorch过程中对tensor数据类型的整理和相关记录

一、Tensor数据类型简介

Tensor数据类型是什么?

Tensor一词,在英文中指的是张肌,即一种肌肉纤维,在神经网络学习中,中文在很多文章中,通常将其称作张量

要学习Tensor数据类型,我们先要搞清楚Tensor数据类型是什么,这里列出了一句官方文档给出的解释

A torch.Tensor is a multi-dimensional matrix containing elements of a single data type.

从这句话中不难看出,Tensor是一种矩阵数据类型,内部携带简单数据类型

Tensor数据类型有哪些

Pytorch的官方文档中给出了许多Tensor的数据类型,我们这里关注到32位的FloatTensor以及16位HalfTensor,前者在开发过程中使用频率较高,后者在GPU显存占用上具有独到的优势
在这里插入图片描述
在这里插入图片描述
通常情况下,Tensor会根据初始化时传入的数据类型确定具体是哪种Tensor, 但我们也可以通过

指定调用的API生成相关数据类型

  • FloatTensor
import torch
a = torch.FloatTensor(2,3)
b = torch.FloatTensor([2,3,4,5])
a,b
  • IntTensor
import torch
a = torch.IntTensor(2,3)
b = torch.IntTensor([2,3,4,5])
a,b

dtype属性指定Tensor内置的简单数据类型

randomTensor=torch.rand(2,3,dtype=torch.float)
print(randomTensor)

二、Tensor数据类型的基本使用

Tensor初始化

基于list列表和nparray

我们可以通过传入Python的list列表和Numpy的nparray对一个Tensor数据类型进行初始化

import numpy as np
import torch

floatTensor = torch.tensor([[1., -1.], [1., -1.]])
print(floatTensor)
npTensor = torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
print(npTensor)

运行效果如下:
在这里插入图片描述

Tensor相关API

基于指定Tensor类型进行初始化

前文中已经列举了FloatTensor和IntTensor两种数据类型的初始化,这里就不进行赘述了

基于Randn生成正态分布的Tensor

返回一个张量,包含了从标准正态分布(均值为0,方差为1,即高斯白噪声)中抽取的一组随机数。张量的形状由参数sizes定义。

randomTensor=torch.randn(2,3,dtype=torch.float)
print(randomTensor)

在这里插入图片描述

基于Rand生成均匀分布的Tensor

返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数。张量的形状由参数sizes定义。

randomTensor=torch.rand(2,3,dtype=torch.float)
print(randomTensor)

在这里插入图片描述

torch.zeros/ones/empty

返回一个张量,zeros表示张量内全部都为0,ones表示张量内全部为1,empty则是生成一个张量,内部元素全部为空,只生成其大小

三、Tensor数据类型特点

1.几种数据类型的比较和说明

List和Nparray比较

  • Numpy中的Nparray采用连续地址存储,原生list只能通过寻址方式找到下一种元素;这是因为Numpy制定了其存储的数据类型,可以统一分配内存空间,而List中的数据类型是确定的
    在这里插入图片描述
  • Nparray在科学计算方面性能远高于List, 可以省掉许多循环语句
  • Nparray支持并行化运算,底层采用C语言编写,接触了Python解释器的性能限制,所以效率远高于纯Python代码

Numpy和Tensor比较

Numpy和Tensor相比较,他们的区别主要有以下两点

  • Tensor 和 Numpy都是矩阵,区别是前者可以在GPU上运行,后者只能在CPU上;
  • Tensor可以直接通过print显示数据类型,而Numpy不可以

需要注意的是,Tensor内部的数据类型为ndarray,而当运行在GPU上时,GPU不具有更改元素值的能力,所以Tensor内部元素的数值不可改变

总结

持续更新和完善中,欢迎大佬指正

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

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

相关文章

postgres源码解析40 表创建执行全流程梳理--4

本文讲解非系统表的创建逻辑&#xff08;[<fontcolor0000dd>普通表和索引表]&#xff09;&#xff0c;其入口函数为heap_create&#xff0c;内部公共接口函数为RelationBuildLocalRelation和RelationCreateStorage相关知识回顾见&#xff1a; postgres源码解析38 表创建执…

Mac M1使用UTM安装centos7 x86_64虚拟机

一、环境说明 1. 宿主机环境 macbook m1 pro 16G 2. UTM版本 UTM是基于QEMU的系统模拟器和虚拟机主机&#xff0c;适用于iOS和macOS。 UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU. 最新版下载地址&…

带你玩转序列模型之NLP与词嵌入(二)

目录 一.Word2Vec 二.负采样 三.GloVe词向量 四.情绪分类 五.词嵌入除偏 一.Word2Vec 在上个视频中你已经见到了如何学习一个神经语言模型来得到更好的词嵌入&#xff0c;在本视频中你会见到 Word2Vec算法&#xff0c;这是一种简单而且计算时更加高效的方式来学习这种类…

用于 Python 降维的主成分分析

减少预测模型的输入变量数称为降维。 较少的输入变量可以产生更简单的预测模型&#xff0c;该模型在对新数据进行预测时可能具有更好的性能。 也许机器学习中最流行的降维技术是主成分分析&#xff0c;简称PCA。这是一种来自线性代数领域的技术&#xff0c;可用作数据准备技术…

耗时大半个月收整全套「Java架构进阶pdf」

花了我大半个月时间收整了全套的「Java架构进阶pdf」&#xff0c;这一波下来&#xff0c;刷完你就会知道&#xff0c;真真香啊&#xff0c;我的心血果然&#xff0c;没白费&#xff01; 请注意&#xff1a;关于全套的「Java架构进阶pdf」&#xff0c;我会从面试-筑基-框架-分布…

【Android App】实战项目之仿微信的视频通话(附源码和演示 超详细必看)

需要源码请点赞关注收藏后评论区留言私信~~~ 虽然手机出现许多年了&#xff0c;它具备的功能也越来越丰富&#xff0c;但是最基本的通话功能几乎没有变化。从前使用固定电话的时候&#xff0c;通话就是听声音&#xff1b;如今使用最新的智能手机&#xff0c;通话仍旧是听声音。…

无刷三相直流电机电动工具驱动方案设计

电动工具是一种工具&#xff0c;其致动通过附加的动力源和机构比仅其他手工劳动与使用手工工具&#xff0c;电动工具用于工业、建筑、花园、做饭、清洁等家务劳动&#xff0c;以及在房子周围用于驱动&#xff08;紧固件&#xff09;、钻孔、切割、成型、打磨、研磨、布线、抛光…

【微服务】Java agent 使用详解

一、前言 于一个即将上线的应用来说&#xff0c;系统监控是必不可少的&#xff0c;为什么需要监控呢&#xff1f;应用是跑在服务器上的&#xff0c;应用在运行过程中会发生各自意想不到的问题&#xff0c;像大家熟知的OOM&#xff0c;mysql故障&#xff0c;服务器宕机&#xff…

cubeIDE开发,基于已有的STM32CubeMX (.ioc)创建工程文件

一、STM32Cube 生态系统 可以在其官网查看&#xff0c;支持中文。 STM32Cube - Discover the STM32Cube Ecosystem - STMicroelectronics ​ 截取官网的STM32Cube家族的软件工具描述&#xff1a; 【1】STM32CubeMX, 面向任意STM32设备的配置工具。这款简单易用的图形用户界面为…

ubuntu根目录清理

0.防范于未然&#xff08;就像给window电脑清理垃圾&#xff09; 清理ubuntu用不上的东西的常用命令 # 系统自带清理命令 sudo apt-get autoclean sudo apt-get clean sudo apt-get autoremove# 查看目录占用空间 sudo du -cks * | sort -rn | head -10 sudo du --max-depth1…

[附源码]计算机毕业设计JAVA血库管理系统

[附源码]计算机毕业设计JAVA血库管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Ma…

Effective C++条款24:若所有参数皆需类型转换,请为此采用non-member函数

Effective C条款24&#xff1a;若所有参数皆需类型转换&#xff0c;请为此采用non-member函数&#xff08;Declare non-member functions when type conversions should apply to all parameters&#xff09;条款24&#xff1a;若所有参数皆需类型转换&#xff0c;请为此采用no…

Swift基础语法 - 枚举

枚举的基本用法 定义&#xff1a;枚举简单的说也是一种数据类型&#xff0c;只不过是这种数据类型只包含自定义的特定数据&#xff0c;它是一组有共同特性的数据的集合。 enum Direction {case northcase southcase eastcase west }enum Direction {case north,south,east,we…

数理统计笔记10:回归分析

引言 数理统计笔记的第10篇介绍了回归分析&#xff0c;从相关关系开始介绍&#xff0c;然后介绍回归分析&#xff0c;主要介绍了一元回归模型和多元回归模型&#xff0c;并对其中的原理和检验进行了叙述&#xff0c;最后简单介绍了一下可以化为线性回归模型的非线性回归模型。 …

【Gradle-5】Gradle常用命令与参数

1、前言 Gradle的命令有很多&#xff0c;熟悉常用命令之后&#xff0c;在日常开发中&#xff0c;不仅可以提升效率&#xff0c;也可以辅助我们快速定位并解决编译问题&#xff1b;而且某些情况下命令行(CLI)与按钮执行的编译结果是不一样的&#xff0c;比如构建时要传参(-P)&a…

大学生环保主题网页制作 环境网页设计模板 学生静态网页作业成品 dreamweaver保护地球环境HTML网站制作

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【电商项目实战】上传头像(详细篇)

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;SpringBoot电商项目实战 ✨学习社区&#xff1a; &#x1f449;不会压弯的小飞侠 ✨知足上进&#x…

【Spring源码系列】Bean生命周期-实例化前

这里写目录标题前言一、实例化前 - InstantiationAwareBeanPostProcessor介绍InstantiationAwareBeanPostProcessor实例化前作用InstantiationAwareBeanPostProcessor实例化前代码案例二、实例化前 - 源码分析声明关键点源代码解读前言 在Bean的生命周期中&#xff0c;‘实例化…

Python还是很迷茫的小伙伴进来,教你用图秒懂Python

哈喽&#xff0c;大家好呀&#xff01;今天为大家带来12张图解python&#xff0c;让你们轻松学会了解python。 1.Python 解释器&#xff1a; Python数据结构&#xff1a;变量与运算符&#xff1a;Python 流程控制&#xff1a;Python 文件处理&#xff1a;python 输入输出&…

(三)Vue之模板语法

文章目录插值语法指令语法Vue学习目录上一篇&#xff1a;&#xff08;二&#xff09;初识Vue 下一篇&#xff1a;&#xff08;四&#xff09;Vue之数据绑定 Vue模板语法有2大类&#xff1a; 1.插值语法2.指令语法 插值语法 功能&#xff1a;用于解析标签体内容。 写法&…