假设我们有权重
x = tf.Variable(np.random.random((5,10)))
cost = ...
Run Code Online (Sandbox Code Playgroud)
我们使用GD优化器:
upds = tf.train.GradientDescentOptimizer(lr).minimize(cost)
session.run(upds)
Run Code Online (Sandbox Code Playgroud)
我们如何实施例如权重的非负性?
我试着剪掉它们:
upds = tf.train.GradientDescentOptimizer(lr).minimize(cost)
session.run(upds)
session.run(tf.assign(x, tf.clip_by_value(x, 0, np.infty)))
Run Code Online (Sandbox Code Playgroud)
但这会使我的训练减慢50倍.
有人知道在TensorFlow中对权重实施这种约束的好方法吗?
PS:在等效的Theano算法中,我有
T.clip(x, 0, np.infty)
Run Code Online (Sandbox Code Playgroud)
它运行顺利.
如何在张量流中对MLP中的权重实现最大范数约束?Hinton和Dean在他们关于黑暗知识的工作中描述的那种.也就是说,默认情况下tf.nn.dropout是否实现了权重约束,或者我们是否需要明确地执行权重约束,如
https://arxiv.org/pdf/1207.0580.pdf
"如果这些网络对于存在的隐藏单元共享相同的权重.我们使用标准的随机梯度下降程序来训练小批量训练案例中的丢失神经网络,但我们修改了通常用于的惩罚术语防止权重增长过大.我们不是惩罚整个权重向量的平方长度(L2范数),而是为每个隐藏单元设置输入权重向量的L2范数的上限.如果权重更新违反这个约束,我们通过除法重新归一化隐藏单位的权重."
Keras似乎拥有它