python fvcore 简单安装及使用详解,CfgNode和Registry祥解付代码

前言

简单介绍使用方法:
fvcore是一个由Facebook AI Research开发的Python工具库,提供了一些方便的工具函数和类,用于简化深度学习项目的开发过程。下面是一些fvcore库的常用功能和使用方法:

  1. 安装fvcore库:可以使用pip安装fvcore库,命令如下:
pip install fvcore
  1. 导入fvcore库:在Python代码中导入fvcore库,可以使用以下语句:
import fvcore
  1. 使用配置文件:fvcore提供了config模块,可以方便地加载和管理配置文件。可以使用以下代码加载配置文件:
from fvcore.common.config import CfgNode

cfg = CfgNode.load_yaml_file("config.yaml")
  1. 使用日志记录:fvcore提供了logger模块,可以方便地记录日志。可以使用以下代码记录日志:
from fvcore.common.logger import setup_logger

logger = setup_logger(name="my_logger")
logger.info("This is an info message")
  1. 使用计时器:fvcore提供了timer模块,可以方便地计时代码段的执行时间。可以使用以下代码计时:
from fvcore.common.timer import Timer

timer = Timer()
timer.tic()
# 执行需要计时的代码段
timer.toc()
print("Elapsed time: {:.2f}s".format(timer.average_time))
  1. 使用其他工具函数:fvcore还提供了一些其他的工具函数,如文件操作、数据结构操作等。可以根据具体需求查看fvcore文档并使用相应的函数。
  • 通过使用fvcore库提供的工具函数和类,可以简化深度学习项目的开发过程,提高开发效率。建议查看fvcore的官方文档以获取更多详细信息和示例代码。

作用和好处:

  1. 简化代码:fvcore库提供了许多方便的工具函数和类,可以帮助开发者简化代码,减少重复性工作,提高代码的可读性和可维护性。

  2. 提高效率:fvcore库提供了一些高效的工具函数和类,可以帮助开发者更快地完成深度学习项目的开发,提高开发效率。

  3. 提供标准化工具:fvcore库提供了一些标准化的工具函数和类,可以帮助开发者遵循一致的代码规范和最佳实践,减少错误和提高代码质量。

  4. 方便调试和日志记录:fvcore库提供了方便的日志记录功能,可以帮助开发者更好地调试代码并记录关键信息,有助于排查问题和优化代码。

  5. 提供实用工具:fvcore库提供了一些实用的工具函数,如配置文件管理、计时器等,可以帮助开发者更方便地管理项目和执行任务。

  • 总的来说,使用fvcore库可以使深度学习项目的开发过程更加高效、简洁和可靠,帮助开发者更好地专注于算法实现和模型设计,而不是繁琐的工程细节。因此,推荐在深度学习项目中使用fvcore库以提高开发效率和代码质量。

1. 安装

pip install fvcore

2. from fvcore.common.config import CfgNode

类似如下定义各个节点各个参数

# -----------------------------------------------------------------------------
# Config definition
# -----------------------------------------------------------------------------
_C = CfgNode()

# ---------------------------------------------------------------------------- #
# Batch norm options
# ---------------------------------------------------------------------------- #
_C.BN = CfgNode()

# Precise BN stats.
_C.BN.USE_PRECISE_STATS = False

# Number of samples use to compute precise bn.
_C.BN.NUM_BATCHES_PRECISE = 200

# Weight decay value that applies on BN.
_C.BN.WEIGHT_DECAY = 0.0

# Norm type, options include `batchnorm`, `sub_batchnorm`, `sync_batchnorm`
_C.BN.NORM_TYPE = "batchnorm"

# Parameter for SubBatchNorm, where it splits the batch dimension into
# NUM_SPLITS splits, and run BN on each of them separately independently.
_C.BN.NUM_SPLITS = 1

# Parameter for NaiveSyncBatchNorm3d, where the stats across `NUM_SYNC_DEVICES`
# devices will be synchronized.
_C.BN.NUM_SYNC_DEVICES = 1


# ---------------------------------------------------------------------------- #
# Training options.
# ---------------------------------------------------------------------------- #
_C.TRAIN = CfgNode()

# If True Train the model, else skip training.
_C.TRAIN.ENABLE = True

# Dataset.
_C.TRAIN.DATASET = "kinetics"

# Total mini-batch size.
_C.TRAIN.BATCH_SIZE = 5

# Evaluate model on test data every eval period epochs.
_C.TRAIN.EVAL_PERIOD = 10

# Save model checkpoint every checkpoint period epochs.
_C.TRAIN.CHECKPOINT_PERIOD = 10

def get_cfg():
    """
    Get a copy of the default config.
    """
    return _C.clone()

调用 get_cfg()函数即可获得定义的各个参数
如果想和原有的config.yaml文件合并,则只需要执行
cfg.merge_from_file(path_to_config),配合parse_args()使用能让代码看起来很清爽

可参考别人代码中写的
https://github.com/Sense-X/UniFormer/tree/main/video_classification

3. from fvcore.common.registry import Registry

妙用Registry,当我需要判断不同的函数时可以使用这个妙用

from fvcore.common.registry import Registry
my_registry = Registry("111")
# 在类和函数名装饰,注册该类和函数
@my_registry.register()
def function(cfg):
    f(**cfg)
  
# 在类和函数名装饰,注册该类和函数,实现通过函数名或者类名字直接调用 
my_registry.get('function')(testcfg)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

idealmu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值