Keras: 各レイヤーから出力を取得する方法
はじめに
Keras での作成ニューラル ネットワーク モデルは簡単です。ただし、各レイヤーの出力を抽出するのは少し難しい場合があります。この記事は、この問題に対する包括的な解決策を提供し、レイヤー出力を効果的に取得するプロセスをガイドすることを目的としています。
メソッド
特定のレイヤーの出力を取得するには、model.layers[index].output 属性を通じてアクセスするだけです。ここで、index はモデル内の目的のレイヤーの位置を表します。たとえば、最初の層の出力を取得するには:
first_layer_output = model.layers[0].output
すべての層から同時に出力を取得するには、次のコードを利用します:
from keras import backend as K input_tensor = model.input # Input placeholder layer_outputs = [layer.output for layer in model.layers] # List of layer outputs evaluation_functions = [K.function([input_tensor, K.learning_phase()], [out]) for out in layer_outputs] # Functions to evaluate layer outputs # Testing test_input = np.random.random(model.input_shape)[np.newaxis,...] # Sample input layer_outputs = [func([test_input, 1.]) for func in evaluation_functions] # Evaluate layer outputs for test input
最適化
効率を向上させるには、単一関数を使用してすべてのレイヤーを評価することを検討してください。出力:
from keras import backend as K input_tensor = model.input # Input placeholder layer_outputs = [layer.output for layer in model.layers] # List of layer outputs evaluation_function = K.function([input_tensor, K.learning_phase()], layer_outputs) # Function to evaluate all layer outputs # Testing test_input = np.random.random(model.input_shape)[np.newaxis,...] # Sample input layer_outputs = evaluation_function([test_input, 1.]) # Evaluate all layer outputs for test input
注: K.learning_phase() パラメーターが正しく設定されていることを確認してください。値 1 はトレーニング モード (ドロップアウトなどのレイヤーの場合) をシミュレートし、0 はテスト モードを表します。
以上がKeras モデルの各レイヤーから出力を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。