如何在深度学习模型中访问输入的偏导数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

我想在keras中创建自己的损失函数,其中包含衍生物。例如,

def my_loss(x):
    def y_loss(y_true,y_pred):
        res = K.gradients(y_pred,x)
        return res
    return y_loss

定义:

model = Sequential()
model.add(Dense(10, input_dim=2, activation='sigmoid'))
model.add(Dense(1, activation='linear'))
model_loss = my_loss(x=model.input)
model.compile(loss=model_loss, optimizer='adam')

现在因为输入是二维的,

K.gradients(y_pred,x)

必须是二维向量。但是,我不知道如何在渐变中获得每个标量。我最终想要的是关于x的所有y_pred的二阶导数。有没有方便的方法来获得这个?

它类似于这篇文章,但这篇文章将二维变量分成两个一维变量。有没有其他方法可以在不分离输入的情况下获得渐变?

提问于

扫码关注云+社区

领取腾讯云代金券