Chr*_*man 4 python python-3.x tensorflow
我正在尝试在TensorFlow 0.9中实现一个基本的二进制Hopfield网络.不幸的是,我很难让激活功能正常工作.我希望得到非常简单,If net[i] < 0, output[i] = 0, else output[i] = 1但我尝试的一切似乎都删除了渐变,即在尝试实施训练操作时,我得到了"没有为任何变量提供渐变"的异常.
例如,我试图铸造tf.less()来float,我试图做的线沿线的东西
tf.maximum(tf.minimum(net, 0) + 1, 0)
Run Code Online (Sandbox Code Playgroud)
但我忘了小小数值.最后我做到了
tf.maximum(tf.floor(tf.minimum(net, 0) + 1), 0)
Run Code Online (Sandbox Code Playgroud)
但tf.floor不记录渐变.我也尝试用一个强制转换为int替换地板,然后一个强制转换为浮动但同样的交易.
关于我能做什么的任何建议?
小智 11
有点晚了,但如果有人需要它,我就用这个定义了
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
Run Code Online (Sandbox Code Playgroud)
x是张量
只是为了记录在案,可以得到符号函数通过tf.sign。它输出一个浮点数或整数(取决于输入)用-1或指示符号1。但是,请注意tf.sign(0) == 0!
对于硬限制激活函数、二元阈值激活函数、Heaviside 阶跃函数,请参阅其他答案。
| 归档时间: |
|
| 查看次数: |
6615 次 |
| 最近记录: |