tf.keras.backend способ замены значения тензора, если оно меньше 1 - PullRequest
0 голосов
/ 05 июля 2018

Я использую Keras с бэкэндом Tensorflow.

В моей функции потерь у меня есть тензор, в котором мне нужно заменить элементы, которые меньше 1, на 1.

Я могу видеть множество доступных мне функций в документации. https://www.tensorflow.org/api_docs/python/tf/keras/backend

но я не уверен, как это сделать.

Если я это сделаю:

a_ = tf.Print(
    message='a_shape',
    input_=a_,
    data=[tf.shape(a_)]
)

Я получаю форму как:

y_shape[128]

Мне нужно по существу пройти через этот тензор, заменяя элементы, которые меньше 1, на 1.

Как бы я это сделал, используя API keras tenorflow?

Спасибо -

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Ответ "keras" подходит для всех бэкэндов:

isGreater = K.cast(K.greater(a_,1),K.floatx())
result = (a_*isGreater) + (1 - isGreater)
0 голосов
/ 05 июля 2018

если a ваш тензор, вы можете сделать следующее:

b = a*tf.cast(a>1, 'float32') + tf.cast(a<=1, 'float32')

...