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

假设我使用 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 中可能吗?我做了很多谷歌搜索,但找不到任何东西。


DIEA
浏览 292回答 1
1回答

婷婷同学_

您可以使用以下命令在 Tensorflowtf.gradients和Keras 中计算梯度K.gradients:first = K.gradients(model.outputs, model.inputs)second = K.gradients(first, model.inputs)这是计算模型中梯度的代码:from tensorflow.python.keras import Model, Inputfrom tensorflow.python.keras import backend as Kfrom tensorflow.python.keras.layers import Dense, Lambdadef 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())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python