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

推薦する

...

UiPath が前進中!企業が包括的な自動化を実現する可能性を探るのを支援する

[51CTO.com からのオリジナル記事] RPA は人間の働き方をシミュレートし、ルールベースの...

Googleの華博士がICCV2021で新モデルを発表、卵を泡立てるだけでパンケーキを作りたいかどうかがわかる

機械学習モデルが現実世界でますます使用され、導入されるようになると、AI の意思決定は人々の日常生活...

IoTが発展するために機械学習が必要な理由

ビッグデータや人工知能などのテクノロジーがもたらす機会と脅威、そしてその将来に対する懸念については、...

RangePerception: Range View3D 検出への新しいアプローチ!

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

SFが現実になる?偉大な劉慈欣がAI企業に入社

[[411067]]サイエンスフィクションと現実がこれほど近づいたことはかつてありませんでした。 「...

配達員に代わるドローン配達は、人々に「嫌われるのではなく愛される」ようになる

現在、人々の生活や仕事のペースはますます加速し、インターネット電子商取引プラットフォームは急速に発展...

人工知能やモノのインターネットから仮想現実やブロックチェーンまで、将来の技術進歩の大部分はクラウドで起こるだろう。

今では、ほとんどの企業リーダーがクラウド コンピューティングの価値を理解しています。すでに多くの人が...

...

デジタルマーケティング: AI はどのようにして人間の行動パターンを「見抜く」のでしょうか?

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

...

...

AIがデータセンターのワークロード管理の課題を解決

データセンターのワークロードが急増するにつれ、効率性の向上と経費削減を図りながら IT チームの管理...

クラウドコンピューティングのディープラーニングプラットフォームを構築し実践する唯一の方法

クラウド ディープラーニング プラットフォームの定義 クラウド ディープラーニングとは何ですか? 機...

ディープフェイクは今回、顔を変えるだけでなく、街そのものを変えてしまった。

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