Tensor和NumPy相互转换「建议收藏」

Tensor和NumPy相互转换我们很容易用numpy()和from_numpy()将Tensor和NumPy中的数组相互转换。但是需要注意的一点是:这两个函数所产生的Tensor和NumPy中的数组共享相同的内存(所以他们之间的转换很快),改变其中一个时另一个也会改变!1.Tensor转NumPya=torch.ones(6)b=a.numpy()print(a,b)a+=1print(a,b)b+=1print(a,b)tensor([1.,1.

大家好,又见面了,我是你们的朋友全栈君。

Tensor和NumPy相互转换

我们很容易用numpy()from_numpy()Tensor和NumPy中的数组相互转换。但是需要注意的一点是: 这两个函数所产生的TensorNumPy中的数组共享相同的内存(所以他们之间的转换很快),改变其中一个时另一个也会改变!

1. Tensor转NumPy

a = torch.ones(6)
b = a.numpy()
print(a, b)

a += 1
print(a, b)
b += 1
print(a, b)
tensor([1., 1., 1., 1., 1., 1.]) [1. 1. 1. 1. 1. 1.]
tensor([2., 2., 2., 2., 2., 2.]) [2. 2. 2. 2. 2. 2.]
tensor([3., 3., 3., 3., 3., 3.]) [3. 3. 3. 3. 3. 3.]

2. NumPy数组转Tensor

import numpy as np
a = np.ones(7)
b = torch.from_numpy(a)
print(a, b)

a += 1
print(a, b)
b += 1
print(a, b)
[1. 1. 1. 1. 1. 1. 1.] tensor([1., 1., 1., 1., 1., 1., 1.], dtype=torch.float64)
[2. 2. 2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2., 2., 2.], dtype=torch.float64)
[3. 3. 3. 3. 3. 3. 3.] tensor([3., 3., 3., 3., 3., 3., 3.], dtype=torch.float64)

3. torch.tensor()将NumPy数组转换成Tensor

直接用torch.tensor()NumPy数组转换成Tensor,该方法总是会进行数据拷贝,返回的Tensor和原来的数据不再共享内存。

import numpy as np
a = np.ones((2,3))
c = torch.tensor(a)
a += 1
print('a:',a)
print('c:',c)
print(id(a)==id(c))
a: [[2. 2. 2.]
 [2. 2. 2.]]
c: tensor([[1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
False
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年4月5日 上午6:35
下一篇 2022年4月5日 上午7:00


相关推荐

  • Matlab中random函数的使用

    Matlab中random函数的使用原文随机数生成方法:第一种方法是用random语句,其一般形式为              y=random(‘分布的英文名’,A1,A2,A3,m,n),表示生成m行n列的m×n个参数为(A1,A2,A3)的该分布的随机数。例如:(1)R=random(‘Normal’,0,1,2,4):生成期望为0,标准差为1的(2行4…

    2022年6月5日
    48
  • 【机器学习】1、线性回归和逻辑回归

    【机器学习】1、线性回归和逻辑回归利用大量的数据样本 使得计算机通过不断的学习获得一个模型 用来对新的未知数据做预测 有监督学习 分类 回归 同时将数据样本和标签输入给模型 模型学习到数据和标签的映射关系 从而对新数据进行预测 无监督学习 聚类 只有数据 没有标签 模型通过总结规律 从数据中挖掘出信息 强化学习强化学习会在没有任何标签的情况下 通过先尝试做出一些行为得到一个结果 通过这个结果是对还是错的反馈 调整之前的行为 就这样不断的调整 算法能够学习到在什么样的情况下选择什么样的行为可以得到最好的结果

    2026年3月20日
    2
  • navicat导入sql文件报错_navicat怎么导入sql数据库文件

    navicat导入sql文件报错_navicat怎么导入sql数据库文件一、打开navicat,打开连接,右击连接名(如果新建连接,需要使用对应数据库的ip地址和密码,本机的是地址localhost,密码是自己mysql数据库的密码),选择新建数据库,数据库名要和想要导入的文件名一样(这种情况针对的是sql文件是直接由整个数据库导出的一个sql文件,如果表导出的sql文件,应该是随便命名数据库的名字,表名应该是和需要导入的文件名字相同(第二种情况没有亲自试过))。…

    2022年10月2日
    6
  • linux的nfs端口111,【NFS】NFS设置固定端口,添加防火墙规则[通俗易懂]

    linux的nfs端口111,【NFS】NFS设置固定端口,添加防火墙规则[通俗易懂]NFSserver启动时会随机启动多个端口并向RPC注册,这样如果使用iptables对NFSsever端口进行限制就会有点麻烦,可以更改配置文件固定NFS服务相关端口。以前配置的nfs端口一直是通过rpcinfoxx.xx.xx.xx这个命令查找到需要放行的端口,然后在防火墙中放行这个端口,每次f服务器断电重启之后,都需要重新设置防火墙,我们可以设置固定端口,这样设置固定端口以后即便重…

    2022年6月27日
    28
  • linux远程桌面方式,Linux 远程桌面的两种方式

    linux远程桌面方式,Linux 远程桌面的两种方式在绝多数情况下 Linux 不需要使用到 GUI 的桌面环境 但是有时在一些特殊的场景如安装 Oracle 的时候 需要有图形界面进行辅助才可以安装 如果要使用 Linux 的图形界面 一般有两种方式 1 Linux 系统安装 XWindows 图形界面 使用 vnc 远程 2 Linux 系统启用 X 协议 配置 XClent 本地有桌面环境的机器 如 Windows 配置 XServer 获取远程的信息 在本地 Xser

    2026年3月19日
    2
  • OpenClaw Windows 完整安装与本地模型配置教程(实战版)

    OpenClaw Windows 完整安装与本地模型配置教程(实战版)

    2026年3月15日
    2

发表回复

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

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