residual convolution bottleneck block Args: inputs: input to the bottleneck residual block filters: number of filters kernel_size: kernel size used in convolution temp: used in convolution relu: if relu is active or not. Returns: out: out
(inputs,
filters=64,
kernel_size=(3, 3),
strides=(1, 1),
temp=3,
relu=False)
| 78 | return out |
| 79 | |
| 80 | def residual_bottleneck(inputs, |
| 81 | filters=64, |
| 82 | kernel_size=(3, 3), |
| 83 | strides=(1, 1), |
| 84 | temp=3, |
| 85 | relu=False): |
| 86 | """ |
| 87 | residual convolution bottleneck block |
| 88 | Args: |
| 89 | inputs: input to the bottleneck residual block |
| 90 | filters: number of filters |
| 91 | kernel_size: kernel size used in convolution |
| 92 | temp: used in convolution |
| 93 | relu: if relu is active or not. |
| 94 | Returns: |
| 95 | out: output from residual convolution bottleneck block |
| 96 | """ |
| 97 | tchannel = tf.keras.backend.int_shape(inputs)[-1] * temp |
| 98 | out = conv_block(inputs, |
| 99 | conv_type="conv", |
| 100 | filters=tchannel, |
| 101 | kernel_size=(1, 1)) |
| 102 | out = tf.keras.layers.DepthwiseConv2D(kernel_size=kernel_size, |
| 103 | depth_multiplier=1, |
| 104 | strides=strides, |
| 105 | padding="same")(out) |
| 106 | out = tf.keras.layers.BatchNormalization()(out) |
| 107 | out = tf.keras.activations.relu(out) |
| 108 | out = conv_block(out, |
| 109 | conv_type="conv", |
| 110 | filters=filters, |
| 111 | kernel_size=(1, 1), |
| 112 | padding="same", |
| 113 | relu=False |
| 114 | ) |
| 115 | if relu: |
| 116 | out = tf.keras.layers.add([out, inputs]) |
| 117 | return out |
| 118 | |
| 119 | def bottleneck_block(inputs, |
| 120 | filters=64, |
no test coverage detected