PyTorch学习 初识tensor

什么是tensor

  1. tensor是一个多维数组

一个单独的数据称为scalar(标量),shape是零维

一维的数据称为array(数组)

二维的数据称为matrix(矩阵)

>>> import torch
>>> scalar = torch.tensor(3)

>>> scalar.shape
>>> torch.Size([])

>>> array = torch.tensor([1, 2, 3])
>>> array.shape
>>> torch.Size([3])

>>> matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
>>> matrix.shape
>>> torch.Size([2, 3])

>>> scalar.ndim
>>> 0

>>> array.ndim
>>> 1

>>> matrix.ndim
>>> 2
  1. 对模型输入,输出,参数进行编码

深度学习模型的input,output,parameters均以tensor表示

  1. 可在GPU上运算(并行计算)

  2. tensor与numpy数组共享内存(一个改变,另一个改变)

  3. 支持自动微分(autograd)

tensor的创建

由list创建tensor

import torch
# 由列表创建tensor

data = [
    [1., 2],
    [3, 4]
]

x_data = torch.tensor(data)
print(f'x_data: {x_data}')
print(f'type(x_data): {type(x_data)}')
print(f'x_data.dtype: {x_data.dtype}')
print(f'x_data.data: {x_data.data}')

请注意以上example code中data二维列表的data[0][0]元素为浮点类型。
由此创建的tensor为torch.float32类型

运行结果:

x_data: tensor([[1., 2.],
        [3., 4.]])
type(x_data): <class 'torch.Tensor'>
x_data.dtype: torch.float32
x_data.data: tensor([[1., 2.],
        [3., 4.]])

由numpy数组创建tensor

import torch
import numpy as np

data = np.random.normal(size=(2, 3))
x_data = torch.tensor(data)
print(f'x_data: {x_data}')

运行结果:

x_data: tensor([[ 0.6630, -1.6560, -1.0535],
        [ 1.0881, -0.6041,  0.4296]], dtype=torch.float64)

由另一个tensor

import torch
import numpy as np

data = np.random.normal(size=(2, 3))
x_data = torch.tensor(data)

ones_like_data = torch.ones_like(x_data)
zeros_like_data = torch.zeros_like(x_data)
rand_like_data = torch.rand_like(x_data)

print(f'ones_like_data: {ones_like_data}')
print(f'zeros_like_data: {zeros_like_data}')
print(f'rand_like_data: {rand_like_data}')

rand_data = torch.rand(size=(2, 2))
print(rand_data)

运行结果:

ones_like_data: tensor([[1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
zeros_like_data: tensor([[0., 0., 0.],
        [0., 0., 0.]], dtype=torch.float64)
rand_like_data: tensor([[0.6290, 0.7816, 0.1809],
        [0.8491, 0.4424, 0.5802]], dtype=torch.float64)
tensor([[0.5059, 0.3761],
        [0.4400, 0.8277]])

tensor的一些属性

属性名说明
shape返回tensor的维度
ndim返回tensor的维度数
dtype返回tensor的数据类型
device返回tensor所在的设备
require_grad返回当前tensor是否需要梯度计算
import torch
import numpy as np

data = np.random.normal(size=(2, 3))
x_data = torch.tensor(data)

print(x_data.shape)
print(x_data.ndim)
print(x_data.dtype)
print(x_data.device)
print(x_data.requires_grad)

运行结果:

torch.Size([2, 3])
2
torch.float64
cpu
False

对于device属性,常常用以下操作,指定运行设备

device = 'cuda' if torch.cuda.is_available() else 'cpu'
print(device)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值