我想要一组权重被约束为具有固定范数(如unitnorm
)和非负值(如nonneg
)。这对约束在某些光学建模中很有用。
我不是Python专家,所以我试了W_constraint = nonneg(), W_constraint = maxnorm(1))
,得到了SyntaxError: keyword argument repeated
。有没有更好的办法?提前感谢!
如果您查看keras源代码中的topology.py文件,它有一个属性:
@property
def constraints(self):
cons = {}
for layer in self.layers:
for key, value in layer.constraints.items():
if key in cons:
raise Exception('Received multiple constraints '
'for one weight tensor: ' + str(key))
cons[key] = value
return cons
当接收到一个权重张量的多个约束时会引发异常。我认为最好的方法是实现自定义约束(比如nonneg_and_maxnorm?),您可以在keras源代码中的constraints.py中看到实现约束的示例。