Skip to contents

Resolves the entry/middle(x8)/exit flow into concrete layers, shapes and parameter counts; separable convs cost k*k*c_in + c_in*c_out, batch norm 2\*C trainable + 2\*C non-trainable per layer.

Usage

morie_geron_xception(n_classes = 1000, in_channels = 3, input_size = 299)

Arguments

n_classes, in_channels, input_size

As in Python original.

Value

list with layers, total_params, trainable_params, non_trainable_params, weight_params, bn_channels, n_separable, separable_params_total, standard_conv_params, savings_ratio, output_shape, final_map, estimate, n, method.

Examples

morie_geron_xception()
#> $layers
#> $layers[[1]]
#> $layers[[1]]$kind
#> [1] "conv3x3/s2"
#> 
#> $layers[[1]]$params
#> [1] 864
#> 
#> $layers[[1]]$channels
#> [1] 32
#> 
#> $layers[[1]]$out
#> [1] 149
#> 
#> 
#> $layers[[2]]
#> $layers[[2]]$kind
#> [1] "conv3x3"
#> 
#> $layers[[2]]$params
#> [1] 18432
#> 
#> $layers[[2]]$channels
#> [1] 64
#> 
#> $layers[[2]]$out
#> [1] 149
#> 
#> 
#> $layers[[3]]
#> $layers[[3]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[3]]$params
#> [1] 8768
#> 
#> $layers[[3]]$channels
#> [1] 128
#> 
#> $layers[[3]]$out
#> [1] 149
#> 
#> 
#> $layers[[4]]
#> $layers[[4]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[4]]$params
#> [1] 17536
#> 
#> $layers[[4]]$channels
#> [1] 128
#> 
#> $layers[[4]]$out
#> [1] 149
#> 
#> 
#> $layers[[5]]
#> $layers[[5]]$kind
#> [1] "maxpool3x3/s2"
#> 
#> $layers[[5]]$params
#> [1] 0
#> 
#> $layers[[5]]$channels
#> [1] 128
#> 
#> $layers[[5]]$out
#> [1] 75
#> 
#> 
#> $layers[[6]]
#> $layers[[6]]$kind
#> [1] "conv1x1 shortcut/s2"
#> 
#> $layers[[6]]$params
#> [1] 8192
#> 
#> $layers[[6]]$channels
#> [1] 128
#> 
#> $layers[[6]]$out
#> [1] 75
#> 
#> 
#> $layers[[7]]
#> $layers[[7]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[7]]$params
#> [1] 33920
#> 
#> $layers[[7]]$channels
#> [1] 256
#> 
#> $layers[[7]]$out
#> [1] 75
#> 
#> 
#> $layers[[8]]
#> $layers[[8]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[8]]$params
#> [1] 67840
#> 
#> $layers[[8]]$channels
#> [1] 256
#> 
#> $layers[[8]]$out
#> [1] 75
#> 
#> 
#> $layers[[9]]
#> $layers[[9]]$kind
#> [1] "maxpool3x3/s2"
#> 
#> $layers[[9]]$params
#> [1] 0
#> 
#> $layers[[9]]$channels
#> [1] 256
#> 
#> $layers[[9]]$out
#> [1] 38
#> 
#> 
#> $layers[[10]]
#> $layers[[10]]$kind
#> [1] "conv1x1 shortcut/s2"
#> 
#> $layers[[10]]$params
#> [1] 32768
#> 
#> $layers[[10]]$channels
#> [1] 256
#> 
#> $layers[[10]]$out
#> [1] 38
#> 
#> 
#> $layers[[11]]
#> $layers[[11]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[11]]$params
#> [1] 188672
#> 
#> $layers[[11]]$channels
#> [1] 728
#> 
#> $layers[[11]]$out
#> [1] 38
#> 
#> 
#> $layers[[12]]
#> $layers[[12]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[12]]$params
#> [1] 536536
#> 
#> $layers[[12]]$channels
#> [1] 728
#> 
#> $layers[[12]]$out
#> [1] 38
#> 
#> 
#> $layers[[13]]
#> $layers[[13]]$kind
#> [1] "maxpool3x3/s2"
#> 
#> $layers[[13]]$params
#> [1] 0
#> 
#> $layers[[13]]$channels
#> [1] 728
#> 
#> $layers[[13]]$out
#> [1] 19
#> 
#> 
#> $layers[[14]]
#> $layers[[14]]$kind
#> [1] "conv1x1 shortcut/s2"
#> 
#> $layers[[14]]$params
#> [1] 186368
#> 
#> $layers[[14]]$channels
#> [1] 728
#> 
#> $layers[[14]]$out
#> [1] 19
#> 
#> 
#> $layers[[15]]
#> $layers[[15]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[15]]$params
#> [1] 536536
#> 
#> $layers[[15]]$channels
#> [1] 728
#> 
#> $layers[[15]]$out
#> [1] 19
#> 
#> 
#> $layers[[16]]
#> $layers[[16]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[16]]$params
#> [1] 536536
#> 
#> $layers[[16]]$channels
#> [1] 728
#> 
#> $layers[[16]]$out
#> [1] 19
#> 
#> 
#> $layers[[17]]
#> $layers[[17]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[17]]$params
#> [1] 536536
#> 
#> $layers[[17]]$channels
#> [1] 728
#> 
#> $layers[[17]]$out
#> [1] 19
#> 
#> 
#> $layers[[18]]
#> $layers[[18]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[18]]$params
#> [1] 536536
#> 
#> $layers[[18]]$channels
#> [1] 728
#> 
#> $layers[[18]]$out
#> [1] 19
#> 
#> 
#> $layers[[19]]
#> $layers[[19]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[19]]$params
#> [1] 536536
#> 
#> $layers[[19]]$channels
#> [1] 728
#> 
#> $layers[[19]]$out
#> [1] 19
#> 
#> 
#> $layers[[20]]
#> $layers[[20]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[20]]$params
#> [1] 536536
#> 
#> $layers[[20]]$channels
#> [1] 728
#> 
#> $layers[[20]]$out
#> [1] 19
#> 
#> 
#> $layers[[21]]
#> $layers[[21]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[21]]$params
#> [1] 536536
#> 
#> $layers[[21]]$channels
#> [1] 728
#> 
#> $layers[[21]]$out
#> [1] 19
#> 
#> 
#> $layers[[22]]
#> $layers[[22]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[22]]$params
#> [1] 536536
#> 
#> $layers[[22]]$channels
#> [1] 728
#> 
#> $layers[[22]]$out
#> [1] 19
#> 
#> 
#> $layers[[23]]
#> $layers[[23]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[23]]$params
#> [1] 536536
#> 
#> $layers[[23]]$channels
#> [1] 728
#> 
#> $layers[[23]]$out
#> [1] 19
#> 
#> 
#> $layers[[24]]
#> $layers[[24]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[24]]$params
#> [1] 536536
#> 
#> $layers[[24]]$channels
#> [1] 728
#> 
#> $layers[[24]]$out
#> [1] 19
#> 
#> 
#> $layers[[25]]
#> $layers[[25]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[25]]$params
#> [1] 536536
#> 
#> $layers[[25]]$channels
#> [1] 728
#> 
#> $layers[[25]]$out
#> [1] 19
#> 
#> 
#> $layers[[26]]
#> $layers[[26]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[26]]$params
#> [1] 536536
#> 
#> $layers[[26]]$channels
#> [1] 728
#> 
#> $layers[[26]]$out
#> [1] 19
#> 
#> 
#> $layers[[27]]
#> $layers[[27]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[27]]$params
#> [1] 536536
#> 
#> $layers[[27]]$channels
#> [1] 728
#> 
#> $layers[[27]]$out
#> [1] 19
#> 
#> 
#> $layers[[28]]
#> $layers[[28]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[28]]$params
#> [1] 536536
#> 
#> $layers[[28]]$channels
#> [1] 728
#> 
#> $layers[[28]]$out
#> [1] 19
#> 
#> 
#> $layers[[29]]
#> $layers[[29]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[29]]$params
#> [1] 536536
#> 
#> $layers[[29]]$channels
#> [1] 728
#> 
#> $layers[[29]]$out
#> [1] 19
#> 
#> 
#> $layers[[30]]
#> $layers[[30]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[30]]$params
#> [1] 536536
#> 
#> $layers[[30]]$channels
#> [1] 728
#> 
#> $layers[[30]]$out
#> [1] 19
#> 
#> 
#> $layers[[31]]
#> $layers[[31]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[31]]$params
#> [1] 536536
#> 
#> $layers[[31]]$channels
#> [1] 728
#> 
#> $layers[[31]]$out
#> [1] 19
#> 
#> 
#> $layers[[32]]
#> $layers[[32]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[32]]$params
#> [1] 536536
#> 
#> $layers[[32]]$channels
#> [1] 728
#> 
#> $layers[[32]]$out
#> [1] 19
#> 
#> 
#> $layers[[33]]
#> $layers[[33]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[33]]$params
#> [1] 536536
#> 
#> $layers[[33]]$channels
#> [1] 728
#> 
#> $layers[[33]]$out
#> [1] 19
#> 
#> 
#> $layers[[34]]
#> $layers[[34]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[34]]$params
#> [1] 536536
#> 
#> $layers[[34]]$channels
#> [1] 728
#> 
#> $layers[[34]]$out
#> [1] 19
#> 
#> 
#> $layers[[35]]
#> $layers[[35]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[35]]$params
#> [1] 536536
#> 
#> $layers[[35]]$channels
#> [1] 728
#> 
#> $layers[[35]]$out
#> [1] 19
#> 
#> 
#> $layers[[36]]
#> $layers[[36]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[36]]$params
#> [1] 536536
#> 
#> $layers[[36]]$channels
#> [1] 728
#> 
#> $layers[[36]]$out
#> [1] 19
#> 
#> 
#> $layers[[37]]
#> $layers[[37]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[37]]$params
#> [1] 536536
#> 
#> $layers[[37]]$channels
#> [1] 728
#> 
#> $layers[[37]]$out
#> [1] 19
#> 
#> 
#> $layers[[38]]
#> $layers[[38]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[38]]$params
#> [1] 536536
#> 
#> $layers[[38]]$channels
#> [1] 728
#> 
#> $layers[[38]]$out
#> [1] 19
#> 
#> 
#> $layers[[39]]
#> $layers[[39]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[39]]$params
#> [1] 536536
#> 
#> $layers[[39]]$channels
#> [1] 728
#> 
#> $layers[[39]]$out
#> [1] 19
#> 
#> 
#> $layers[[40]]
#> $layers[[40]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[40]]$params
#> [1] 752024
#> 
#> $layers[[40]]$channels
#> [1] 1024
#> 
#> $layers[[40]]$out
#> [1] 19
#> 
#> 
#> $layers[[41]]
#> $layers[[41]]$kind
#> [1] "maxpool3x3/s2"
#> 
#> $layers[[41]]$params
#> [1] 0
#> 
#> $layers[[41]]$channels
#> [1] 1024
#> 
#> $layers[[41]]$out
#> [1] 10
#> 
#> 
#> $layers[[42]]
#> $layers[[42]]$kind
#> [1] "conv1x1 shortcut/s2"
#> 
#> $layers[[42]]$params
#> [1] 745472
#> 
#> $layers[[42]]$channels
#> [1] 1024
#> 
#> $layers[[42]]$out
#> [1] 10
#> 
#> 
#> $layers[[43]]
#> $layers[[43]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[43]]$params
#> [1] 1582080
#> 
#> $layers[[43]]$channels
#> [1] 1536
#> 
#> $layers[[43]]$out
#> [1] 10
#> 
#> 
#> $layers[[44]]
#> $layers[[44]]$kind
#> [1] "separable3x3"
#> 
#> $layers[[44]]$params
#> [1] 3159552
#> 
#> $layers[[44]]$channels
#> [1] 2048
#> 
#> $layers[[44]]$out
#> [1] 10
#> 
#> 
#> $layers[[45]]
#> $layers[[45]]$kind
#> [1] "global_avg_pool"
#> 
#> $layers[[45]]$params
#> [1] 0
#> 
#> $layers[[45]]$channels
#> [1] 2048
#> 
#> $layers[[45]]$out
#> [1] 10
#> 
#> 
#> $layers[[46]]
#> $layers[[46]]$kind
#> [1] "fc"
#> 
#> $layers[[46]]$params
#> [1] 2049000
#> 
#> $layers[[46]]$channels
#> [1] 1000
#> 
#> $layers[[46]]$out
#> [1] 1
#> 
#> 
#> 
#> $total_params
#> [1] 22910480
#> 
#> $trainable_params
#> [1] 22855952
#> 
#> $non_trainable_params
#> [1] 54528
#> 
#> $weight_params
#> [1] 22801424
#> 
#> $bn_channels
#> [1] 27264
#> 
#> $n_separable
#> [1] 34
#> 
#> $separable_params_total
#> [1] 19760328
#> 
#> $standard_conv_params
#> [1] 175976064
#> 
#> $savings_ratio
#> [1] 0.1122899
#> 
#> $output_shape
#> [1] 1000
#> 
#> $final_map
#> [1]   10   10 2048
#> 
#> $estimate
#> [1] 22855952
#> 
#> $n
#> [1] 46
#> 
#> $method
#> [1] "Xception resolved to concrete layers, shapes and parameter counts"
#>