tensor生成操作大全

一、
torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False) → Tensor
1、用data创建一个tensor
2、torch.tensor会从data出复制数据,意味着生成的tensor不会和data共享内存(改变data并不会改变tensor)

#data: 数据,类似于数组
#dtype: 生成的tensor类型
#device: cpu或者GPU
#requires_grad:是否进行微分
#pin_memory: 是否分配到pinned memory,仅仅适用于CPUtensor
import torch
#如果gpu可用选择gpu,否则用cpu
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
x = torch.tensor([1.,2], dtype=torch.float64, device=device,requires_grad=True)
x

tensor([ 1.,  2.], dtype=torch.float64, device='cuda:0')

二、
torch.sparse_coo_tensor(indices, values, size=None, dtype=None, device=None, requires_grad=False) → Tensor :创建一个稀疏tensor,格式为COO类型
COO类型表示给出非零元素的坐标形式

# indices:非零元素的坐标,如下例的indices,indices[0]表示三个横坐标,indices[1]表示三个纵坐标,因此稀疏矩阵中非零的位置分别为(0,2),(1,0),(1,2)
# values: 非零元素的值, 如下例中的values,三个非零元素分别为3,4,5
#size:次数矩阵的维度
indices = torch.tensor([[0, 1, 1], [2, 0, 2]])
values = torch.tensor([3, 4, 5], dtype=torch.float32)
x = torch.sparse_coo_tensor(i, v, [2, 4])
x

torch.sparse.FloatTensor of size (2,4) with indices:
tensor([[ 0,  1,  1],
        [ 2,  0,  2]])
and values:
tensor([ 3.,  4.,  5.])

三、
torch.as_tensor(data, dtype=None,device=None)->Tensor : 为data生成tensor
如果data已经是tensor,且dtype和device与参数相同,则生成的tensor会和data共享内存。如果data是ndarray,且dtype对应,devices为cpu,则同样共享内存。其他情况则不共享内存。

import torch
import numpy
a = numpy.array([1, 2, 3])
t = torch.as_tensor(a)

四、
torch.from_numpyy(ndarray) -> tensor
将numpy.ndarray数据转换为tensor,其tensor与ndarry共享内存

import torch
import numpy
x = numpy.array([1,2,3])
y = torch.from_numpy(x)
print(y)
#修改y的数据,x也会变化
y[0]=100
print(x)

tensor([ 1,  2,  3])
[100   2   3]

五、
torch.zeros(*sizes, out=None, dtype=None …) -> Tensor
torch.ones同理
生成一个size大小的0tensor

import torch
torch.zeros(2,3)

tensor([[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]])

六、
torch.zeros_like(input, dtype=None, …) -> Tensor
torch.ones_like同理
生成和input形状一样的0tensor

import torch
x = torch.tensor([2,3])
y = torch.zeros_like(x)
y

tensor([ 0,  0])

七、
torch.arange(start=0, end, step=1,…) ->tensor
从start开始,每step步生成一个数值,直到end

import torch
x = torch.arange(start=2, end=7, step=1.5)
x

tensor([ 2.0000,  3.5000,  5.0000,  6.5000])

九、
torch.eye(n,m=None,…)
生成形状为(n,m),对角线为1,其余为0的矩阵。m默认等于n

import torch
x = torch.eye(3)
print(x)
y = torch.eye(3,2)
print(y)

tensor([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]])
tensor([[ 1.,  0.],
        [ 0.,  1.],
        [ 0.,  0.]])

十、
torch.empty(*sizes, …)->tensor : 生成size大小的未经未经过初始化的数据。
torch.empty_like与torch.ones_like类似

import torch
x = torch.empty(2,3)
x

tensor([[ 0.0667,  0.0000,  3.1263],
        [ 0.0000,  0.0000,  0.0000]])

十一、
torch.full(size, fill_value, …) -> Tensor :生成size大小以fill_value填充的tensor
torch.full_like与torch.ones_like同理

import torch
x = torch.full((2,3),0.5)
x

tensor([[ 0.5000,  0.5000,  0.5000],
        [ 0.5000,  0.5000,  0.5000]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值