現在、Keras を使用したレイヤー単位のトレーニング モデルの実装を学習しています。私のソリューションは複雑で時間がかかります。誰かが簡単な方法でそれを行うための提案をしてもらえますか? また、誰かが Keras のトポロジ、特に 間の関係nodes.outbound_layer
、およびそれらがテンソルとnodes.inbound_layer
どのように関連付けられたかを説明できますか? githubのトポロジ ソース コードから、次のことについてかなり混乱しています。input_tensors
output_tensors
input_tensors[i] == inbound_layers[i].inbound_nodes[node_indices[i]].output_tensors[tensor_indices[i]]
inbound_nodes
を含む理由はoutput_tensors
、それらの間の関係について明確ではありません.... の特定の位置にあるレイヤーを削除したい場合、API model
最初に何を削除する必要がありますか? また、ある場所にレイヤーを追加する場合、最初に何をすればよいですか?
これが、レイヤーごとのトレーニング モデルに対する私のソリューションです。私は Sequential モデルでそれを行うことができ、今では実装しようとしていAPI model
ます:
これを行うには、前のトレーニングを終了してから新しいレイヤーを追加し、再コンパイル ( model.compile()
) および再適合 ( model.fit()
) するだけです。
Keras モデルには出力レイヤーが必要なので、常に出力レイヤーを追加します。その結果、新しいレイヤーを追加するたびに、出力レイヤーを削除してから追加し直す必要があります。これは を使用して実行できます。model.pop()
この場合model
、keras.Sequential()
モデルである必要があります。
このSequential()
モデルは、を含む多くの便利な機能をサポートしていますmodel.add(layer)
。ただし、モデル API: を使用してカスタマイズされたモデルの場合model=Model(input=...., output=....)
、それらpop()
またはadd()
関数はサポートされておらず、実装に時間がかかり、不便な場合があります。