初始化张量时,torch.Tensor()和torch.from_numpy()区别

  1. torch.Tensor():

    • torch.Tensor() 是 PyTorch 中一个泛化的构造函数,用于创建一个新的张量。
    • 当调用 torch.Tensor() 时,可以指定张量的维度来创建一个未初始化的张量,其元素可以是任意值,因为它们来自于分配的内存块中的原始值。例如 torch.Tensor(2, 3) 将会创建一个大小为 2x3 的未初始化张量。
    • 除了未初始化的张量,torch.Tensor() 也可以用来创建具有特定类型和/或值的张量,例如 torch.Tensor([1, 2, 3]) 将会创建一个包含元素 [1, 2, 3] 的一维张量。
  2. torch.from_numpy():

    • torch.from_numpy() 是一个专用的函数,用于将已存在的 NumPy 数组转换成 PyTorch 张量。
    • 与 torch.Tensor() 不同,torch.from_numpy() 不会创建数组数据的副本;而是创建一个包裹原始 NumPy 数组的张量,这意味着 PyTorch 张量和 NumPy 数组将共享底层内存。因此,对一个结构的改变会反映到另一个结构上。
    • 需要注意的是,只有当 NumPy 数组的 dtype 兼容 PyTorch 张量时,才能使用 torch.from_numpy()。如果不兼容,可能需要先使用 NumPy 的 astype 方法来转换 dtype

使用 torch.Tensor():

import torch

# 创建未初始化的张量
uninitialized_tensor = torch.Tensor(3, 4) # 3x4 维度的张量

# 创建已初始化的张量
initialized_tensor = torch.Tensor([1, 2, 3]) # 具有给定值的一维张量

使用 torch.from_numpy():

import torch
import numpy as np

# 创建 NumPy 数组
np_array = np.array([1, 2, 3])

# 转换 NumPy 数组到 PyTorch 张量
tensor_from_numpy = torch.from_numpy(np_array)

# 改变原始 NumPy 数组,PyTorch 张量也会随之改变
np_array[1] = -2
# 此时 tensor_from_numpy 也会变成 tensor([ 1, -2,  3])

        正因为这两个函数的这些差异,开发者需要根据实际场景和数据处理的需求来选择使用哪一种。如果你想要从现有的 NumPy 数组创建一个张量,并且希望二者能共享数据,torch.from_numpy() 是一个很好的选择。但如果你需要创建一个新的张量(无论是否初始化),则应该使用 torch.Tensor() 或者其他的像 torch.zeros()torch.ones() 这样的特定初始化方法。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值