pytorch: tensor与numpy之间的转换[通俗易懂]

pytorch: tensor与numpy之间的转换[通俗易懂]训练时,输入一般为tensor,但在计算误差时一般用numpy;tensor和numpy的转换采用numpy()和from_numpy这两个函数机型转换。值得注意的是,这两个函数所产生的tensor和numpy是共享相同内存的,而且两者之间转换很快。importtorchimportnumpyasnp#Converttensortonumpya=torch.ones(3)b=a.numpy()print(a,b)a+=1print(a,b)#Conve

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

训练时,输入一般为tensor,但在计算误差时一般用numpy;tensor和numpy的转换采用numpy()和from_numpy这两个函数机型转换。值得注意的是,这两个函数所产生的tensor和numpy是共享相同内存的,而且两者之间转换很快。

import torch
import numpy as np

# Convert tensor to numpy
a = torch.ones(3)
b = a.numpy()
print(a, b)
a += 1
print(a, b)

# Convert numpy to tensor
c = np.ones(3)
d = torch.from_numpy(c)
print(c, d)
c += 1
print(c, d)

输出为:
tensor([1., 1., 1.]) [1. 1. 1.]
tensor([2., 2., 2.]) [2. 2. 2.]
[1. 1. 1.] tensor([1., 1., 1.], dtype=torch.float64)
[2. 2. 2.] tensor([2., 2., 2.], dtype=torch.float64)

另外,还有一个numpy转换为tensor的函数,但不共享内存,转换较慢

import torch
import numpy as np

e = np.array([1,2,3])
f = torch.tensor(e)
print(e, f)
e += 1
print(e, f)

输出为:
[1 2 3] tensor([1, 2, 3], dtype=torch.int32)
[2 3 4] tensor([1, 2, 3], dtype=torch.int32)

再另外介绍一个取数字的函数:item() ,该函数把tensor和numpy的数转化为数的类型。例如,type(a[0])和type(b[0])分别为tensor和numpy,用item()就可以转化为int或float。当要把训练结果写入到excel保存时,只能时python的原生数字形式,该函数就发挥作用了。

print(type(a[1]))
print(type(b[1]))
print(type(a[1].item()))
print(type(b[1].item()))

<class ‘torch.Tensor’>
<class ‘numpy.float32’>
<class ‘float’>
<class ‘float’>

注意·:该函数只能用在对象引用一个数组,不能用在包含一个数组的对象,如a.item()或b.item()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180533.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 技术串讲 CAS 有用

    技术串讲 CAS 有用

    2021年6月10日
    113
  • 【Android布局】在程序中设置android gravity 和 android layout Gravity属性

    【Android布局】在程序中设置android gravity 和 android layout Gravity属性【Android布局】在程序中设置androidgravity和androidlayoutGravity属性

    2022年7月26日
    2
  • java线程池实例

    java线程池实例

    2021年5月6日
    123
  • 大数据与云计算,物联网三者的区别和关联是_云计算侧重于数据分析

    大数据与云计算,物联网三者的区别和关联是_云计算侧重于数据分析大数据与云计算  为解决互联网应用对大规模计算能力、数据存储能力的迫切需求,云计算的概念被提出。云计算是一种分布式计算平台,通过虚拟技术将海量的硬件资源和虚拟资源虚拟成虚拟资源池,并根据需求任务的大小,向虚拟资源池获取相应的计算和存储资源。  在大数据处理的需求下,出现了许多优秀的云计算平台,例如Apache开源的Hadoop、Google的MapReduce、微软的Dryad等。  在处…

    2022年10月6日
    3
  • 485拓扑结构图_拓扑图

    485拓扑结构图_拓扑图一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点)例如,下表是 5 趟车次的运行情况。其中,前 4 趟车次均满足要求,而第 5 趟车次由于停靠了 3 号火车站(2 级)却未停靠途经的 6 号火车站(亦为 2 级)而不满足要求。现有 m

    2022年8月9日
    6
  • 2020最新pycharm汉化安装(亲测有效)

    2020最新pycharm汉化安装(亲测有效)这里我推荐大家使用pycharm百度输入关键词:pycharm,点击如图所示网站进入pycharm官网选择电脑系统版本,这里我们选择Windows系统,点击Community版本下的download#Professional为限时免费试用的专业版#Community为免费的社区版本我们使用社区版基本够用了,等技能熟练再去使用专业版的。双击下载好的PyCharm安装包,出现如下图所示的界面,点击“next”选择安装目录,Pycharm需要的内存较多,建议安装在D盘或者

    2022年5月16日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号