【发布时间】:2019-08-18 00:15:32
【问题描述】:
我试图计算输出层 w.r.t 的梯度。输入,我期待一个梯度矩阵(作为输出层中不同节点的梯度 w.r.t. 每个输入),但我得到一个值。我想知道这个值在这里代表什么?
我的目标是计算每个输入的分类交叉熵损失梯度。我一直在寻找解决方案,然后我坚持了下来。
我是新手,所以请忽略愚蠢的错误。
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras import backend as k
import numpy as np
import tensorflow as tf
model = Sequential()
model.add(Dense(2, input_dim=1, init='uniform', activation='relu'))
model.add(Dense(2, init='uniform', activation='softmax'))
outputTensor = model.output
listOfVariableTensors = model.input
gradients = k.gradients(outputTensor, listOfVariableTensors)
trainingExample = np.random.random((1,1))
sess = tf.InteractiveSession()
sess.run(tf.initialize_all_variables())
evaluated_gradients = sess.run(gradients,feed_dict={model.input:trainingExample})
print(evaluated_gradients)
我得到的打印语句输出为:
[array([[0.]], dtype=float32)]
【问题讨论】:
-
你的版本
tensorflow和keras是什么?我的回报是[array([[0., 0.]], dtype=float32)]tensorflow=1.12.0和keras=2.2.4。 -
@giser_yugang 谢谢......我错误地粘贴了 input_dim=2 的代码......问题在任何情况下都是有效的
标签: python tensorflow input keras gradient