PyTorch 张量(Tensor)

PyTorch 张量(Tensor),张量是PyTorch最基本的操作对象,英文名称为Tensor,它表示的是一个多维的矩阵。比如零维是一个点,一维就是向量,二维就是一般的矩阵,多维就相当于一个多维的数组,这和numpy是对应的,而且 Pytorch 的 Tensor 可以和 numpy 的ndarray相互转换,唯一不同的是Pytorch可以在GPU上运行,而numpy的 ndarray 只能在CPU上运行。

原文:https://geek-docs.com/pytorch/pytorch-tutorial/pytorch-tensor.html

常用的不同数据类型的 Tensor 如下:

  • 32位浮点型torch.FloatTensor
  • 64位浮点型torch.DoubleTensor
  • 16位整型torch.ShortTensor
  • 32位整型 torch.IntTensor
  • 64位整型torch.LongTensor

创建tensor矩阵

我们可以通过下面这样的方式来定义一个三行两列给定元素的矩阵,并且显示出矩阵的元素和大小:

import torch

a = torch.Tensor([[2,3], [4,8], [7, 9]])
print('a is: {}'.format(a))
print('a size is {}'.format(a.size()))

执行结果如下:
在这里插入图片描述

需要注意的是torch.Tensor默认的是torch.FloatTensor数据类型

也可以定义我们想要的数据类型,就像下面这样:

import torch

b = torch.LongTensor([[2, 3],[4, 8],[7, 9]])
print('b is: {}'.format(b))
print('b size is {}'.format(b.size()))

执行结果如下:
在这里插入图片描述

当然也可以创建一个全是 0 的空Tensor或者取一个正太分布作为随机初始值:

import torch

c = torch.zeros((3, 2))
print('zero tensor: {}'.format(c))

d = torch.randn((3,2))
print('noraml randon is : {}'.format(d))

执行结果如下:
在这里插入图片描述

我们也可以像numpy一样通过索引的方式取得其中的元素NumPy 切片和索引,同时也可以改变它的值,比如将a的第一行第二列改变为100。

import torch

a = torch.Tensor([[2, 3],[4, 8],[7, 9]])
a[0, 1] = 100
print('changed a is: {}'.format(a))

执行结果如下:
在这里插入图片描述

tensor矩阵与ndarray相互转换

除此之外,还可以在Tensor与numpy.ndarray之间相互转换:

import torch
import numpy as np

b = torch.LongTensor([[2, 3],[4, 8],[7, 9]])
numpy_b = b.numpy()
print('cover to many is \n {}'.format(numpy_b))

e = np.array([[2, 3],[4, 5]])
torch_e = torch.from_numpy(e)
print('from numpy tp torch.Tensor is {}'.format(torch_e))
f_torch_e = torch_e.float()
print('change data type to float tensor: {}'.format(f_torch_e))

执行结果如下:
在这里插入图片描述

通过简单的b.numpy(),就能将b转换为numpy数据类型,同时使用torch.from_numpy()就能将 numpy 转换为 tensor,如果需要更改 tensor 的数据类型,只需要在转换后的 tensor 后面加上你需要的类型,比如想将 a 的类型转换为 float,只需a.float()就可以了。

GPU 加速

如果你的电脑支持GPU加速,还可以将 Tensor 放到GPU上。首先通过torch.cuda.is_available()判断一下是否支持GPU,如果想把tensor a放到GPU上,只需a.cuda()就能将tensor a放到GPU上了。

if torch.cuda.is_available():
   a_cuda = a.cuda()
   print(a_cuda)

极客教程相关文章推荐,欢迎阅读!
PyTorch 环境搭建
Cuda和Cudnn 安装教程
Anaconda 安装教程
PyTorch 是什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值