我想在Tensorflow中的神经网络中可视化贡献因素,例如每个像素对最终分类的贡献程度。我对tf.gradients的计算有疑问。
首先让我们说我的输出y是连续的,是1d,而我的输入是一个大小为img = [x,x]的数组。现在,当调用tf.gradients(y,img)时,我将得到[x,x]大小的渐变,它可以正确显示每个像素的预期效果。
这对于离散分类输出如何工作,即现在y是像[0,0,1]这样的单热点向量。当tf.gradients(y,x)中的y为向量时,根据张量流记录,返回y的所有梯度之和。制定起来有点困难,但我不认为这是我想要的,我想要导数w到完整的y,而不是其各部分之和对吗?
作为第二部分,我想知道这如何转换为RNN,其中我的输出和输入形式为y / x = [batch_size,number_steps,output_size / input_size]。 现在,我可以遍历batch_size,number_steps并调用tf.gradients(y [i,j,:],x [i,j,:]并累积结果,使其与静态网络相同。但这可能是效率很低,有没有更好的方法? 同样,我认为简单地调用tf.gradients(y,x)是错误的,因为我不想对批次/时间步进行求和,而是获得批次*时间步梯度。