torch.nn

nn.Module

模型的基类

  • add_module(name, module)
    等价于self.name = nn.xxx,模块使用名字来接触
  • cpu() cuda()
    复制到设备上
  • double() float() half()
  • eval() train()
    只对BN和Dropout有用
  • apply(fn)
    应用于children的返回值,即所有子模型,可用于init
  • state_dict() load_state_dict()
  • zero_grad()
  • children() named_children()
    是一个generator,iterator的简化版。g使用yield,i需要next,iter,init
    列出子模型,引用为模型的名字
    name后为name,例如conv1
    name前是(module),name后是(name,module)
  • module() named_modules()
    列出所有模型,类似于resnet,conv3d
    name后为name.name.name
    配合isinstance和tensor的操作使用
for m in self.modules():
    if isinstance(m, nn.Conv3d):
        n = m.kernel_size[0] * m.kernel_size[1] * m.kernel_size[2] * m.out_channels
        m.weight.data.normal_(0, math.sqrt(2. / n))
        m.bias.data.zero_()
  • parameter() named_parameters()
    列出每个parameter,类似于conv.weight, 引用为Paramerter,即通过[0][1]来获得。
    name后为name.name.name
  • register_xxx
    添加hook,buf等

nn.Parameters

Variable的子类,在module类里可用Parameter()获取

nn.init

  • gain xavier
    uniform(-a ,a): a=gain×2/(fan_in+fan_out)×3
    normal(0, std): std=gain×2/(fan_in+fan_out)
  • kaiming
    uniform(-a ,a): a=2/((1+a2)×fan_in)×3
    normal(0, std): std=2/((1+a2)×fan_in)
    适用于relu网络
  • orthogonal sparse uniform normal constant eye dirac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值