【问题标题】:Is there a way to enforce constraints on the elements of variables in tensorflow?有没有办法对张量流中的变量元素实施约束?
【发布时间】:2016-11-29 07:47:54
【问题描述】:

最近我一直在开发一个 CNN,它可以学习玩我在 Tensorflow v0.11 中开发的围棋游戏。

我阅读了这篇论文:Teaching Deep Convolutional Neural Networks to Play Go,其中他们对卷积权重实施了对称约束。我希望实现它并为自己测试结果。我进行了广泛的搜索,但无法找到一种有效的方法来做到这一点。类似的问题被问到here。无论我多么努力地寻找一种在训练时强制执行这些对称性的方法,我都找不到方法。

以前有没有人做过类似的事情?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    强制对称的一种方法是存储不对称权重并在使用它们之前进行转换以使其对称。例如,如果我想在矩阵的对角线上对称,使用 (0.5 * weights * tf.transpose(weights)) 会给我这个。其他排列会给你其他类型的对称性,这些都是可微的。

    【讨论】:

    • 我的问题是——当我训练网络时,反向传播的行为是什么?它会正确训练重量吗?我会尝试这个。我只是想知道你是否知道。
    • 重新参数化技巧总是用反向传播做正确的事,但以增加计算为代价。
    • 我会求和而不是相乘。 0.5*(weights + tf.transpose(weights)。此外,如果矩阵以形状 [batch_size, N,N] 进行批处理,您可以使用对批处理矩阵进行操作的tf.linalg.transpose
    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2016-10-27
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多