1 回答
TA贡献1844条经验 获得超8个赞
您可以使用以下命令在 Tensorflowtf.gradients和Keras 中计算梯度K.gradients:
first = K.gradients(model.outputs, model.inputs)
second = K.gradients(first, model.inputs)
这是计算模型中梯度的代码:
from tensorflow.python.keras import Model, Input
from tensorflow.python.keras import backend as K
from tensorflow.python.keras.layers import Dense, Lambda
def deriative(inps):
i, o = inps[0], inps[1]
grad1 = K.gradients(o, i)[0]
grad2 = K.gradients(grad1, i)[0]
return K.concatenate([grad1, grad2])
inps = Input(shape=(1,))
dense1 = Dense(32, activation='tanh')(inps)
dense2 = Dense(10, activation='tanh')(dense1)
dense3 = Dense(1, activation='linear')(dense2)
output = Lambda(deriative)([inps, dense3])
new_model = Model(inputs=inps, outputs=output)
new_model.compile('adam', 'mse')
print(new_model.summary())
添加回答
举报