我正在尝试在TensorFlow 0.9中实现基本的二进制Hopfield Network.不幸的是,我很难让激活功能正常工作.我希望得到非常简单的if net [i]< 0,输出[i] = 0,否则输出[i] = 1但是我尝试的所有内容似乎都删除了渐变,即在尝试实现训练操作时,我得到“没有为任何变量提供渐变”的异常. 例如,我尝试将tf.less()转换为float,我尝试按照行进行
tf.maximum(tf.minimum(net, 0) + 1, 0)
但我忘了小小数值.最后我做到了
tf.maximum(tf.floor(tf.minimum(net, 0) + 1), 0)
但是tf.floor没有注册渐变.我也尝试用一个强制转换为int替换地板,然后一个强制转换为浮动但同样的交易.
关于我能做什么的任何建议?
解决方法:
有点晚了,但如果有人需要它,我就用这个定义了
def binary_activation(x):
cond = tf.less(x, tf.zeros(tf.shape(x)))
out = tf.where(cond, tf.zeros(tf.shape(x)), tf.ones(tf.shape(x)))
return out
x是张量
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。