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