Maison  >  Article  >  Périphériques technologiques  >  Compréhension approfondie du cœur de Pytorch, la route vers la percée de Tensor !

Compréhension approfondie du cœur de Pytorch, la route vers la percée de Tensor !

王林
王林avant
2024-01-09 20:50:24928parcourir

Aujourd'hui, je vais enregistrer le contenu tensoriel de Pytorch.

En même temps, j'espère pouvoir vous apporter un peu d'aide !

Parce que le contenu partagé aujourd'hui est définitivement constitué d'exemples très pratiques.

Une brève introduction d'abord. Dans PyTorch, le tenseur est la structure de données de base. Il s'agit d'un tableau multidimensionnel, similaire au tableau de NumPy. Les tenseurs ne sont pas seulement des conteneurs pour stocker des données, mais également la base de diverses opérations mathématiques et opérations d'apprentissage en profondeur.

Ce qui suit est un résumé sous trois aspects :

  • Le concept de tenseur
  • Le principe du tenseur
  • Le fonctionnement du tenseur

突破Pytorch核心,Tensor !!Images

Le concept de tenseur

1. monsieur

Un tenseur est un tableau multidimensionnel, qui peut être un scalaire (tableau zéro dimension), un vecteur (tableau unidimensionnel), une matrice (tableau bidimensionnel) ou un tableau avec des dimensions plus élevées.

Dans PyTorch, un tensor est une instance de torch.Tensor et peut être créé de différentes manières, par exemple directement à partir d'une liste Python, d'un tableau NumPy ou via une fonction spécifique.

import torch# 创建一个标量scalar_tensor = torch.tensor(3.14)# 创建一个向量vector_tensor = torch.tensor([1, 2, 3])# 创建一个矩阵matrix_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])# 创建一个3D张量tensor_3d = torch.rand((2, 3, 4))# 2行3列4深度

2. Propriétés des tenseurs

Chaque tenseur a des propriétés importantes, notamment la forme (shape), le type de données (dtype) et le périphérique (device).

# 获取张量的形状shape = tensor_3d.shape# 获取张量的数据类型dtype = tensor_3d.dtype# 获取张量所在的设备device = tensor_3d.device

3. Forme d'un tenseur

La forme d'un tenseur définit ses dimensions et la taille dans chaque dimension. Par exemple, un tenseur de forme (2, 3, 4) a 2 lignes, 3 colonnes et 4 profondeurs. La forme est très importante pour comprendre et manipuler les tenseurs.

# 获取张量的形状shape = tensor_3d.shape# 改变张量的形状reshaped_tensor = tensor_3d.view(3, 8)# 将原始形状(2, 3, 4)变为(3, 8)

Le principe des tenseurs

Les tenseurs dans PyTorch sont implémentés sur la base de la classe Tensor, qui fournit une abstraction du stockage sous-jacent.

Les tenseurs contiennent trois composants principaux :

  • Stockage
  • Forme
  • Stride

1. Stockage

(Stockage) Le stockage est l'endroit où les données sont réellement stockées, c'est une zone de mémoire contiguë. Plusieurs tenseurs peuvent partager le même stockage, réduisant ainsi la consommation de mémoire. Les données stockées sont disposées selon la forme du tenseur.

# 获取张量的存储storage = tensor_3d.storage()

2. Forme

La forme d'un tenseur définit ses dimensions et la taille dans chaque dimension. Les informations sur la forme aident à expliquer comment les données stockées sont organisées.

# 获取张量的形状shape = tensor_3d.shape

3. Stride

Stride fait référence au nombre d'étapes nécessaires pour passer à l'élément suivant en stockage. Comprendre les foulées permet de comprendre les performances lors de l'indexation et du découpage au sein des tenseurs.

# 获取张量的步幅stride = tensor_3d.stride()

Opérations tensorielles

PyTorch fournit une multitude d'opérations tensorielles, notamment des opérations mathématiques, des opérations logiques, l'indexation, le découpage, etc.

Voici les opérations centralisées les plus courantes :

1. Opérations mathématiques

# 加法result_add = tensor_3d + 2# 乘法result_mul = tensor_3d * 3# 矩阵乘法matrix_a = torch.rand((2, 3))matrix_b = torch.rand((3, 4))result_matmul = torch.mm(matrix_a, matrix_b)

2. Opérations logiques

# 大小比较result_compare = tensor_3d > 0.5# 逻辑运算result_logical = torch.logical_and(result_add, result_compare)

3. Indexation et découpage

# 索引element = tensor_3d[0, 1, 2]# 切片sliced_tensor = tensor_3d[:, 1:3, :]

4. ing est un opération qui agrandit automatiquement les tenseurs afin que des opérations mathématiques par élément puissent être effectuées sur des tenseurs de formes différentes.

# 改变形状reshaped_tensor = tensor_3d.view(3, 8)# 转置transposed_tensor = tensor_3d.transpose(0, 2)

Enfin

Aujourd'hui, nous présentons les concepts de base, les principes et les opérations courantes des tenseurs dans PyTorch.

Tensor, en tant que structure de données de base dans l'apprentissage profond, est très essentiel pour comprendre et mettre en œuvre les réseaux de neurones.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer