首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“NoneType”对象没有属性“_inbound_nodes”

“NoneType”对象没有属性“_inbound_nodes”
EN

Stack Overflow用户
提问于 2018-12-12 13:05:32
回答 2查看 526关注 0票数 1

这是使用Tensorflow的Keras代码的一个问题。

我有一个简单的网络,在这个网络中,我需要在输入后立即做一个元素乘法。这部分代码如下所示。我总是有一个错误:

* AttributeError:'NoneType‘对象没有属性'_inbound_nodes’

我的代码:

代码语言:javascript
复制
    input_img = Input(shape=(256, 256, 2, 1, 2))
    masked = Lambda(lambda x: tf.multiply(x[0], x[1]))([input_img[:,:,:,:,:,0], input_img[:,:,:,:,:,1]])
    conv1 = Conv3D(1, (5, 5, 2), padding='same',  activation=activation, kernel_regularizer=regularizers.l2(1e-9))(masked)
    net_head = Model(inputs=input_img, outputs=conv1)

我已经使用了Lambda层,所以我很困惑是什么导致了这个问题。输入的维数很符合模型,所以这不应该是问题。

有人有线索吗?

这种向元素方向的乘法实际上是将一些像素隐藏为零.在上面的代码中,掩码在附加的最后一个维度中连接到输入变量。或者,我还尝试为掩码使用一个变量,例如input_mask,而不是将它作为附加的最后一个维度在input_image中进行,这样的乘法也不能处理相同的错误信息。

我之所以要在网络输入层之后,而不是在输入层之前,对输入数据做掩蔽处理,是因为我需要输入图像的完整数据(包括被蒙面数据),才能进行混乱的损失计算。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-12 13:31:13

您正在将您的张量操作到一个层之外。(获取切片也是操作)

您需要将切片input_img[:,:,:,:,:,0]input_img[:,:,:,:,:,1] 放在的一个层中。

代码语言:javascript
复制
masked = Lambda(lambda x: x[:,:,:,:,:,0]*x[:,:,:,:,:,1])(input_img)
票数 1
EN

Stack Overflow用户

发布于 2018-12-12 13:45:44

正如Daniel所指出的,您不能从一个层中提取切片,因为如果没有Keras使用的注释,就会生成“原始”张量。如果出于某种原因仍然希望拥有两个输入层,也可以将切片封装到层中:

代码语言:javascript
复制
input_img = Input(shape=(256, 256, 2, 1, 2))
slice0 = Lambda(lambda x: x[:, :, :, :, :, 0])(input_img)
slice1 = Lambda(lambda x: x[:, :, :, :, :, 1])(input_img)
masked = Lambda(lambda x: tf.multiply(x[0], x[1]))([slice0, slice1])
net_head = Model(inputs=input_img, outputs=masked)
# ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53743704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档