当前位置:   article > 正文

pytorch学习笔记1--torch和numpy的对比_numpy 与torch区别

numpy 与torch区别

一、numpy和torch

  1. numpy是python中处理数据的模块,可以处理各种的矩阵(matrix)。
  2. Torch自称为神经网络中的numpy。它会将torch产生的tensor放在GPU中加速运算,就像numpy会把array放在CPU中加速运算。

numpy和torch能很好的兼容,对于数据的运算形式也十分相似。numpy array和torch tensor之间也能很好的转换。

二、numpy和torch之间的转换以及运算

  • numpy和torch之间的转换
  1. import numpy
  2. import torch
  3. numpy_data=numpy.arange(6).reshape((2,3)) #numpy array 将数组转换为2行3列的形式
  4. torch_data=torch.tensor([1,2,3,4,5,6]).reshape((3,2))#torch tensor
  5. #numpy array与torch tensor之间的相互转换
  6. array2tensor=torch.from_numpy(numpy_data)#numpy array->torch tensor,其参数必须是数组形式
  7. tensor2array=torch_data.numpy() #torch tensor->numpy array
  8. print(
  9. 'numpy array:\n',numpy_data,
  10. '\nnumpy array->torch tensor:\n',array2tensor,
  11. '\n\ntorch tensor:\n',torch_data,
  12. '\ntorch tensor->numpy array:\n',tensor2array
  13. )

运行结果:

  1. numpy array:
  2. [[0 1 2]
  3. [3 4 5]]
  4. numpy array->torch tensor:
  5. tensor([[0, 1, 2],
  6. [3, 4, 5]], dtype=torch.int32)
  7. torch tensor:
  8. tensor([[1, 2],
  9. [3, 4],
  10. [5, 6]])
  11. torch tensor->numpy array:
  12. [[1 2]
  13. [3 4]
  14. [5 6]]
  • torch中的部分数学运算举例。(与numpy对比着来看一下)
  1. import numpy
  2. import torch
  3. #abs 绝对值
  4. data1=[-2,1,-3,-5]
  5. tensor1=torch.IntTensor(data1) #转换为整型的tenor
  6. print(
  7. 'abs_numpy:\n',numpy.abs(data1),
  8. '\nabs_torch:\n',torch.abs(tensor1)
  9. )
  10. #sin 三角函数
  11. data2=[numpy.pi/2.0]
  12. tensor2=torch.FloatTensor(data2)
  13. print(
  14. 'sin_numpy:\n',numpy.sin(data2),
  15. '\nsin_torch:\n',torch.sin(tensor2)
  16. )
  17. #mean 平均值
  18. data3=[1,2,3]
  19. tensor3=torch.FloatTensor(data3)
  20. print(
  21. 'mean_numpy:\n',numpy.mean(data3),
  22. '\nmean_torch:\n',torch.mean(tensor3)
  23. )

运算结果:

  1. abs_numpy:
  2. [2 1 3 5]
  3. abs_torch:
  4. tensor([2, 1, 3, 5], dtype=torch.int32)
  5. sin_numpy:
  6. [1.]
  7. sin_torch:
  8. tensor([1.])
  9. mean_numpy:
  10. 2.0
  11. mean_torch:
  12. tensor(2.)
  • torch中的矩阵运算与numpy中的矩阵运算的对比
    1. import numpy
    2. import torch
    3. #矩阵相乘
    4. np_matrix1=[[1,2],[3,4]]
    5. torch_matrix1=torch.IntTensor(np_matrix1)
    6. #matrix_multiply
    7. print(
    8. 'numpy_mutiply:\n',numpy.matmul(np_matrix1,np_matrix1),
    9. '\ntorch_multiply:\n',torch.matmul(torch_matrix1,torch_matrix1)
    10. )
    11. torch_matrix2=torch.IntTensor([1,2,3])
    12. #matrix_dot
    13. print(
    14. '\nnumpy_dot:\n',numpy.dot(np_matrix1,np_matrix1),
    15. '\ntorch_dot:\n',torch.dot(torch_matrix2,torch_matrix2),
    16. )

    运行结果: 

    1. numpy_mutiply:
    2. [[ 7 10]
    3. [15 22]]
    4. torch_multiply:
    5. tensor([[ 7, 10],
    6. [15, 22]], dtype=torch.int32)
    7. numpy_dot:
    8. [[ 7 10]
    9. [15 22]]
    10. torch_dot:
    11. tensor(14, dtype=torch.int32)

    注:tensor.dot()  只针对一维数组进行运算

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号