通过不同名称从 class 导入特定模块作为字符串变量
import specific module from the class by different name as string variable
我想从 class 中获取一个具有不同名称(字符串变量)的模块。但是,内容与原始模块名称具有相同的字符串形式。
例如
import timm
model_configs = timm.models.resnet.default_cfgs['resnet34'] #this one works
target_network_root = 'resnet'
model_configs = timm.models.target_network_root.default_cfgs['resnet34'] #this one doesn't work
由于 target_network_root 可以更改,我可能会导出除 resnet 之外的另一个网络,我喜欢从 timm.models 调用特定模块作为变量。非常感谢您的支持。
您可以使用 getattr()
例如:
getattr(timm.models, target_network_root)
=> timm.models.resnet
如果您的目标是从它加载不同的模型;这是正确的方法:
import timm
list_of_resnet_models = timm.list_models('resnet*',pretrained=True)
#you can fill in this list with some models of your own like: #['resnet34','resnet50','...'] #whatever existing model in timm
model = timm.create_model(list_of_resnet_models[0],pretrained=True)
print(model.default_cfg)
以后可以通过list_of_resnet_models
的不同索引来加载其他模型!
我想从 class 中获取一个具有不同名称(字符串变量)的模块。但是,内容与原始模块名称具有相同的字符串形式。 例如
import timm
model_configs = timm.models.resnet.default_cfgs['resnet34'] #this one works
target_network_root = 'resnet'
model_configs = timm.models.target_network_root.default_cfgs['resnet34'] #this one doesn't work
由于 target_network_root 可以更改,我可能会导出除 resnet 之外的另一个网络,我喜欢从 timm.models 调用特定模块作为变量。非常感谢您的支持。
您可以使用 getattr()
例如:
getattr(timm.models, target_network_root)
=> timm.models.resnet
如果您的目标是从它加载不同的模型;这是正确的方法:
import timm
list_of_resnet_models = timm.list_models('resnet*',pretrained=True)
#you can fill in this list with some models of your own like: #['resnet34','resnet50','...'] #whatever existing model in timm
model = timm.create_model(list_of_resnet_models[0],pretrained=True)
print(model.default_cfg)
以后可以通过list_of_resnet_models
的不同索引来加载其他模型!