You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FutureGAN训练出现通道数不匹配错误,无法使用RGB格式输入训练

FutureGAN训练3通道RGB输入时通道不匹配报错求助

核心报错信息

RuntimeError: Given groups=1, weight[512, 3, 1, 1, 1], so expected input[32, 1, 6, 4, 4] to have 3 channels, but got 1 channels instead

这类通道不匹配问题此前已有多次反馈,但现有解决方案均无法解决我的问题。我正在尝试复现FutureGAN模型,项目地址为https://github.com/TUM-LMF/FutureGAN。

复现步骤

我按照项目说明完成所有准备步骤后,执行以下命令启动训练:

python /content/FutureGAN/train.py --data_root='/content/mmnist-2/train'

训练脚本地址为https://github.com/TUM-LMF/FutureGAN/blob/master/train.py。
程序运行后完整报错如下:

... loading training configuration ... 
 ... saving training configuration to <_io.TextIOWrapper name='./logs/2021-08-24_172412/train_config.txt' mode='w' encoding='UTF-8'>
 ... creating initial models ... 
 ... initial models have been built successfully ... 
 ... saving initial model strutures to <_io.TextIOWrapper name='./logs/2021-08-24_172412/initial_model_structure_4x4.txt' mode='w' encoding='UTF-8'>
  0% 0/10140 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/content/FutureGAN/train.py", line 832, in <module>
    trainer.train()
  File "/content/FutureGAN/train.py", line 574, in train
    self.z_x_gen = self.G(self.z)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
    result = self.forward(*input, **kwargs)
  File "/content/FutureGAN/model.py", line 307, in forward
    y = self.model(x)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/container.py", line 67, in forward
    input = module(input)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/container.py", line 67, in forward
    input = module(input)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
    result = self.forward(*input, **kwargs)
  File "/content/FutureGAN/custom_layers.py", line 114, in forward
    x = self.conv(x.mul(self.scale))
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/module.py", line 357, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 388, in forward
    self.padding, self.dilation, self.groups)
  File "/usr/local/envs/FutureGAN/lib/python3.6/site-packages/torch/nn/functional.py", line 126, in conv3d
    return f(input, weight, bias)
RuntimeError: Given groups=1, weight[512, 3, 1, 1, 1], so expected input[32, 1, 6, 4, 4] to have 3 channels, but got 1 channels instead

已尝试的规避方案

我可以通过指定输入通道数为1的方式规避该问题,执行命令如下:

python /content/FutureGAN/train.py --data_root='/content/mmnist-2/train' --nc 1

但该方案不符合需求,我需要使用RGB格式的3通道输入进行训练。

运行环境与模型信息

运行环境为安装了Conda及所有依赖项的常规Google Colab环境,完整操作步骤见https://github.com/dhruvsheth-ai/FutureGAN/blob/master/FutureGAN-new.ipynb。
模型架构详情如下:

--------------------------------------------------
Sequences in Dataset:  16199
Global iteration step:  1014 , Epoch:  2
Phase:  init
Number of Generator`s model parameters: 
35659778
Number of Discriminator`s model parameters: 
66603521
--------------------------------------------------
New Generator structure: 
FutureGenerator(
  (model): Sequential(
    (concat_block_encode): Concat(
      (layer1): Sequential(
        (low_resl_from_rgb): Sequential(
          (from_rgb_block): Sequential(
            (0): EqualizedConv3d(
              (conv): Conv3d(1, 512, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
            )
            (1): LeakyReLU(0.2)
            (2): PixelwiseNormLayer(
            )
          )
        )
        (low_resl_downsample): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(1, 2, 2), stride=(1, 2, 2), bias=False)
          )
          (1): LeakyReLU(0.2)
          (2): PixelwiseNormLayer(
          )
        )
      )
      (layer2): Sequential(
        (high_resl_from_rgb): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(1, 512, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
          )
          (1): LeakyReLU(0.2)
          (2): PixelwiseNormLayer(
          )
        )
        (high_resl_block_encode): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
          )
          (1): LeakyReLU(0.2)
          (2): PixelwiseNormLayer(
          )
          (3): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(1, 2, 2), stride=(1, 2, 2), bias=False)
          )
          (4): LeakyReLU(0.2)
          (5): PixelwiseNormLayer(
          )
        )
      )
    )
    (fadein_block_encode): FadeInLayer(
    )
    (middle_block): Sequential(
      (0): EqualizedConv3d(
        (conv): Conv3d(512, 512, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
      )
      (1): LeakyReLU(0.2)
      (2): PixelwiseNormLayer(
      )
      (3): EqualizedConv3d(
        (conv): Conv3d(512, 512, kernel_size=(6, 1, 1), stride=(1, 1, 1), bias=False)
      )
      (4): LeakyReLU(0.2)
      (5): PixelwiseNormLayer(
      )
      (6): EqualizedConvTranspose3d(
        (deconv): ConvTranspose3d(512, 512, kernel_size=(6, 1, 1), stride=(1, 1, 1), bias=False)
      )
      (7): LeakyReLU(0.2)
      (8): PixelwiseNormLayer(
      )
      (9): EqualizedConv3d(
        (conv): Conv3d(512, 512, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
      )
      (10): LeakyReLU(0.2)
      (11): PixelwiseNormLayer(
      )
    )
    (concat_block_decode): Concat(
      (layer1): Sequential(
        (low_resl_upsample): Sequential(
          (0): EqualizedConvTranspose3d(
            (deconv): ConvTranspose3d(512, 512, kernel_size=(1, 2, 2), stride=(1, 2, 2), bias=False)
          )
          (1): LeakyReLU(0.2)
          (2): PixelwiseNormLayer(
          )
        )
        (low_resl_to_rgb): Sequential(
          (to_rgb_block): Sequential(
            (0): EqualizedConv3d(
              (conv): Conv3d(512, 1, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
            )
          )
        )
      )
      (layer2): Sequential(
        (high_resl_block_decode): Sequential(
          (0): EqualizedConvTranspose3d(
            (deconv): ConvTranspose3d(512, 512, kernel_size=(1, 2, 2), stride=(1, 2, 2), bias=False)
          )
          (1): LeakyReLU(0.2)
          (2): PixelwiseNormLayer(
          )
          (3): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
          )
          (4): LeakyReLU(0.2)
          (5): PixelwiseNormLayer(
          )
        )
        (high_resl_to_rgb): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(512, 1, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
          )
        )
      )
    )
    (fadein_block_decode): FadeInLayer(
    )
  )
)
--------------------------------------------------
New Discriminator structure: 
Discriminator(
  (model): Sequential(
    (concat_block): Concat(
      (layer1): Sequential(
        (low_resl_from_rgb): Sequential(
          (from_rgb_block): Sequential(
            (0): EqualizedConv3d(
              (conv): Conv3d(1, 512, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
            )
            (1): LeakyReLU(0.2)
          )
        )
        (low_resl_downsample): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(1, 2, 2), stride=(1, 2, 2), bias=False)
          )
          (1): LeakyReLU(0.2)
        )
      )
      (layer2): Sequential(
        (high_resl_from_rgb): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(1, 512, kernel_size=(1, 1, 1), stride=(1, 1, 1), bias=False)
          )
          (1): LeakyReLU(0.2)
        )
        (high_resl_block): Sequential(
          (0): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
          )
          (1): LeakyReLU(0.2)
          (2): EqualizedConv3d(
            (conv): Conv3d(512, 512, kernel_size=(1, 2, 2), stride=(1, 2, 2), bias=False)
          )
          (3): LeakyReLU(0.2)
        )
      )
    )
    (fadein_block): FadeInLayer(
    )
    (last_block): Sequential(
      (0): MinibatchStdConcatLayer(averaging = all)
      (1): EqualizedConv3d(
        (conv): Conv3d(513, 512, kernel_size=(3, 3, 3), stride=(1, 1, 1), padding=(1, 1, 1), bias=False)
      )
      (2): LeakyReLU(0.2)
      (3): EqualizedConv3d(
        (conv): Conv3d(512, 512, kernel_size=(12, 4, 4), stride=(1, 1, 1), bias=False)
      )
      (4): LeakyReLU(0.2)
      (5): Flatten(
      )
      (6): EqualizedLinear(
        (linear): Linear(in_features=512, out_features=1, bias=False)
      )
    )
  )
)
--------------------------------------------------

该模型在包含RGB格式动作图像的KTH数据集上测试时同样出现该错误,恳请各位提供解决方案,若能给出具体代码修改建议将不胜感激。

内容的提问来源于stack exchange,提问作者Dhruv Sheth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:39:02