ResNet 网络学习

根据网络结构块对应的代码块

from yacs.config import CfgNode as CN

 很多模型需要设置超参数,当超参数过多时,不方便管理,于是出现了很多类似yaml,yacs的包。YACS是一个轻量级库,用于定义和管理系统配置,例如那些在为科学实验设计的软件中常见的配置。要在项目中使用YACS,首先要创建一个项目配置文件,通常称为config.py或defaults.py。

import os

from yacs.config import CfgNode as CN


# -----------------------------------------------------------------------------
# Config definition
# -----------------------------------------------------------------------------


#创建一个配置节点 _C
_C = CN()
 
#在_C下创建新的配置节点_C.MODEL
#给_C.MODEL的属性配置默认值

_C.MODEL = CN()
_C.MODEL.RPN_ONLY = False
_C.MODEL.MASK_ON = False

register_fn 是一个装饰器函数例如

@registry.BACKBONES.register("ViL-C4")
def build_vilc4_backbone(cfg):
    assert len(cfg.MODEL.TRANSFORMER.OUT_FEATURES) == 1, "The number of OUT_FEATURES in ViL-C4 is not 1!"
    body = build_msvit_backbone(cfg)
    model = nn.Sequential(OrderedDict([("body", body)]))
    model.out_channels = body.out_planes
    return model
def __init__(self, *args, **kwargs):
        super(Registry, self).__init__(*args, **kwargs)

    def register(self, module_name, module=None):
        # used as function call
        if module is not None:
            _register_generic(self, module_name, module)
            return

        # used as decorator
        def register_fn(fn):
            _register_generic(self, module_name, fn)
            return fn

        return register_fn

这里当你在一个函数前使用 @registry.register("module_name") 这种装饰器语法时,Python 实际上会将这个函数替换为 register_fn 函数。然后,当你调用被装饰的函数时,实际上是在调用 register_fn,(因为最后返回register_fn 函数),它将 fn 注册到注册表并返回原始的 fn,以便你可以继续使用它。

这里举例的装饰器ViL-C4,这个语法是 Python 提供的一种简便方式,用来告诉 Python 解释器将 build_vilc4_backbone函数传递给 register_fn 函数并将其返回的函数与 build_vilc4_backbone 绑定。

举例可以看出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值