ホームページ >バックエンド開発 >Python チュートリアル >Keras モデルのレイヤー出力にアクセスして評価するにはどうすればよいですか?

Keras モデルのレイヤー出力にアクセスして評価するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-17 16:48:02413ブラウズ

How can I access and evaluate layer outputs in a Keras model?

Keras でレイヤー出力を取得する

Keras のようなフレームワークを使用してニューラル ネットワーク モデルを構築する場合、個々のレイヤーの出力にアクセスすると有益な場合があります分析またはデバッグの目的で。この記事では、Keras モデルの各層の出力を取得する方法を説明します。

畳み込みニューラル ネットワーク (CNN) アーキテクチャを使用した二項分類モデルが作成される次のコード例を考えてみましょう。

from keras.models import Sequential
from keras.layers import Convolution2D, Activation, MaxPooling2D, Flatten, Dense, Dropout

model = Sequential()
# ... (Model architecture as provided in the question)

レイヤー出力へのアクセス

取得するにはモデル内の特定のレイヤーの出力には、model.layers[index].output 属性を利用できます。ここで、インデックスはモデルのアーキテクチャ内の層の位置を表します。

たとえば、最初の畳み込み層の出力にアクセスするには:

output = model.layers[0].output

すべての層の出力の取得

モデル内のすべての層の出力を取得するには、list を使用できます。理解:

outputs = [layer.output for layer in model.layers]

レイヤー出力の評価

前のステップから取得した出力を評価するには、Keras バックエンドによって提供される K.function メソッドを利用できます。

from keras import backend as K

inputs = model.input
functor = K.function([inputs, K.learning_phase()], outputs)

ここで、inputs はモデルの入力層を表し、 K.learning_phase() は、トレーニング中と評価中に異なる動作を示すレイヤー (ドロップアウトなど) に必要です。

最後に、指定された入力に対するレイヤーの出力を評価します:

test_input = np.random.random(input_shape)[np.newaxis,...]
layer_outputs = functor([test_input, 1.])

評価の最適化

複数の関数を作成するのではなく、評価プロセスを最適化します。各レイヤーの出力ごとに、リスト内のすべての出力を返す単一の関数を作成できます。

functor = K.function([inputs, K.learning_phase()], outputs)

追加メモ

  • ドロップアウト レイヤーは除外する必要があります。評価中に K.learning_phase() を 0 に設定します。
  • 入力変数は、次の場合に複数の入力テンソルを表すことができます。モデルには複数の入力があります。
  • layer_outputs 変数には、各層の出力に対応する NumPy 配列のリストが含まれます。

以上がKeras モデルのレイヤー出力にアクセスして評価するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。