[Aprendizaje profundo] Tutoriales de la serie Pytorch (11): Estructura de datos de PyTorch: 3. Introducción a las variables

Tabla de contenido

I. Introducción

2. Entorno experimental

3. Estructura de datos de PyTorch

0. Clasificación

1. Tensores

2. Operaciones tensoriales

3. Variables


I. Introducción

ChatGPT:

        PyTorch es un marco de aprendizaje automático de código abierto que se utiliza ampliamente en el campo del aprendizaje profundo. Proporciona un amplio conjunto de herramientas y bibliotecas para crear y entrenar varios tipos de modelos de redes neuronales. Aquí hay una introducción detallada a PyTorch:

  1. Gráfico de cálculo dinámico: PyTorch utiliza un gráfico de cálculo dinámico para los cálculos, lo que significa que el gráfico de cálculo se puede definir, modificar y ajustar dinámicamente en tiempo de ejecución, lo que hace que la construcción y depuración del modelo sea más flexible e intuitiva.

  2. Potente soporte de aceleración de GPU: PyTorch hace un uso completo de la GPU para los cálculos, lo que puede mejorar en gran medida la velocidad del entrenamiento y la inferencia. Proporciona operaciones optimizadas y administración de memoria para GPU, lo que hace que la ejecución de modelos en GPU sea más eficiente.

  3. Derivación automática: PyTorch tiene una función de derivación automática incorporada, que puede calcular automáticamente el gradiente de acuerdo con el gráfico de cálculo definido. Esto simplifica la implementación del algoritmo de retropropagación y hace que el entrenamiento de modelos de redes neuronales sea más conveniente.

  4. Una gran cantidad de modelos y bibliotecas de modelos previamente entrenados: hay muchos modelos y bibliotecas de modelos previamente entrenados disponibles en el ecosistema PyTorch, como TorchVision, TorchText y TorchAudio, etc. Estos modelos se pueden cargar y usar fácilmente para acelerar modelo de desarrollo.

  5. Interfaz de abstracción de alto nivel: PyTorch proporciona interfaces de abstracción de alto nivel, como nn.Moduley nn.functional, para construir rápidamente modelos de redes neuronales. Estas interfaces encapsulan capas y funciones de redes neuronales de uso común, simplificando la definición del modelo y el proceso de entrenamiento.

  6. Admite capacitación distribuida: PyTorch admite capacitación distribuida en múltiples GPU y múltiples máquinas, lo que puede acelerar el proceso de capacitación y procesar datos y modelos a gran escala.

        En general, PyTorch proporciona una plataforma flexible y potente que hace que la investigación y el desarrollo del aprendizaje profundo sean más convenientes y eficientes. Su API simple y sus funciones ricas permiten a los usuarios implementar rápidamente modelos complejos de redes neuronales y lograr un rendimiento excelente en diversas tareas.

2. Entorno experimental

        Esta serie de experimentos utiliza el siguiente entorno.

conda create -n DL python=3.7 
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib

Con respecto a los problemas del entorno de configuración, puede consultar la dolorosa experiencia anterior:

3. Estructura de datos de PyTorch

0. Clasificación

  • Tensor : Tensor es la estructura de datos más básica de PyTorch, similar a una matriz multidimensional. Puede representar un escalar, un vector, una matriz o una matriz de dimensiones arbitrarias.
  • Operaciones tensoriales : PyTorch proporciona una gran cantidad de funciones operativas para realizar diversas operaciones en Tensor, como operaciones matemáticas, cálculos estadísticos, deformación tensorial, indexación y corte, etc. Estas funciones operativas pueden utilizar eficientemente la GPU para computación paralela y acelerar el proceso de entrenamiento del modelo.
  • Variable : la variable es una encapsulación de Tensor y se utiliza para la derivación automática. En PyTorch, las variables rastrean y registran automáticamente las operaciones realizadas en ellas, creando gráficos computacionales y admitiendo la derivación automática. En PyTorch 0.4.0 y versiones posteriores, se abandona la variable y Tensor se puede usar directamente para la derivación automática.
  • Conjunto de datos : conjunto de datos es una clase abstracta que se utiliza para representar conjuntos de datos. Al heredar la clase Dataset, puede personalizar el conjunto de datos e implementar funciones como carga de datos, preprocesamiento y adquisición de muestras. PyTorch también proporciona algunas clases de conjuntos de datos integradas, como MNIST, CIFAR-10, etc., para cargar fácilmente conjuntos de datos de uso común.
  • DataLoader : DataLoader se utiliza para cargar los datos en el conjunto de datos en lotes y proporciona funciones de prelectura de datos multiproceso y multiproceso. Puede cargar de manera eficiente conjuntos de datos a gran escala y admite operaciones como la mezcla aleatoria de datos, la carga paralela y la mejora de datos.
  • Módulo : Módulo es la clase base utilizada para construir modelos en PyTorch. Al heredar la clase Módulo, puede definir su propio modelo e implementar métodos como la propagación hacia adelante y hacia atrás. El módulo proporciona funciones como gestión de parámetros, guardado y carga de modelos, etc. para facilitar la capacitación y la implementación del modelo.

1. Tensor _ _

        

Estructura de datos de PyTorch: 1. Tensor (Tensor): dimensiones, tipos de datos_Blog-CSDN de QomolangmaH icono-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/132909219

2. Operaciones tensoriales

3. Variables

        En PyTorch, Variable (variable) es un concepto en versiones anteriores y se utiliza para la diferenciación automática (autograd). Sin embargo, a partir de la versión 0.4.0 de PyTorch, la variable ha quedado obsoleta y la función de derivación automática está integrada directamente en el tensor (Tensor), por lo que no es necesario utilizar la variable explícitamente.

        En versiones anteriores de PyTorch, Variable era una forma de envolver un tensor, que contenía los datos del tensor, gradientes y otra información relacionada con la derivación automática. Puede realizar varias operaciones en Variable, al igual que operar tensores, y registrará automáticamente información de gradiente. Luego, al llamar .backward()al método, puede propagar hacia atrás la variable, calcular el gradiente y propagar el gradiente a las variables relevantes.

import torch
from torch.autograd import Variable

# 创建一个Variable
x = Variable(torch.tensor([2.0]), requires_grad=True)

# 定义一个计算图
y = x ** 2 + 3 * x + 1

# 进行反向传播
y.backward()

# 获取梯度
gradient = x.grad
print("梯度:", gradient)  # 输出: tensor([7.])

        En el código anterior, primero envolvemos el tensor torch.tensor([2.0])en una Variable y lo configuramos requires_grad=Truepara indicar que queremos calcular el gradiente de esta variable. Luego, definimos un gráfico computacional y calculamos y = x ** 2 + 3 * x + 1. A continuación, llamamos a y.backward()la propagación hacia atrás en Variable para calcular el gradiente. Finalmente, x.gradobtenemos el valor del gradiente mediante .

        Cabe señalar que en PyTorch 0.4.0 y superiores, la variable ha quedado obsoleta y la derivación automática está integrada directamente en los tensores. Por lo tanto, puede realizar directamente una diferenciación automática en .backward()los métodos de uso de tensor sin usar Variable explícitamente.

import torch

x = torch.tensor([2.0], requires_grad=True)

# 定义一个计算图
y = x ** 2 + 3 * x + 1

# 进行反向传播
y.backward()

# 获取梯度
gradient = x.grad
print("梯度:", gradient)  # 输出: tensor([7.])

Supongo que te gusta

Origin blog.csdn.net/m0_63834988/article/details/132923358
Recomendado
Clasificación