Pytorch - 张量转换拼接

感谢大家的观看

张量转换为 numpy 数组

使用 Tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。

data_tensor = torch.tensor([2, 3, 4])
# 使用张量对象中的 numpy 函数进行转换
data_numpy = data_tensor.numpy()

print(type(data_tensor))
print(type(data_numpy))


# 修改其中的一个,另外一个也会发生改变!
# data_tensor[0] = 100
data_numpy[0] = 100

print(data_tensor)
print(data_numpy)

我们可以通过对象拷贝避免共享内存:

data_tensor = torch.tensor([2, 3, 4])
# 使用张量对象中的 numpy 函数进行转换
data_numpy = data_tensor.numpy().copy()

print(type(data_tensor))
print(type(data_numpy))


# data_tensor[0] = 100
data_numpy[0] = 100
print(data_tensor)
print(data_numpy)

numpy 转换为张量

  1. 使用 from_numpy 可以将 ndarray 数组转换为 Tensor,默认共享内存,使用 copy 函数避免共享。
  2. 使用 torch.tensor 可以将 ndarray 数组转换为 Tensor,默认不共享内存。
def test01():

    data_numpy = np.array([2, 3, 4])
    data_tensor = torch.from_numpy(data_numpy)

    # 共享内存
    # data_numpy[0] = 100
    data_tensor[0] = 100

    print(data_tensor)
    print(data_numpy)


# 使用 torch.tensor 函数
def test02():

    data_numpy = np.array([2, 3, 4])

    data_tensor = torch.tensor(data_numpy)

    # 不共享内存
    # data_numpy[0] = 100
    data_tensor[0] = 100

    print(data_tensor)
    print(data_numpy)

标量张量和数字的转换

对于只有一个元素的张量(shape没有限制,元素只有一个),使用 item 方法将该值从张量中提取出来。 

你可能感兴趣的:(实战Pytorch,人工智能,python,pytorch)