1、PyTorch 简介

PyTorch 是什么?

        首先,我们讲PyTorch,我们先讲它的前身--torch

        1、torch

 Torch是PyTorch的前身,Torch 是一个有着悠久历史的机器学习框架,最初由 Ronan Collobert、Soumith Chintala 和 Koray Kavukcuoglu 等人开发。

Torch是以 Lua 语言为基础,在 2002 年左右就开始逐渐发展起来,在计算机视觉、自然语言处理等领域有一定的应用。

  •       ok,我们可以明白torch是一个学习框架,在计算机视觉、自然语言处理之类有一些应用。
  •       随着时代发展,已经是很乏力了。

        2、PyTorch

        PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由C++实现,应用于人工智能领域,如计算机视觉和自然语言处理。

        由于Lua语言太小众了,应用规模都比较小。

        技术呢,必须要发展。

        为了让更多的 Python 开发者能够方便地使用 Torch 框架,Facebook 人工智能研究实验室(FAIR)的 Soumith Chintala 等研究人员在 2016 年将 Torch 框架进行了重新开发和封装,用 Python 语言重新实现了 Torch 的主要功能,并将其命名为 PyTorch。

        这样一来,PyTorch 既继承了 Torch 的强大功能,又利用了 Python 语言的优势,如丰富的科学计算库、简洁的语法和庞大的社区支持等,从而受到了广大深度学习研究者和开发者的欢迎。

  • 这样我们明白了,PyTorch是在torch的基础上发展来的。
  • 目的是为了大家更好进行深度学习研究。

        3、PyTorch有哪些优良特性?

  • 动态计算图(Dynamic Computation Graphs): PyTorch 的计算图是动态的,这意味着它们在运行时构建,并且可以随时改变。这为实验和调试提供了极大的灵活性,因为开发者可以逐行执行代码,查看中间结果。

  • 自动微分(Automatic Differentiation): PyTorch 的自动微分系统允许开发者轻松地计算梯度,这对于训练深度学习模型至关重要。它通过反向传播算法自动计算出损失函数对模型参数的梯度。

  • 张量计算(Tensor Computation): PyTorch 提供了类似于 NumPy 的张量操作,这些操作可以在 CPU 和 GPU 上执行,从而加速计算过程。张量是 PyTorch 中的基本数据结构,用于存储和操作数据。

  • 丰富的 API: PyTorch 提供了大量的预定义层、损失函数和优化算法,这些都是构建深度学习模型的常用组件。

  • 多语言支持: PyTorch 虽然以 Python 为主要接口,但也提供了 C++ 接口,允许更底层的集成和控制。

上面有一些专有名词,初学者可能理解起来有所困难。

下面给大家一一解释:

张量:

        张量是PyTorch中的核心数据结构。

        它是一个多维矩阵,可以在CPU或者GPU上进行运算。

        我们可以把张量看作是向量或矩阵的推广。

        (大家可以关注我后面张量的介绍)

自动微分:

        PyTorch 的自动微分是一种基于计算图和链式法则的机制,用于自动计算函数的导数(梯度)。

        我们知道,

        在训练神经网络时,需要计算损失函数关于模型参数的梯度,以便更新参数。

        自动微分使这一过程变得非常方便,只需定义好前向传播,就可以自动得到梯度。

下面给大家一段代码:

import torch
import torch.nn as nn

# 定义模型
class LinearRegression(nn.Module):
    def __init__(self):
        super(LinearRegression, self).__init__()
        self.linear = nn.Linear(1, 1)  # 输入维度为1,输出维度为1

    def forward(self, x):
        return self.linear(x)

model = LinearRegression()
x = torch.tensor([[1.0]], requires_grad=False)
y = torch.tensor([[2.0]], requires_grad=False)
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 前向传播
y_pred = model(x)
loss = criterion(y_pred, y)

# 反向传播
loss.backward()
optimizer.step()

在上述代码中,通过 loss.backward() 自动计算梯度,然后使用 optimizer.step() 更新模型参数。

至此,简单介绍了PyTorch是什么。

后面会有PyTorch基础以及各种神经网络代码实例等等。

欢迎大家关注我、后续持续更新~

你可能感兴趣的:(PyTorch开始到sci,pytorch,人工智能,python)