ValueError:“连接”层需要具有匹配形状的输入(连接轴除外)

2024-05-09

我正在尝试为我的项目构建 Pix2Pix 并收到错误:

值错误: Concatenate层需要具有匹配形状的输入,除了连接轴之外。获得输入形状:[(None, 64, 64, 128), (None, 63, 63, 128)]

生成器是一个 U 网模型,我的输入高度 x 宽度 x 通道,即 256,256,3 (X_train) 和 256, 256, 1 (Y_train)。如果错误是由于预处理或模型本身造成的,我不会。任何帮助将不胜感激。

def build_generator(self):
    """U-Net Generator"""

    def conv2d(layer_input, filters, f_size=3, bn=True):
        """Layers used during downsampling"""
        d = Conv2D(filters, kernel_size=f_size, strides=2, padding='same')(layer_input)
        d = LeakyReLU(alpha=0.2)(d)
        if bn:
            d = BatchNormalization(momentum=0.8)(d)
        return d

    def deconv2d(layer_input, skip_input, filters, f_size=3, dropout_rate=0):
        """Layers used during upsampling"""
        u = UpSampling2D(size=2)(layer_input)
        u = Conv2D(filters, kernel_size=f_size, strides=1, padding='same', activation='relu')(u)
        if dropout_rate:
            u = Dropout(dropout_rate)(u)
        u = BatchNormalization(momentum=0.8)(u)
        u = Concatenate()([u, skip_input])
        return u

    # Image input
    d0 = Input(shape=self.img_shape)

    # Downsampling
    d1 = conv2d(d0, self.gf, bn=False)
    d2 = conv2d(d1, self.gf*2)
    d3 = conv2d(d2, self.gf*4)
    d4 = conv2d(d3, self.gf*8)
    d5 = conv2d(d4, self.gf*8)
    d6 = conv2d(d5, self.gf*8)
    d7 = conv2d(d6, self.gf*8)

    # Upsampling
    u1 = deconv2d(d7, d6, self.gf*8)
    u2 = deconv2d(u1, d5, self.gf*8)
    u3 = deconv2d(u2, d4, self.gf*8)
    u4 = deconv2d(u3, d3, self.gf*4)
    u5 = deconv2d(u4, d2, self.gf*2)
    u6 = deconv2d(u5, d1, self.gf)

    u7 = UpSampling2D(size=2)(u6)
    output_img = Conv2D(self.channels, kernel_size=3, strides=1, padding='same', activation='tanh')(u7)

    return Model(d0, output_img)

回溯错误如下:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-58-1a469bc54cde> in <module>()
----> 1 gan = Pix2Pix()
      2 gan.train(epochs=30000, batch_size=1, save_interval=200)

<ipython-input-57-f9ff9b0e4228> in __init__(self)
     48 
     49         # Build and compile the generator
---> 50         self.generator = self.build_generator()
     51         self.generator.compile(loss='binary_crossentropy', optimizer=optimizer)
     52 

<ipython-input-57-f9ff9b0e4228> in build_generator(self)
    107         u3 = deconv2d(u2, d4, self.gf*8)
    108         u4 = deconv2d(u3, d3, self.gf*4)
--> 109         u5 = deconv2d(u4, d2, self.gf*2)
    110         u6 = deconv2d(u5, d1, self.gf)
    111 

<ipython-input-57-f9ff9b0e4228> in deconv2d(layer_input, skip_input, filters, f_size, dropout_rate)
     87                 u = Dropout(dropout_rate)(u)
     88             u = BatchNormalization(momentum=0.8)(u)
---> 89             u = Concatenate()([u, skip_input])
     90             return u
     91 

/usr/local/lib/python3.5/site-packages/keras/engine/topology.py in __call__(self, inputs, **kwargs)
    569                     self.build(input_shapes[0])
    570                 else:
--> 571                     self.build(input_shapes)
    572                 self.built = True
    573 

/usr/local/lib/python3.5/site-packages/keras/layers/merge.py in build(self, input_shape)
    275                              'inputs with matching shapes '
    276                              'except for the concat axis. '
--> 277                              'Got inputs shapes: %s' % (input_shape))
    278 
    279     def call(self, inputs):

ValueError: `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 64, 64, 128), (None, 63, 63, 128)]

尝试定义图像数据格式

from keras import backend as K
K.set_image_data_format('channels_first')

我认为这应该可以解决你的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ValueError:“连接”层需要具有匹配形状的输入(连接轴除外) 的相关文章

随机推荐

  • 如何在流中收集到TreeMap中?

    我有两个Collectors groupingBy在流中 我需要收集所有信息TreeMap 我的代码 Map
  • 如何在 laravel/php 中访问该集合的内容

    我是 Laravel 的新手 正在做一个构建迷你社交网络应用程序的项目 我有一个与用户模型有关系的帖子模型 我有一个帖子页面 其中仅显示经过身份验证的用户及其朋友的帖子 在我的 PostController 中 我像这样查询经过身份验证的用
  • mvc3,你能给控制器一个显示名称吗?

    我用的是mvc3 是否可以为控制器和操作指定显示名称 DisplayName Facebook Employee public class EmployeeController Controller 在我的面包屑中 我将获得控制器名称和操作
  • 使用 appcelerator titan 在 android 中后退按钮退出应用程序

    我是钛开发的新手 在本机 android 中 如果我们按下后退按钮 则仅当前活动将被关闭 并且它将返回到上一个活动 但是当我使用 Titanium 在 Android 中按下后退按钮时 它会从应用程序退出 我怎样才能改变这种行为 有两种类型
  • iOS:在代码中访问 app-info.plist 变量

    我正在开发通用应用程序 并且希望访问代码中 app info plist 文件中存储的值 原因 我使用以下方法从故事板动态实例化 UIViewController UIStoryboard storyboard UIStoryboard s
  • 在 React 中更新状态时递归过多

    在此示例中 当我尝试在componentDidUpdate生命周期回调 我得到too much recursion错误 我应该如何更新状态 import React from react class NotesContainer exten
  • java.sql.SQLException: ORA-01005: 给定的密码为空;登录被拒绝

    我在尝试连接到数据库时遇到以下异常 java sql SQLException ORA 01005 null password given logon denied at oracle jdbc driver T4CTTIoer proce
  • Pandas 将行中的非空值获取到一个单元格中[重复]

    这个问题在这里已经有答案了 给定以下数据框 a pd DataFrame A 1 2 B 4 0 C 1 2 a A B C 0 1 4 1 1 2 0 2 我想创建一个新专栏D包含由列分隔的非空值 每行 像这样 A B C D 0 1 4
  • 使用 Gson 序列化时如何公开类名

    我的场景非常复杂 但总结如下 我试图了解编译器的源代码 并了解每个 AST 节点代表什么 我正在生成不同程序的 AST 的 JSON 序列化 然后检查可视化的 JSON 输出 它工作得很好 除了一个问题是在 Gson 中生成的 JSON 数
  • 方案中的尾递归幂函数

    我在方案中编写尾递归幂函数时遇到问题 我想使用辅助函数来编写该函数 我知道我需要一个参数来保存累计值 但在那之后我就陷入了困境 我的代码如下 define pow tr a b define pow tr h result if b 0 r
  • Python包不安装子模块

    我在 dev 分支中创建了一个具有以下结构的包 在验证包安装正确之前不会合并到 main mypackage init py setup py requirements txt module py subpackage one init p
  • Jackson Json 将对象反序列化为列表

    我正在使用 Spring 的 Web 服务RestTemplate并反序列化Jackson 在来自服务器的 JSON 响应中 其中一个字段可以是对象或列表 这意味着它可以是 result or result 有没有办法通过对我要反序列化的类
  • 如何计算两个ip之间的主机数量? C#

    我有两个ip 1 1 1 1 1 2 4 4 4 4 显然这只是一个例子 这是一个动态计算器 如果子网掩码不相关 我如何计算所述 ip 之间的主机数量 要计算 理论 IP 地址的数量 您需要将每个 IP 地址转换为其 32 位整数格式 这实
  • 如何共享/扩展/重用/引用 GitHub Workflow?

    我有两个工作流程 一种方式是通过推送到 master 来部署到测试环境 另一个在发布到生产环境时部署 它们90 相同 代码复制粘贴 是否有一个概念 例如提取部分重复逻辑并将其放入自己的文件 部分 片段中 GitHub Actions 中的重
  • 递归和大O

    我最近正在完成一项涉及递归和大 O 表示法的计算机科学作业 我相信我很好地理解了这一点 虽然当然不是完美的 但是有一个问题给我带来了最多的问题 奇怪的是 一看就知道是作业上最简单的一个 使用大哦符号提供最佳增长率来解决以下递归问题 T 1
  • 为什么Python有最大递归深度?

    Python有最大递归深度 但没有最大迭代深度 为什么递归受到限制 把递归当成迭代来对待 而不限制递归调用的次数不是更自然吗 我只想说这个问题的根源来自于尝试实现流 参见这个问题 https stackoverflow com questi
  • python中热图的层次聚类

    我有一个 NxM 矩阵 其值范围为 0 到 20 我可以使用 Matplotlib 和 pcolor 轻松获得热图 现在我想使用 scipy 应用层次聚类和树状图 我想重新排序每个维度 行和列 以显示哪些元素相似 根据聚类结果 如果矩阵是方
  • 如何正确使用Javascript“导出”和“导入”功能?

    我想将函数从 lib js 文件导出到 main js 文件 我有 lib js export const sqrt Math sqrt export function square x return x x export function
  • XDocument.Save() 删除我的 实体

    我编写了一个工具来使用 C 和 Linq to XML 修复一些 XML 文件 即插入一些缺失的属性 值 该工具将现有 XML 文件加载到 XDocument 对象中 然后 它向下解析节点以插入丢失的数据 之后 它调用 XDocument
  • ValueError:“连接”层需要具有匹配形状的输入(连接轴除外)

    我正在尝试为我的项目构建 Pix2Pix 并收到错误 值错误 Concatenate层需要具有匹配形状的输入 除了连接轴之外 获得输入形状 None 64 64 128 None 63 63 128 生成器是一个 U 网模型 我的输入高度