Beispiel #1
0
    def testCallOnPlaceHolder(self):
        inputs = array_ops.placeholder(dtype=dtypes.float32)
        dense = core_layers.Dense(4, name='my_dense')
        with self.assertRaises(ValueError):
            dense(inputs)

        inputs = array_ops.placeholder(dtype=dtypes.float32,
                                       shape=[None, None])
        dense = core_layers.Dense(4, name='my_dense')
        with self.assertRaises(ValueError):
            dense(inputs)

        inputs = array_ops.placeholder(dtype=dtypes.float32,
                                       shape=[None, None, None])
        dense = core_layers.Dense(4, name='my_dense')
        with self.assertRaises(ValueError):
            dense(inputs)

        inputs = array_ops.placeholder(dtype=dtypes.float32, shape=[None, 3])
        dense = core_layers.Dense(4, name='my_dense')
        dense(inputs)

        inputs = array_ops.placeholder(dtype=dtypes.float32,
                                       shape=[None, None, 3])
        dense = core_layers.Dense(4, name='my_dense')
        dense(inputs)
Beispiel #2
0
  def test_count_params(self):
    dense = core_layers.Dense(16)
    dense.build((None, 4))
    self.assertEqual(dense.count_params(), 16 * 4 + 16)

    dense = core_layers.Dense(16)
    with self.assertRaises(ValueError):
      dense.count_params()
Beispiel #3
0
    def testActivation(self):
        dense = core_layers.Dense(2, activation=nn_ops.relu, name='dense1')
        inputs = random_ops.random_uniform((5, 3), seed=1)
        outputs = dense(inputs)
        if not context.executing_eagerly():
            self.assertEqual(outputs.op.name, 'dense1/Relu')

        dense = core_layers.Dense(2, name='dense2')
        inputs = random_ops.random_uniform((5, 3), seed=1)
        outputs = dense(inputs)
        if not context.executing_eagerly():
            self.assertEqual(outputs.op.name, 'dense2/BiasAdd')
Beispiel #4
0
 def testVariableInput(self):
     with self.cached_session():
         v = variable_scope.get_variable(
             'X', initializer=init_ops.zeros_initializer(), shape=(1, 1))
         x = core_layers.Dense(1)(v)
         self.evaluate(variables.global_variables_initializer())
         self.assertAllEqual(x, [[0.0]])
Beispiel #5
0
    def testDenseProperties(self):
        dense = core_layers.Dense(2, activation=nn_ops.relu, name='my_dense')
        self.assertEqual(dense.units, 2)
        self.assertEqual(dense.activation, nn_ops.relu)
        self.assertEqual(dense.kernel_regularizer, None)
        self.assertEqual(dense.bias_regularizer, None)
        self.assertEqual(dense.activity_regularizer, None)
        self.assertEqual(dense.use_bias, True)

        # Test auto-naming
        dense = core_layers.Dense(2, activation=nn_ops.relu)
        dense.apply(random_ops.random_uniform((5, 2)))
        self.assertEqual(dense.name, 'dense_1')
        dense = core_layers.Dense(2, activation=nn_ops.relu)
        dense.apply(random_ops.random_uniform((5, 2)))
        self.assertEqual(dense.name, 'dense_2')
Beispiel #6
0
 def testBiasRegularizer(self):
   regularizer = lambda x: math_ops.reduce_sum(x) * 1e-3
   dense = core_layers.Dense(2, name='my_dense', bias_regularizer=regularizer)
   inputs = random_ops.random_uniform((5, 3), seed=1)
   _ = dense(inputs)
   loss_keys = ops.get_collection(ops.GraphKeys.REGULARIZATION_LOSSES)
   self.assertEqual(len(loss_keys), 1)
   self.evaluate([v.initializer for v in dense.variables])
   self.assertAllEqual(self.evaluate(dense.losses), self.evaluate(loss_keys))
Beispiel #7
0
 def testActivityRegularizer(self):
   regularizer = lambda x: math_ops.reduce_sum(x) * 1e-3
   dense = core_layers.Dense(
       2, name='my_dense', activity_regularizer=regularizer)
   inputs = random_ops.random_uniform((5, 3), seed=1)
   _ = dense(inputs)
   loss_keys = ops.get_collection(ops.GraphKeys.REGULARIZATION_LOSSES)
   self.assertEqual(len(loss_keys), 1)
   self.assertListEqual(dense.losses, loss_keys)
Beispiel #8
0
 def testConstraints(self):
     k_constraint = lambda x: x / math_ops.reduce_sum(x)
     b_constraint = lambda x: x / math_ops.reduce_max(x)
     dense = core_layers.Dense(2,
                               kernel_constraint=k_constraint,
                               bias_constraint=b_constraint)
     inputs = random_ops.random_uniform((5, 3), seed=1)
     dense(inputs)
     self.assertEqual(dense.kernel_constraint, k_constraint)
     self.assertEqual(dense.bias_constraint, b_constraint)
Beispiel #9
0
 def testNonTrainable(self):
     dense = core_layers.Dense(2, trainable=False, name='my_dense')
     inputs = random_ops.random_uniform((5, 2), seed=1)
     _ = dense(inputs)
     self.assertListEqual(dense.variables, [dense.kernel, dense.bias])
     self.assertListEqual(dense.non_trainable_variables,
                          [dense.kernel, dense.bias])
     self.assertListEqual(dense.trainable_variables, [])
     if not context.executing_eagerly():
         self.assertEqual(
             len(ops.get_collection(ops.GraphKeys.TRAINABLE_VARIABLES)), 0)
Beispiel #10
0
    def testOutputShape(self):
        dense = core_layers.Dense(7, activation=nn_ops.relu, name='my_dense')
        inputs = random_ops.random_uniform((5, 3), seed=1)
        outputs = dense.apply(inputs)
        self.assertEqual(outputs.get_shape().as_list(), [5, 7])

        inputs = random_ops.random_uniform((5, 2, 3), seed=1)
        outputs = dense(inputs)
        self.assertEqual(outputs.get_shape().as_list(), [5, 2, 7])

        inputs = random_ops.random_uniform((1, 2, 4, 3), seed=1)
        outputs = dense.apply(inputs)
        self.assertEqual(outputs.get_shape().as_list(), [1, 2, 4, 7])
Beispiel #11
0
 def testCall(self):
     dense = core_layers.Dense(2, activation=nn_ops.relu, name='my_dense')
     inputs = random_ops.random_uniform((5, 4), seed=1)
     outputs = dense(inputs)
     self.assertListEqual([5, 2], outputs.get_shape().as_list())
     self.assertListEqual(dense.variables, [dense.kernel, dense.bias])
     self.assertListEqual(dense.trainable_variables,
                          [dense.kernel, dense.bias])
     self.assertListEqual(dense.non_trainable_variables, [])
     if not context.executing_eagerly():
         self.assertEqual(
             len(ops.get_collection(ops.GraphKeys.TRAINABLE_VARIABLES)), 2)
     self.assertEqual(dense.kernel.name, 'my_dense/kernel:0')
     self.assertEqual(dense.bias.name, 'my_dense/bias:0')
Beispiel #12
0
 def testComputeOutputShape(self):
     dense = core_layers.Dense(2, activation=nn_ops.relu, name='dense1')
     ts = tensor_shape.TensorShape
     # pylint: disable=protected-access
     with self.assertRaises(ValueError):
         dense.compute_output_shape(ts(None))
     with self.assertRaises(ValueError):
         dense.compute_output_shape(ts([]))
     with self.assertRaises(ValueError):
         dense.compute_output_shape(ts([1]))
     self.assertEqual([None, 2],
                      dense.compute_output_shape((None, 3)).as_list())
     self.assertEqual([None, 2],
                      dense.compute_output_shape(ts([None, 3])).as_list())
     self.assertEqual([None, 4, 2],
                      dense.compute_output_shape(ts([None, 4,
                                                     3])).as_list())
Beispiel #13
0
 def testCallTensorDot(self):
     dense = core_layers.Dense(2, activation=nn_ops.relu, name='my_dense')
     inputs = random_ops.random_uniform((5, 4, 3), seed=1)
     outputs = dense(inputs)
     self.assertListEqual([5, 4, 2], outputs.get_shape().as_list())
Beispiel #14
0
 def testNoEagerLeak(self):
     # Tests that repeatedly constructing and building a Layer does not leak
     # Python objects.
     inputs = random_ops.random_uniform((5, 4), seed=1)
     core_layers.Dense(5)(inputs)
     core_layers.Dense(2, activation=nn_ops.relu, name='my_dense')(inputs)