为了账号安全,请及时绑定邮箱和手机立即绑定

Keras:使用模型的一阶和二阶导数之和作为最终输出

Keras:使用模型的一阶和二阶导数之和作为最终输出

DIEA 2021-09-24 21:29:51
假设我使用 Keras 创建了这个模型:model = Sequential()model.add(Dense(32, activation='tanh', input_dim=1))model.add(Dense(10, activation='tanh'))model.add(Dense(1, activation='linear'))这个模型的输入和输出维度都是1。现在,假设我想再添加一层,它是上面模型的一阶导数和二阶导数(相对于输入)的总和,并将其用作我的新输出层。这在 Keras 中可能吗?我做了很多谷歌搜索,但找不到任何东西。
查看完整描述

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())


查看完整回答
反对 回复 2021-09-24
  • 1 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信