Pytorch、CNN解読の核心ポイントを徹底分析!
こんにちは、Xiaozhuangです!
初心者は畳み込みニューラル ネットワーク (CNN) の作成に慣れていないかもしれません。以下の完全なケースで説明しましょう。
CNN は、画像分類、ターゲット検出、画像生成、その他のタスクで広く使用されている深層学習モデルです。畳み込み層とプーリング層を通じて画像の特徴を自動的に抽出し、全結合層を通じて分類を実行します。このモデルの鍵は、畳み込み操作とプーリング操作を使用して画像内の局所的な特徴を効果的にキャプチャし、それらを多層ネットワークを通じて組み合わせて、画像の高度な特徴抽出と分類を実現することです。
原理
1. 畳み込み層:
畳み込み層は、畳み込み演算を通じて入力画像から特徴を抽出します。この操作には、入力画像上をスライドし、スライディング ウィンドウの下でドット積を計算する学習可能な畳み込みカーネルが含まれます。このプロセスは局所的な特徴を抽出するのに役立ち、それによって翻訳の不変性に対するネットワークの認識が強化されます。
式:
ここで、x は入力、w はコンボリューション カーネル、b はバイアスです。
2. プーリング レイヤー:
プーリング レイヤーは、一般的に使用される次元削減テクノロジであり、その機能はデータの空間次元を削減し、それによって計算量を削減し、最大限のデータを抽出することです。重要な機能。このうち、最大プーリングは各ウィンドウの最大値を代表として選択するプーリング方法が一般的です。最大プーリングにより、重要な情報を保持しながら、データの複雑さを軽減し、モデルの計算効率を向上させることができます。
式 (最大プーリング):
3. 完全接続層:
完全接続層はニューラル ネットワーク内にあります。畳み込み層とプーリング層によって抽出された特徴マップを出力カテゴリに接続する際に重要な役割を果たします。全結合層の各ニューロンは前の層のすべてのニューロンに接続されているため、特徴の合成と分類を行うことができます。
実践的な手順と詳細な説明
1. 手順
- 必要なライブラリとモジュールをインポートします。
- ネットワーク構造の定義: nn.Module を使用して、そこから継承されたカスタム ニューラル ネットワーク クラスを定義し、畳み込み層、活性化関数、プーリング層、および全結合層を定義します。
- 損失関数とオプティマイザーを定義します。
- データのロードと前処理。
- トレーニング ネットワーク: トレーニング データを使用して、ネットワーク パラメーターを反復的にトレーニングします。
- テスト ネットワーク: テスト データを使用してモデルのパフォーマンスを評価します。
2. コードの実装
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms# 定义卷积神经网络类class SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()# 卷积层1self.conv1 = nn.Conv2d(in_channels=1, out_channels=16, kernel_size=3, stride=1, padding=1)self.relu = nn.ReLU()self.pool = nn.MaxPool2d(kernel_size=2, stride=2)# 卷积层2self.conv2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, stride=1, padding=1)# 全连接层self.fc1 = nn.Linear(32 * 7 * 7, 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, 32 * 7 * 7)x = self.fc1(x)return x# 定义损失函数和优化器net = SimpleCNN()criterion = nn.CrossEntropyLoss()optimizer = optim.Adam(net.parameters(), lr=0.001)# 加载和预处理数据transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)# 训练网络num_epochs = 5for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):optimizer.zero_grad()outputs = net(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()if (i+1) % 100 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{len(train_loader)}], Loss: {loss.item()}')# 测试网络net.eval()with torch.no_grad():correct = 0total = 0for images, labels in test_loader:outputs = net(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()accuracy = correct / totalprint('Accuracy on the test set: {}%'.format(100 * accuracy))
この例は、MNIST データ セットを使用してトレーニングおよびテストされた単純な CNN モデルを示しています。
次に、モデルのパフォーマンスとトレーニング プロセスをより直観的に理解するために、視覚化ステップを追加します。
視覚化
1. matplotlibをインポート
import matplotlib.pyplot as plt
2. トレーニング中の損失と精度を記録します:
トレーニング ループで、各エポックの損失と精度を記録します。 。
# 在训练循环中添加以下代码train_loss_list = []accuracy_list = []for epoch in range(num_epochs):running_loss = 0.0correct = 0total = 0for i, (images, labels) in enumerate(train_loader):optimizer.zero_grad()outputs = net(images)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()if (i+1) % 100 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Step [{i+1}/{len(train_loader)}], Loss: {loss.item()}')epoch_loss = running_loss / len(train_loader)accuracy = correct / totaltrain_loss_list.append(epoch_loss)accuracy_list.append(accuracy)
3. 損失と精度の視覚化:
# 在训练循环后,添加以下代码plt.figure(figsize=(12, 4))# 可视化损失plt.subplot(1, 2, 1)plt.plot(range(1, num_epochs + 1), train_loss_list, label='Training Loss')plt.title('Training Loss')plt.xlabel('Epochs')plt.ylabel('Loss')plt.legend()# 可视化准确率plt.subplot(1, 2, 2)plt.plot(range(1, num_epochs + 1), accuracy_list, label='Accuracy')plt.title('Accuracy')plt.xlabel('Epochs')plt.ylabel('Accuracy')plt.legend()plt.tight_layout()plt.show()
このようにして、トレーニング プロセス後のトレーニングの損失と精度の変化を確認できます。
コードをインポートした後、必要に応じてビジュアル コンテンツと形式を調整できます。
以上がPytorch、CNN解読の核心ポイントを徹底分析!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











本サイトは10月22日、今年第3四半期にiFlytekの純利益は2579万元で、前年同期比81.86%減少し、最初の3四半期の純利益は9936万元で、過去最高を記録したと報じた。前年比76.36%減。 iFlytekのJiang Tao副社長は、第3四半期の業績説明会で、iFlytekが2023年初めにHuawei Shengtengとの特別研究プロジェクトを立ち上げ、中国の一般的な人工知能の新しい基盤を共同で構築するためにHuaweiと高性能オペレータライブラリを共同開発したことを明らかにした。独自の革新的なソフトウェアとハードウェアによるアーキテクチャを採用し、国内の大規模モデルの使用を可能にします。同氏は、ファーウェイのAscend 910Bの現在の機能は基本的にNvidiaのA100に匹敵すると指摘した。次回開催される iFlytek 1024 グローバル デベロッパー フェスティバルで、iFlytek と Huawei は人工知能コンピューティングのパワー ベースについてさらなる共同発表を行う予定です。彼はまた、次のようにも述べました。

PyCharm は強力な統合開発環境 (IDE) であり、PyTorch はディープ ラーニングの分野で人気のあるオープン ソース フレームワークです。機械学習とディープラーニングの分野では、開発に PyCharm と PyTorch を使用すると、開発効率とコード品質が大幅に向上します。この記事では、PyCharm に PyTorch をインストールして構成する方法を詳しく紹介し、読者がこれら 2 つの強力な機能をより効果的に活用できるように、具体的なコード例を添付します。ステップ 1: PyCharm と Python をインストールする

自然言語生成タスクにおいて、サンプリング法は生成モデルからテキスト出力を取得する手法です。この記事では、5 つの一般的なメソッドについて説明し、PyTorch を使用してそれらを実装します。 1. 貪欲復号 貪欲復号では、生成モデルは入力シーケンスに基づいて出力シーケンスの単語を時間ごとに予測します。各タイム ステップで、モデルは各単語の条件付き確率分布を計算し、最も高い条件付き確率を持つ単語を現在のタイム ステップの出力として選択します。このワードは次のタイム ステップへの入力となり、指定された長さのシーケンスや特別な終了マーカーなど、何らかの終了条件が満たされるまで生成プロセスが続行されます。 GreedyDecoding の特徴は、毎回現在の条件付き確率が最良になることです。

ノイズ除去拡散確率モデル (DDPM) の動作原理を詳細に理解する前に、まず、DDPM の基礎研究の 1 つである生成人工知能の開発の一部を理解しましょう。 VAEVAE は、エンコーダー、確率的潜在空間、およびデコーダーを使用します。トレーニング中に、エンコーダーは各画像の平均と分散を予測し、ガウス分布からこれらの値をサンプリングします。サンプリングの結果はデコーダに渡され、入力画像が出力画像と同様の形式に変換されます。 KL ダイバージェンスは損失の計算に使用されます。 VAE の大きな利点は、多様な画像を生成できることです。サンプリング段階では、ガウス分布から直接サンプリングし、デコーダを通じて新しい画像を生成できます。 GAN は、わずか 1 年で変分オートエンコーダ (VAE) において大きな進歩を遂げました。

皆さん、こんにちは。私は Kite です。2 年前には、オーディオ ファイルとビデオ ファイルをテキスト コンテンツに変換する必要性を実現するのは困難でしたが、今ではわずか数分で簡単に解決できるようになりました。一部の企業では、トレーニングデータを取得するために、DouyinやKuaishouなどのショートビデオプラットフォーム上のビデオをフルクロールし、ビデオから音声を抽出してテキスト形式に変換し、ビッグデータのトレーニングコーパスとして使用していると言われていますモデル。ビデオまたはオーディオ ファイルをテキストに変換する必要がある場合は、現在利用可能なこのオープン ソース ソリューションを試すことができます。たとえば、映画やテレビ番組のセリフが登場する特定の時点を検索できます。早速、本題に入りましょう。 Whisper は OpenAI のオープンソース Whisper で、もちろん Python で書かれており、必要なのはいくつかの簡単なインストール パッケージだけです。

PyTorch は、強力な深層学習フレームワークとして、さまざまな機械学習プロジェクトで広く使用されています。強力な Python 統合開発環境として、PyCharm はディープ ラーニング タスクを実装するときに優れたサポートも提供します。この記事では、PyTorch を PyCharm にインストールする方法を詳しく紹介し、読者が深層学習タスクに PyTorch をすぐに使い始めるのに役立つ具体的なコード例を示します。ステップ 1: PyCharm をインストールする まず、PyCharm がインストールされていることを確認する必要があります。

ディープラーニングは人工知能分野の重要な分野であり、近年ますます注目を集めています。深層学習の研究と応用を実施できるようにするには、多くの場合、それを達成するためにいくつかの深層学習フレームワークを使用する必要があります。この記事では、PHPとPyTorchを使ってディープラーニングを行う方法を紹介します。 1. PyTorch とは何ですか? PyTorch は Facebook が開発したオープンソースの機械学習フレームワークで、深層学習モデルを迅速に作成してトレーニングするのに役立ちます。 PyTorc

グループ化クエリ アテンション (GroupedQueryAttendant) は、大規模言語モデルにおけるマルチクエリ アテンション メソッドであり、その目標は、MQA の速度を維持しながら MHA の品質を達成することです。 GroupedQueryAttendant はクエリをグループ化し、各グループ内のクエリは同じアテンションの重みを共有するため、計算の複雑さが軽減され、推論速度が向上します。この記事では、GQAの考え方とそれをコードに変換する方法について説明します。 GQA は論文「GQA:TrainingGeneralizedMulti-QueryTransformerModelsfromMulti-HeadCheckpoint」に掲載されています
