【发布时间】:2019-01-03 08:15:02
【问题描述】:
我需要以某种方式运行类似的东西:
x = Input(shape=(img_height, img_width, img_channels))
x1 = Add()([x, 127.5])
x2 = Multiply()(x1, -127.5])
但是,出现错误:ValueError: Layer add_1 was called with an input that isn't a symbolic tensor. Received type: <class 'float'>. Full input: [<tf.Tensor 'input_1:0' shape=(?, 400, 300, 3) dtype=float32>, 0.00784313725490196]. All inputs to the layer should be tensors.
我无法使用Lambda() 层,因为我需要将最终模型转换为 CoreML,并且无法快速重写它们。
有没有办法从浮点数创建 Keras 张量?
也许这个问题有不同的解决方案?
UPD:后端是 TensorFlow
【问题讨论】:
-
如果你不能使用 Lambda 层(我不明白为什么),恐怕你需要为常量使用第二个输入(或者创建一个自定义层只是为了加法)
-
同意...使用 Keras 时,您无法逃避以下其中一项: 1 - 使用 lambda; 2 - 创建自定义图层; 3 - 使用 tf 张量作为额外的
Input。 -
请注意,您可以将这些规范化操作传递给 coremltools,因此您实际上不必将它们放入 Keras 模型中。另见machinethink.net/blog/help-core-ml-gives-wrong-output
标签: keras keras-layer coreml coremltools