增加一个新的Backbone

本节相关代码:

core/model/backbone/*
config/backbones/*

如果想在LibFewShot中添加一个新的backbone,可以将所有与backbone有关的文件放到core/model/backbone/目录下,例如添加ResNet网络到LibFewShot中,需要将代码写入core/model/backbone/resnet.py中,并且在resnet.py中提供一个能够生成backboneclass或者是function。例如resnet.py文件:

...

class ResNet(nn.Module):
	def __init(self,...):
...

def ResNet18():
	model = ResNet(BasicBlock, [2,2,2,2], **kwargs)
	return model

之后为了能够从backbone包中调用到ResNet18这个function,需要修改/core/model/backbone/__init__.py文件,添加如下一行代码

...

from resnet import ResNet18

这样一个新的backbone就添加完成了。

这个新加入的backbone和其他的backbone是同样的使用方式。举个例子,要将ResNet18替换为DN4backbone,只需要在config/dn4.yaml中将修改backbone字段如下:

# arch info
backbone:
  name: resnet18
  kwargs:
    avg_pool: False
    is_flatten: False

即可完成替换。