pytorch の簡単な紹介

PyTorch は、NumPy ユーザーと深層学習研究者の 2 つのグループを対象とした Python ベースの科学計算ライブラリです。柔軟で効率的な GPU アクセラレーション コンピューティングを提供し、複雑なニューラル ネットワーク アーキテクチャをサポートできる広範なツールボックスを備えています。
ここに画像の説明を挿入

このブログでは、PyTorch の始め方を紹介します。まず PyTorch をインストールし、次にその基本的なテンソル、自動微分、モデル構築について調べます。最後に、簡単なニューラル ネットワークの例を使用して、これらの概念を実際の問題に適用する方法を示します。

PyTorch をインストールする

PyTorch のインストールは非常に簡単で、コマンド ラインで次のコマンドを実行するだけです。

pip install torch

PyTorch の GPU バージョンをインストールする場合は、CUDA ドライバーもインストールする必要があります。詳細については、PyTorch のドキュメントを参照してください。

テンソル

Tensor は、NumPy の多次元配列と同様に、PyTorch で最も重要なデータ型です。NumPy 配列と同様に、テンソルにはインデックス付け、スライス、ブロードキャストなど、多くの同様の操作があります。ただし、NumPy 配列とは異なり、PyTorch テンソルは GPU 高速化計算を特徴としており、ディープ ラーニング モデルでは大量の数値計算が必要になることが多いため、ディープ ラーニング アプリケーションに特に適しています。テンソルの作成と操作の例をいくつか示します。

import torch

# 创建一个大小为3x2的张量,并将其初始化为零
x = torch.zeros(3, 2)
print(x)

# 创建一个大小为2x3的随机张量
y = torch.randn(2, 3)
print(y)

# 将两个张量相加
z = x + y
print(z)

# 将张量转换为numpy数组
z_np = z.numpy()
print(z_np)

自動微分

深層学習には、逆伝播などの勾配を計算する多くの操作が含まれており、導関数の計算が必要です。PyTorch の自動微分機能は、テンソルに対するすべての演算を自動的に追跡し、勾配情報を保存するため、導関数の計算が非常に簡単になります。以下は自動微分の簡単な例です。

import torch

# 创建一个变量并将其设置为需要求导
x = torch.tensor([3.0], requires_grad=True)

# 定义一个函数
y = x**2 + 2*x + 1

# 计算y相对于x的导数
y.backward()

# 打印x的梯度
print(x.grad)

この例では、変数 x を作成し、微分されるように設定します。次に、関数 y を定義し、x に関する y の導関数を計算します。最後に、x の勾配を出力します。y の導関数は 2x + 2 (この場合、x は 3 に等しい) であるため、プログラムは 6.0 を出力します。したがって、y の導関数は 8 に等しくなります。

モデル構築

PyTorch には、あらゆる種類とサイズのニューラル ネットワークを簡単に構築できる幅広いニューラル ネットワーク モジュールが含まれています。これらのモジュールを使用すると、ニューラル ネットワークをすばやく定義してトレーニングできます。以下は、単一の隠れ層を持つ完全に接続されたニューラル ネットワークの例です。

import torch
import torch.nn as nn
import torch.optim as optim

# 定义神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 创建一个模型实例
net = Net()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)

# 训练模型
for i in range(100):
    optimizer.zero_grad()
    input = torch.randn(3, 10)
    output = net(input)
    target = torch.randn(3, 1)
    loss = criterion(output, target)
    loss.backward()
    optimizer.step()

この例では、単一の隠れ層を持つニューラル ネットワークを作成します。二乗誤差を損失関数として使用し、確率的勾配降下オプティマイザを使用して最適化します。次に、複数回の反復を通じてモデルをトレーニングします。

結論は

PyTorch は、柔軟で効率的な GPU アクセラレーション コンピューティングを提供する強力で使いやすいディープ ラーニング フレームワークであり、複雑なニューラル ネットワーク アーキテクチャをサポートできる広範なツールボックスを備えています。このブログ投稿では、PyTorch の基本的なデータ構造、テンソル、自動微分、モデル構築について紹介しました。これらの概念を組み合わせることで、あらゆる種類とサイズのニューラル ネットワークを簡単に構築してトレーニングできます。シンプルでありながら強力な深層学習フレームワークを探している場合は、PyTorch が最適なツールになる可能性があります。

おすすめ

転載: blog.csdn.net/qq_42076902/article/details/131360615