【PyTorch】1.张量的创建

通过上节课的学习,我们已经对张量有了清晰的认识,知道它在深度学习中就像一个神奇的 “收纳盒”,能把各种数据规整地装起来,方便模型处理。

【PyTorch】0.初识:从吃货角度理解张量

接下来,在 PyTorch 这个强大的工具里,到底该如何亲手创建出这些张量呢?掌握了创建张量的方法,我们就迈出了用 PyTorch 搭建深度学习模型的关键一步,下面就让我们学习张量的创建。

1. 基本创建方式

1.1torch.tensor

根据指定数据创建张量

1.2torch.Tensor

根据形状创建张量, 其也可用来创建指定数据的张量

1.3torch.IntTensor、torch.FloatTensor、torch.DoubleTensor

创建指定类型的张量

import torch
import numpy as np
import random


# 1. 根据已有数据创建张量
def create_tensor_from_existing_data():
    # 1. 创建张量标量
    scalar_tensor = torch.tensor(10)
    print(scalar_tensor)

    # 2. numpy 数组,由于 array 为 float64,下面代码也使用该类型
    array = np.random.randn(2, 3)
    array_tensor = torch.tensor(array)
    print(array_tensor)

    # 3. 列表,下面代码使用默认元素类型 float32
    list_data = [[10., 20., 30.], [40., 50., 60.]]
    list_tensor = torch.tensor(list_data)
    print(list_tensor)


# 2. 创建指定形状的张量
def create_tensor_with_shape():
    # 1. 创建2行3列的张量,默认 dtype 为 float32
    shape_tensor = torch.Tensor(2, 3)
    print(shape_tensor)

    # 2. 注意:如果传递列表,则创建包含指定元素的张量
    single_element_tensor = torch.Tensor([10])
    print(single_element_tensor)

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


# 3. 使用具体类型的张量
def create_tensor_with_specific_type():
    # 1. 创建2行3列,dtype 为 int32 的张量
    int32_tensor = torch.IntTensor(2, 3)
    print(int32_tensor)

    # 2. 注意:如果传递的元素类型不正确,则会进行类型转换
    converted_tensor = torch.IntTensor([2.5, 3.3])
    print(converted_tensor)

    # 3. 其他的类型
    short_tensor = torch.ShortTensor()  # int16
    long_tensor = torch.LongTensor()  # int64
    float_tensor = torch.FloatTensor()  # float32
    double_tensor = torch.DoubleTensor()  # float64


if __name__ == '__main__':
    create_tensor_with_shape()

2.创建线性张量和随机张量

2.1torch.arange 和 torch.linspace

创建线性张量

2.2torch.random.init_seed 和 torch.random.manual_seed

随机种子设置

2.3torch.randn

创建随机张量

import torch


# 1. 创建线性空间的张量
def create_linear_space_tensor():
    # 1. 在指定区间按照步长生成元素 [start, end, step)
    linear_tensor = torch.arange(0, 10, 2)
    print(linear_tensor)

    # 2. 在指定区间按照元素个数生成
    linspace_tensor = torch.linspace(0, 11, 10)
    print(linspace_tensor)


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

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


if __name__ == '__main__':
    create_random_tensor()

3.创建01张量

3.1torch.ones 和 torch.ones_like

创建全1张量

3.2torch.zeros 和 torch.zeros_like

创建全0张量

3.3torch.full 和 torch.full_like

创建全为指定值张量

import torch


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

    # 2. 根据张量形状创建全 0 张量
    zeros_like_tensor = torch.zeros_like(zeros_tensor)
    print(zeros_like_tensor)


# 2. 创建全 1 张量
def create_ones_tensor():
    # 1. 创建指定形状全 1 张量
    ones_tensor = torch.ones(2, 3)
    print(ones_tensor)

    # 2. 根据张量形状创建全 1 张量
    ones_like_tensor = torch.ones_like(ones_tensor)
    print(ones_like_tensor)


# 3. 创建全为指定值的张量
def create_full_tensor():
    # 1. 创建指定形状指定值的张量
    full_tensor = torch.full([2, 3], 10)
    print(full_tensor)

    # 2. 根据张量形状创建指定值的张量
    full_like_tensor = torch.full_like(full_tensor, 20)
    print(full_like_tensor)


if __name__ == '__main__':
    create_zeros_tensor()
    create_ones_tensor()
    create_full_tensor()

4.张量元素类型的转换

1.tensor.type(torch.DoubleTensor)

2.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()

5.总结

在本小节中,我们主要学习了以下内容:

5.1 创建张量的方式

(1) torch.tensor 根据指定数据创建张量

(2) torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量

(3) torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量

5.2创建线性和随机张量

(1)torch.arange 和 torch.linspace 创建线性张量

(2)torch.random.init_seed 和 torch.random.manual_seed 随机种子设置

(3)torch.randn 创建随机张量

5.3创建01张量

(1)torch.ones 和 torch.ones_like 创建全1张量

(2)torch.zeros 和 torch.zeros_like 创建全0张量

(3)torch.full 和 torch.full_like 创建全为指定值张量

5.4张量元素类型转换

(1)tensor.type(torch.DoubleTensor)

(2)torch.double()

欢迎各位大佬关注和三连!看到消息后我会马上回复。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值