Pytorch-nn与functional的区别
目录
Pytorch中的 nn 与 nn.functional
这两者其实本质上功能是一致的,都是用于开发者调用
pytorch中的接口以搭建自己的网络有一点不同的是,
nn继承于nn.Module,是对nn.functional中定义的函数的类封装,所以nn.functional更加灵活,更加底层
| Attributes | torch.nn.Xxx |
torch.nn.functional.xxx |
|---|---|---|
| 类型 | class | function |
| 自身属性 | 继承nn.Module相关属性 |
/ |
| 调用方式 | 先实例化,再调用实例化对象 | 直接传参 |
支持nn.Sequential |
是 | 否 |
dropout兼容性 |
自动关闭dropout |
需手动传参关闭 |
weight管理 |
自动 | 手动定义相关权重 |
官方文档中有写到,需要学习参数的网路结构,最好使用 nn.Xxx的方式定义,便于管理权重参数,其他像maxpool, loss func, activation func等不需要学习参数的结构,可以直接使用 nn.functional.xxx调用底层函数,使用更加灵活方便