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()

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue和layUi对比

    vue和layUi对比vue和layUi对比vue(angular,react)这些框架会负责数据和视图的绑定,数据变了,视图自动更新,视图发生事件,也会更新数据,很省事。layui(bootstrap,extjs)这类库,感觉不是框架,而是组件库,会提供一些组件(比如表格,树),只提供外观和行为,不提供和数据的绑定,数据变了,你负责刷新;视图变了,你自己获取数据。vue的界面库elementui和layui都是组件库,区别就是数据和视图是不是关联的。layui其实更偏向与后端开发人员使用,在服务端页面上有非常好的效果

  • docker容器的启动(docker容器启动时间)

    在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。1、attach命令attach命令是Docker自带的命令,命令格式为:dockerattach[–detach-keys[=[]]][–no-stdin][–sig-prox

  • Java,JSP,JavaScript三和差异

    Java,JSP,JavaScript三和差异

  • git基本使用(超详细)[通俗易懂]

    git基本使用(超详细)[通俗易懂]git基本使用一:Git是什么?Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?1.SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。2.Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个

  • QQ第三方登录报错error=-1

    QQ第三方登录报错error=-1

    2021年10月25日
  • h2数据库教程_NoSQL数据库入门

    h2数据库教程_NoSQL数据库入门范培忠2017-06-19  H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。  H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。  它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。  H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某

    2022年10月12日

发表回复

您的电子邮箱地址不会被公开。

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