こんにちは、Xiaozhuangです!
今日は、Pytorch のオプティマイザーについて話します。
オプティマイザーの選択は、深層学習モデルのトレーニング効果と速度に直接影響します。さまざまなオプティマイザーがさまざまな問題に適しており、それらのパフォーマンスの違いにより、モデルがより速くより安定して収束したり、特定のタスクのパフォーマンスが向上したりする可能性があります。したがって、オプティマイザーを選択するときは、特定の問題の特性に基づいてトレードオフと決定を行う必要があります。
したがって、深層学習モデルを調整するには、適切なオプティマイザーを選択することが重要です。オプティマイザーの選択は、モデルのパフォーマンスだけでなく、トレーニング プロセスの効率にも大きく影響します。
PyTorch は、ニューラル ネットワークのトレーニングやモデルの重みの更新に使用できるさまざまなオプティマイザーを提供します。これらのオプティマイザーには、一般的な SGD、Adam、RMSprop などが含まれます。各オプティマイザーには、独自の特性と適用可能なシナリオがあります。適切なオプティマイザーを選択すると、モデルの収束が加速され、トレーニング結果が向上します。オプティマイザーを使用する場合は、損失関数とモデル パラメーターを定義するだけでなく、学習率や重み減衰などのハイパーパラメーターを設定する必要があります。
一般的なオプティマイザー
最初に、PyTorch でよく使用されるオプティマイザーをいくつかリストし、それらについて簡単に説明します。
方法を理解しましょう。 SGD (確率的勾配降下法) が機能します。 SGD は、機械学習モデルのパラメーターを解決するために使用される、一般的に使用される最適化アルゴリズムです。サンプルの小さなバッチをランダムに選択することによって勾配を推定し、勾配の負の方向を使用してパラメーターを更新します。これにより、反復プロセス中にモデルのパフォーマンスを徐々に最適化できます。 SGD の利点は、高い計算効率であり、特に
に適しています。 確率的勾配降下法は、損失関数を最小化するために一般的に使用される最適化アルゴリズムです。これは、損失関数に対する重みの勾配を計算し、勾配の負の方向に重みを更新することによって機能します。このアルゴリズムは、機械学習と深層学習で広く使用されています。
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
(2) Adam
Adam は、AdaGrad と RMSProp のアイデアを組み合わせた適応学習率最適化アルゴリズムです。従来の勾配降下法アルゴリズムと比較して、Adam はパラメーターごとに異なる学習率を計算して、さまざまなパラメーターの特性によりよく適応できます。学習率を適応的に調整することで、Adam はモデルの収束速度とパフォーマンスを向上させることができます。
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
(3) Adagrad
Adagrad は、パラメータの履歴勾配に基づいて学習率を調整する適応学習率最適化アルゴリズムです。ただし、学習率が徐々に低下するため、トレーニングが途中で停止する可能性があります。
optimizer = torch.optim.Adagrad(model.parameters(), lr=learning_rate)
(4) RMSProp
RMSProp も、勾配の移動平均を考慮して学習率を調整する適応学習率アルゴリズムです。
optimizer = torch.optim.RMSprop(model.parameters(), lr=learning_rate)
(5) Adadelta
Adadelta は、適応学習率最適化アルゴリズムであり、RMSProp の改良版であり、勾配の移動平均と勾配の移動平均を考慮して学習を動的に調整します。パラメータ。レート。
optimizer = torch.optim.Adadelta(model.parameters(), lr=learning_rate)
完全なケース
ここでは、PyTorch を使用して、手書き数字認識用の単純な畳み込みニューラル ネットワーク (CNN) をトレーニングする方法について説明します。
このケースでは、MNIST データ セットを使用し、Matplotlib ライブラリを使用して損失曲線と精度曲線を描画します。
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transformsfrom torch.utils.data import DataLoaderimport matplotlib.pyplot as plt# 设置随机种子torch.manual_seed(42)# 定义数据转换transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])# 下载和加载MNIST数据集train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)test_loader = DataLoader(test_dataset, batch_size=1000, shuffle=False)# 定义简单的卷积神经网络模型class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)self.relu = nn.ReLU()self.pool = nn.MaxPool2d(kernel_size=2, stride=2)self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1)self.fc1 = nn.Linear(64 * 7 * 7, 128)self.fc2 = nn.Linear(128, 10)def forward(self, x):x = self.conv1(x)x = self.relu(x)x = self.pool(x)x = self.conv2(x)x = self.relu(x)x = self.pool(x)x = x.view(-1, 64 * 7 * 7)x = self.fc1(x)x = self.relu(x)x = self.fc2(x)return x# 创建模型、损失函数和优化器model = CNN()criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练模型num_epochs = 5train_losses = []train_accuracies = []for epoch in range(num_epochs):model.train()total_loss = 0.0correct = 0total = 0for inputs, labels in train_loader:optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()total_loss += loss.item()_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / totaltrain_losses.append(total_loss / len(train_loader))train_accuracies.append(accuracy)print(f"Epoch {epoch+1}/{num_epochs}, Loss: {train_losses[-1]:.4f}, Accuracy: {accuracy:.4f}")# 绘制损失曲线和准确率曲线plt.figure(figsize=(10, 5))plt.subplot(1, 2, 1)plt.plot(train_losses, label='Training Loss')plt.title('Training Loss')plt.xlabel('Epoch')plt.ylabel('Loss')plt.legend()plt.subplot(1, 2, 2)plt.plot(train_accuracies, label='Training Accuracy')plt.title('Training Accuracy')plt.xlabel('Epoch')plt.ylabel('Accuracy')plt.legend()plt.tight_layout()plt.show()# 在测试集上评估模型model.eval()correct = 0total = 0with torch.no_grad():for inputs, labels in test_loader:outputs = model(inputs)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / totalprint(f"Accuracy on test set: {accuracy * 100:.2f}%")
上記のコードでは、クロスエントロピー損失と Adam オプティマイザーを使用してトレーニングされた単純な畳み込みニューラル ネットワーク (CNN) を定義します。
トレーニング プロセス中に、各エポックの損失と精度を記録し、Matplotlib ライブラリを使用して損失曲線と精度曲線を描画しました。
私はXiao Zhuangです。また次回お会いしましょう!
以上がPytorch の重要なポイントを改善し、オプティマイザーを改善します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

オンデバイスAIの力を活用:個人的なチャットボットCLIの構築 最近では、個人的なAIアシスタントの概念はサイエンスフィクションのように見えました。 ハイテク愛好家のアレックスを想像して、賢くて地元のAI仲間を夢見ています。

AI4MHの最初の発売は2025年4月15日に開催され、有名な精神科医および神経科学者であるLuminary Dr. Tom Insel博士がキックオフスピーカーを務めました。 Insel博士は、メンタルヘルス研究とテクノでの彼の傑出した仕事で有名です

「私たちは、WNBAが、すべての人、プレイヤー、ファン、企業パートナーが安全であり、大切になり、力を与えられたスペースであることを保証したいと考えています」とエンゲルバートは述べ、女性のスポーツの最も有害な課題の1つになったものに取り組んでいます。 アノ

導入 Pythonは、特にデータサイエンスと生成AIにおいて、プログラミング言語として優れています。 大規模なデータセットを処理する場合、効率的なデータ操作(ストレージ、管理、アクセス)が重要です。 以前に数字とstをカバーしてきました

潜る前に、重要な注意事項:AIパフォーマンスは非決定論的であり、非常にユースケース固有です。簡単に言えば、走行距離は異なる場合があります。この(または他の)記事を最終的な単語として撮影しないでください。これらのモデルを独自のシナリオでテストしないでください

傑出したAI/MLポートフォリオの構築:初心者と専門家向けガイド 説得力のあるポートフォリオを作成することは、人工知能(AI)と機械学習(ML)で役割を確保するために重要です。 このガイドは、ポートフォリオを構築するためのアドバイスを提供します

結果?燃え尽き症候群、非効率性、および検出とアクションの間の隙間が拡大します。これは、サイバーセキュリティで働く人にとってはショックとしてはありません。 しかし、エージェントAIの約束は潜在的なターニングポイントとして浮上しています。この新しいクラス

即時の影響と長期パートナーシップ? 2週間前、Openaiは強力な短期オファーで前進し、2025年5月末までに米国およびカナダの大学生にChatGpt Plusに無料でアクセスできます。このツールにはGPT ‑ 4o、Aが含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
