深度学习入门—数据的基本操作

Tensors

Tensors张量是一种特殊的数据结构,它类似于数组和矩阵,在Pytorch中,我们使用tensors来给模型的输入输出以及参数进行编码,Tensors除了张量可以在gpu或者其他专用硬件上来使用加速计算之外,其他用法类似于Numpy中的ndarrays。

import torch
import numpy as np

初始化Tensor有很多方法:

1.从数据创建

data = [[1, 2],[3, 4]]
x_data=torch.tensor(data)

2.从Nmupy创建

np_array = np.array(data)
x_np=torch.from_numpy(np_array)

3.从其他tensor创建

x_ones=torch.ones_like(x_data)#创建类似于x_data的单位张量
x_rands=torch.rand_like(x_data,dtype=torch.float)
#创建类似于x_data,数据类型为float且数据随机的张量返回在区间[0,1)[0,1)上由均匀分布的随机数填充的张量

shape=23,)
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor=torch.zeros(shape)

Tensors属性

tensor = torch.rand(3,4)

Tensors操作
Tensors有超过100个操作,该网站可以访问:https://pytorch.org/docs/stable/torch.html
它们都可以在GPU上运行,通常性能要好于CPU,如果使用的Colab,通过编辑>笔记本来分配一个GPU

We move our tensor to the GPU if available
if torch.cuda.is_available():
  tensor = tensor.to('cuda')

切片操作:

tensor = torch.ones(4,4)
tensor[:,1]=0 #让所有行的第一列变为0,结果如下

tensor([[1., 0., 1., 1.],
[1., 0., 1., 1.],
[1., 0., 1., 1.],
[1., 0., 1., 1.]])
合并操作:
可以使用torch.cat来沿着特定维数来连接一些列张量。torch.stack()另一个加入op的张量与torch.cat略有不同

t1=torch.cat([tensor,tensor,tensor],dim=1)
#dim=0按行拼接,dim=1按列拼接
tensor([[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
        [1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
        [1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
        [1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.]])

tensors的加法:

a=2020
tensor=tensor([ 0.2824, -0.3715,  0.9088])
tensor.mul(tensor,a)
#对两个张量进行逐元素乘法,也就是tensor中的所有元素乘以a,要求两个张量维度相同,如1*2 mul 1*2返回1*2张量,1*4和1*1mul返回1*4张量,但是4*5和6*7不可以mul,也可以用*直接代替

原地操作
带有后缀_的操作表示原地操作,例如x.copy_(y),x.t_()将改变x

tensor.add_(5)#矩阵原地+5

tensor转换为numpt数组

t=torch.ones(5)
n=t.numpy()

t:tensor([1.,1.,1.,1.,1.])
n:[1.1.1.1.1]

Numpy数组也可以转换为Tensor
n=np.ones(5)
t=torch.from_numpy(n)

值得一提的是索引和切片操作,我们可以用[-1]选择最后一个元素,用[1:3]第二和第三个元素,这个的[1:3]是一个区间可以理解为大于等于1且小于3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值