目次
原理
1. 畳み込み層:
2. プーリング レイヤー:
3. 完全接続層:
実践的な手順と詳細な説明
1. 手順
2. コードの実装
視覚化
1. matplotlibをインポート
2. トレーニング中の損失と精度を記録します:
3. 損失​​と精度の視覚化:
ホームページ テクノロジー周辺機器 AI Pytorch、CNN解読の核心ポイントを徹底分析!

Pytorch、CNN解読の核心ポイントを徹底分析!

Jan 04, 2024 pm 07:18 PM
cnn pytorch

こんにちは、Xiaozhuangです!

初心者は畳み込みニューラル ネットワーク (CNN) の作成に慣れていないかもしれません。以下の完全なケースで説明しましょう。

CNN は、画像分類、ターゲット検出、画像生成、その他のタスクで広く使用されている深層学習モデルです。畳み込み層とプーリング層を通じて画像の特徴を自動的に抽出し、全結合層を通じて分類を実行します。このモデルの鍵は、畳み込み操作とプーリング操作を使用して画像内の局所的な特徴を効果的にキャプチャし、それらを多層ネットワークを通じて組み合わせて、画像の高度な特徴抽出と分類を実現することです。

原理

1. 畳み込み層:

畳み込み層は、畳み込み演算を通じて入力画像から特徴を抽出します。この操作には、入力画像上をスライドし、スライディング ウィンドウの下でドット積を計算する学習可能な畳み込みカーネルが含まれます。このプロセスは局所的な特徴を抽出するのに役立ち、それによって翻訳の不変性に対するネットワークの認識が強化されます。

式:

突破Pytorch核心点,CNN !!!

ここで、x は入力、w はコンボリューション カーネル、b はバイアスです。

2. プーリング レイヤー:

プーリング レイヤーは、一般的に使用される次元削減テクノロジであり、その機能はデータの空間次元を削減し、それによって計算量を削減し、最大限のデータを抽出することです。重要な機能。このうち、最大プーリングは各ウィンドウの最大値を代表として選択するプーリング方法が一般的です。最大プーリングにより、重要な情報を保持しながら、データの複雑さを軽減し、モデルの計算効率を向上させることができます。

式 (最大プーリング):

突破Pytorch核心点,CNN !!!

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

iFlytek: ファーウェイの Ascend 910B の機能は基本的に Nvidia の A100 に匹敵しており、我が国の汎用人工知能の新しい基盤を構築するために協力しています。 iFlytek: ファーウェイの Ascend 910B の機能は基本的に Nvidia の A100 に匹敵しており、我が国の汎用人工知能の新しい基盤を構築するために協力しています。 Oct 22, 2023 pm 06:13 PM

本サイトは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 と PyTorch の完璧な組み合わせ: 詳細なインストールと構成手順 PyCharm と PyTorch の完璧な組み合わせ: 詳細なインストールと構成手順 Feb 21, 2024 pm 12:00 PM

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

自然言語生成タスクと Pytorch コード実装における 5 つのサンプリング方法の紹介 自然言語生成タスクと Pytorch コード実装における 5 つのサンプリング方法の紹介 Feb 20, 2024 am 08:50 AM

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

PyTorchを使用したノイズ除去拡散モデルの実装 PyTorchを使用したノイズ除去拡散モデルの実装 Jan 14, 2024 pm 10:33 PM

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

非常に高速! 10 行未満のコードを使用して、わずか数分でビデオ音声を認識してテキストに変換します 非常に高速! 10 行未満のコードを使用して、わずか数分でビデオ音声を認識してテキストに変換します Feb 27, 2024 pm 01:55 PM

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

PyTorch を使用した PyCharm のインストールに関するチュートリアル PyTorch を使用した PyCharm のインストールに関するチュートリアル Feb 24, 2024 am 10:09 AM

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

PHP と PyTorch によるディープラーニング PHP と PyTorch によるディープラーニング Jun 19, 2023 pm 02:43 PM

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

GQA、大規模モデルで一般的に使用されるアテンション メカニズム、および Pytorch コードの実装の詳細な説明 GQA、大規模モデルで一般的に使用されるアテンション メカニズム、および Pytorch コードの実装の詳細な説明 Apr 03, 2024 pm 05:40 PM

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

See all articles