TypeError: 'Net' object is not callable python报错
原程序如下:
import torch
import torch.nn as nn
class Net():
def __init__(self,inc,k):
super().__init__()
self.net = nn.Sequential(
nn.Conv2d(inc,inc,k,2,1)
)
def forward(self,x):
return self.net(x)
class UpsampleLayer(torch.nn.Module):
def __init__(self):
super(UpsampleLayer, self).__init__()
self.pixelShuffle = torch.nn.PixelShuffle(2)
def forward(self, x):
return self.pixelShuffle(x)
if __name__ == '__main__':
x = torch.Tensor(1,4,100,100)
net1 = Net(4,3)
y = net1(x)
up = UpsampleLayer()
y1 = up(y)
print(y1)
按照网上常见的说法是命名冲突问题,但是我只是一个如此简单的demo,又没有占用关键字,怎么可能是命名问题。于是在第26行把 y = net1(x) 改为 y = net1.forward(x) ,告诉这个网络用其内的什么函数,就好了。。。
又如
import torch
import torch.nn as nn
class Net():
def __init__(self,inc,k):
super().__init__()
self.net = nn.Sequential(
nn.Conv2d(inc,inc,k,2,1)
)
def forward(self,x):
return self.net(x)
class UpsampleLayer(torch.nn.Module):
def __init__(self):
super().__init__()
self.pixelShuffle = torch.nn.PixelShuffle(2)
def forward(self, x):
return self.pixelShuffle(x)
class MainNet():
def __init__(self):
super().__init__()
self.net1 = Net(4, 3)
self.up = UpsampleLayer()
def forward(self,x):
y = self.net1.forward(x)
return self.up(y)
if __name__ == '__main__':
x = torch.Tensor(1,4,100,100)
mnet = MainNet()
print(mnet.forward(x))
还没有评论,来说两句吧...