tensorflow - keras 约束没有被调用
问题描述
Keras 约束文档:https ://keras.io/constraints/ 。我使用NonNeg
约束来保持我的一些网络密集层权重为正,用法如下:
layer1 = Dense(1, activation='sigmoid', use_bias=True, kernel_constraint=NonNeg())
但是有些层权重还是负数,我查看了keras约束的源码:https ://github.com/keras-team/keras/blob/master/keras/constraints.py#L62 ,很简单。所以我想知道是否没有调用约束。所以我写了一个自定义约束,直接抛出异常
class ConstraintDemo(Constraint):
def __init__(self):
logging.info("CONSTRAINT called")
def __call__(self, w):
raise RuntimeError("GLQ ERROR")
logging.info("CONSTRAINT called")
return tf.cast(tf.greater_equal(w, 0.), tf.float32)
我用类似的方式给班级打电话
layer = Dense(1, activation='sigmoid', use_bias=True, kernel_constraint=ConstraintDemo())
仅调用init方法。调用方法应引发 RuntimeError 并停止训练过程。但它没有。
为什么?
张量流版本:1.12.0
keras版本:2.0.6
解决方案
推荐阅读
- database - 涉及大量磁盘 I/O 的大批量处理的并行方法
- html - 带有滚动和三角形的CSS Div,右侧箭头
- swift - 无法通过 id 找到约束
- docker - 如何在 Windows 2 下使用 Docker 在不同的 URL 下启动和访问不同的 Webserver?
- python - Python - 在异常中捕获异常?
- javascript - 使用静态获取未定义
- java - 表单未提交或对象未创建 - 无法弄清楚
- javascript - 如何在对象中访问外部 .this
- c# - 避免视觉未连接到 Point.ToScreen wpf 上的演示文稿源?
- git - 是否可以提供子模块的绝对路径但与父存储库具有相同的主机?