共享变量的反向传播问题
来源:4-8 图和会话原理及案例(上)
MightyRooster
2018-04-18
在图里,用一个共享的变量去对不同的输入的tensor执行操作,在误差反向传播的过程中,后面的好几个误差是怎么插播到同一个共享的变量中的?
如上图所示,中间的 conv + flatten + fully_connected_layer 是共享的变量,在一次反向传播中,接受10个输入的tensor并输出10个tensor(后来,把这10个tensor给stack到一起,依次输入到lstm里)
写回答
1回答
-
Oscar
2018-11-22
在许多神经网络框架中,设计者想要是一些神经元的参数能够共享,这些参数包括边的权重或者节点的阈值参数。例如,在卷积神经网络中,同一个卷集核使用的参数都是一样的。简而言之,就是 a、b 是两个不同的参数,但我们强制要求a与b的值相同,即参数共享。这就好比我们给神经网络新增一个节点 u,并且节点 u 与 a 和 b 相连,并且 a=u,b=u,此时根据链式法则,
∂f/∂u = (∂f/∂a)⋅(∂a/∂u) + (∂f/∂b)⋅(∂b/∂u) = ∂f/∂a + ∂f/∂b
因此,对一个共享参数而言,其梯度就是输出与参数节点之间的中间节点的偏导数之和。
参看:
00
相似问题