AudioCapsDetectorV2 / custom_layers.py
syahh-coder
Deploy Capst
368e1c4
import tensorflow as tf
class AdaptiveAvgPool1D(tf.keras.layers.Layer):
def __init__(self, output_size, **kwargs):
super().__init__(**kwargs)
self.output_size = output_size
def call(self, inputs):
# inputs: (batch, time, channels)
x = tf.transpose(
inputs,
[0, 2, 1]
)
# Shape: (batch, channels, time, 1)
x = tf.expand_dims(
x,
axis=-1
)
x = tf.image.resize(
x,
size=[
tf.shape(x)[1],
self.output_size
],
method="bilinear"
)
# Shape: (batch, channels, output_size)
x = tf.squeeze(
x,
axis=-1
)
# Shape: (batch, output_size, channels)
x = tf.transpose(
x,
[0, 2, 1]
)
return x
def get_config(self):
config = super().get_config()
config.update({
"output_size": self.output_size
})
return config
class AdaptiveAvgPool2D(tf.keras.layers.Layer):
def __init__(self, output_size, **kwargs):
super().__init__(**kwargs)
self.output_size = output_size
def call(self, inputs):
# inputs: (batch, height, width, channels)
return tf.image.resize(
inputs,
size=self.output_size,
method="bilinear"
)
def get_config(self):
config = super().get_config()
config.update({
"output_size": self.output_size
})
return config