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

ブログ    
ブログ    

推薦する

自動運転のための強化学習:人間主導の経験ベースのアプローチ

[[428302]] 2021年9月26日にarXivにアップロードされた論文「人間のガイダンスによ...

ドアを早く開けてください、ロボット先生が教えに来ます

[[206421]]国慶節の連休中の数日間、河南省では新たなテクノロジードラマが繰り広げられた。コン...

基準に問題があり、人工知能は間違った方向に向かっている

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

...

効果よりも研究が重要です。バイオニックロボットはどうすれば実用化できるのでしょうか?

[[235506]]映画『ウォーリー』では、愛らしいウォーリー(WALL-E、廃棄物処理ロボット地...

スマート音声アシスタントの未来

人工知能は、スマート音声アシスタントが私たちの日常生活でどのように使用されるかを真に変えましたが、私...

データセンターは効率性を向上させるためにさらなる機械学習を必要としている

世界経済フォーラムによると、2025年までに世界では毎日463EBのデータが生成されることになります...

誰も教えてくれないAI大規模導入の効率的なプロセス!

現在、AIに関するチュートリアルは数多くあります。オブジェクト検出、画像分類、NLP の実行方法、チ...

AI消費動向予測について

インターネット データ センターの最新の消費者ガイド分析によると、2021 年から 2025 年の期...

勉強!機械学習アルゴリズムの長所と短所の概要

目次正規化アルゴリズムアンサンブルアルゴリズム決定木アルゴリズム回帰人工ニューラルネットワークディー...

強いAIと弱いAIの議論:人工知能の意識に関する興味深い理論

[[344692]]最近、私のお気に入りの新進思想家の一人と高性能 AI と低性能 AI について議...

アリババDAMOアカデミーがAIの人間の言語理解の向上を支援する論文でSemEval最優秀賞を受賞

世界最大のセマンティック評価コンテスト「SemEval-2022」は7月19日、今年唯一の「最優秀シ...

信頼できるAIを開発する方法

[[410884]]現在、人工知能の応用範囲と深さは絶えず拡大しており、情報インフラの重要な部分にな...

中国はビッグデータ、人工知能、遺伝子技術などに関する知的財産法制の整備を加速させる。

中国共産党中央委員会と国務院がこのほど発表した「知的財産強国建設要綱(2021~2035年)」では、...