关于nn.Conv2d()方法的返回值

在定义了神经网络的基本结构时:
self.conv1 = nn.Conv2d(1, 6, 5)

 ......

 x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))

self.conv1作为nn.Conv2d方法的返回值,为什么下面能直接当成函数调用?

因为nn.Conv2d方法的返回值就是函数,函数也是可以赋值传递的

然后conv2d在子类里重写了forward方法,所以直接输入x就是调用Conv2d里的forward方法

我最近也在看,Conv2d是Module的一个子类,Module在类的定义中用了__call__方法,这个方法会使类在创建实例后会像函数一样可以直接调用call里的代码,module类的call方法会自动调用forward方法

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632