ディープラーニングモデルアーキテクチャを視覚化する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声優が偽の声を本物らしくする方法

ブログ    
ブログ    

推薦する

TensorFlow を使用したコンテキスト チャットボットの実装

日常のチャットでは、文脈が重要です。 TensorFlow を使用してチャットボット フレームワーク...

...

...

AIは胸部X線写真からCOVID-19を検出できる

先週、ノースウェスタン大学の研究者らは、胸部X線写真からCOVID-19感染の兆候を検出できる新たな...

データセンターの物理的セキュリティに AI を活用する方法

機械学習と人工知能は、データセンターの問題に対する万能薬として宣伝されてきました。その多くは誇大宣伝...

科学者は人工知能を使って新素材を発見する

米国の科学者チームは、人工知能を利用して非常に短期間で新たな鉄鋼の代替品を発見したいと考えている。そ...

ディープラーニングにおけるバッチ正規化の落とし穴

[[191744]]バッチ正規化は、ディープラーニングにおいて最近登場した効果的な手法です。その有効...

誇張ではなく、絶対にそうはならない

[[280896]] 01. はじめにデータのクエリ速度を向上させるために、キャッシュがよく使用され...

...

AIと自動化革命に備える10の方法

人工知能と自動化はもはやSFの世界の話ではなく、ビジネスの世界と消費者の世界の両方で非常に現実的かつ...

Keras でカスタム損失関数を作成する方法は?

[[284375]] UnsplashのDhruv Deshmukhによる写真損失関数を使用して、...

...

...

ScalableMap: オンラインで長距離ベクトル化された高精度マップ構築のためのスケーラブルなマップ学習

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

製造業における AI 活用事例 10 選

製造企業は、ビジネスのやり方を合理化し、効率を高めるために人工知能に注目しています。一般的な使用例を...