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

ブログ    
ブログ    
ブログ    

推薦する

人工知能のための 6 つの無料オープンソース ツール! 3 分で機械学習を始めましょう!

オープンソースでは、自分のアイデアがいかに独創的であったとしても、他の誰かがすでにそのコンセプトを実...

OpenAI が Stable Diffusion を救います! Ilya Song Yang らによるオープンソースの Dall E3 デコーダー

予想外にも、OpenAI は「競合相手」である Stable Diffusion を活用しました。話...

ディープラーニング研究: コードと実験を効率的に管理するには?

回答1著者: イェ・シャオフェイリンク: https://www.zhihu.com/questio...

人工知能で電力網の問題を解決する

MIT-IBM Watson AI ラボの研究者たちは、電力網の問題のトラブルシューティングに人工知...

小売業向け AI を活用したビデオ分析

[[330057]]人工知能 (AI) は、情報の収集からビジネス価値を抽出することを目的とするデー...

AI研究機関OpenAIがライティングAIを開発:十分にリアルなフェイクニュースを書く

北京時間2月15日朝のニュース、ブルームバーグ通信によると、マスク氏が提唱するAI研究機関OpenA...

C# DES アルゴリズムの例の分析

C# DES アルゴリズムの復号化を実装する前に、DES の基本原理を見てみましょう。その入力パラメ...

C# アルゴリズムが張さんの誕生日問題を解決する

C# アルゴリズムは張さんの誕生日問題をどのように実装するのでしょうか?まず、張さんの誕生日に関する...

2024年に注目すべきサイバー犯罪の5つの傾向

サイバー犯罪は人工知能の時代に入り、ランサムウェアやAPTなどの高度な脅威は「サイバー犯罪技術革命」...

...

ディープラーニング以外に機械翻訳には何が必要ですか?

[[200675]]視聴者が足りないなら、噂話で十分だまずは噂話から始めましょう。この記事を書き始...

人工知能は統合を加速させており、テレビ業界は若返りを急ぐべきではない

関連データによると、今年上半期、わが国のカラーテレビ市場の累計販売台数は2,000万台未満で、前年同...

エッジデバイス上でモデル推論を効率的に実行できる 5 つのアルゴリズム

ディープラーニングが進歩するにつれて、ニューラルネットワークはますます大きくなっています。たとえば、...

機械学習プログラムで使用される一般的な推奨アルゴリズムの例

推奨アルゴリズムは、機械学習とデータマイニングの分野の重要な部分であり、ユーザーにパーソナライズされ...

...