ホームページ > バックエンド開発 > Python チュートリアル > Keras モデルの特定のレイヤーからアクティベーションを抽出するにはどうすればよいですか?

Keras モデルの特定のレイヤーからアクティベーションを抽出するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-30 02:49:14
オリジナル
760 人が閲覧しました

How to Extract Activations from Specific Layers in a Keras Model?

Keras で各レイヤーの出力を取得する方法

ディープ ニューラル ネットワーク (DNN) を使用する場合、個々のレイヤーのアクティベーションを検査すると便利なことがよくあります。これは、モデルの動作を理解し、潜在的な問題を特定するのに役立ちます。 Python 用の人気のある DNN ライブラリである Keras は、これを実現する簡単な方法を提供します。

モデル レイヤー インターフェイスの使用

Keras モデルは一連のレイヤーとして構築され、それぞれが特定の操作を実行します。入力。特定のレイヤーの出力を取得するには、次の構文を使用できます。

model.layers[index].output
ログイン後にコピー

ここで、index は出力を抽出するレイヤーのインデックスです。たとえば、提供されたコード スニペットの 2 番目の畳み込み層の出力を取得するには:

conv_output = model.layers[2].output
ログイン後にコピー

すべての層からの出力の取得

モデル内のすべての層から出力を抽出するには、次のようにします。リスト内包表記を使用できます:

outputs = [layer.output for layer in model.layers]
ログイン後にコピー

評価関数の作成

実際にレイヤーの出力を評価するために、Keras は K.function と呼ばれる一連の関数を提供します。これらの関数は、テンソルのリストを入力として受け取り、出力のリストを返します。

各レイヤー出力の評価関数を作成するには、次の手順を実行できます。

from keras import backend as K

functors = [K.function([inp, K.learning_phase()], [out]) for out in outputs]
ログイン後にコピー

ここで、inp は入力テンソル K.learning_phase() はモデルがトレーニング モードか推論モードかを示すフラグであり、out はその出力です。 layer.

レイヤー出力の評価

ここで、入力データを対応する評価関数に渡すことでレイヤー出力を評価できます:

test = np.random.random(input_shape)[np.newaxis,...]
layer_outs = [func([test, 1.]) for func in functors]
print layer_outs
ログイン後にコピー

必ず K を設定してください。モデル内のいずれかの層にトレーニングをシミュレートするためのドロップアウトまたはバッチ正規化が含まれている場合は、learning_phase() を 1 に設定します。 mode.

プロセスの最適化

レイヤーの出力を評価するためのより効率的なアプローチは、すべてのレイヤーの出力のリストを返す単一関数を使用することです:

from keras import backend as K

functor = K.function([inp, K.learning_phase()], outputs)
ログイン後にコピー

これにより、個々の関数の評価に関連するデータ転送と計算のオーバーヘッドが削減されます。

以上がKeras モデルの特定のレイヤーからアクティベーションを抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート