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)  : 将张量按维度进行平均切分

相关文章
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
|
3月前
|
存储 并行计算 PyTorch
探索PyTorch:张量数值计算
探索PyTorch:张量数值计算
|
3月前
|
机器学习/深度学习 并行计算 PyTorch
探索PyTorch:张量的创建和数值计算
探索PyTorch:张量的创建和数值计算
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
探索PyTorch:张量的类型转换,拼接操作,索引操作,形状操作
|
3月前
|
PyTorch 算法框架/工具 Python
Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换
这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。
52 0
|
5月前
|
机器学习/深度学习 人工智能 PyTorch
掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析
PyTorch提供了几种张量乘法的方法,每种方法都是不同的,并且有不同的应用。我们来详细介绍每个方法,并且详细解释这些函数有什么区别:
88 4
掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析
|
5月前
|
机器学习/深度学习 算法 PyTorch
【深度学习】TensorFlow面试题:什么是TensorFlow?你对张量了解多少?TensorFlow有什么优势?TensorFlow比PyTorch有什么不同?该如何选择?
关于TensorFlow面试题的总结,涵盖了TensorFlow的基本概念、张量的理解、TensorFlow的优势、数据加载方式、算法通用步骤、过拟合解决方法,以及TensorFlow与PyTorch的区别和选择建议。
299 2
|
5月前
|
存储 PyTorch API
Pytorch入门—Tensors张量的学习
Pytorch入门—Tensors张量的学习
44 0
|
7月前
|
算法 PyTorch 算法框架/工具
Pytorch - 张量转换拼接
使用 Tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。
|
7月前
|
存储 机器学习/深度学习 PyTorch
Pytorch-张量形状操作
PyTorch中,张量形状操作至关重要,如reshape用于改变维度而不变元素,transpose/permute用于维度交换,view改形状需内存连续,squeeze移除单维度,unsqueeze添加维度。这些函数帮助数据适应神经网络层间的转换。例如,reshape能调整数据适配层的输入,transpose用于矩阵转置或多维排列,而squeeze和unsqueeze则用于处理单维度。理解并熟练运用这些工具是深度学习中必要的技能。