鱼C论坛

 找回密码
 立即注册
查看: 620|回复: 7

自己融合了一个网络模型,在跑的时候出现了错误,希望各位朋友们能给点意见

[复制链接]
发表于 2024-1-19 18:43:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面是我报错的问题。
Traceback (most recent call last):
  File "D:\traffic\proj\traffic_prediction\traffic_prediction\traffic_prediction.py", line 234, in <module>
    main()
  File "D:\traffic\proj\traffic_prediction\traffic_prediction\traffic_prediction.py", line 155, in main
    predict_value = my_net(data, device).to(torch.device("cpu"))  # [0, 1] -> recover
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:\traffic\proj\traffic_prediction\traffic_prediction\gat.py", line 114, in forward
    prediction = self.subnet(flow, graph).unsqueeze(2)  # [B, N, 1, C]
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:\traffic\proj\traffic_prediction\traffic_prediction\gat.py", line 67, in forward
    outputs = self.multiDimConv(outputs)
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:\traffic\proj\traffic_prediction\traffic_prediction\advs.py", line 34, in forward
    x = self.conv(x)
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\container.py", line 141, in forward
    input = module(input)
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\conv.py", line 301, in forward
    return self._conv_forward(input, self.weight, self.bias)
  File "D:\anaconda\envs\traffic_pred\lib\site-packages\torch\nn\modules\conv.py", line 298, in _conv_forward
    self.padding, self.dilation, self.groups)
RuntimeError: Given groups=1, weight of size [512, 192, 4], expected input[64, 307, 12] to have 192 channels, but got 307 channels instead

进程已结束,退出代码1
我通过GPT尝试修改代码,但是根据GPT修改后,并没有成功,依旧报的是这个错误。
下面是GPT给我的建议。
根据您提供的错误信息,问题依然是第一个卷积层的权重和输入数据的通道数不匹配。错误信息显示,尽管您已经将所有卷积层改为一维卷积,但第一个卷积层的定义仍然是 Conv1d(192, 512, kernel_size=(4,), stride=(2,), padding=(1,)),这意味着它期望输入数据有192个通道,而实际上输入数据有307个通道。

要解决这个问题,请确保第一个卷积层的输入通道数正确设置为307。根据您的模型结构,您需要在 MultiShapeConv 类中做如下修改:
python
Copy code
class MultiShapeConv(nn.Module):
    # 其他代码保持不变

    def __init__(self, ...):
        # ... 其他初始化代码
        self.conv = nn.Sequential(
            nn.Conv1d(307, 512, kernel_size=(4,), stride=(2,), padding=(1,)), # 修改这里
            nn.BatchNorm1d(512),
            nn.ReLU(inplace=True),
            # ... 其他卷积层保持不变
        )

    # ... 其他方法保持不变
在这里,我将 MultiShapeConv 中第一个卷积层的输入通道数从192更改为307。请确保进行这一修改后重新训练模型,因为网络结构的改变会影响模型的性能。

如果您在修改和训练模型后仍然遇到问题,或者需要更多帮助,请随时告知。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-19 18:44:02 | 显示全部楼层
根据您提供的错误信息和GPT的建议,问题出在您的第一个卷积层上。根据错误信息,该卷积层期望输入数据有192个通道,但实际上输入数据有307个通道,因此导致了维度不匹配的错误。

解决这个问题的方法就是将第一个卷积层的输入通道数改为307。您可以在`MultiShapeConv`类中进行如下修改:
class MultiShapeConv(nn.Module):
    def __init__(self, ...):
        # 其他初始化代码
        self.conv = nn.Sequential(
            nn.Conv1d(307, 512, kernel_size=(4,), stride=(2,), padding=(1,)),  # 修改这里
            nn.BatchNorm1d(512),
            nn.ReLU(inplace=True),
            # 其他卷积层
        )
    # 其他方法

以上代码将第一个卷积层的输入通道数从192改为307。请记得修改完后重新训练模型,因为网络结构的改变可能会影响模型的性能。

如果您在修改和重新训练模型后仍然遇到问题,或者需要更多帮助,请随时告知。祝您顺利解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-19 18:44:32 | 显示全部楼层
FishC 发表于 2024-1-19 18:44
根据您提供的错误信息和GPT的建议,问题出在您的第一个卷积层上。根据错误信息,该卷积层期望输入数据有192 ...

这个办法我尝试了,没有用,是否还有其他的解决办法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-19 18:45:45 | 显示全部楼层
2242253525 发表于 2024-01-19 18:44
这个办法我尝试了,没有用,是否还有其他的解决办法


如果尝试将第一个卷积层的输入通道数从192修改为307后,问题仍然存在,那么可能是其他部分的代码和网络模型结构存在问题。以下是一些建议来帮助您排查问题:

1. 检查数据维度:确保输入数据的形状和模型期望的形状匹配。您可以使用`print(data.shape)`来查看输入数据的形状,并与模型定义中的期望形状进行比较。

2. 检查所有卷积层的通道数配置:除了第一个卷积层,还要检查其他卷积层的输入和输出通道数是否匹配。确保每个卷积层的输入通道数等于前一层的输出通道数。

3. 检查模型架构和连接方式:确保模型的各个层之间的连接方式正确,特别是在涉及多个卷积层或子网络时。

4. 检查激活函数和标准化层的使用:确认激活函数和标准化层(如BatchNorm)的位置和使用方式是否正确。

5. 检查损失函数和优化器:确保使用合适的损失函数和优化器进行训练。

如果您能提供更多的代码细节、模型结构以及示例数据,我将能够更好地帮助您找到问题的根本原因并提供更具体的解决方案。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-19 19:21:57 | 显示全部楼层
错误信息你不看吗?
“Given groups=1, weight of size [512, 192, 4], expected input[64, 307, 12] to have 192 channels, but got 307 channels instead”
输入跟设置的权重chennels不匹配。
你得把每一层输出的规模重新看看,是不是匹配的。

如果是别人的模型,你输入图片尺寸可能有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-19 19:32:07 | 显示全部楼层
AFUL 发表于 2024-1-19 19:21
错误信息你不看吗?
“Given groups=1, weight of size [512, 192, 4], expected input[64, 307, 12] to h ...

是有看到的,但是尺寸我并不想改,所以出了问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-19 21:09:47 | 显示全部楼层
就是尺寸问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-20 16:42:06 | 显示全部楼层
2242253525 发表于 2024-1-19 19:32
是有看到的,但是尺寸我并不想改,所以出了问题

我甚至不知道你不想改的是哪个尺寸。
是模型中的尺寸,还是输入尺寸。
如果是模型的尺寸不想动,就把输入调整一下。
如果是输入的尺寸不想动,就把模型调整一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 01:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表