自学内容网 自学内容网

PyTorch基本使用-张量转换

1. 张量转换为Numpy数组

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

data = torch.tensor([2,3,4])
print('data的类型:',type(data))
# 将张量转换为 numpy 数组
numpy_data = data.numpy()
print('numpy_data的类型:',type(numpy_data))
# 使用copy方法拷贝对象,防止内存共享
numpy_data2 = data.numpy().copy()
print('numpy_data2的类型:',type(numpy_data2))
# 注意: data_tensor 和 data_numpy 共享内存,修改其中的一个,另外一个也会发生改变
#data[0]=100
numpy_data[0]=100
print('张量的值',data)
print('numpy的值:',numpy_data)

结果输出:

data的类型: <class 'torch.Tensor'>
numpy_data的类型: <class 'numpy.ndarray'>
numpy_data2的类型: <class 'numpy.ndarray'>
张量的值 tensor([100,   3,   4])
numpy的值: [100   3   4]
numpy2的值: [2 3 4]

2 . Numpy 数组转换为张量

  • 使用from_numpy()可以将ndarray数组转换为Tensor,共享内存

    numpy_data=np.array([2,3,4])
    data = torch.from_numpy(numpy_data)
    numpy_data[1]=50
    print('numpy_data的值',numpy_data)
    print('data的值',data)
    

    结果输出:

    numpy_data的值 [ 2 50  4]
    data的值 tensor([ 2, 50,  4], dtype=torch.int32)
    
  • 使用torch.tensor()可以将ndarray数组转换为Tensor,不共享内存。

    numpy_data=np.array([2,3,4])
    data = torch.tensor(numpy_data)
    numpy_data[1]=50
    print('numpy_data的值',numpy_data)
    print('data的值',data)
    

    结果输出:

    numpy_data的值 [ 2 50  4]
    data的值 tensor([2, 3, 4], dtype=torch.int32)
    

3. 张量和数字转换

  • 对于只有一个元素的张量,使用item()函数将该值从张量中提取出来

    data = torch.tensor([20,])
    print(data.item())
    data = torch.tensor(20)
    print(data.item())
    

    输出结果:

    20
    20
    

原文地址:https://blog.csdn.net/dwjf321/article/details/144328860

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!