Exemplo n.º 1
0
 def build(self, input_shape):
     super().build(input_shape)
     if self.depthwise_quantizer:
         if "flip_ratio" in self._custom_metrics:
             self.depthwise_flip_ratio = lq_metrics.FlipRatio(
                 name=f"flip_ratio/{self.name}_depthwise",
             )
     if self.pointwise_quantizer:
         if "flip_ratio" in self._custom_metrics:
             self.pointwise_flip_ratio = lq_metrics.FlipRatio(
                 name=f"flip_ratio/{self.name}_pointwise",
             )
Exemplo n.º 2
0
 def build(self, input_shape):
     super().build(input_shape)
     if self.kernel_quantizer:
         if "flip_ratio" in self._custom_metrics:
             self.flip_ratio = lq_metrics.FlipRatio(
                 values_shape=self.kernel.shape, name=f"flip_ratio/{self.name}"
             )
Exemplo n.º 3
0
    def test_metric(self):
        mcv = metrics.FlipRatio([2])
        self.evaluate(tf.compat.v1.variables_initializer(mcv.variables))

        self.assertAllClose(0, mcv.result())
        self.assertAllClose(0, self.evaluate(mcv.total))
        self.assertAllClose(0, self.evaluate(mcv.count))

        self.evaluate(mcv.update_state([1, 1]))
        self.assertAllClose([1, 1], self.evaluate(mcv._previous_values))
        self.assertAllClose(0, self.evaluate(mcv.total))
        self.assertAllClose(1, self.evaluate(mcv.count))
        self.assertAllClose(0, mcv.result())

        self.evaluate(mcv.update_state([2, 2]))
        self.assertAllClose([2, 2], self.evaluate(mcv._previous_values))
        self.assertAllClose(1, self.evaluate(mcv.total))
        self.assertAllClose(2, self.evaluate(mcv.count))
        self.assertAllClose(1, mcv.result())

        self.evaluate(mcv.update_state([1, 2]))
        self.assertAllClose([1, 2], self.evaluate(mcv._previous_values))
        self.assertAllClose(1.5, self.evaluate(mcv.total))
        self.assertAllClose(3, self.evaluate(mcv.count))
        self.assertAllClose(1.5 / 2, mcv.result())
Exemplo n.º 4
0
 def build(self, input_shape):
     super().build(input_shape)
     if self.kernel_quantizer:
         self.quantized_latent_weights.append(self.kernel)
         self.quantizers.append(self.kernel_quantizer)
         if "flip_ratio" in self._custom_metrics and utils.supports_metrics():
             self.flip_ratio = metrics.FlipRatio(
                 values_shape=self.kernel.shape, name=f"{self.name}/flip_ratio"
             )
Exemplo n.º 5
0
 def build(self, input_shape):
     super().build(input_shape)
     if self.depthwise_quantizer:
         self.quantized_latent_weights.append(self.depthwise_kernel)
         self.quantizers.append(self.depthwise_quantizer)
         if "flip_ratio" in self._custom_metrics:
             self.depthwise_flip_ratio = metrics.FlipRatio(
                 values_shape=self.depthwise_kernel.shape,
                 name=f"{self.name}/depthwise_flip_ratio",
             )
     if self.pointwise_quantizer:
         self.quantized_latent_weights.append(self.pointwise_kernel)
         self.quantizers.append(self.pointwise_quantizer)
         if "flip_ratio" in self._custom_metrics:
             self.pointwise_flip_ratio = metrics.FlipRatio(
                 values_shape=self.pointwise_kernel.shape,
                 name=f"{self.name}/pointwise_flip_ratio",
             )
Exemplo n.º 6
0
 def build(self, input_shape):
     super().build(input_shape)
     if self.depthwise_quantizer:
         self.quantized_latent_weights.append(self.depthwise_kernel)
         self.quantizers.append(self.depthwise_quantizer)
         if "flip_ratio" in self._custom_metrics and utils.supports_metrics(
         ):
             self.depthwise_flip_ratio = lq_metrics.FlipRatio(
                 values_shape=self.depthwise_kernel.shape,
                 name=f"flip_ratio/{self.name}_depthwise",
             )
     if self.pointwise_quantizer:
         self.quantized_latent_weights.append(self.pointwise_kernel)
         self.quantizers.append(self.pointwise_quantizer)
         if "flip_ratio" in self._custom_metrics and utils.supports_metrics(
         ):
             self.pointwise_flip_ratio = lq_metrics.FlipRatio(
                 values_shape=self.pointwise_kernel.shape,
                 name=f"flip_ratio/{self.name}_pointwise",
             )
Exemplo n.º 7
0
def test_config():
    mcv = metrics.FlipRatio(values_dtype="int16", name="mcv", dtype=tf.float16)
    assert mcv.name == "mcv"
    assert mcv.stateful
    assert mcv.dtype == tf.float16
    assert mcv.values_dtype == tf.int16

    mcv2 = metrics.FlipRatio.from_config(mcv.get_config())
    assert mcv2.name == "mcv"
    assert mcv2.stateful
    assert mcv2.dtype == tf.float16
    assert mcv2.values_dtype == tf.int16
Exemplo n.º 8
0
    def test_config(self):
        mcv = metrics.FlipRatio(
            values_shape=[3, 3], values_dtype="int16", name="mcv", dtype=tf.float16
        )
        self.assertEqual(mcv.name, "mcv")
        self.assertTrue(mcv.stateful)
        self.assertEqual(mcv.dtype, tf.float16)
        self.assertEqual(mcv.values_dtype, tf.int16)
        self.assertEqual(mcv.values_shape, [3, 3])

        mcv2 = metrics.FlipRatio.from_config(mcv.get_config())
        self.assertEqual(mcv2.name, "mcv")
        self.assertTrue(mcv2.stateful)
        self.assertEqual(mcv2.dtype, tf.float16)
        self.assertEqual(mcv2.values_dtype, tf.int16)
        self.assertEqual(mcv2.values_shape, [3, 3])
Exemplo n.º 9
0
def test_metric_implicit_build(eager_mode):
    mcv = metrics.FlipRatio()

    mcv.update_state(np.array([1, 1]))
    assert all([1, 1] == mcv._previous_values.numpy())
    assert 0 == mcv.total.numpy()
    assert 1 == mcv.count.numpy()
    assert 0 == mcv.result().numpy()

    mcv.update_state(np.array([2, 2]))
    assert all([2, 2] == mcv._previous_values.numpy())
    assert 1 == mcv.total.numpy()
    assert 2 == mcv.count.numpy()
    assert 1 == mcv.result().numpy()

    mcv.update_state(np.array([1, 2]))
    assert all([1, 2] == mcv._previous_values.numpy())
    assert 1.5 == mcv.total.numpy()
    assert 3 == mcv.count.numpy()
    assert 1.5 / 2 == mcv.result().numpy()
Exemplo n.º 10
0
def test_metric_in_graph_mode(graph_mode):
    mcv = metrics.FlipRatio()
    mcv.build((2, ))

    new_state = tf.compat.v1.placeholder(dtype=tf.float32, shape=[2])
    update_state_op = mcv.update_state(new_state)
    metric_value = mcv.result()

    with tf.compat.v1.Session() as sess:
        sess.run(tf.compat.v1.variables_initializer(mcv.variables))

        sess.run(update_state_op, feed_dict={new_state: [1, 1]})
        sess.run(update_state_op, feed_dict={new_state: [2, 2]})
        sess.run(update_state_op, feed_dict={new_state: [1, 2]})

        previous, total, count, result = sess.run(
            [mcv._previous_values, mcv.total, mcv.count, metric_value])

    assert all([1, 2] == previous)
    assert 1.5 == total
    assert 3 == count
    assert 1.5 / 2 == result
Exemplo n.º 11
0
    def test_metric_in_graph_mode(self):
        mcv = metrics.FlipRatio([2])

        new_state = tf.compat.v1.placeholder(dtype=tf.float32, shape=[2])
        update_state_op = mcv.update_state(new_state)
        metric_value = mcv.result()

        with tf.compat.v1.Session() as sess:
            sess.run(tf.compat.v1.variables_initializer(mcv.variables))

            sess.run(update_state_op, feed_dict={new_state: [1, 1]})
            sess.run(update_state_op, feed_dict={new_state: [2, 2]})
            sess.run(update_state_op, feed_dict={new_state: [1, 2]})

            previous, total, count, result = sess.run(
                [mcv._previous_values, mcv.total, mcv.count, metric_value]
            )

        self.assertAllClose([1, 2], previous)
        self.assertAllClose(1.5, total)
        self.assertAllClose(3, count)
        self.assertAllClose(1.5 / 2, result)
Exemplo n.º 12
0
def test_metric_wrong_shape(eager_mode):
    mcv = metrics.FlipRatio()
    mcv.build((3, ))
    with pytest.raises((ValueError, tf.errors.InvalidArgumentError)):
        mcv.update_state(np.array([1, 1]))
Exemplo n.º 13
0
 def build(self, input_shape):
     if self._custom_metrics and "flip_ratio" in self._custom_metrics:
         self.flip_ratio = lq_metrics.FlipRatio(
             name=f"flip_ratio/{self.name}")