pytorch定义网络模型报错
RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor)
网上给出的解释都是模型没有载入cuda
但我是做了这一步的(model=model.to('cuda')
)所以要排除这个原因
还有一种可能是网络定义的不好 导致部分参数没有载入cuda
比如我就是用python中的list定义了CNN层 导致模型初始化的时候没有被载入
以下是有问题的代码:
本来这样是没有出错的 因为这是一个多个block共享Reslayer参数的网络
但当我想改成不共享参数 即每一个block中都有参数 这事就会出问题
报错:RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor)
这事因为这时候的list中是有参数的 如果我还是这样定义 网络进行初始化的时候就会忽略这里面的参数
要改成nn.ModuleLis
t定义层
以下是修改后的代码
或者仍然用blocklist=[]
只需要在最后加上一行
self.blocklist = nn.ModuleList(self.blocklist)