python – Keras CNN LSTM的显着性图(TF后端)
发布时间:2020-12-20 13:19:13 所属栏目:Python 来源:网络整理
导读:我试图从我的神经网络中获取显着性图,但我正在努力.我的网络进行DNA分类(类似于文本分类),并按顺序如下:Conv1D- MaxPool- Dropout-双向LSTM- Flatten- Dense- Dropout-稠密.运行Keras 2.06,Tensorflow 1.2.1.我从 https://github.com/fchollet/keras/issues
我试图从我的神经网络中获取显着性图,但我正在努力.我的网络进行DNA分类(类似于文本分类),并按顺序如下:Conv1D-> MaxPool-> Dropout->双向LSTM-> Flatten-> Dense-> Dropout->稠密.运行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]) 但是我遇到了K.function的错误信息 TypeError: Can not convert a list into a Tensor or Operation. 我在这里错过了什么?我会尝试使用其他API,但似乎除了DeepLIFT之外,还有很多文本,除了DeepLIFT,它不支持RNN并且仍然使用Keras 1.x. Keras-vis中的文本实现在未来的某个地方.任何反馈表示赞赏! 解决方法
我知道这是一个老问题,但试试这个:
换线 saliency = keras.backend.gradients(keras.backend.sum(max_outp),inp) 至 saliency = keras.backend.gradients(keras.backend.sum(max_outp),inp)[0] 或者干脆 saliency = K.gradients(keras.backend.sum(max_outp),inp)[0] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |