def __init__(self, mdl, x):
self.loss_value = None
self.grad_values = None
self.mdl = mdl
loss = K.variable(0.)
layer_dict = dict([(layer.name, layer) for layer in mdl.layers])
inp = layer_dict['face'].output
out = layer_dict['conf'].output
loss -= K.sum(out)
# Might want to add some L2-loss in here, depending on output
# loss += 0.0005 * K.sum(K.square(inp - x))
grads = K.gradients(loss, inp)
outputs = [loss]
if type(grads) in {list, tuple}:
outputs += grads
else:
outputs.append(grads)
self.f_outputs = K.function([inp, K.learning_phase()], outputs)
评论列表
文章目录