给定我在张量流中有一些复杂的图(神经网络),是否有一种简单的方法来查看哪些节点有助于向特定节点的梯度传播? 有没有办法在张量板或任何其他工具上可视化它?
例如,如果我有这个简单的网络:
x=tf.placeholder(...) # some image
w1=tf.Variable(...)
b1=tf.Variable(...)
fc1=tf.nn.relu(w1*x+b1)
fc1=tf.stop_gradient(fc1)
w2=tf.Variable(...)
b2=tf.Variable(...)
fc2=tf.nn.relu(w2*fc1+b2)
w3=tf.Variable(...)
b3=tf.Variable(...)
fc3=tf.nn.relu(w3*fc2+b3)
loss = tf.reduce_max(tf.softmax_cross_entropy(fc3, labels))
minimize(loss) # eg. SGD optimizer
我想要一些功能get_contributors_to_gradient(var)
,其作用类似于:
get_contributors_to_gradient(w1)
不会给出任何输出,因为没有渐变。
get_contributors_to_gradient(w2)
将给出有助于梯度计算的节点列表,在此示例中为fc1,fc2,w2,b2,fc3,w3,b3,loss
。甚至可能显示每个对象的权重。
当然,这只是一个例子来阐明我的意思,我很想听听类似的东西
谢谢!