我已经训练了一个使用tf.contrib.layers.recompute_grad
的模型。我现在正在尝试从模型中绘制显着性图,但是keras-vis
函数visualize_saliency
只是停滞不前。
我尝试按以下方式对显着性进行硬编码(受Yumi's Blog启发):
inp = mdl.input
outp = mdl.layers[lyr_idx].output
print('Input Layer: {}'.format(inp))
print('Output Layer: {}'.format(outp))
grad = K.gradients( outp, inp )[0]
print('Gradient Tensor: {}'.format(grad))
deriv_fn = K.function( [inp], [grad] )
print('Derivative Function: {}'.format(deriv_fn))
grad_eval = deriv_fn( [img_f[None,:,:,:]] )[0]
grad_eval = np.abs( grad_eval ).max( axis = (0,3) )
arr_min, arr_max = np.min( grad_eval ), np.max( grad_eval )
grad_eval = ( grad_eval - arr_min ) / ( arr_max - arr_min + K.epsilon )
print('Evaluated Gradient: {}'.format(grad_eval))
我得到输出:
Input Layer: Tensor("input:0", shape=(?, 3, 65, 320), dtype=float32)
Output Layer: Tensor("output/BiasAdd:0", shape=(?, 1), dtype=float32)
,程序停顿了。正在使用GPU内存,但GPU利用率为0%(无复制/读取/写入)。
在使用Ctrl+C
函数keras-vis
和我自己的代码时,visualize_saliency
都出现了以下打印输出:
ValueError: Operation 'fc04/fc04/IdentityN' has no attr named '_XlaCompile'
在我的模型中,fc04
是第4个完全连接的层(仅是keras.layers.Dense
层)。最后一层只是一个Dense
层,其输出紧随fc04
之后出现。
有人可以帮助我吗?