c语言中tensor强制转换float,pytorch和tensorflow的爱恨情仇之基本数据类型

自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀。。。)

无论学习什么框架或者是什么编程语言,最基础的就是其基本的数据类型了,接下来我们就一一看看吧。

pytorch版本:0.4.1,准备之后换成1.x版本的。

tensorflow版本:1.15.0,虽然目前tensorflow已经出到2.x版本了,但据说2.x版本的还存在一些bug,就使用目前的1.x版本的了。

1、python基本数据类型

数字型:整型、浮点型、布尔型、复数型。

非数字型:字符串、列表、元组、字典。

使用type可以查看变量的类型:type(变量名)

2、numpy中的数据类型

名称

描述

bool_

布尔型数据类型(True 或者 False)

int_

默认的整数类型(类似于 C 语言中的 long,int32 或 int64)

intc

与 C 的 int 类型一样,一般是 int32 或 int 64

intp

用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)

int8

字节(-128 to 127)

int16

整数(-32768 to 32767)

int32

整数(-2147483648 to 2147483647)

int64

整数(-9223372036854775808 to 9223372036854775807)

uint8

无符号整数(0 to 255)

uint16

无符号整数(0 to 65535)

uint32

无符号整数(0 to 4294967295)

uint64

无符号整数(0 to 18446744073709551615)

float_

float64 类型的简写

float16

半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位

float32

单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位

float64

双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位

complex_

complex128 类型的简写,即 128 位复数

complex64

复数,表示双 32 位浮点数(实数部分和虚数部分)

complex128

复数,表示双 64 位浮点数(实数部分和虚数部分)

numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。

这里简要的看下例子,一般情况下我们是这么定义一个数组的:

464e952b0da70caf4223b122494ae418.png

当然,我们也可以使用如下方式定义:先指定数组中元素的类型,再创建数组

f5ab218fe0a1f0df3925ae49e7cbd9e2.png

为什么我们要这么定义呢,这么定义不是没有第一种简便吗?这是因为,通过这种方式,我们可以定义自己的数据类型:

8ddff2aa8fe0822f7cbca2af411ee721.png

这里的i1指代的是int8,

每个内建类型都有一个唯一定义它的字符代码,如下:

字符

对应类型

b

布尔型

i

(有符号) 整型

u

无符号整型 integer

f

浮点型

c

复数浮点型

m

timedelta(时间间隔)

M

datetime(日期时间)

O

(Python) 对象

S, a

(byte-)字符串

U

Unicode

V

原始数据 (void)

于是乎,请看以下例子:

987eb857c591174a54f627b08c88d893.png

说到数据类型,就不得不涉及到数据类型之间的转换,自然而然首先想到的是通过修改dtype的类型来修改数据的类型,但是这存在一些问题,请看以下例子:

>>> a=np.array([1.1, 1.2])>>>a.dtype

dtype('float64')>>> a.dtype=np.int16>>>a.dtype

dtype('int16')>>>a

array([-26214, -26215, -26215, 16369, 13107, 13107, 13107, 16371], dtype=int16)#原来float64相当于4个int16的位宽,这样强制转换后会将他们直接拆开成4个数,#因此原来的两个float64成了8个int16

我们要使用astype来修改数据类型,看一下例子:

>>> a=np.array([1.1, 1.2])>>>a.dtype

dtype('float64')>>>a.astype(np.int16)

array([1, 1], dtype=int16)>>>a.dtype

dtype('float64') #a的数据类型并没有变

>>> a=a.astype(np.int16) #赋值操作后a的数据类型变化

>>>a.dtype

dtype('int16')>>>a

array([1, 1], dtype=int16)

参考:

3、pytorch中的数据类型

4561397e6121054b377878dd9f1550a7.png

看以下例子:默认使用的数据类型是torch.float32

a4f84946703c2f0254274ad68258e0e8.png

当然,你也可以指定生成张量的类别,通过以下方式:

d16ba159ae72ae7919ba3ff58119fbdd.png

在多数情况下,我们都会使用pytorch自带的函数建立张量,看以下例子:

0893370286399efa4f44bd40b059f193.png

通过以下两种方式可以查看张量的数据类型:

e38ab4bb4ddd49ea27988539fa2d12bb.png

接下来还是要看下数据类型之间的转换,主要有三点:张量之间的数据类型的转换、张量和numpy数组之间的转换、cuda张量和cpu张量的转换

(1) 不同张量之间的类型转换

直接使用(.类型)即可:

58aacaf25d654e46b93fd704874817b0.png

我们还可以使用type()来进行转换:

bcfcbf8e31dd00ff262614fa1784dc8c.png

我们同样可以使用type_as()将某个张量的数据类型转换为另一个张量的相同的数据类型:

d438c669fcc4762c42eb54ea8054af1e.png

(2)张量和numpy之间的转换

将numpy数组转换为张量:使用from_numpy()

eb1abf794dd184764278f32e942d059b.png

将张量转换为numoy数组:使用.numpy()

5755ece0e187305e556579e1c3ba8573.png

(3) cuda类型和cpu类型之间的转换

cpu类型转换成cuda类型:

a.cuda()或者a.to(device):这里的device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

cuda类型转换为cpu类型:

a.cpu()

这里需要提一句的是,要先将cuda类型转换为cpu类型,才能进一步将该类型转换为numpy类型。

3、tensorflow基本数据类型

168e98abc69c144b61d65886bb1e44d7.png

定义一个张量:

4cf77b2c96500fbcb4bbccc4e6fab901.png

使用tf.constant建立一个常量,注意:常量是不进行梯度更新的。

(1)张量之间的类型转换:可以使用tf.to_类型()或者tf.cast(),不过前者将要被移除,最好使用tf.cast()

d10420d835da77cc67a6b5f9d433d27d.png

(2) 张量和numpy之间的类型转换

numpy转张量:使用tf.convert_to_tensor()

b6dd254d32fa507f79ef0c2b531c7e60.png

张量转numpy:由Session.run或eval返回的任何张量都是NumPy数组。

490c3f1ed8fe97f0c92a0c255d1dd00c.png

723e179d3afca3338b826a3113d85f20.png

(3)tensorflow好像不存在什么gpu张量和cpu张量类型

如果有什么错误还请指出,有什么遗漏的还请补充,会进行相应的修改。

一路的欢乐长久mk~
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
5个简单的步骤掌握TensorflowTensor
TensorFlowNews
10-16 922
作者|Orhan G. Yalçın 编译|VK 来源|Towards Datas Science 如果你正在读这篇文章,我相信我们有着相似的兴趣,现在/将来也会从事类似的行业。 在这篇文章,我们将深入研究Tensorflow Tensor的细节。我们将在以下五个简单步骤介绍与TensorflowTensor相关的所有主题: 第一步:张量的定义→什么是张量? 第二步:创建张量→创建张量对象的函数 第三步:张量对象的特征 第四步:张量操作→索引、基本张量操作、形状操作、广播 第五步:特殊张
torch.tensor 和numpy的相互化及float格式
Cretheego的博客
01-19 1466
torch语法
tensorflow 张量类型为float_张量数据结构
weixin_39785081的博客
11-21 3461
公众号后台回复关键字:Pytorch,获取项目github地址。Pytorch是一个基于Python的机器学习库。它广泛应用于计算机视觉,自然语言处理等深度学习领域。是目前和TensorFlow分庭抗礼的深度学习框架,在学术圈颇受欢迎。它主要提供了以下两种核心功能:1,支持GPU加速的张量计算。2,方便优化模型的自动微分机制。Pytorch的主要优点:简洁易懂:Pytorch的API设计...
pytorch | tensor换为float
最新发布
Mopes__的博客
03-26 547
pytorch | tensor换为float
libtorch常用Mat与Tensor
alex1801
11-10 5945
libtorch文档写的真不怎么好,看起来费劲,所以一般用pytoch训练模型,之后把模型保存为traces script model,再通过libtorch加载,进行决策,完成c++集成调用。这里对 常用libtorch API进行整理,也只整理常用的。 验证环境:win10、vs2017、pytorch1.6、libtorch1.6、cuda10.2、python3.7。 1、MatTensor 1)将图像由BRG为RGB通道; 2)为浮点型,量化到0~1; 3)opencvtenso
c语言tensor强制转换float,pytorchtensor的属性 类型换 形状变换 置 最大值...
weixin_39929687的博客
05-22 645
import torchimport numpy as npa = torch.tensor([[[1]]])#只有一个数据的时候,获取其数值print(a.item())#tensor化为nparrayb = a.numpy()print(b,type(b),type(a))#获取张量的形状a = torch.tensor(np.arange(30).reshape(3,2,5))print(...
anoconda环境pytorchtensorflow环境的兼容
01-20
问题:pytoch和tensorflow的cuda版本如果不一致,但是.bashrc只能一次设置一个cuda路径。每次激活tensorflow或者pytorch的虚拟环境时,要重新去.bashrc文件添加对应环境的cuda路径,这样非常的麻烦。 解决方法:...
tensorflow 实现数据类型
12-20
将张量强制转换为bfloat16类型。(deprecated) tf.to_bfloat16( x, name='ToBFloat16' ) 参数: x:张量或稀疏张量或索引切片。 name:操作的名称(可选)。 返回值: 一种与bfloat16类型的x形状相同的张量或稀
PyTorchTensor的数据类型和运算的使用
09-16
主要介绍了PyTorchTensor的数据类型和运算的使用,文通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
pytorchtensor张量数据类型的化方式
01-20
1.tensor张量与numpy相互tensor ----->numpy import torch a=torch.ones([2,5]) tensor([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]]) # ********************************** b=a.numpy() array([[1., 1...
Tensorflow的张量类型
weixin_36670529的博客
10-14 2597
目录 1、tf.to_int32() 2、tf.to_float() 1、tf.to_int32() tf.to_int32( x, name='ToInt32' ) 将张量换为int32类型。 参数: x: 张量或稀疏张量 name: 操作的名称(可选)。 返回值: 一种形状与x相同的张量或稀疏张量,类型为int32 可能产生的异常: TypeErr...
C++tensor数据类型
Swayzzu的博客
03-05 2496
主要是将tensor数据类型为C++可以识别的类型。 拿出tensor.item()之后,还可以继续,比如C++不能用if判断torch tensor的类型,但通过tensor.item().toBool()就为了可以识别的类型了。 同理,也可以to其他类型。 ...
tensor类型对应以及
qq_38385468的博客
10-21 3644
pytorch有torch.float32等的数据类型,主要的对应关系及化有: short————————torch.int16 化:tensor.short()或tensor.type(torch.int16) int—————————torch.int32 化:tensor.int()或tensor.type(torch.int32) long————————torch.int64 化:tensor.long()或tensor.type(torch.int64) float————————to
Pytorch变量类型
热门推荐
zchenack个人专栏
01-24 9万+
Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵。与Numpy的Array类似。Pytorchtensor又包括CPU上的数据类型和GPU上的数据类型,一般GPU上的Tensor是CPU上的Tensor加cuda()函数得到。通过使用Type函数可以查看变量类型。一般系统默认是torch.FloatTensor类型。例如data = torch.Tensor(
PytorchTensor数据类型
weixin_45590193的博客
06-16 1万+
PytorchTensor数据类型换: 1)Tensor的int、float数据类型换: 在Tensor后加 .long(), .int(), .float(), .double()等即可 2)Tensor与numpy数据类型换: Tensor -> Numpy 使用 data.numpy(),data为Tensor变量 Numpy -> Tensor 使用 torch.from_numpy(data),data为numpy变量 3)Tensor与Python数据类型换: Tenso
[Pytorch]Pytorchtensor变量类型
急流勇进
01-09 1万+
[Pytorch]Pytorchtensor变量类型换 原文:https://blog.csdn.net/hustchenze/article/details/79154139 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵。与Numpy的Array类似。Pytorchtensor又包括CPU上的数据类型...
pytorchtensor的数据类型及相互
m0_46483236的博客
03-29 6430
1. 数据类型: 在torchCPU和GPU张量分别有8种数据类型, GPU tensor比CPU tensor多了.cuda 张量数据类型 数据类型 dtype CPU tensor GPU tensor 32位浮点型 torch.float32 或 torch.float torch.FloatTensor torch.cuda.FloatTensor 64位浮点型 torch.float64 或 torch.double torch..
torch.FloatTensor()
weixin_36670529的博客
05-07 4万+
类型换, 将list ,numpy化为tensor。 以list -> tensor为例: print(torch.FloatTensor([1,2])) # 输出: tensor([1., 2.]) 根据torch.Size()创建一个空tensor a = torch.tensor([[1, 2], [3, 4]]) print(torch.FloatTensor(a.si...
tensorflow笔记』tf.cast()数据类型
AI新视界
01-11 1万+
tf.cast()函数的作用是执行 tensorflow 张量数据类型换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式换为float32。cast定义: cast(x, dtype, name=None) 第一个参数 x: 待换的数据(张量) 第二个参数 dtype: 目标数据类型 第三个参数 name: 可选参数,定义操作的名称 例如将int32换...
PyTorchTensor类型有Int、Float和String类型说法正确吗
06-10
PyTorchTensor类型只有Int和Float类型,没有String类型。 Int类型的Tensor表示整型数据,例如整数、布尔值等。Int类型的TensorPyTorch的表示是torch.IntTensorFloat类型的Tensor表示浮点数型数据,例如...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 北京家庭摇号计算机,北京摇号积分计算|2021北京家庭摇号积分怎么算? 北京家庭积分摇号计算 - 有车一族汽车网... 14191
  • .net framework 4.0安装_Microsoft .NET Framework 4.7 安装失败,产生阻滞的问题 12940
  • 京瓷复印机怎么换墨盒_打印机怎么换墨盒 打印机换墨盒步骤介绍【详细步骤】... 10473
  • matlab 变量代入数值,matlab将数值代入函数 7186
  • 海光国产CPU芯片和服务器,海光CPU芯片 一文看懂国产CPU!“造不如买”时代终 6123

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 服务器win10系统开机慢,这配置很卡,开机慢,win10系统
  • 微信信道服务器 判断掉线,微信出现这个界面千万要当心!这15分钟很关键!
  • 海光国产CPU芯片和服务器,海光CPU芯片 一文看懂国产CPU!“造不如买”时代终
2021年140篇
2020年19篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源根据中文名起英文棋牌室起什么名字连姓起名杉德万通卡使用范围九画的繁体字有哪些起名字用八一影视妄自菲薄的意思送给团队起名微微一笑很倾城百度盘丫T圆通快递查物流辰字起名有什么寓意合肥口碑网灯草和尚2奇幻小说排行榜陈映真蒋佳恩秋天的雨作文物业公司免费起名字游戏名字起什么汤姆索亚历险记好词好句幼教用品起名易经中起名字好蛇宝宝起名大全男孩我和僵尸有个约会做门窗起什么名字三坪房间的侵略者!?公司起名初审美腾起名七里香歌词门店起名测淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化