马春杰杰 Exit Reader Mode

Pytorch基础__F.relu和nn.ReLU的区别?

简要概括就是:F.relu函数用,nn.ReLU当模块定义用。

F.relu()一般在forward中用,nn.ReLU()定义网络结构的时候用。

比如:

import torch.nn as nn
import torch.nn.functional as F

class NET1(nn.Module):
    def __init__(self):
        super(NET1, self).__init__()
        self.conv = nn.Conv2d(3, 16, 3, 1, 1)
        self.bn = nn.BatchNorm2d(16)
        self.re = nn.ReLU()  # 模块的激活函数

    def foreward(self, x):
        out = self.conv(x)
        out = self.bn(x)
        out = self.re()
        return out


class NET2(nn.Module):
    def __init__(self):
        super(NET2, self).__init__()
        self.conv = nn.Conv2d(3, 16, 3, 1, 1)
        self.bn = nn.BatchNorm2d(16)

    def foreward(self, x):
        out = self.conv(x)
        out = self.bn(x)
        out = F.relu(out)  # 函数的激活函数
        return out


net1 = NET1()
net2 = NET2()
print(net1)
print(net2)

注意:当用print(net)输出时,会有nn.ReLU()层,而F.ReLU()是没有输出的。

本文最后更新于2021年8月15日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!