Example #1
0
    def test_variance_scaling_initializer_dtypes(self):
        initializer0 = depthwise_initializers.DepthwiseVarianceScaling()
        tensor0 = initializer0([3, 3, 128, 1])
        self.assertEqual(tensor0.dtype, tf.float32)

        initializer1 = depthwise_initializers.DepthwiseVarianceScaling()
        tensor1 = initializer1([3, 3, 128, 1], dtype=tf.float64)
        self.assertEqual(tensor1.dtype, tf.float64)

        initializer2 = depthwise_initializers.DepthwiseVarianceScaling(
            dtype=tf.float64)
        tensor2 = initializer2([3, 3, 128, 1])
        self.assertEqual(tensor2.dtype, tf.float64)
  def test_depthwise_variance_scaling_end_to_end(self):
    # This is an end-to-end test for the VarianceScaling() class.
    # We apply he initializer to a tensor, and verify that the
    # distribution of outputs matches what we expect.
    input_tensor = tf.random.normal(
        shape=(32, 20, 20, 1024),
        mean=0.0,
        stddev=1)

    kernel_initializer = depthwise_initializers.DepthwiseVarianceScaling(
        scale=1.0,
        mode='fan_in',
        distribution='truncated_normal')
    kernel = tf.get_variable(
        name='kernel',
        initializer=kernel_initializer,
        shape=[5, 5, 1024, 1])
    output_tensor = tf.nn.depthwise_conv2d(
        input_tensor,
        kernel,
        strides=(1, 1, 1, 1),
        padding='VALID')

    self.evaluate(tf.global_variables_initializer())
    result = self.evaluate(output_tensor)
    self.assertNear(np.mean(result), 0.0, 0.05)
    self.assertNear(np.std(result), 1.0, 0.05)
Example #3
0
    def test_fan_avg_depth_multiplier_is_2(self):
        initializer = depthwise_initializers.DepthwiseVarianceScaling(
            scale=1.0, mode='fan_avg', distribution='untruncated_normal')
        tensor = initializer([3, 5, 1024, 2])

        value = self.evaluate(tensor)
        self.assertEqual(value.shape, (3, 5, 1024, 2))
        self.assertNear(np.mean(value), 0.0, 0.01)
        self.assertNear(np.std(value), 1.0 / math.sqrt(1.5 * 3 * 5), 0.01)
Example #4
0
    def test_variance_scaling_scale_is_2(self):
        initializer = depthwise_initializers.DepthwiseVarianceScaling(
            scale=2.0, mode='fan_in', distribution='untruncated_normal')
        tensor = initializer([3, 5, 1024, 1])

        value = self.evaluate(tensor)
        self.assertEqual(value.shape, (3, 5, 1024, 1))
        self.assertNear(np.mean(value), 0.0, 0.01)
        self.assertNear(np.std(value), math.sqrt(2.0 / (3 * 5)), 0.01)
Example #5
0
    def test_variance_scaling_uniform_fan_in(self):
        initializer = depthwise_initializers.DepthwiseVarianceScaling(
            scale=1.0, mode='fan_in', distribution='uniform')
        tensor = initializer([3, 5, 1024, 1])

        value = self.evaluate(tensor)
        self.assertEqual(value.shape, (3, 5, 1024, 1))
        self.assertNear(np.mean(value), 0.0, 0.01)
        self.assertNear(np.std(value), 1.0 / math.sqrt(3 * 5), 0.01)
Example #6
0
 def test_variance_scaling_seed(self):
     initializer = depthwise_initializers.DepthwiseVarianceScaling(seed=42)
     tensor1 = initializer([3, 3, 128, 1])
     tensor2 = initializer([3, 3, 128, 1])
     self.assertAllClose(self.evaluate(tensor1), self.evaluate(tensor2))