Maison > Périphériques technologiques > IA > 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 !

王林
Libérer: 2024-01-09 20:50:24
avant
969 Les gens l'ont consulté

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深度
Copier après la connexion

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
Copier après la connexion

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)
Copier après la connexion

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()
Copier après la connexion

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
Copier après la connexion

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()
Copier après la connexion

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)
Copier après la connexion

2. Opérations logiques

# 大小比较result_compare = tensor_3d > 0.5# 逻辑运算result_logical = torch.logical_and(result_add, result_compare)
Copier après la connexion

3. Indexation et découpage

# 索引element = tensor_3d[0, 1, 2]# 切片sliced_tensor = tensor_3d[:, 1:3, :]
Copier après la connexion

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)
Copier après la connexion

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!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal