Ejemplo n.º 1
0
    def test_submodel_multiple_inputs_in_middle_network(self):
        inputs3 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_3')
        inputs4 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_4')

        inputs1 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_1')
        # inputs2 = InputLayer(1, 28, 28, scale = 1.0 / 255, name = 'InputLayer_2')
        dense1 = Dense(10, name='d1')(inputs1)
        dense2 = Dense(12, name='d2')(dense1)
        dense3 = Dense(n=128, name='d3')(dense2)
        # model_dense = Model(self.s, inputs=inputs1, outputs= dense3)

        inputs2 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_2')
        # inputs2 = InputLayer(1, 28, 28, scale = 1.0 / 255, name = 'InputLayer_2')
        dense4 = Dense(10, name='d4')(inputs2)
        dense5 = Dense(12, name='d5')(dense4)
        dense6 = Dense(n=128, name='d6')(dense5)
        dense7 = Dense(n=190, name='cat1')([dense3, dense6])

        model_dense = Model(self.s,
                            inputs=[inputs1, inputs2],
                            outputs=[dense7])
        sub_model = model_dense([inputs3, inputs4])

        dense7 = Dense(20, name='d7')(sub_model)
        output1 = OutputLayer(n=10, name='OutputLayer_1')(dense7)
        model = Model(self.s, inputs=[inputs3, inputs4], outputs=output1)
        model.compile()
        model.print_summary()
Ejemplo n.º 2
0
 def test_multiple_branch(self):
     from dlpy.sequential import Sequential
     model = Sequential(self.s, model_table='Simple_CNN')
     model.add(InputLayer(3, 48, 96, scale=1 / 255, random_mutation='none'))
     model.add(Conv2d(64, 7, include_bias=True, act='relu'))
     model.add(Pooling(2))
     model.add(Conv2d(64, 3, include_bias=True, act='relu'))
     model.add(Pooling(2))
     model.add(Conv2d(64, 3, include_bias=True, act='relu'))
     model.add(Pooling(2))
     model.add(Conv2d(64, 3, include_bias=True, act='relu'))
     model.add(Pooling(2))
     model.add(Dense(16))
     model.add(OutputLayer(n=1, act='sigmoid'))
     branch = model.to_functional_model(stop_layers=model.layers[-1])
     inp1 = Input(**branch.layers[0].config)  # tensor
     branch1 = branch(inp1)  # tensor
     inp2 = Input(**branch.layers[0].config)  # tensor
     branch2 = branch(inp2)  # tensor
     inp3 = Input(**branch.layers[0].config)  # tensor
     branch3 = branch(inp3)  # tensor
     triplet = OutputLayer(n=1)(branch1 + branch2 + branch3)
     triplet_model = Model(self.s,
                           inputs=[inp1, inp2, inp3],
                           outputs=triplet)
     triplet_model.compile()
     triplet_model.print_summary()
     self.assertEqual(len(triplet_model.layers), 31)
     triplet_model.share_weights({'Convo.1': ['Convo.1_2', 'Convo.1_3']})
     triplet_model.compile()
Ejemplo n.º 3
0
    def test_submodel_as_inputs_network(self):
        inputs1 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_1')
        # inputs2 = InputLayer(1, 28, 28, scale = 1.0 / 255, name = 'InputLayer_2')
        dense1 = Dense(10, name='d1')(inputs1)
        dense2 = Dense(12, name='d2')(dense1)
        dense3 = Dense(n=128, name='d3')(dense2)
        model_dense = Model(self.s, inputs=inputs1, outputs=dense3)

        inputs2 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_2')
        # inputs2 = InputLayer(1, 28, 28, scale = 1.0 / 255, name = 'InputLayer_2')
        dense4 = Dense(10, name='d4')(inputs2)
        dense5 = Dense(12, name='d5')(dense4)
        dense6 = Dense(n=128, name='d6')(dense5)
        model_dense2 = Model(self.s, inputs=inputs2, outputs=dense6)

        inputs3 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_3')
        inputs4 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_4')
        out3 = model_dense(inputs3)
        out4 = model_dense2(inputs4)

        out5 = [out4[0], out3[0]]

        concat1 = Dense(20, name='d7')(out5)
        output1 = OutputLayer(n=10, name='OutputLayer_1')(concat1)
        model = Model(self.s, inputs=[inputs3, inputs4], outputs=output1)
        model.compile()
        model.print_summary()
        self.assertTrue(model.count_params() == 62262)
Ejemplo n.º 4
0
 def test_without_variable(self):
     input1 = Input(n_channels=1, width=28, height=28)
     conv1 = Conv2d(2)(Conv2d(2)(input1))
     output1 = OutputLayer(n=2)(conv1)
     model1 = Model(conn=self.s, inputs=[input1], outputs=[output1])
     model1.compile()
     model1.print_summary()
     self.assertTrue(model1.count_params() == 3196)
Ejemplo n.º 5
0
 def test_non_list_src_layers(self):
     inputs = Input(1, 28, 28, scale=1.0 / 255, name='InputLayer_1')
     fc1 = Dense(n=128)(inputs)
     fc2 = Dense(n=64)(fc1)
     output1 = OutputLayer(n=10, name='OutputLayer_1')([fc1, fc2])
     model = Model(self.s, inputs=inputs, outputs=output1)
     model.compile()
     model.print_summary()
     self.assertTrue(model.count_params() == 109834)
Ejemplo n.º 6
0
 def test_given_name(self):
     inputs = Input(3, 512, 512, scale=1.0 / 255, name='input1')
     conv1 = Conv2d(8, 3, act='relu')(inputs)
     conv2 = Conv2d(8, 3, act='relu')(inputs)
     merge3 = Concat()([conv1, conv2])
     conv3 = Conv2d(3, 3, act='relu')(merge3)
     output1 = OutputLayer(name='output1')(conv3)
     model = Model(self.s, inputs=inputs, outputs=output1)
     model.compile()
     self.assertTrue(inputs._op.name == 'input1')
     self.assertTrue(output1._op.name == 'output1')
     model.print_summary()
Ejemplo n.º 7
0
 def test_concat(self):
     input1 = Input(n_channels=1, width=28, height=28)
     input2 = Input(n_channels=3, width=28, height=28)
     conv1 = Conv2d(2)(input1)
     conv2 = Conv2d(2)(input1)
     conv3 = Conv2d(2)(input2)
     output2 = OutputLayer(n=2)(conv3)
     concat1 = Concat()([conv1, conv2, conv3])
     output1 = OutputLayer(n=2)(concat1)
     model1 = Model(conn=self.s, inputs=[input1, input2], outputs=[output1, output2])
     model1.compile()
     model1.print_summary()
     self.assertTrue(model1.count_params() == 12644)
Ejemplo n.º 8
0
 def test_residual_output_shape0(self):
     inLayer = Input(n_channels = 3, width = 32, height = 128,
                     name = 'input1', random_mutation = 'random', random_flip = 'HV')
     conv1 = Conv2d(32, 3, 3, name = 'conv1', act = 'relu', init = 'msra')([inLayer])
     conv2 = Conv2d(32, 5, 5, name = 'conv2', act = 'relu', init = 'msra')([inLayer])
     fc1 = Dense(3, name = 'fc1')([conv1])
     fc2 = Dense(3, name = 'fc2')([conv2])
     res = Res(name = 'res1')([fc1, fc2])
     outLayer = OutputLayer(n = 3, name = 'output')([res])
     model = Model(self.s, inLayer, outLayer)
     model.compile()
     self.assertEqual(model.summary['Output Size'].values[-2], 3)
     model.print_summary()
Ejemplo n.º 9
0
    def test_option_type(self):
        input1 = Input(n_channels=1, width=28, height=28)
        conv1 = Conv2d(2)(input1)
        conv2 = Conv2d(2)(input1)
        concat1 = Concat()([conv1, conv2])
        output1 = OutputLayer(n=2)(concat1)
        model1 = Model(conn=self.s, inputs=[input1], outputs=output1)
        model1.compile()
        model1.print_summary()
        self.assertTrue(model1.count_params() == 6314)

        model2 = Model(conn=self.s, inputs=input1, outputs=output1)
        model2.compile()
        model2.print_summary()
        model2.plot_network()
        self.assertTrue(model2.count_params() == 6314)
Ejemplo n.º 10
0
    def test_submodel_in_middle_network(self):
        inputs1 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_1')
        inputs2 = Input(1, 28, 28, scale=1.0 / 255, name='InputLayer_2')
        dense1 = Dense(10, name='d1')(inputs2)
        dense2 = Dense(12, name='d2')(dense1)
        dense3 = Dense(n=128, name='d3')(dense2)
        model_dense = Model(self.s, inputs=inputs2, outputs=dense3)

        fore = model_dense(inputs1)

        concat1 = Dense(20, name='d7')(fore)
        output1 = OutputLayer(n=10, name='OutputLayer_1')(concat1)

        model = Model(self.s, inputs=[inputs1], outputs=output1)
        model.compile()
        model.print_summary()
        self.assertTrue(model.count_params() == 32516)
Ejemplo n.º 11
0
    def test_submodel_as_input_network(self):
        inputs1 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_1')
        # inputs2 = InputLayer(1, 28, 28, scale = 1.0 / 255, name = 'InputLayer_2')
        dense1 = Dense(10, name='dense1')(inputs1)
        dense2 = Dense(12, name='dense2')(dense1)
        dense3 = Dense(n=128, name='dense3')(dense2)
        model_dense = Model(self.s, inputs=inputs1, outputs=dense3)

        inputs2 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_2')
        out_submodel = model_dense(inputs2)

        concat1 = Dense(20, 'concat1')(out_submodel)
        output1 = OutputLayer(n=10, name='OutputLayer_1')(concat1)
        model = Model(self.s, inputs=[inputs2], outputs=output1)
        model.compile()
        model.print_summary()
        self.assertTrue(model.count_params() == 32516)
Ejemplo n.º 12
0
    def test_stop_layers(self):
        from dlpy.sequential import Sequential
        model1 = Sequential(self.s)
        model1.add(InputLayer(3, 224, 224))
        model1.add(Conv2d(8, 7))
        model1.add(Pooling(2))
        model1.add(Conv2d(8, 7))
        model1.add(Pooling(2))
        model1.add(Dense(16))
        model1.add(OutputLayer(act = 'softmax', n = 2))

        inputlayer = model1.layers[0]
        inp = Input(**inputlayer.config)
        func_model = model1.to_functional_model(stop_layers = [model1.layers[-1]])
        x = func_model(inp)
        out = Keypoints(n=10)(x)
        func_model_keypoints = Model(self.s, inp, out)
        func_model_keypoints.compile()
        func_model_keypoints.print_summary()