def test_mobile_conv2d(self): conv2d = movinet_layers.MobileConv2D( filters=3, kernel_size=(3, 3), strides=(1, 1), padding='same', kernel_initializer='ones', use_bias=False, use_depthwise=False, use_temporal=False, use_buffered_input=True, ) inputs = tf.ones([1, 2, 2, 2, 3]) predicted = conv2d(inputs) expected = tf.constant( [[[[[12., 12., 12.], [12., 12., 12.]], [[12., 12., 12.], [12., 12., 12.]]], [[[12., 12., 12.], [12., 12., 12.]], [[12., 12., 12.], [12., 12., 12.]]]]]) self.assertEqual(predicted.shape, expected.shape) self.assertAllClose(predicted, expected)
def test_mobile_conv2d_bn(self): batch_norm_op = tf.keras.layers.BatchNormalization( momentum=0.9, epsilon=1., name='bn') conv2d = movinet_layers.MobileConv2D( filters=3, kernel_size=(3, 3), strides=(1, 1), padding='same', kernel_initializer='ones', use_bias=False, use_depthwise=False, use_temporal=False, use_buffered_input=True, batch_norm_op=batch_norm_op, ) inputs = tf.ones([1, 2, 2, 2, 3]) predicted = conv2d(inputs) expected = tf.constant( [[[[[8.48528, 8.48528, 8.48528], [8.48528, 8.48528, 8.48528]], [[8.48528, 8.48528, 8.48528], [8.48528, 8.48528, 8.48528]]], [[[8.48528, 8.48528, 8.48528], [8.48528, 8.48528, 8.48528]], [[8.48528, 8.48528, 8.48528], [8.48528, 8.48528, 8.48528]]]]]) self.assertEqual(predicted.shape, expected.shape) self.assertAllClose(predicted, expected)
def test_mobile_conv2d_temporal(self): conv2d = movinet_layers.MobileConv2D( filters=3, kernel_size=(3, 1), strides=(1, 1), padding='causal', kernel_initializer='ones', use_bias=False, use_depthwise=True, use_temporal=True, use_buffered_input=True, ) inputs = tf.ones([1, 2, 2, 1, 3]) paddings = [[0, 0], [2, 0], [0, 0], [0, 0], [0, 0]] padded_inputs = tf.pad(inputs, paddings) predicted = conv2d(padded_inputs) expected = tf.constant( [[[[[1., 1., 1.]], [[1., 1., 1.]]], [[[2., 2., 2.]], [[2., 2., 2.]]]]]) self.assertEqual(predicted.shape, expected.shape) self.assertAllClose(predicted, expected)