java调用keras theano模型_使用Keras获得模型输出的梯度w.r.t权重

要使用Keras获得关于权重的模型输出的梯度,您必须使用Keras后端模块 . 我创建了这个简单的例子来准确说明该做什么:

from keras.models import Sequential

from keras.layers import Dense, Activation

from keras import backend as k

model = Sequential()

model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))

model.add(Dense(8, init='uniform', activation='relu'))

model.add(Dense(1, init='uniform', activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

要计算梯度,我们首先需要找到输出张量 . 对于模型的输出(我最初提出的问题),我们只需调用model.output . 我们还可以通过调用model.layers [index] .output找到其他层的输出梯度

outputTensor = model.output #Or model.layers[index].output

然后我们需要选择与梯度相关的变量 .

listOfVariableTensors = model.trainable_weights

#or variableTensors = model.trainable_weights[0]

我们现在可以计算梯度 . 它很简单如下:

gradients = k.gradients(outputTensor, listOfVariableTensors)

要实际运行给定输入的渐变,我们需要使用一点Tensorflow .

trainingExample = np.random.random((1,8))

sess = tf.InteractiveSession()

sess.run(tf.initialize_all_variables())

evaluated_gradients = sess.run(gradients,feed_dict={model.input:trainingExample})

这就是它!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值