ограничение keras не вызывается - PullRequest
1 голос
/ 06 марта 2019

Документы с ограничением 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 вызывается. Метод call должен вызвать RuntimeError и остановить процесс обучения. Но это не так.

Почему?

версия tenorflow: 1.12.0

керас версия: 2.0.6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...