keras连接多个层导致AttributeError:'NoneType'对象没有属性'_入站节点'

2024-04-07

我正在尝试添加一些固定的kernels https://en.wikipedia.org/wiki/Kernel_(image_processing)在我的 CNN 中,请参阅下面的代码。

这就是我创建内核的方式:

# Kernels
def create_kernel(x):
    t = pipe(
        x, 
        lambda x: tf.constant(x, dtype=tf.float32), 
        lambda x: tf.reshape(x, [3, 3, 1, 1]))
    return t

k_edge1 = create_kernel([1, 0, -1, 0, 0, 0, -1, 0, 1])
k_edge2 = create_kernel([0, 1, 0, 1, -4, 1, 0, 1, 0])
k_edge3 = create_kernel([-1, -1, -1, -1, 8, -1, -1, -1, -1])

我的卷积网络是这样的:

# Convolution network
# Input layer
l_input = Input(shape=(28**2, ))
# Reshape layer
l_reshape = Reshape(target_shape=(28, 28, 1))(l_input)
# Convolution layers
l_conv1 = Conv2D(filters=20, kernel_size=(3, 3), padding='valid')(l_reshape)
l_edge1 = tf.nn.conv2d(l_reshape, k_edge1, strides=[1, 1, 1, 1], padding='VALID')
l_edge2 = tf.nn.conv2d(l_reshape, k_edge2, strides=[1, 1, 1, 1], padding='VALID')
l_edge3 = tf.nn.conv2d(l_reshape, k_edge3, strides=[1, 1, 1, 1], padding='VALID')
l_conv1a = Concatenate(axis=3)([l_conv1, l_edge1, l_edge2, l_edge3])  # <- The error should be caused by this line.
l_conv2 = Conv2D(filters=20, kernel_size=(3, 3), padding='valid')(l_conv1a)
l_pool1 = MaxPooling2D(pool_size=(2, 2), border_mode='valid')(l_conv2)
# Flatten layer
l_flat = Flatten()(l_pool1)
# Fully connected layers
l_fc1 = Dense(50, kernel_initializer='he_normal')(l_flat)
l_act1 = PReLU()(l_fc1)
l_fc3 = Dense(10, kernel_initializer='he_normal')(l_act1)
l_output = Activation('softmax')(l_fc1)

# Model
cnn_model = Model(l_input, l_output)

但是,我收到以下错误:

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 93, in __init__
    self._init_graph_network(*args, **kwargs)
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 237, in _init_graph_network
    self.inputs, self.outputs)
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 1353, in _map_graph_network
    tensor_index=tensor_index)
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 1340, in build_map
    node_index, tensor_index)
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 1340, in build_map
    node_index, tensor_index)
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 1340, in build_map
    node_index, tensor_index)
[Previous line repeated 2 more times]
File "C:\Users\Perry Cheng\AppData\Local\conda\conda\envs\ml_py_3_6\lib\site-packages\keras\engine\network.py", line 1312, in build_map
    node = layer._inbound_nodes[node_index]
AttributeError: 'NoneType' object has no attribute '_inbound_nodes'

经过一番测试,我认为错误来自于:

l_conv1a = Concatenate(axis=3)([l_conv1, l_edge1, l_edge2, l_edge3])

有什么办法可以解决吗?


Keras 层接受 Keras 张量而不是张量作为输入。所以如果你想使用tf.nn.conv2d代替Conv2DKeras 中的层,您需要将它们包装在Lambda layer:

l_edge1 = Lambda(lambda x: tf.nn.conv2d(x, k_edge1, strides=[1, 1, 1, 1], padding='VALID'))(l_reshape)
l_edge2 = Lambda(lambda x: tf.nn.conv2d(x, k_edge2, strides=[1, 1, 1, 1], padding='VALID'))(l_reshape)
l_edge3 = Lambda(lambda x: tf.nn.conv2d(x, k_edge3, strides=[1, 1, 1, 1], padding='VALID'))(l_reshape)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

keras连接多个层导致AttributeError:'NoneType'对象没有属性'_入站节点' 的相关文章

随机推荐

  • 如何将textmate文件资源管理器移到右侧?

    如何将textmate文件资源管理器移到右侧 Update 对于更高版本的 textmate 请参阅这个答案 https stackoverflow com a 53817213 908886 对于 Textmate 2 在回答此问题后很久
  • 为什么我们不在 http 上发送二进制而不是文本?

    看起来二进制会更紧凑并且可以以标准方式反序列化 为什么使用文本代替 这似乎效率低下 Web 框架被迫只做与字符串相关的事情 为什么没有二进制标准 网络将变得更快 浏览器将能够非常快速地加载二进制页面 如果我要启动一个二进制协议 HBP 超二
  • 如何在iOS中创建非圆角UIProgressView

    我将 UIProgressView 子类化为 import UIKit class MyProgressView UIProgressView override func sizeThatFits size CGSize gt CGSize
  • 与证书颁发机构签署证书请求

    我想使用 TLS 相互身份验证来对 go 中制作的 API 上的客户端进行身份验证 我已经创建了一个证书颁发机构 假设鲍勃有一个他想要与客户端一起使用的密钥对 Bob 创建了一个证书请求并希望我验证他的证书以获得授权并 在 API 上进行身
  • 导航控制器的后退按钮问题 (iPhone)

    所以这是我正在寻找的功能 1 主菜单没有导航栏2 主菜单中的所有其他屏幕都是如此 3 它应该正确地设置动画 我部分地让它工作 只是不是后退按钮部分 在主菜单 viewDidLoad 中 我只需执行以下操作 self navigationCo
  • 如何在 O(1) 时间内将数组归零?

    有没有一种方法可以将数组归零 时间复杂度为 O 1 很明显 这可以通过for loop memset来完成 但它们的时间复杂度不是O 1 Yes 但不是任何数组 它需要一个专门为此工作而设计的数组 template
  • Control.Applicative 中“pure”函数的命名[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么将值提升为函子的函数命名为pure在控制 应用 考虑到pure作为形容词 foo lt gt pure 4 foo应用于pure v
  • 这些 g++“多重定义”错误是怎么回事?

    我正处于一个项目的早期阶段 请阅读 昨天刚刚开始 我正在设置我的初始 makefile 这非常简单 以下是该文件的完整内容 all main o resource o g o output exe main o resource o mai
  • RISC-V 调用约定的 ABI 寄存器名称

    我对 RISC V ABI 寄存器名称感到困惑 例如 第 85 页的 RISC V 指令集手册 第一卷 用户级 ISA 版本 2 0 中的表 18 2 指定堆栈指针sp正在注册x14 然而 指令 addi sp zero 0 由 riscv
  • 未捕获错误:没有为密码定义索引(Firebase 错误)

    我对 firebase 很陌生 我正在尝试检索特定数据 并收到此错误 请在这件事上给予我帮助 我的代码看起来像这样 var t1 this password value var user id this state comments 2 f
  • SML 中的柯里化匿名函数

    我有下面的功能并且它有效 fn x gt x 2 2 但这不起作用 fn x y gt x y 2 3 谁能告诉我为什么 或者给我一些提示让它发挥作用 fn x gt fn y gt x y 2 3 works fn只是没有相同的语法糖来定
  • 如何使用python将F2键发送到远程主机

    I have to send F2 key to telnet host How do I send it using python using getch I found that the character lt used for th
  • 使用 CouchDB 视图替换 SQL 中的多个联接

    我正在为我的应用程序实现过滤功能 但在 CouchDB 上编写视图时遇到问题 在 SQL 中 这将是一个具有多个连接的语句 如何替换 CouchDB 中的多重连接 本文涵盖单连接 http www cmlenz net archives 2
  • “基础 - ReferenceError:启动基础 zurb 项目时未定义原始值。”

    创建 Foundation Zurb 项目时出现错误 尝试使用之前针对其他应用程序显示的建议来解决问题 但没有一个有效 一篇文章引用了更新 elm 我这样做了 但是 它不起作用 此外 我查看了 Gulp 3 的已关闭问题 我正在使用 gul
  • 使用选择器“***”重写方法具有不兼容的类型“****”解析

    我正在使用解析 我正在尝试查询数据库中的对象列表 我正在使用 swift 编程语言 我认为导致这个错误的原因是因为 obj c 和 swift 桥 谁能帮我 这是我的代码 override func tableView tableView
  • 如何将 Cocoa/Mac 应用程序移植到 Windows?

    如何将 Cocoa Mac 应用程序移植到 Windows 我的意思是你会怎么做 假设应用程序是用 Objective C 和 Cocoa 编写的 没有什么花哨的事情发生 没有可以分解的 引擎 等等 从头开始重写 我不认为 Mac 和 Wi
  • 如何使用 C# 创建自定义事件日志

    我创建了一个 Windows 服务 我创建一个事件日志 public Service1 InitializeComponent this ServiceName ConfigurationManager AppSettings Get Se
  • Angular 9 应用程序卡在 Microsoft Edge 上

    我有一个使用 CLI 生成的 Angular 应用程序 角度版本 9 0 6 此应用程序可以在 Internet Explorer 11 上完美加载 但不能在 Edge 中加载 在 Edge 中 网络请求显示某些捆绑包正在等待处理 并且未完
  • 分段上传到 S3,并进行哈希验证

    我正在寻找一个命令行工具或一个Python库 它允许将大文件上传到S3 并进行哈希验证 有一个AWS 文章 https aws amazon com premiumsupport knowledge center data integrit
  • keras连接多个层导致AttributeError:'NoneType'对象没有属性'_入站节点'

    我正在尝试添加一些固定的kernels https en wikipedia org wiki Kernel image processing 在我的 CNN 中 请参阅下面的代码 这就是我创建内核的方式 Kernels def creat