コード例 #1
0
    def setUp(self):
        RnnClass = self.get_mdrnn_class()
        self.rnn2d = RnnClass(units=1,
                              input_shape=(None, None, 1),
                              kernel_initializer=initializers.Identity(),
                              recurrent_initializer=initializers.Identity(1),
                              bias_initializer=initializers.Constant(-1),
                              return_sequences=True,
                              activation=None)

        self.x = np.arange(6).reshape((1, 2, 3, 1))
        self.initial_state = [tf.ones(shape=(1, 1)), tf.ones(shape=(1, 1))]
    def test_result(self):
        rnn2d = MDRNN(units=1, input_shape=(None, None, 1),
                      kernel_initializer=initializers.Identity(),
                      recurrent_initializer=initializers.Identity(1),
                      bias_initializer=initializers.Constant(-1),
                      return_sequences=True,
                      activation=None)

        x = np.arange(6).reshape((1, 2, 3, 1))

        actual = rnn2d.call(x)

        desired = np.array([
            [-1, -1, 0],
            [1, 3, 7]
        ]).reshape((1, 2, 3, 1))

        np.testing.assert_almost_equal(desired, actual.numpy(), 6)
    def test_2drnn_output_when_providing_initial_state(self):
        rnn2d = MDRNN(units=1, input_shape=(None, None, 1),
                      kernel_initializer=initializers.Identity(),
                      recurrent_initializer=initializers.Identity(1),
                      bias_initializer=initializers.Constant(-1),
                      return_sequences=True,
                      activation=None)

        x = np.arange(6).reshape((1, 2, 3, 1))

        initial_state = [tf.ones(shape=(1, 1)), tf.ones(shape=(1, 1))]

        actual = rnn2d.call(x, initial_state=initial_state)
        desired = np.array([
            [1, 1, 2],
            [3, 7, 13]
        ]).reshape((1, 2, 3, 1))
        np.testing.assert_almost_equal(desired, actual.numpy(), 6)
コード例 #4
0
    def test_result_after_running_rnn_on_3d_input(self):
        rnn3d = MDRNN(units=1,
                      input_shape=(None, None, None, 1),
                      kernel_initializer=initializers.Identity(),
                      recurrent_initializer=initializers.Identity(1),
                      bias_initializer=initializers.Constant(1),
                      return_sequences=True,
                      return_state=True,
                      activation=None)

        x = np.arange(2 * 2 * 2).reshape((1, 2, 2, 2, 1))

        outputs, state = rnn3d.call(x)

        desired = np.array([[[1, 3], [4, 11]], [[6, 15], [17, 51]]]).reshape(
            (1, 2, 2, 2, 1))

        np.testing.assert_almost_equal(desired, outputs.numpy(), 6)

        desired_state = desired[:, -1, -1, -1]
        np.testing.assert_almost_equal(desired_state, state.numpy(), 6)
コード例 #5
0
    def test_recurrent_weights_are_working(self):
        mdrnn = self.create_default_mdrnn(
            kernel_initializer=initializers.Zeros(),
            recurrent_initializer=initializers.Identity(),
            bias_initializer=initializers.Zeros(),
            activation=None
        )

        initial_state = np.array([1, 2, 3]).reshape(1, -1)
        initial_state = tf.constant(initial_state, dtype=tf.float32)

        expected_result = np.array([[1, 2, 3]])
        self.assert_model_predicts_correct_result(expected_result, mdrnn, self.x,
                                                  initial_state=initial_state)
コード例 #6
0
    def test_kernel_weights_are_working(self):
        mdrnn = self.create_default_mdrnn(
            kernel_initializer=initializers.Identity(),
            recurrent_initializer=initializers.Zeros(),
            bias_initializer=initializers.Zeros(),
            activation=None,
            return_sequences=True
        )

        x1 = np.array([1, 2, 3])
        x = np.array([[x1]])

        a = mdrnn.call(x)

        expected_result = x.copy()
        np.testing.assert_almost_equal(expected_result, a.numpy(), 8)