pytorch张量的创建

简介: • 张量(Tensors)类似于NumPy的ndarrays ,但张量可以在GPU上进行计算。从本质上来说,PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。

张量的创建


  • 张量(Tensors)类似于NumPy的ndarrays ,但张量可以在GPU上进行计算。从本质上来说,PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。



import torch
import numpy
torch.manual_seed(7) # 固定随机数种子


直接创建


  1. torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False)

  1. 功能:从data创建tensor

            1.  data: 数据,可以是list,numpy

            2.  dtype: 数据类型,默认与data的一致

            3.  device: 所在设备,cuda/cpu

            4.  requires_grad: 是否需要梯度

            5.  pin_memory: 是否存于锁页内存



torch.tensor([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]])
 
tensor([[0.1000, 1.2000],
,        [2.2000, 3.1000],
,        [4.9000, 5.2000]])


  1. torch.from_numpy(ndarray)

  1. 功能:从numpy创建tensor

从torch.from_numpy创建的tensor于原ndarray共享内存,当修改其中一个数据,另一个也将会被改动


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


依据数值创建


  1. torch.zeros(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

  1. 功能:依size创建全0张量

            1. size: 张量的形状

            2. out: 输出的张量

            3. layout: 内存中布局形式

            4.  device: 所在设备

            5. requires_grad: 是否需要梯度

torch.zeros(2, 3)
 
tensor([[0., 0., 0.],
,        [0., 0., 0.]])


  1. torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False)

  1. 功能:依input形状创建全0张量

           1.input: 创建与input同形状的全0张量

           2.dtype: 数据类型

           

           3.layout: 内存中布局形式


input = torch.empty(2, 3)
torch.zeros_like(input)
 
tensor([[0., 0., 0.],
,        [0., 0., 0.]])


torch.ones(2, 3)
 
tensor([[1., 1., 1.],
,        [1., 1., 1.]])


  1. torch.ones_like(input, dtype=None, layout=None, device=None, requires_grad=False)

  1. 功能:依input形状创建全1张量

              1.size: 张量的形状

              2.dtype: 数据类型

              3.layout: 内存中布局形式

              4.device: 所在设备

              5.requires_grad: 是否需要梯度


input = torch.empty(2, 3)
torch.ones_like(input)
 
tensor([[1., 1., 1.],
,        [1., 1., 1.]])


  1. torch.full_like(input, dtype=None, layout=torch.strided, device=None, requires_grad=False)

  1. 功能: 依input形状创建指定数据的张量

             1.size: 张量的形状

             2.fill_value: 张量的值

  1. torch.arange(start=0, end. step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

  1. 功能:创建等差的1维张量

             1.start: 数列起始值

             2.end: 数列结束值

             3.step: 数列公差,默认为1


torch.arange(1, 2.5, 0.5)
 
tensor([1.0000, 1.5000, 2.0000])


依概率分布创建张量


torch.normal(mean, std, out=None) : 生成正态分布


# mean为张量, std为张量
torch.normal(mean=torch.arange(1., 11.), std=torch.arange(1, 0, -0.1))
 
tensor([0.8532, 2.7075, 3.7575, 3.2200, 6.0145, 5.5526, 6.8577, 8.3697, 9.0276,
,        9.8318])



torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) : 生成标准正态分布


torch.randn(2, 3)
 
tensor([[1.3955, 1.3470, 2.4382],
,        [0.2028, 2.4505, 2.0256]])


torch.rand(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) : 在[0,1)上,生成均匀分布


torch.rand(2, 3)
 
tensor([[0.7405, 0.2529, 0.2332],
,        [0.9314, 0.9575, 0.5575]])


张量拼接与切分


torch.cat(tensors, dim=0, out=None) : 将张量按维度进行拼接


x = torch.randn(2, 3)
torch.cat((x, x, x), 1)
 
# 
tensor([[-1.7038,  0.6248,  0.1196, -1.7038,  0.6248,  0.1196, -1.7038,  0.6248,
,          0.1196],
,        [-0.8049,  1.6162,  0.2516, -0.8049,  1.6162,  0.2516, -0.8049,  1.6162,
,          0.2516]])


torch.stack(tensors, dim=0, out=None) : 在新创建的维度上进行拼接


torch.chunk(input, chunks, dim=0)  : 将张量按维度进行平均切分

相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch基础之张量模块数据类型、基本操作、与Numpy数组的操作详解(附源码 简单全面)
PyTorch基础之张量模块数据类型、基本操作、与Numpy数组的操作详解(附源码 简单全面)
48 0
|
10月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记(1):基本概念、安装、张量操作、逻辑回归
Pytorch学习笔记(1):基本概念、安装、张量操作、逻辑回归
177 0
Pytorch学习笔记(1):基本概念、安装、张量操作、逻辑回归
|
5天前
|
算法 PyTorch 算法框架/工具
Pytorch - 张量转换拼接
使用 Tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。
|
5天前
|
存储 机器学习/深度学习 PyTorch
Pytorch-张量形状操作
PyTorch中,张量形状操作至关重要,如reshape用于改变维度而不变元素,transpose/permute用于维度交换,view改形状需内存连续,squeeze移除单维度,unsqueeze添加维度。这些函数帮助数据适应神经网络层间的转换。例如,reshape能调整数据适配层的输入,transpose用于矩阵转置或多维排列,而squeeze和unsqueeze则用于处理单维度。理解并熟练运用这些工具是深度学习中必要的技能。
|
5天前
|
机器学习/深度学习 人工智能 PyTorch
PyTorch-张量
PyTorch 是Facebook AI团队开发的深度学习框架,其核心是张量,它是同类型数据的多维数组。张量可以通过`torch.tensor()`、`torch.Tensor()`、指定类型如`IntTensor`等创建。张量操作包括线性(`torch.arange`, `torch.linspace`)、随机(`torch.randn`, `torch.manual_seed`)和全0/1张量(`torch.zeros`, `torch.ones`)。张量间可进行阿达玛积(逐元素相乘),类型转换用`type()`或`double()`。
|
5天前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch-张量基础操作
张量是一个多维数组,它是标量、向量和矩阵概念的推广。在深度学习中,张量被广泛用于表示数据和模型参数。
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】-了解张量(Tensor)
【PyTorch】-了解张量(Tensor)
|
1月前
|
机器学习/深度学习 存储 PyTorch
PyTorch深度学习基础:张量(Tensor)详解
【4月更文挑战第17天】本文详细介绍了PyTorch中的张量,它是构建和操作深度学习数据的核心。张量是多维数组,用于存储和变换数据。PyTorch支持CPU和GPU张量,后者能加速大规模数据处理。创建张量可通过`torch.zeros()`、`torch.rand()`或直接从Python列表转换。张量操作包括数学运算、切片和拼接。在深度学习中,张量用于神经网络模型的构建和训练。理解张量对于掌握PyTorch至关重要。
|
1月前
|
存储 机器学习/深度学习 PyTorch
PyTorch核心--tensor 张量 !!
PyTorch核心--tensor 张量 !!
37 1
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch的10个基本张量操作
PyTorch是一个基于python的科学计算包。它的灵活性允许轻松集成新的数据类型和算法,并且框架也是高效和可扩展的,下面我们将介绍一些Pytorch的基本张量操作。
82 1