pytorch中五种常用随机矩阵构造方法:rand、randn、randn_like、randint、randperm

本文主要是介绍pytorch中五种常用随机矩阵构造方法:rand、randn、randn_like、randint、randperm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 torch.rand:构造均匀分布张量

torch.rand是用于生成均匀随机分布张量的函数,从区间[0,1)的均匀分布中随机抽取一个随机数生成一个张量,其调用方法如下所示:

torch.rand(sizes, out=None) ➡️ Tensor

参数:

  • sizes:用于定义输出张量的形状

示例代码:

import torch# 生成一个每个元素服从0-1均匀分布的4行3列随机张量
random_tensor = torch.rand(4, 3)
print('tensor:', random_tensor)
print('type:', random_tensor.type())
print('shape:', random_tensor.shape)

运行代码显示:

tensor: tensor([[0.4349, 0.8567, 0.7321],[0.4057, 0.0222, 0.3444],[0.9679, 0.0980, 0.8152],[0.1998, 0.7888, 0.5478]])
type: torch.FloatTensor
shape: torch.Size([4, 3])

2 torch.randn:构造标准正态分布张量

torch.randn()是用于生成正态随机分布张量的函数,从标准正态分布中随机抽取一个随机数生成一个张量,其调用方法如下所示:

torch.randn(sizes, out=None) ➡️ Tensor

参数:

  • sizes:用于定义输出张量的形状

示例代码:

import torch# 生成一个每个元素均为标准正态分布的4行3列随机张量
random_tensor = torch.randn(4, 3)
print('tensor:', random_tensor)
print('type:', random_tensor.type())
print('shape:', random_tensor.shape)

运行代码显示:

tensor: tensor([[ 0.7776,  0.6305,  0.1961],[ 0.1831, -0.4187,  0.1245],[ 0.3092, -1.0463, -0.6656],[-1.0098,  1.3861, -0.2600]])
type: torch.FloatTensor
shape: torch.Size([4, 3])

3 torch.randn_like:构造与输入形状相同正态分布张量

torch.randn_like()用于生成一个与输入张量大小相同的张量,其中填充了均值为 0 方差为 1 的正态分布的随机值,其调用方法如下所示:

torch.randn_like(input_tensor, dtype=None, layout=None, device=None, requires_grad=False) ➡️ Tensor

参数:

  • input_tensor(必需)- 其大小将用于生成输出张量的输入张量。

  • dtype(可选)- 输出张量所需的数据类型。默认为None,这意味着将使用输入张量的数据类型。

  • layout(可选)- 输出张量所需的内存布局。默认为None,这意味着将使用输入张量的内存布局。

  • device(可选)- 输出张量所需的设备。默认为None,这意味着将使用输入张量的设备。

  • requires_grad(可选)- 输出张量是否应该在反向传播期间计算其梯度。默认为False。

示例代码:

import torch# 生成一个每个元素均为标准正态分布的4行3列随机张量
tensor_x = torch.randn(4, 3)
tensor_y = torch.randn_like(tensor_x)print('tensor_x:', tensor_x)
print('type:', tensor_x.type())
print('shape:', tensor_x.shape)print('tensor_y:', tensor_y)
print('type:', tensor_y.type())
print('shape:', tensor_y.shape)

运行代码显示:

tensor_x: tensor([[ 5.5292e-01,  6.5111e-01, -6.0329e-04],[ 1.0402e+00, -7.4630e-01,  7.5701e-01],[ 8.8160e-02, -1.2581e+00, -1.8089e-01],[-4.2769e-01, -8.5043e-01, -5.8388e-01]])
type: torch.FloatTensor
shape: torch.Size([4, 3])
tensor_y: tensor([[ 0.2308,  0.3297, -0.6633],[ 1.7389,  0.6372, -1.1069],[-0.2415, -0.8585,  0.3343],[-1.2581, -0.5001,  0.0317]])
type: torch.FloatTensor
shape: torch.Size([4, 3])

4 torch.randint:构造区间分布张量

torch.randint()是用于生成任意区间分布张量的函数,从标准正态分布中随机抽取一个随机数生成一个张量,其调用方法如下所示:

torch.randint(low=0, high, sizes, out=None) ➡️ Tensor

参数:

  • low~high:随机数的区间范围

  • sizes:用于定义输出张量的形状

示例代码:

import torch# 生成一个每个元素均为[1-10]均匀分布的4行3列随机张量
tensor_int = torch.randint(1, 10, (4, 3))
print('tensor_int:', tensor_int)
print('type:', tensor_int.type())
print('shape:', tensor_int.shape)

运行代码显示:

tensor_int: tensor([[1, 7, 1],[3, 8, 7],[5, 2, 1],[5, 3, 6]])
type: torch.LongTensor
shape: torch.Size([4, 3])

5 torch.randperm:根据生成的随机序号对张量进行随机排序

torch.randint()是用于对张量序号进行随机排序的函数,根据生成的随机序列进行随机排序,其调用格式如下所示:

torch.randperm(n, out=None, dtype=torch.int64) ➡️ LongTensor

参数:

  • n:一个整数,可以理解为张量某个方向的维度

  • dtype:返回的数据类型(torch.int64

示例代码:

import torch# 生成一个0~3的随机整数排序
idx = torch.randperm(4)# 生成一个4行3列的张量
tensor_4 = torch.Tensor(4, 3)# 为了方便对比,首先输出tensor_4的结果
print("原始张量\n", tensor_4)# 下面输出随机生成的行序号
print("\n生成的随机序号\n", idx)# 下面的指令实现了在行的方向上,对tensor_4进行随机排序,并输出结果
print("\n随机排序后的张量\n", tensor_4[idx])

运行代码显示:

原始张量tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])生成的随机序号tensor([3, 0, 2, 1])随机排序后的张量tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])

这篇关于pytorch中五种常用随机矩阵构造方法:rand、randn、randn_like、randint、randperm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/477147

相关文章

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert