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})
這就是它!
總結
以上是生活随笔為你收集整理的java调用keras theano模型_使用Keras获得模型输出的梯度w.r.t权重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欠信用卡15万3年没还了 会坐牢吗?
- 下一篇: 网上银行转账官网在哪?网上银行转账怎么操