Use Densenet but throw 'module name can\'t contain "."' exception

learn = cnn_learner(data, densenet169, metrics=[accuracy])
release 1.0.47 ver create this learner and throw this exception

what’s wrong with it?

KeyError Traceback (most recent call last)
in
----> 1 learn = cnn_learner(data, densenet169, metrics=[accuracy])

~/anaconda3/envs/fastai/lib/python3.6/site-packages/fastai/vision/learner.py in cnn_learner(data, base_arch, cut, pretrained, lin_ftrs, ps, custom_head, split_on, bn_final, **kwargs)
83 “Build convnet style learner.”
84 meta = cnn_config(base_arch)
—> 85 model = create_cnn_model(base_arch, data.c, cut, pretrained, lin_ftrs, ps, custom_head, split_on, bn_final)
86 learn = Learner(data, model, **kwargs)
87 learn.split(split_on or meta[‘split’])

~/anaconda3/envs/fastai/lib/python3.6/site-packages/fastai/vision/learner.py in create_cnn_model(base_arch, nc, cut, pretrained, lin_ftrs, ps, custom_head, split_on, bn_final)
71 split_on:Optional[SplitFuncOrIdxList]=None, bn_final:bool=False):
72 “Create custom convnet architecture”
—> 73 body = create_body(base_arch, pretrained, cut)
74 if custom_head is None:
75 nf = num_features_model(nn.Sequential(*body.children())) * 2

~/anaconda3/envs/fastai/lib/python3.6/site-packages/fastai/vision/learner.py in create_body(arch, pretrained, cut)
48 def create_body(arch:Callable, pretrained:bool=True, cut:Optional[Union[int, Callable]]=None):
49 “Cut off the body of a typically pretrained model at cut (int) or cut the model as specified by cut(model) (function).”
—> 50 model = arch(pretrained)
51 cut = ifnone(cut, cnn_config(arch)[‘cut’])
52 if isinstance(cut, int): return nn.Sequential(*list(model.children())[:cut])

~/anaconda3/envs/fastai/lib/python3.6/site-packages/torchvision/models/densenet.py in densenet169(pretrained, **kwargs)
38 “”"
39 model = DenseNet(num_init_features=64, growth_rate=32, block_config=(6, 12, 32, 32),
—> 40 **kwargs)
41 if pretrained:
42 model.load_state_dict(model_zoo.load_url(model_urls[‘densenet169’]))

~/anaconda3/envs/fastai/lib/python3.6/site-packages/torchvision/models/densenet.py in init(self, growth_rate, block_config, num_init_features, bn_size, drop_rate, num_classes)
140 for i, num_layers in enumerate(block_config):
141 block = _DenseBlock(num_layers=num_layers, num_input_features=num_features,
–> 142 bn_size=bn_size, growth_rate=growth_rate, drop_rate=drop_rate)
143 self.features.add_module(‘denseblock%d’ % (i + 1), block)
144 num_features = num_features + num_layers * growth_rate

~/anaconda3/envs/fastai/lib/python3.6/site-packages/torchvision/models/densenet.py in init(self, num_layers, num_input_features, bn_size, growth_rate, drop_rate)
96 super(_DenseBlock, self).init()
97 for i in range(num_layers):
—> 98 layer = _DenseLayer(num_input_features + i * growth_rate, growth_rate, bn_size, drop_rate)
99 self.add_module(‘denselayer%d’ % (i + 1), layer)
100

~/anaconda3/envs/fastai/lib/python3.6/site-packages/torchvision/models/densenet.py in init(self, num_input_features, growth_rate, bn_size, drop_rate)
75 def init(self, num_input_features, growth_rate, bn_size, drop_rate):
76 super(_DenseLayer, self).init()
—> 77 self.add_module(‘norm.1’, nn.BatchNorm2d(num_input_features)),
78 self.add_module(‘relu.1’, nn.ReLU(inplace=True)),
79 self.add_module(‘conv.1’, nn.Conv2d(num_input_features, bn_size *

~/anaconda3/envs/fastai/lib/python3.6/site-packages/torch/nn/modules/module.py in add_module(self, name, module)
178 raise KeyError(“attribute ‘{}’ already exists”.format(name))
179 elif ‘.’ in name:
–> 180 raise KeyError(“module name can’t contain “.””)
181 elif name == ‘’:
182 raise KeyError(“module name can’t be empty string “””)

KeyError: ‘module name can’t contain “.”’

1 Like

resolved it!
upgrade pytorchvision ver to 0.2.2