コード例 #1
0
ファイル: test_pooling.py プロジェクト: wjianxz/neupy
    def test_upscale_layer_exceptions(self):
        with self.assertRaises(LayerConnectionError):
            # Input shape should be 4 dimensional
            layers.join(layers.Input(10), layers.Upscale((2, 2)))

        invalid_scales = [-1, (2, 0), (-4, 1), (3, 3, 3)]
        for invalid_scale in invalid_scales:
            with self.assertRaises(ValueError):
                layers.Upscale(invalid_scale)
コード例 #2
0
    def test_upscale_layer_exceptions(self):
        upscale_layer = layers.Upscale((2, 2))
        with self.assertRaises(LayerConnectionError):
            # Input shape should have 3 feature dimensions
            # (and +1 for the batch)
            layers.Input(10) > upscale_layer

        invalid_scales = [-1, (2, 0), (-4, 1), (3, 3, 3)]
        for invalid_scale in invalid_scales:
            with self.assertRaises(ValueError):
                layers.Upscale(invalid_scale)
コード例 #3
0
    def test_upscale_layer(self):
        input_value = np.array([
            [1, 2, 3, 4],
            [5, 6, 7, 8],
        ]).reshape((1, 1, 2, 4))
        expected_output = np.array([
            [1, 1, 2, 2, 3, 3, 4, 4],
            [1, 1, 2, 2, 3, 3, 4, 4],
            [1, 1, 2, 2, 3, 3, 4, 4],
            [5, 5, 6, 6, 7, 7, 8, 8],
            [5, 5, 6, 6, 7, 7, 8, 8],
            [5, 5, 6, 6, 7, 7, 8, 8],
        ]).reshape((1, 1, 6, 8))

        upscale_layer = layers.Upscale((3, 2))
        self.assertEqual(upscale_layer.output_shape, None)

        layers.Input((1, 2, 4)) > upscale_layer

        x = T.tensor4('x')
        actual_output = upscale_layer.output(x)
        actual_output = actual_output.eval({x: asfloat(input_value)})

        np.testing.assert_array_almost_equal(
            asfloat(expected_output),
            actual_output
        )
コード例 #4
0
ファイル: test_pooling.py プロジェクト: wjianxz/neupy
    def test_upscale_late_shape_init(self):
        network = layers.join(
            layers.Upscale((2, 2)),
            layers.Softmax(),
        )
        self.assertShapesEqual(network.output_shape, (None, None, None, None))

        network = layers.join(layers.Input((10, 10, 5)), network)
        self.assertShapesEqual(network.output_shape, (None, 20, 20, 5))
コード例 #5
0
    def test_upscale_layer_shape(self):
        Case = namedtuple("Case", "scale expected_shape")
        testcases = (
            Case(scale=(2, 2), expected_shape=(1, 28, 28)),
            Case(scale=(2, 1), expected_shape=(1, 28, 14)),
            Case(scale=(1, 2), expected_shape=(1, 14, 28)),
            Case(scale=(1, 1), expected_shape=(1, 14, 14)),
            Case(scale=(1, 10), expected_shape=(1, 14, 140)),
        )

        for testcase in testcases:
            upscale_layer = layers.Upscale(testcase.scale)
            connection = layers.Input((1, 14, 14)) > upscale_layer

            self.assertEqual(upscale_layer.output_shape,
                             testcase.expected_shape,
                             msg="scale: {}".format(testcase.scale))
コード例 #6
0
ファイル: test_pooling.py プロジェクト: wjianxz/neupy
    def test_upscale_layer_shape(self):
        Case = namedtuple("Case", "scale expected_shape")
        testcases = (
            Case(scale=(2, 2), expected_shape=(None, 28, 28, 1)),
            Case(scale=(2, 1), expected_shape=(None, 28, 14, 1)),
            Case(scale=(1, 2), expected_shape=(None, 14, 28, 1)),
            Case(scale=(1, 1), expected_shape=(None, 14, 14, 1)),
            Case(scale=(1, 10), expected_shape=(None, 14, 140, 1)),
        )

        for testcase in testcases:
            network = layers.join(
                layers.Input((14, 14, 1)),
                layers.Upscale(testcase.scale),
            )

            self.assertShapesEqual(network.output_shape,
                                   testcase.expected_shape,
                                   msg="scale: {}".format(testcase.scale))
コード例 #7
0
ファイル: test_pooling.py プロジェクト: wjianxz/neupy
    def test_upscale_layer(self):
        input_value = np.array([
            [1, 2, 3, 4],
            [5, 6, 7, 8],
        ]).reshape((1, 2, 4, 1))
        expected_output = np.array([
            [1, 1, 2, 2, 3, 3, 4, 4],
            [1, 1, 2, 2, 3, 3, 4, 4],
            [1, 1, 2, 2, 3, 3, 4, 4],
            [5, 5, 6, 6, 7, 7, 8, 8],
            [5, 5, 6, 6, 7, 7, 8, 8],
            [5, 5, 6, 6, 7, 7, 8, 8],
        ]).reshape((1, 6, 8, 1))

        upscale_layer = layers.Upscale((3, 2))
        network = layers.join(layers.Input((2, 4, 1)), upscale_layer)
        self.assertShapesEqual(network.output_shape, (None, 6, 8, 1))

        actual_output = self.eval(network.output(asfloat(input_value)))
        np.testing.assert_array_almost_equal(asfloat(expected_output),
                                             actual_output)
コード例 #8
0
conv_autoencoder = algorithms.Momentum(
    [
        layers.Input((1, 28, 28)),
        layers.Convolution((16, 3, 3)) > layers.Relu(),
        layers.Convolution((16, 3, 3)) > layers.Relu(),
        layers.MaxPooling((2, 2)),
        layers.Convolution((32, 3, 3)) > layers.Relu(),
        layers.MaxPooling((2, 2)),
        layers.Reshape(),
        layers.Relu(128),
        layers.Relu(16),
        layers.Relu(128),
        layers.Relu(800),
        layers.Reshape((32, 5, 5)),
        layers.Upscale((2, 2)),
        layers.Convolution((16, 3, 3), border_mode='full') > layers.Relu(),
        layers.Upscale((2, 2)),
        layers.Convolution((16, 3, 3), border_mode='full') > layers.Relu(),
        layers.Convolution((1, 3, 3), border_mode='full') > layers.Sigmoid(),
        layers.Reshape(),
    ],
    verbose=True,
    step=0.1,
    momentum=0.99,
    shuffle_data=True,
    batch_size=128,
    error='rmse',
)
conv_autoencoder.architecture()
conv_autoencoder.train(x_train_4d, x_train, x_test_4d, x_test, epochs=100)
コード例 #9
0
ファイル: test_pooling.py プロジェクト: wjianxz/neupy
 def test_global_pooling_repr(self):
     self.assertEqual("Upscale((2, 3), name='upscale-1')",
                      str(layers.Upscale((2, 3))))
コード例 #10
0
    def test_upscale_layer_with_one_by_one_scale(self):
        upscale_layer = layers.Upscale((1, 1))

        x = np.ones((2, 3))
        self.assertIs(x, upscale_layer.output(x))