pytorch-nn.xx与nn.functional.xx的区别

PyTorch的nn.nn与nn.functional虽然功能相似,如卷积和dropout,但在调用和使用上有所不同。nn是类接口,包含属性和方法,如weight,而functional是函数接口。nn.Module与nn.functional的主要区别在于调用方式,nn.Module需要实例化并传入参数,而functional直接使用。nn.Module更适合与torch.nn组合,适合有学习参数的层,而functional适用于无学习参数的层或灵活性更高的场景。对于dropout,推荐在训练阶段使用nn.Dropout,因为它在eval模式下会关闭dropout,而functional方式不会。
摘要由CSDN通过智能技术生成

两者的相同之处:

  • nn.Xxxnn.functional.xxx的实际功能是相同的,即nn.Conv2dnn.functional.conv2d 都是进行卷积,nn.Dropoutnn.functional.dropout都是进行dropout,。。。。。;
  • 运行效率也是近乎相同。

nn.functional.xxx是函数接口,而nn.Xxxnn.functional.xxx的类封装,并且nn.Xxx都继承于一个共同祖先nn.Module这一点导致nn.Xxx除了具有nn.functional.xxx功能之外,内部附带了nn.Module相关的属性和方法,例如train(), eval(),load_state_dict, state_dict 等。

两者的差别之处:

  • 两者的调用方式不同。

nn.Xxx 需要先实例化并传入参数,然后以函数调用的方式调用实例化的对象并传入输入数据。

inputs = torch.rand(64, 3, 244, 244)
conv = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, padding=1)
out = conv(inp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值