@@ -105,44 +105,13 @@ function densenet(nblocks::Vector{<:Integer}; growth_rate::Integer = 32, reducti
105
105
reduction, inchannels, nclasses)
106
106
end
107
107
108
- """
109
- DenseNet(nblocks::Vector{<:Integer}; growth_rate::Integer = 32, reduction = 0.5,
110
- inchannels = 3, nclasses::Integer = 1000)
111
-
112
- Create a DenseNet model
113
- ([reference](https://arxiv.org/abs/1608.06993)).
114
- See also [`densenet`](#).
115
-
116
- # Arguments
117
-
118
- - `nblocks`: number of dense blocks between transitions
119
- - `growth_rate`: the output feature map growth rate of dense blocks (i.e. `k` in the paper)
120
- - `reduction`: the factor by which the number of feature maps is scaled across each transition
121
- - `nclasses`: the number of output classes
122
- """
123
- struct DenseNet
124
- layers:: Any
125
- end
126
- @functor DenseNet
127
-
128
- function DenseNet (nblocks:: Vector{<:Integer} ; growth_rate:: Integer = 32 , reduction = 0.5 ,
129
- inchannels = 3 , nclasses:: Integer = 1000 )
130
- layers = densenet (nblocks; growth_rate, reduction, inchannels, nclasses)
131
- return DenseNet (layers)
132
- end
133
-
134
- (m:: DenseNet )(x) = m. layers (x)
135
-
136
- backbone (m:: DenseNet ) = m. layers[1 ]
137
- classifier (m:: DenseNet ) = m. layers[2 ]
138
-
139
108
const DENSENET_CONFIGS = Dict (121 => [6 , 12 , 24 , 16 ],
140
109
161 => [6 , 12 , 36 , 24 ],
141
110
169 => [6 , 12 , 32 , 32 ],
142
111
201 => [6 , 12 , 48 , 32 ])
143
112
144
113
"""
145
- DenseNet(config::Integer = 121 ; pretrain::Bool = false, nclasses::Integer = 1000)
114
+ DenseNet(config::Integer; pretrain::Bool = false, nclasses::Integer = 1000)
146
115
DenseNet(transition_configs::NTuple{N,Integer})
147
116
148
117
Create a DenseNet model with specified configuration. Currently supported values are (121, 161, 169, 201)
@@ -155,11 +124,22 @@ Set `pretrain = true` to load the model with pre-trained weights for ImageNet.
155
124
156
125
See also [`Metalhead.densenet`](#).
157
126
"""
158
- function DenseNet (config:: Integer = 121 ; pretrain:: Bool = false , nclasses:: Integer = 1000 )
127
+ struct DenseNet
128
+ layers:: Any
129
+ end
130
+ @functor DenseNet
131
+
132
+ function DenseNet (config:: Integer ; pretrain:: Bool = false , growth_rate:: Integer = 32 ,
133
+ reduction = 0.5 , inchannels:: Integer = 3 , nclasses:: Integer = 1000 )
159
134
_checkconfig (config, keys (DENSENET_CONFIGS))
160
- model = DenseNet (DENSENET_CONFIGS[config]; nclasses = nclasses)
135
+ model = densenet (DENSENET_CONFIGS[config]; growth_rate, reduction, inchannels, nclasses)
161
136
if pretrain
162
137
loadpretrain! (model, string (" DenseNet" , config))
163
138
end
164
139
return model
165
140
end
141
+
142
+ (m:: DenseNet )(x) = m. layers (x)
143
+
144
+ backbone (m:: DenseNet ) = m. layers[1 ]
145
+ classifier (m:: DenseNet ) = m. layers[2 ]
0 commit comments