Pytorch の核心、Tensor のブレークスルーへの道を深く理解します。

王林
リリース: 2024-01-09 20:50:24
転載
926 人が閲覧しました

今日は、Pytorch の tensor コンテンツを記録します。

同時に、何かお手伝いができれば幸いです。

なぜなら、今日共有したコンテンツは間違いなく非常に役立つ情報の一例だからです。

まず簡単に説明します。PyTorch では、テンソルは中心的なデータ構造であり、NumPy の配列に似た多次元配列です。 Tensor はデータを保存するためのコンテナであるだけでなく、さまざまな数学演算や深層学習演算の基礎でもあります。

以下は 3 つの側面からの要約です:

  • テンソルの概念
  • テンソルの原理
  • テンソルの演算

突破Pytorch核心,Tensor !!

テンソルの概念

1. テンソルの定義

テンソルは、マルチ次元 スカラー (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深度
ログイン後にコピー

2. テンソルの属性

各テンソルには、形状 (shape)、データ型 (dtype)、デバイス (device) など、いくつかの重要な属性があります。

# 获取张量的形状shape = tensor_3d.shape# 获取张量的数据类型dtype = tensor_3d.dtype# 获取张量所在的设备device = tensor_3d.device
ログイン後にコピー

3. テンソルの形状

テンソルの形状は、その次元と各次元のサイズを定義します。たとえば、形状 (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
  • shape
  • stride

1. Storage

(ストレージ) ストレージとは、実際にデータが保存される場所であり、連続した記憶領域です。複数のテンソルが同じストレージを共有できるため、メモリ消費が削減されます。ストレージ内のデータは、テンソルの形状に従って配置されます。

# 获取张量的存储storage = tensor_3d.storage()
ログイン後にコピー

2. 形状

テンソルの形状は、その次元と各次元のサイズを定義します。形状情報は、ストレージ内のデータがどのように構成されているかを説明するのに役立ちます。

# 获取张量的形状shape = tensor_3d.shape
ログイン後にコピー

3. ストライド

ストライドとは、ストレージ内の次の要素に移動するために必要なステップ数を指します。ストライドを理解すると、テンソル内でインデックス付けおよびスライスするときのパフォーマンスを理解するのに役立ちます。

# 获取张量的步幅stride = tensor_3d.stride()
ログイン後にコピー

テンソル演算

PyTorch は、数学演算、論理演算、インデックス付け、スライスなどを含む豊富なテンソル演算を提供します。

これが最も一般的な集中操作です:

1. 数学的操作

# 加法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. 論理操作

# 大小比较result_compare = tensor_3d > 0.5# 逻辑运算result_logical = torch.logical_and(result_add, result_compare)
ログイン後にコピー

3. インデックス付けとスライス

# 索引element = tensor_3d[0, 1, 2]# 切片sliced_tensor = tensor_3d[:, 1:3, :]
ログイン後にコピー

4. 形状操作

# 改变形状reshaped_tensor = tensor_3d.view(3, 8)# 转置transposed_tensor = tensor_3d.transpose(0, 2)
ログイン後にコピー

5. ブロードキャスト

ブロードキャストは、異なる形状のテンソルを要素ごとに処理できるように、テンソルを自動的に拡張する操作です。

# 广播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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!