【发布时间】:2019-06-24 17:07:17
【问题描述】:
我尝试自定义设计一个可以有如下层的网络架构:
x = k.Input(shape=(1,))
y = k.layers.Dense(1)(x + 1) #k.backend.constant(1) -- no difference
Fx = k.models.Model(x, y)
虽然“x+1”是正确的 Tensorflow 操作,但是我得到了 NoneType 错误:
AttributeError: 'NoneType' 对象没有属性 '_inbound_nodes'
当我尝试使用 Lambda 层来规避这种情况时,我得到了同样的错误:
x = k.Input(shape=(1,))
xx = k.layers.Lambda(lambda x: x[0] + x[1])(
[x, k.backend.constant(1, shape=(1,1))]
)
y = k.layers.Dense(1)(xx)
Fx = k.models.Model(x, y)
但是,我可以通过这样做来破解:
x = k.Input(shape=(1,))
xx = k.layers.Lambda(lambda x: x[0]+1)([x, x])
y = k.layers.Dense(1)(xx)
Fx = k.models.Model(x, y)
因为 Tensor+(int or float) 是一个合法的 Tensorflow 操作。
我在定义 Lambda 层时是否犯了错误,或者这是 Keras 端的错误?
【问题讨论】:
标签: python tensorflow lambda keras layer