tensorflowkerasがエラーを報告しました:さまざまな理由と解決策のために勾配が提供されていません



Tensorflow Keras Reported An Error



エラー分析

変数に勾配が提供されていないということは、変数に勾配が提供されていないことを意味します。
ディープラーニングでは、勾配の更新はバックプロパゲーションアルゴリズムの実装が原因であるため、このエラーが発生するのはなぜですか。損失関数が既知の(入力を除く)層の相関と一致しない場合、損失関数は各関数の勾配を見つけることができず、エラーが発生します

解決

例えば
損失関数



def contrastive_loss_layer( left_inputs, right_inputs, label_inputs): img=left_inputs change_img=right_inputs y=label_inputs different=img-change_img margin = 1 square = K.square(different) margin_square = K.square(K.maximum(margin - y, 0)) loss=(y* square + (1 - y) * margin_square) loss=tf.reduce_mean(loss) return loss model=keras.Model(inputs=[left_inputs, right_inputs,label_inputs], outputs=[outputs,loss],name='model')

損失関数は入力層に直接関連しているため、勾配を提供することはできません。
このとき、損失関数は元のモデルレイヤーに関連付ける必要があります。