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 :
Images
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深度
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
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)
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) 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()
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
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()
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 :
# 加法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)
# 大小比较result_compare = tensor_3d > 0.5# 逻辑运算result_logical = torch.logical_and(result_add, result_compare)
# 索引element = tensor_3d[0, 1, 2]# 切片sliced_tensor = tensor_3d[:, 1:3, :]
# 改变形状reshaped_tensor = tensor_3d.view(3, 8)# 转置transposed_tensor = tensor_3d.transpose(0, 2)
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!