функция tf.abs (), производящая комплексный выходной тензор из комплексного входного тензора

#python #tensorflow

#python #тензорный поток

Вопрос:

У меня есть следующая часть кода —

 ...    
print(model.layers[1].output)
tf.math.abs(model.layers[1].output)
print('layer 2 output')
print(model.layers[1].output)
...
  

которая выдает следующий вывод при запуске —

 Tensor("generic_act_func_1/Complex:0", shape=(?, 28, 28, 9), dtype=complex64)
layer 2 output
Tensor("generic_act_func_1/Complex:0", shape=(?, 28, 28, 9), dtype=complex64)
  

Я не могу понять, почему tf.abs () не создает тензор вывода с плавающей запятой из комплексного тензора ввода.
Заранее спасибо за любую помощь в понимании / исправлении.

Комментарии:

1. вы печатаете в два раза больше выходных данных layers[1] . попробуйте с print(tf.math.abs(model.layers[1].output))

2. Что ж, спасибо, это действительно выводит вывод с плавающей запятой .. означает ли это, что функция tf.abs () не изменяет ‘модель. слои [1].вывод ‘ внутри? (это то, что я хочу сделать перед передачей вывода уровня 1 на уровень 2)

3. точно. tf.abs() не изменяет вывод, когда вы вызываете его, как вы это делали. (Я не на 100% знаком с keras, но я думаю, вы можете добавить Lambda слой, который вычисляет абсолютное значение) model.add(Lambda(lambda x: tf.math.abs(x))) смотрите: keras.io/layers/core

4. Хорошо, я понял. Большое спасибо за оперативную помощь!