ホームページ >テクノロジー周辺機器 >AI >Pytorch の核心、Tensor のブレークスルーへの道を深く理解します。
今日は、Pytorch の tensor コンテンツを記録します。
同時に、何かお手伝いができれば幸いです。
なぜなら、今日共有したコンテンツは間違いなく非常に役立つ情報の一例だからです。
まず簡単に説明します。PyTorch では、テンソルは中心的なデータ構造であり、NumPy の配列に似た多次元配列です。 Tensor はデータを保存するためのコンテナであるだけでなく、さまざまな数学演算や深層学習演算の基礎でもあります。
以下は 3 つの側面からの要約です:
図
テンソルは、マルチ次元 スカラー (0 次元配列)、ベクトル (1 次元配列)、行列 (2 次元配列)、またはそれ以上の次元の配列である配列。
PyTorch では、テンソルは torch.Tensor のインスタンスであり、Python リスト、NumPy 配列から直接、または特定の関数を通じてなど、さまざまな方法で作成できます。
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深度
各テンソルには、形状 (shape)、データ型 (dtype)、デバイス (device) など、いくつかの重要な属性があります。
# 获取张量的形状shape = tensor_3d.shape# 获取张量的数据类型dtype = tensor_3d.dtype# 获取张量所在的设备device = tensor_3d.device
テンソルの形状は、その次元と各次元のサイズを定義します。たとえば、形状 (2、3、4) のテンソルには 2 行、3 列、4 つの深さがあります。形状はテンソルを理解して操作するために非常に重要です。
# 获取张量的形状shape = tensor_3d.shape# 改变张量的形状reshaped_tensor = tensor_3d.view(3, 8)# 将原始形状(2, 3, 4)变为(3, 8)
PyTorch の Tensor は、基になるストレージの抽象化を提供する Tensor クラスに基づいて実装されます。
Tensor には 3 つの主要コンポーネントが含まれています:
(ストレージ) ストレージとは、実際にデータが保存される場所であり、連続した記憶領域です。複数のテンソルが同じストレージを共有できるため、メモリ消費が削減されます。ストレージ内のデータは、テンソルの形状に従って配置されます。
# 获取张量的存储storage = tensor_3d.storage()
テンソルの形状は、その次元と各次元のサイズを定義します。形状情報は、ストレージ内のデータがどのように構成されているかを説明するのに役立ちます。
# 获取张量的形状shape = tensor_3d.shape
ストライドとは、ストレージ内の次の要素に移動するために必要なステップ数を指します。ストライドを理解すると、テンソル内でインデックス付けおよびスライスするときのパフォーマンスを理解するのに役立ちます。
# 获取张量的步幅stride = tensor_3d.stride()
PyTorch は、数学演算、論理演算、インデックス付け、スライスなどを含む豊富なテンソル演算を提供します。
これが最も一般的な集中操作です:
# 加法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)
ブロードキャストは、異なる形状のテンソルを要素ごとに処理できるように、テンソルを自動的に拡張する操作です。
# 广播tensor_a = torch.rand((1, 3, 1))tensor_b = torch.rand((2, 1, 4))result_broadcast = tensor_a + tensor_b
今日は、PyTorch におけるテンソルの基本概念、原理、一般的な操作を紹介します。
テンソルは、ディープ ラーニングの基本データ構造として、ニューラル ネットワークを理解して実装するために非常に重要です。
以上がPytorch の核心、Tensor のブレークスルーへの道を深く理解します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。