models.__dict__[args.arch] 实例复现

本文通过实例解析了Moco源码中的一种特殊模型初始化方式,展示了如何利用Python的模块字典来调用模型构造函数,并通过具体的代码演示了这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在看moco源码时发下有个这样的代码不知道咋用的,复现了一下

model = moco.builder.MoCo(  # 这种初始化模型的方式是因为导包的时候导到了moco这一层
        models.__dict__[args.arch],
        args.moco_dim, args.moco_k, args.moco_m, args.moco_t, args.mlp)
print(model)

具体复现过程如下:
1、文件夹目录如下:只需要红框框住的这三个.py文件就行,test文件夹下有一个__init__.py的启动文件,和一个test2.py文件,test.py文件和test文件夹目录同级
在这里插入图片描述
2、test文件夹下:
2.1 init.py文件夹中的代码如下:

from .test2 import *

2.2 test2.py文件中的代码如下:


__all__ = ['ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101']


def ResNet():
    print('ResNet')
def resnet18():
    print('resnet18')
def resnet34():
    print('resnet34')
def resnet50():
    print('resnet50')
def resnet101():
    print('resnet101')


3、test.py中的代码如下:

import test
class Test:
    def __init__(self, model_name='', age='', sex=''):
        self.model_name = model_name
        self.age = age
        self.sex = sex
        print('self.model_name', self.model_name)
        print('self.age', self.age)
        print('self.sex', self.sex)


new_test = Test(test.__dict__['resnet50'], '18', 'boy')
print('----------')
test.__dict__['resnet50']()  # 调用函数
print(new_test.model_name)  # 函数对象
new_test.model_name()  # 调用函数

4、执行test.py文件结果如下:
在这里插入图片描述
5、从上边可以看出来,只要是建立了文件夹并其中有__init__.py(包)就可以使用包名.dict[‘包中的内容’]这种方式例如test.dict[‘resnet50’]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值