对输入采用Keras模型的导数返回全零

时间:2017-08-02 21:19:12

标签: tensorflow keras

所以我有一个Keras模型。我想将模型的梯度与其输入结合起来。这就是我的工作

import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, InputLayer
from keras import backend as K

sess = K.get_session()

num_features = 100

x = tf.placeholder(dtype=tf.float32, shape=(None, num_features))

model = Sequential()
model.add(InputLayer(input_tensor=x))
model.add(Dense(60, activation='relu'))
model.add(Dense(50, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
model.compile(optimizer='adam', loss='binary_crossentropy')

input_tensor = model.input
f = model.output
df = tf.gradients(f, [x])[0]

然而,当我打印出df的值时,我得到所有的0。

df.eval(session=sess, feed_dict ={input_tensor:np.random.rand(1,num_features)})
>>>([[ 0.,  0.,  0.,  0.,  0.]], dtype=float32)

知道可能导致它的原因吗?

0 个答案:

没有答案