tensorflow.math.multiply
和tensorflow.keras.layers.multiply
有什么区别?
类似地,tensorflow.math.add
和tensorflow.keras.layers.add
有什么区别?
我有这个问题的原因是,当我构建自己的自定义损失函数和指标product = multiply([y_true_f, y_pred_f])
时,如果使用from tensorflow.keras.layers import multiply
,则会发生错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError:您必须用dtype float和占位符张量'main_target'的值形状[?,?,?]
但是如果我使用from tensorflow.math import multiply
,它将正常工作。
我想知道为什么。谢谢。(我使用tensorflow 1.15,ubuntu18)
tensorflow.keras.layers
中的所有类都是Keras层,这意味着它们将由其他层(在功能性API中)产生的Keras张量作为输入,或者可以安排它们使用顺序API来创建顺序模型。
tensorflow.math
中的其他张量流函数旨在在张量流(不是keras)张量中运行。对于自定义损失,输入和输出为张量流张量,因此应使用张量流函数而不是Keras层。
[Keras层操作在您要执行作为神经网络体系结构一部分的操作时使用,例如add
层用于在ResNet体系结构中实现残留连接。