Flo*_*wen 5 python backpropagation neural-network keras tensorflow
我试图从我的神经网络中获取显着图,但我有点挣扎。我的网络做 DNA 分类(类似于文本分类),顺序如下:Conv1D-> MaxPool-> Dropout-> Bidirectional LSTM-> Flatten-> Dense-> Dropout-> Dense。运行 Keras 2.06,Tensorflow 1.2.1。我从https://github.com/fchollet/keras/issues/1777获得的主要代码如下:
def compile_saliency_function(model):
"""
Compiles a function to compute the saliency maps and predicted classes
for a given minibatch of input images.
"""
inp = model.layers[0].input
outp = model.layers[-1].output
max_outp = K.max(outp, axis=1)
saliency = keras.backend.gradients(keras.backend.sum(max_outp), inp)
max_class = K.argmax(outp, axis=1)
return K.function([inp], [saliency, max_class])
sal = compile_saliency_function(model)([x_test[1], 0])
Run Code Online (Sandbox Code Playgroud)
但我遇到了错误消息 K.function
TypeError: Can not convert a list into a Tensor or Operation.
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?我会尝试使用其他 API,但似乎没有很多文本可用,除了 DeepLIFT,它不支持 RNN 并且仍然使用 Keras 1.x。Keras-vis 中的文本实现在未来的某个地方。任何反馈表示赞赏!
我知道这是一个老问题,但试试这个:换行
saliency = keras.backend.gradients(keras.backend.sum(max_outp), inp)
Run Code Online (Sandbox Code Playgroud)
到
saliency = keras.backend.gradients(keras.backend.sum(max_outp), inp)[0]
Run Code Online (Sandbox Code Playgroud)
或者简单地
saliency = K.gradients(keras.backend.sum(max_outp), inp)[0]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1776 次 |
最近记录: |