Предположим, что мы имеем веса
x = tf.Variable(np.random.random((5,10)))
cost = ...
И мы используем оптимизатор GD:
upds = tf.train.GradientDescentOptimizer(lr).minimize(cost)
session.run(upds)
Как мы можем реализовать, например, неотрицательность по весам?
Я попробовал обрезать их:
upds = tf.train.GradientDescentOptimizer(lr).minimize(cost)
session.run(upds)
session.run(tf.assign(x, tf.clip_by_value(x, 0, np.infty)))
Но это замедляет мою тренировку в 50 раз.
Кто-нибудь знает хороший способ реализовать такие ограничения на весах в TensorFlow?
P.S.: в эквивалентном алгоритме Анано я имел
T.clip(x, 0, np.infty)
и он прошел гладко.