51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

PyTorch Tensor 创建方法

PyTorch 是一个 Python 包,用于将数据封装成张量(Tensor)来进行运算。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。

  1. 基本创建方式

  2. 创建线性和随机张量

  3. 创建01张量

  4. 张量元素类型转换

  5. 基本创建方式 {#title-0} ====================

  6. torch.tensor

  7. torch.Tensor

  8. torch.IntTensor、torch.FloatTensor、torch.DoubleTensor

import torch
import numpy as np
import random

1. 根据已有数据创建张量

def test01():

# 1. 创建张量标量
data = torch.tensor(10)
print(data)

2. numpy 数组, 由于 data 为 float64, 下面代码也使用该类型

data = np.random.randn(2, 3) data = torch.tensor(data) print(data)

3. 列表, 下面代码使用默认元素类型 float32

data = [[10., 20., 30.], [40., 50., 60.]] data = torch.tensor(data) print(data)

2. 创建指定形状的张量

def test02():

# 1. 创建2行3列的张量, 默认 dtype 为 float32
data = torch.Tensor(2, 3)
print(data)

2. 注意: 如果传递列表, 则创建包含指定元素的张量

data = torch.Tensor([10]) print(data)

data = torch.Tensor([10, 20]) print(data)

3. 使用具体类型的张量

def test03():

# 1. 创建2行3列, dtype 为 int32 的张量
data = torch.IntTensor(2, 3)
print(data)

2. 注意: 如果传递的元素类型不正确, 则会进行类型转换

data = torch.IntTensor([2.5, 3.3]) print(data)

3. 其他的类型

data = torch.ShortTensor() # int16 data = torch.LongTensor() # int64 data = torch.FloatTensor() # float32 data = torch.DoubleTensor() # float64

if name == 'main': test02()

  1. 创建线性和随机张量 {#title-1} =======================

  2. torch.arange 和 torch.linspace

  3. torch.random.init_seed 和 torch.random.manual_seed

  4. torch.randn

import torch

1. 创建线性空间的张量

def test01():

# 1. 在指定区间按照步长生成元素 [start, end, step)
data = torch.arange(0, 10, 2)
print(data)

2. 在指定区间按照元素个数生成

data = torch.linspace(0, 11, 10) print(data)

2. 创建随机张量

def test02():

# 1. 创建随机张量
data = torch.randn(2, 3)  # 创建2行3列张量
print(data)

2. 随机数种子设置

print('随机数种子:', torch.random.initial_seed()) torch.random.manual_seed(100) print('随机数种子:', torch.random.initial_seed())

if name == 'main': test02()

  1. 创建01张量 {#title-2} ========================

  2. torch.ones 和 torch.ones_like

  3. torch.zeros 和 torch.zeros_like

  4. torch.full 和 torch.full_like

import torch

1. 创建全0张量

def test01():

# 1. 创建指定形状全0张量
data = torch.zeros(2, 3)
print(data)

2. 根据张量形状创建全0张量

data = torch.zeros_like(data) print(data)

2. 创建全1张量

def test02():

# 1. 创建指定形状全0张量
data = torch.ones(2, 3)
print(data)

2. 根据张量形状创建全0张量

data = torch.ones_like(data) print(data)

3. 创建全为指定值的张量

def test03():

# 1. 创建指定形状指定值的张量
data = torch.full([2, 3], 10)
print(data)

2. 根据张量形状创建指定值的张量

data = torch.full_like(data, 20) print(data)

if name == 'main': test03()

  1. 张量元素类型转换 {#title-3} ======================

  2. tensor.type(torch.DoubleTensor)

  3. torch.double()

import torch

def test():

data = torch.full([2, 3], 10)
print(data.dtype)

将 data 元素类型转换为 float64 类型

1. 第一种方法

data = data.type(torch.DoubleTensor) print(data.dtype)

转换为其他类型

data = data.type(torch.ShortTensor)

data = data.type(torch.IntTensor)

data = data.type(torch.LongTensor)

data = data.type(torch.FloatTensor)

2. 第二种方法

data = data.double() print(data.dtype)

转换为其他类型

data = data.short()

data = data.int()

data = data.long()

data = data.float()

if name == 'main': test()

赞(4)
未经允许不得转载:工具盒子 » PyTorch Tensor 创建方法