静斋分享 http://blog.sciencenet.cn/u/tghu 文学、数学、物理。

博文

Python中四个转tensor函数的区别

已有 418 次阅读 2023-11-8 08:59 |个人分类:Python|系统分类:科研笔记

Python中的torch包中包含torch.Tensor(a)、torch.tensor(a)、torch.from_numpy(a)、torch.as_tensor(a)四个转tensor函数。区别在于:

  1. torch.Tensor(a)是类构造函数,转出来的tensor格式数据dtype是全局默认dtype(一般为torch.float32),全局默认类型可以通过torch.get_default_dtype()函数来查询;而其它三个都是工厂函数,转出来的tensor格式数据dtype是根据输入a的dtype来推断。

因此:torch.Tensor(a)与torch.tensor(a, dtype=torch.float32)几乎一致。


2. torch.Tensor(a)、torch.tensor(a)是深拷贝,会创造一个新的内存空间,不共享内存,因此a改变时,torch.Tensor(a)、torch.tensor(a)不会改变;而torch.from_numpy(a)、torch.as_tensor(a)不会创造新的内存空间,因此a改变时,torch.from_numpy(a)、torch.as_tensor(a)也会发生改变。


3. torch.from_numpy(a)、torch.as_tensor(a)对比:torch.from_numpy(a)的输入a只能是ndarray格式,并输出一个与a的dtype、device都一样的tensor数据;torch.as_tensor(a)适用性更广,它的输入a可以是非ndarray格式,同时还可以改变dtype和device。torch.as_tensor(a)当a是ndarray格式,且dtype和device都默认时等同于torch.from_numpy(a),是浅拷贝,而当dtype和device不默认时,会创建一个新的内存空间,变为深拷贝。




https://blog.sciencenet.cn/blog-3447891-1408870.html

上一篇:函数的图像及其变换
下一篇:关于硅材料更易进行光转电而不易进行电转光的原因分析
收藏 IP: 112.13.176.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-21 22:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部