本文对Pytorch中创建随机数Tensor的一些常用方法进行总结,主要包括
- randn
- randn_like
- rand
- rand_like
- randint
- randint_like
1 torch.randn
形式
torch.randn(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False)
功能
返回一个均值为o,方差为1的符合正态分布的形状为size的随机数填充的Tensor。
参数
- size:定义输出张量形状的整数序列,列表或者元祖
- dtype:输出张量的数据类型
- layout:输出张量的布局
- device:输出张量的设备,如CPU或者CUDA
- require_grad:如果为真,autograd应该在返回的张量上记录操作。默认值:False。
- pin_memory:如果为真,则返回的张量将分配到固定内存中。仅适用于CPU张量。默认值:False。
使用示例
import torch
if __name__ == '__main__':
a = torch.randn(2, 2)
print(a)
b = torch.randn(size=(2, 2))
print(b)
输出
tensor([[ 1.8956, -0.8104],
[-1.4132, 0.6851]])
tensor([[-0.0448, -0.0469],
[-0.1450, -2.4475]])
2 torch.randn_like
形式
torch.randn_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format)
功能
返回一个与input张量size相同,均值为o,方差为1的符合正态分布的随机数填充的Tensor。
参数
- input:需要检测size的输入张量
- dtype:输出张量的数据类型
- layout:输出张量的布局
- device:输出张量的设备,如CPU或者CUDA
- require_grad:如果为真,autograd应该在返回的张量上记录操作。默认值:False。
- memory_format:输出张量的内存格式
使用示例
import torch
if __name__ == '__main__':
a = torch.eye(4)
print(a)
b = torch.randn_like(a)
print(b)
输出
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
tensor([[-0.4519, -1.3703, 1.2359, -1.2844],
[ 0.9674, -0.8321, 0.0218, 1.1582],
[ 0.2429, 0.2481, -0.8332, 1.1218],
[-0.7720, -0.4556, -0.7187, -1.0111]])
3 torch.rand
形式
torch.rand(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False)
功能
返回一个均匀分布在[0,1)区间的形状为size的随机数填充的Tensor。
参数
- size:定义输出张量形状的整数序列,列表或者元祖
- dtype:输出张量的数据类型
- layout:输出张量的布局
- device:输出张量的设备,如CPU或者CUDA
- require_grad:如果为真,autograd应该在返回的张量上记录操作。默认值:False。
- pin_memory:如果为真,则返回的张量将分配到固定内存中。仅适用于CPU张量。默认值:False。
使用示例
import torch
if __name__ == '__main__':
a = torch.rand(2, 2)
print(a)
b = torch.rand(size=(2, 2))
print(b)
输出
tensor([[0.8743, 0.7553],
[0.2865, 0.0855]])
tensor([[0.0394, 0.9032],
[0.9975, 0.1686]])
4 torch.rand_like
形式
torch.rand_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format)
功能
返回一个与input张量size相同,均匀分布在[0,1)区间的随机数填充的Tensor。
参数
- input:需要检测size的输入张量
- dtype:输出张量的数据类型
- layout:输出张量的布局
- device:输出张量的设备,如CPU或者CUDA
- require_grad:如果为真,autograd应该在返回的张量上记录操作。默认值:False。
- memory_format:输出张量的内存格式
使用示例
import torch
if __name__ == '__main__':
a = torch.eye(4)
print(a)
b = torch.rand_like(a)
print(b)
输出
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
tensor([[0.3027, 0.8182, 0.0203, 0.3121],
[0.9693, 0.2909, 0.2630, 0.9446],
[0.0036, 0.8017, 0.6602, 0.8106],
[0.7111, 0.6369, 0.4642, 0.0651]])
5 torch.randint
形式
torch.randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
功能
返回一个均匀分布在最低值为low,最高值为high,形状为size的随机数Tensor
参数
- low:最低值,默认为0
- high:最高值
- size:定义输出张量形状的整数序列,列表或者元祖
- dtype:输出张量的数据类型
- layout:输出张量的布局
- device:输出张量的设备,如CPU或者CUDA
- require_grad:如果为真,autograd应该在返回的张量上记录操作。默认值:False。
使用示例
import torch
if __name__ == '__main__':
b = torch.randint(0, 10, size=(2, 2))
print(b)
输出
tensor([[5, 8],
[2, 3]])
6 torch.randint_like
形式
torch.randint_like(input, low=0, high, \*, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format)
功能
返回一个均匀分布在最低值为low,最高值为high,形状与输入张量input相同的随机数Tensor
参数
- input:需检测形状的输入张量
- low:最低值,默认为0
- high:最高值
- dtype:输出张量的数据类型
- layout:输出张量的布局
- device:输出张量的设备,如CPU或者CUDA
- require_grad:如果为真,autograd应该在返回的张量上记录操作。默认值:False。
- memory_format:输出张量的内存格式
使用示例
import torch
if __name__ == '__main__':
a = torch.eye(4)
print(a)
b = torch.randint_like(a, 1, 10)
print(b)
输出
tensor([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
tensor([[1., 2., 9., 6.],
[3., 1., 8., 2.],
[6., 3., 1., 8.],
[5., 3., 5., 3.]])
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Pytorch – 创建随机Tensor的常用方法
原文链接:https://www.stubbornhuang.com/2439/
发布于:2022年12月08日 10:12:41
修改于:2023年06月21日 17:45:32
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50