Keras搭建多帧输入MobileNet模型报NoneType无_inbound_nodes错误求助
报错根因
你遇到的AttributeError: 'NoneType' object has no attribute '_inbound_nodes'错误,核心原因是直接对Keras输入张量使用了NumPy风格的索引语法se_maps[:, i, :, :, :]。Keras构建静态计算图时要求所有张量运算都必须通过官方层API实现,裸索引操作不会被计入计算图节点,导致后续张量和原始输入的链路断裂,模型构建时无法追踪到完整的输入输出映射关系。
修复步骤
- 首先在层导入语句中新增
Lambda层:
from keras.layers import (Activation, Add, Concatenate, Conv2D, DepthwiseConv2D, MaxPooling2D, UpSampling2D, ZeroPadding2D, Reshape, Lambda)
- 修改
pretrained_mobilenetV1_2函数中的切片逻辑,用Lambda层包裹索引操作,保证所有运算都被计入计算图:
def pretrained_mobilenetV1_2(se_maps): x = list() c_mobilenetV1 = clipped_mobilenetV1() for i in range(0, 8): # 用Lambda层实现切片,替代裸索引操作 x_ = Lambda(lambda t: t[:, i, :, :, :])(se_maps) x_ = Reshape((224, 224, 3))(x_) x_ = c_mobilenetV1(x_) x.append(x_) x = Concatenate(axis=-1)(x) x = _depthwise_conv_block(x, 1, alpha=1, depth_multiplier=1, strides=(2, 2), block_id=4) return x
补充说明
你代码中复用同一个clipped_mobilenetV1实例处理8帧输入的逻辑是正确的,可以实现预训练权重的共享,无需额外修改。修改完成后重新运行代码即可正常构建模型、打印网络结构。
内容的提问来源于stack exchange,提问作者pa pa
相关产品推荐
相关产品推荐

