IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Pytorch基础(机器学习) -> 正文阅读

[人工智能]Pytorch基础(机器学习)

这里介绍一下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中的四则运算高级写法

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:01:20  更:2021-08-13 12:01:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:36:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码