Pytorch:Torch数据类型学习整理与记录
创始人
2024-03-15 05:43:20

文章目录

  • 前言
  • 一、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 torchfloatTensor = 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内部元素的数值不可改变

总结

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

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...