除了y_true和y_predict的MSE外,我还想在成本函数中使用y_true的二阶导数,因为我的模型当前非常动态。假设我有y_predicted(256,100,1)。第一维对应于样本(每个样本之间的delta_t为0.1s)。现在,我想通过第一个维度进行区分,即
diff(diff(y_predicted[1, :, 1]))/delta_t**2
针对y_predictied中的每一行(0-dim)。
注意,我只想使用y_predicted和delta_t进行区分
非常感谢你, 最高
答案 0 :(得分:0)
要计算二阶导数,可以使用tf.hessians
,如下所示:
x = tf.Variable([7])
x2 = x * x
d2x2 = tf.hessians(x2, x)
评估d2x2产量:
[array([[2]], dtype=int32)]
您可以的话
loss += lam_l1 * tf.hessians(y_pred, xs)
其中xs
是您要区分的张量。
如果您希望直接使用Keras,则可以链接两次keras.backend.gradients(loss, variables)
,没有与tf.hessians
等效的Keras。