Pytorch基础(机器学习)

本文详细介绍了PyTorch中张量的基本操作,包括创建、转换、运算以及数据类型的处理。通过实例展示了如何从numpy数组创建tensor,如何进行随机数生成,以及如何进行加法、减法等基本运算。此外,还涉及到了张量的切片、转置和形状改变等操作。
摘要由CSDN通过智能技术生成

这里介绍一下Pytorch模块的基本操作。在Pytorch中,数据的操作类型为tensor(张量类型)。什么是张量呢?推荐自主阅读维基百科张量(超链接点击跳转)来进行学习。

  1. 导入Pytoch模块
import torch

print(torch.__version__)
"""
输出结果:
1.9.0+cpu
"""

注意这里导入时使用的关键字是torch而不是Pytorch. 其次我们可以看到这里的输出结果表示我们安装的是cpu版本,有些电脑支持GPU也可以安装对应的GPU版本。

  1. 创建一个tensor对象
import torch

t1 = torch.Tensor([1, 2, 3])
print(t1)
"""
输出结果:
tensor([1., 2., 3.])
"""

我们可以看到输出的数据类型为tensor类型。

  1. Numpy中使用的类型转化为Pytorch中可以使用的类型
import torch
import numpy as np

array1 = np.arange(12).reshape(3, 4)
t1 = torch.Tensor(array1)
print(t1)
"""
输出结果:
tensor([[ 0.,  1.,  2.,  3.],
        [ 4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11.]])
"""

可以看到我们成功将ndarray类型数据转换为了tensor类型的数据。

  1. 创建三行四列空的tensor对象
import torch

t1 = torch.empty([3, 4])
print(t1)
"""
输出结果:
tensor([[9.3674e-39, 1.0929e-38, 1.0469e-38, 1.0561e-38],
        [1.0286e-38, 1.0653e-38, 1.0194e-38, 4.6838e-39],
        [5.1429e-39, 4.9592e-39, 9.9184e-39, 9.0000e-39]])
"""

这里需要注意空并不代表没有数据,此时,在我们未指定数据值的情况下,系统会自动生成一些非常小的数据。类似的还有torch.ones()torch.zeros()函数。

  1. 创建值位于[0, 1)区间内三行四列的随机数
import torch

t1 = torch.rand([3, 4])
print(t1)
"""
输出结果:
tensor([[0.5059, 0.3887, 0.8215, 0.5488],
        [0.8683, 0.1002, 0.8799, 0.0522],
        [0.6802, 0.7736, 0.6704, 0.1614]])
"""

  1. 创建值位于[0, 3)之间三行四列的随机整数
import torch

t1 = torch.randint(low=0, high=3, size=[3, 4])
print(t1)

"""
输出结果:
tensor([[2, 1, 0, 2],
        [2, 2, 0, 0],
        [1, 2, 1, 0]])
"""

7.获取tensor中的数据,当tensor中只有一个元素可用时tensor.item()

import torch

t1 = torch.tensor(1)
print(t1)
print(t1.item())

"""
输出结果:
tensor(1)
1
"""

  1. tensor类型的数据转换为ndarray类型
import torch

t1 = torch.tensor([1, 2])
print(t1.numpy())

"""
输出结果:
[1 2]
"""

  1. 获取tensor对象的尺寸(形状)
import torch

t1 = torch.tensor([[[1, 2, 3]]])
print(t1.size())
print(t1.size(0))
print(t1.size(1))
print(t1.size(2))

"""
输出结果:
torch.Size([1, 1, 3])
1
1
3
"""

我们可以看到,当给定参数0时代表输出第一个维度中的尺寸,1代表第二个维度中的尺寸,2代表第三个维度中的尺寸。

  1. 改变tensor的尺寸(形状)
import torch

t1 = torch.tensor([[[1, 2],
                    [2, 3],
                    [3, 4]]])
print(t1.view(-1))
print(t1.view(2, 3))
print(t1.view(2, -1))
print(t1.view(3, 2))

"""
输出结果:
tensor([1., 2., 2., 3., 3., 4.])
tensor([[1., 2., 2.],
        [3., 3., 4.]])
tensor([[1., 2., 2.],
        [3., 3., 4.]])
tensor([[1., 2.],
        [2., 3.],
        [3., 4.]])
"""

t1.view(-1)表示将tensor变为一维的,t1.view(2, 3)表示将tensor变为两行三列的,t1.view(2, -1)表示将tensor变为两行三列的,其中-1表示由编译器自动计算列数。

  1. 获取tensor的维度,最大,最小值和标准差。
import torch

t1 = torch.tensor([[[1, 2],
                    [2, 3],
                    [3, 4]]])
# dim method
print(t1.dim())

# max method
print(t1.max())

# min method
print(t1.min())

# standard deviation
print(t1.std())

"""
输出结果:
3
tensor(4.)
tensor(1.)
tensor(1.0488)
"""

  1. 低维度(一维,二维)tensor的转置操作
# 一维tensor,转置后仍旧为原来的tensor
t1 = torch.tensor(1)
print(f"The original tensor is: {t1}")
print(f"The transpose tensor of t1 is {t1.t()}")
print(f"The transpose tensor of t1 is {torch.transpose(input=t1, dim0=0, dim1=-1)}")

# 二维tensor,类似矩阵转置
t1 = torch.tensor([[1, 2], [3, 4]])
print(f"The original tensor is: {t1}")
print(f"The transpose tensor of t1 is {t1.t()}")
print(f"The transpose tensor of t1 is {torch.transpose(input=t1, dim0=0, dim1=1)}")
"""
输出结果:
The original tensor is: 1
The transpose tensor of t1 is 1
The transpose tensor of t1 is 1
The original tensor is: tensor([[1, 2],
        [3, 4]])
The transpose tensor of t1 is tensor([[1, 3],
        [2, 4]])
The transpose tensor of t1 is tensor([[1, 3],
        [2, 4]])
"""

我们可以看到对于一维或者二维tensor可以使用.t()或者.transpose()函数进行转置. 对于高级tensor的转置操作可以看这里Pytorch中高阶tensor的转置操作(超链接点击跳转)。

  1. tensor切片操作
import torch
import numpy as np

t1 = torch.tensor(np.arange(36).reshape((3, 3, 4)))
# 获取单个值
print(t1[1, 2, 1])
# 获取第二个区域内的值
print(t1[1, :, :])

"""
输出结果:
tensor(21, dtype=torch.int32)
tensor([[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]], dtype=torch.int32)
"""

14.输出tensor中元素的数据类型

import torch
import numpy as np

t1 = torch.tensor(np.arange(24).reshape((2, 3, 4)))
print(t1.dtype)

"""
输出结果:
torch.int32
"""

15.定义tensor时设定内部元素数据类型

import torch
import numpy as np

# 定义tensor时指定输入数据类型
t1 = torch.tensor(1, dtype=torch.double)
print(t1.dtype)

# numpy生成数组时定义元素数据类型,之后转换为tensor
t1 = torch.tensor(np.array(12, dtype=np.int32))
print(t1.dtype)

t1 = torch.LongTensor(1, 2)
print(t1.dtype)

t1 = torch.DoubleTensor(1, 2)
print(t1.dtype)

"""
输出结果:
torch.float64
torch.int32
torch.int64
torch.float64
"""

16.tensor的加法运算

import torch

t1 = torch.ones(3, 5)
print(t1)
t2 = torch.rand((3, 5))
print(t2)
# add method
print(t1 + t2)
print(torch.add(t1, t2))


"""
输出结果:
tensor([[1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.]])
tensor([[0.5156, 0.1977, 0.9491, 0.4509, 0.7190],
        [0.9628, 0.4868, 0.9708, 0.9781, 0.7506],
        [0.3628, 0.0885, 0.7869, 0.9531, 0.4079]])
tensor([[1.5156, 1.1977, 1.9491, 1.4509, 1.7190],
        [1.9628, 1.4868, 1.9708, 1.9781, 1.7506],
        [1.3628, 1.0885, 1.7869, 1.9531, 1.4079]])
tensor([[1.5156, 1.1977, 1.9491, 1.4509, 1.7190],
        [1.9628, 1.4868, 1.9708, 1.9781, 1.7506],
        [1.3628, 1.0885, 1.7869, 1.9531, 1.4079]])

"""

相应的减法,乘法和除法运算可以类比于加法运算。关于四则运算的进阶写法,可以参考这篇Pytorch中的四则运算高级写法

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值