【发布时间】:2017-04-10 10:39:50
【问题描述】:
我目前正在将本文的连体网络:Fully-Convolutional Siamese Networks for Object Tracking 从 matlab 移植到 tensorflow 代码。我遇到了内核在 80k 到 150k 步后变成 NaN 的问题,并且已经尝试了一些通过梯度裁剪来防止 nan 并防止零损失的方法,但我仍然遇到一些问题。
我怀疑的一件事是反向传播,我试图实现的孪生网络是独一无二的,它使用网络输出的一侧作为另一侧的卷积“过滤器”。我已经通过一些可变的重塑和深度卷积实现了这一点。
由于网络两端在变量范围内使用reuse=true 共享相同的权重,我认为2 个梯度反向传播到一个变量存在问题,如屏幕截图所示。Gradient descent calculation.
我想尝试的是只反向传播渐变的一侧以更新变量,但仍然让两侧共享相同的变量。本质上,只要第一个变量发生变化,就会更新第一个变量的副本,但将复制变量设置为 trainable=False。
【问题讨论】:
标签: matlab python-2.7 tensorflow conv-neural-network