📜  torch.from_numpy (1)

📅  最后修改于: 2023-12-03 14:48:01.280000             🧑  作者: Mango

torch.from_numpy介绍

torch.from_numpy是PyTorch中的一个函数,用于将numpy数组转换为torch张量。它创建一个新的张量,与给定的numpy数组共享相同的底层数据缓冲区,而不需要复制数据。这使得在PyTorch和NumPy之间共享数据变得更加高效和方便。

用法示例
import numpy as np
import torch

# 创建一个numpy数组
numpy_array = np.array([[1, 2, 3], [4, 5, 6]])

# 使用torch.from_numpy将numpy数组转换为torch张量
torch_tensor = torch.from_numpy(numpy_array)

# 打印torch张量
print(torch_tensor)

# 输出:
# tensor([[1, 2, 3],
#         [4, 5, 6]], dtype=torch.int32)
特点和注意事项
  • torch.from_numpy函数返回一个新的torch张量,与numpy数组共享相同的底层数据。这意味着如果修改了其中一个,另一个也会发生变化。

  • torch.from_numpy只能接受numpy数组作为参数,不接受其他序列类型(如列表)作为输入。

  • 默认情况下,torch.from_numpy保留numpy数组的数据类型。如果需要更改数据类型,可以在转换后的张量上使用.type()方法。

numpy_array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)
torch_tensor = torch.from_numpy(numpy_array)

# 更改为torch.float64类型
torch_tensor = torch_tensor.type(torch.float64)
  • 当从numpy数组创建张量时,它们共享相同的内存。这意味着对numpy数组或torch张量的修改都会影响到另一个。使用.clone()方法可以创建一个新的张量,无论如何修改都不会影响原始的numpy数组。
numpy_array = np.array([1, 2, 3])
torch_tensor = torch.from_numpy(numpy_array)

# 修改numpy数组
numpy_array[0] = 5

print(numpy_array)   # 输出: [5, 2, 3]
print(torch_tensor)  # 输出: tensor([5, 2, 3], dtype=torch.int32)

# 创建一个与torch_tensor无关的新张量
new_tensor = torch_tensor.clone()

# 修改new_tensor
new_tensor[0] = 10

print(torch_tensor)  # 输出: tensor([5, 2, 3], dtype=torch.int32)
print(new_tensor)    # 输出: tensor([10, 2, 3], dtype=torch.int32)

torch.from_numpy函数在将numpy数组转换为torch张量时非常有用,特别是在将数据导入PyTorch进行深度学习任务时。它提供了一种便捷的方式,避免了不必要的数据复制操作,同时也保证了数据的一致性和高效性。