@@ -23,20 +23,23 @@ Create an EfficientNet model ([reference](https://arxiv.org/abs/1905.11946v5)).
23
23
function efficientnet (scalings, block_config;
24
24
inchannels = 3 , nclasses = 1000 , max_width = 1280 )
25
25
wscale, dscale = scalings
26
- out_channels = _round_channels (32 , 8 )
26
+ scalew (w) = wscale ≈ 1 ? w : ceil (Int64, wscale * w)
27
+ scaled (d) = dscale ≈ 1 ? d : ceil (Int64, dscale * d)
28
+
29
+ out_channels = _round_channels (scalew (32 ), 8 )
27
30
stem = conv_bn ((3 , 3 ), inchannels, out_channels, swish;
28
31
bias = false , stride = 2 , pad = SamePad ())
29
32
30
33
blocks = []
31
34
for (n, k, s, e, i, o) in block_config
32
- in_channels = _round_channels (i , 8 )
33
- out_channels = _round_channels (wscale ≈ 1 ? o : ceil (Int64, wscale * o), 8 )
34
- repeat = dscale ≈ 1 ? n : ceil (Int64, dscale * n)
35
+ in_channels = _round_channels (scalew (i) , 8 )
36
+ out_channels = _round_channels (scalew ( o), 8 )
37
+ repeats = scaled ( n)
35
38
36
39
push! (blocks,
37
40
invertedresidual (k, in_channels, in_channels * e, out_channels, swish;
38
41
stride = s, reduction = 4 ))
39
- for _ in 1 : (repeat - 1 )
42
+ for _ in 1 : (repeats - 1 )
40
43
push! (blocks,
41
44
invertedresidual (k, out_channels, out_channels * e, out_channels, swish;
42
45
stride = 1 , reduction = 4 ))
0 commit comments