ディープラーニングモデルアーキテクチャを視覚化する6つの一般的な方法の概要

ディープラーニングモデルアーキテクチャを視覚化する6つの一般的な方法の概要

視覚化は、ディープラーニング モデルの内部構造を説明し、理解するのに役立ちます。 モデル計算グラフの視覚化により、ニューラル ネットワークの計算方法を把握できます。モデルの視覚化には、主に次の側面が含まれます。

  • モデルには何層ありますか?
  • 各層の入力と出力の形状
  • 異なるレイヤーはどのように接続されていますか?
  • 各レイヤーで使用されるパラメータ
  • 異なる活性化関数が使用される

この記事では、Keras と PyTorch を使用してシンプルなディープラーニング モデルを構築し、さまざまなツールとテクニックを使用してそのアーキテクチャを視覚化します。

Kerasを使用したモデルの構築

 keras をインポートする
# Fashion MNIST データセットモデルトレーニングする
( train_imagestrain_labels ) _ = keras.datasets.fashion_mnist.load_data ( )
列車画像= 列車画像/ 255.0
# モデル定義します
モデル= keras.models.sequential ( [
keras.layers.flatten ( input_shape = ( 28,28 ) )
keras.layers.dense ( 32 , activation = 'relu' ) ,
keras.layers.Dropout0.2
keras.layers.dense (10 , activation = 'softmax' ) です
])
# モデルコンパイルする
モデル. コンパイル(
オプティマイザー= 'adam'
損失= 'sparse_categorical_crossentropy'
メトリック= [ '精度' ])

Keras組み込み可視化モデル

Kerasでモデルアーキテクチャを表示する最も簡単な方法は、summary()メソッドを使用することです。

 モデル.概要( ) 

この方法はkerasの組み込み実装で​​あり、その原理は非常に単純です。これは、すべてのモデル レイヤーをトラバースし、レイヤーの入力と出力の次元、パラメーターの数、アクティベーション タイプなどの関連する詳細を出力します。これを実現するためにトレーニング トラバーサルを使用することもできます。コードは次のとおりです。

 モデルレイヤー場合:
print ( "レイヤー名: " + レイヤー. 名前)
print ( "レイヤーのタイプ: " + レイヤー. __class__ . __name__ )
print ( "入力次元: {}" . format ( layer . input_shape [ 1 :] ))
print ( "出力次元: {}" . format ( layer . output_shape [ 1 :] ))
print ( "パラメータ数: {}" . format ( layer . count_params ()))
試す
print ( "アクティベーション: " + レイヤー. アクティベーション.__ name__ )
印刷( " " )
を除外する
印刷( " " )

この方法では簡単な情報しか得られません。ここでは、より便利な方法をいくつか紹介します。

Keras vis_utils

keras.utils.vis_utils は、Graphviz を使用して Keras モデルをプロットするためのユーティリティ関数を提供します。ただし、使用する前に他の依存関係をインストールする必要があります。

 pip pydot をインストール
pip インストールpydotplus
pip でgraphviz をインストールします

Graphviz を使用するには、Graphviz bin フォルダーのパスをシステム PATH に追加する必要もあります。設定後、使用できるようになります。

 model_img_file = 'model.png'
tf . keras . utils . plot_model ( モデルto_file = model_img_file
show_shapes = True
show_layer_activations = True
show_dtype = True
show_layer_names = True )

ビジュアルキアーズ

Visualkears ライブラリは、CNN (畳み込みニューラル ネットワーク) の階層型アーキテクチャの生成と、単純なフィードフォワード ネットワークを含むほとんどのモデルのグラフィカル スタイル アーキテクチャの生成のみをサポートしています。

 pip インストールvisualkeras

レイヤードビュー()はCNNモデルのアーキテクチャを表示するために使用されます

 visualkeras.layered_view ( モデル凡例= Truedraw_volume = True ) 

テンソルボード

TensorBoard のグラフを使用すると、モデル構造図を表示できます。 Tensorboardの場合は、次の方法を使用します。

 テンソルフローtf としてインポートする
datetime からdatetime をインポート
テンソルボードをインポートする

ノートブックで使用する必要がある場合は、次のステートメントを使用して Tensorboard 拡張機能をロードできます。

 % load_ext テンソルボード

fit() で使用される Keras Tensorboard コールバック

 # Keras TensorBoard コールバックを定義します
logdir = "logs/fit/" + datetime . now (). strftime ( "%Y%m%d-%H%M%S" )
tensorboard_callback = keras.callbacks.TensorBoard ( log_dir = logdir )
# モデルトレーニングします
モデル. フィット(
列車画像
トレーニングラベル
バッチサイズ= 64
エポック= 5
コールバック= [ tensorboard_callback ])

モデル.save ( "model.h5" )

モデルのトレーニングが完了したら、TensorBoard を起動し、UI が読み込まれるまで待ちます。

 % tensorboard --logdir ログ

「グラフ」をクリックすると、モデルの視覚化結果を見ることができます。

注: Pytorch 1.8 以降では、Tensorboard データを生成し、Tensorboard に接続するために、from torch.utils.tensorboard import SummaryWriter が提供されています。

ネトロン

Netron は、ニューラル ネットワーク、ディープラーニング、機械学習モデル専用に設計されたビューアです。 Keras、TensorFlow lite、ONNX、Caffe をサポートし、PyTorch と TensorFlow も実験的にサポートしています。

pip インストール netron

ブラウザを開いて netron.app と入力し、「モデルを開く」をクリックして、アップロードする h5 ファイルのパスを選択します。

各レイヤーの可視化結果を見ることができます。

PyTorch でシンプルなディープラーニング モデルを構築する

 輸入トーチ
トーチインポートnn から
# トレーニング用のCPU またはGPU デバイスを取得します
デバイス= "cuda"torch.cuda.is_available () 場合、それ以外は" cpu"
print ( f "{device} デバイスを使用しています" )
クラスNeuralNetwork ( nn . Module ):
def __init__ ( 自己):
super ( NeuralNetworkself )。__ init__ ()
self.flatten = nn.Flatten ( )
self.linear_relu_stack = nn.Sequential (
nn . 線形( 28 * 28 , 512 )、
nn.ReLU ()
nn . 線形( 512 , 512 )、
nn.ReLU ()
nn . 線形( 512 , 10 )、
) 定義forward ( self , x ):
x = 自己.flatten ( x )
ロジット= self.linear_relu_stack ( x )
リターンロジット
pytorch_model = NeuralNetwork (). to ( デバイス)
x = torch.randn ( 512,28,28,1 ) .requires_grad_ ( True )
pytorch_model x 座標

モデル アーキテクチャを表示する最も簡単な方法は、それを印刷することです。

 印刷( pytorch_model ) 

完全なモデルアーキテクチャを見ることはできますが、効果は Keras の組み込み関数ほど良くありません。この問題を解決するのに非常に便利なライブラリがここにあります。

翻訳

PyTorchViz は graphviz に依存しているため、これもインストールする必要があります。

 pip でgraphviz をインストールします
pip torchviz をインストール

PyTorchViz を使用してモデルを視覚化するのは非常に簡単で、必要なメソッドは 1 つだけです。

 torchviz からmake_dotをインポート
make_dot ( yparams = dict ( list ( pytorch_model . named_pa​​rameters ())) ). render ( "torchviz"format = "png" )

上記のコードは、以下に示すように torchviz.png ファイルを生成します。

要約する

モデル アーキテクチャを視覚化すると、ディープラーニング モデルをより適切に説明できるようになります。 モデル構造の視覚化では、レイヤーの数、各レイヤーのデータの入力と出力の形状、使用される活性化関数、各レイヤーのパラメーターの数が表示され、モデルの最適化をより深く理解できます。


<<:  フィギュアを買う余裕がないなら、AI を使ってレンダリングしましょう!インターネット上の画像を検索して合成することができます

>>:  AI声優が偽の声を本物らしくする方法

ブログ    
ブログ    

推薦する

AI愛好家が注目するべき8人のインスタグラマー

人工知能(AI)は現在、主要な技術進歩の一部となっています。そして、AI がますます強力かつ高度にな...

ビデオ管理システム (VMS) を使用して複数ブランドのデバイス管理を強化するにはどうすればよいですか?

今日の環境では、インテグレーターとインストーラーは、古いセキュリティ プログラムをアップグレードし...

研究者はディープラーニングモデルを使って交通事故を予測する

[51CTO.com クイック翻訳]現在の世界は、コンクリートやアスファルトでできた巨大な迷路のよう...

3つの側面での共同の取り組みにより、人工知能はスマート交通の発展に貢献します。

[[442361]]都市化の継続的な進展と自動車保有数の急速な増加により、我が国の交通発展は困難な...

企業内で AI 分析を導入し拡張する方法

[[415863]]多くの組織の AI 分析に対する要望と、組織の規模や能力との間のギャップは拡大し...

バックトラッキングアルゴリズム - ロボットの動作範囲

[[415476]]この記事はWeChatの公開アカウント「Magic Programmer K」か...

寒波警報(黄色)発令中、ドローンの使用にはご注意ください!

11月3日、中央気象台は今年初の黄色寒波警報を発令し、最強の寒波が来ています!警報によると、11月...

ニューラルネットワークをシンボリックAIに活用し、MITとIBMが共同でディープラーニングの問題点を解決

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

PyTorch のデータセット Torchvision と Torchtext

[[421061]] PyTorch がさまざまな種類のデータを読み込んで処理できるように、公式で...

...

OpenAI は PyTorch、TensorFlow を全面的に採用していますが、なぜそれほど優れていないのでしょうか?

TensorFlow と PyTorch フレームワーク間の戦いは長い間続いています。最近のニュー...

AIはHRにどのように役立つのでしょうか?

全国的に人材不足が進む中、テクノロジーは雇用者が厳しい市場で最高の人材を見つけるのに役立ちますが、人...

2年後、マスクはついに「脳内挿管」というブラックテクノロジーをリリースし、脳コンピューターインターフェースを革新した。

設立から2年を経て、マスク氏の有名な脳コンピューターインターフェース研究会社Neuralinkがつい...

...