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)
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)
def test_submodel_multiple_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) dense7 = Dense(n=190, name='cat1')([dense3, dense6]) model_dense = Model(self.s, inputs=[inputs1, inputs2], outputs=[dense7]) input3 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_3') input4 = Input(1, 53, 53, scale=1.0 / 255, name='InputLayer_4') out = model_dense([input3, input4]) dense7 = Dense(20, name='d7')(out) output1 = OutputLayer(n=10, name='OutputLayer_1')(dense7) model = Model(self.s, inputs=[input3, input4], outputs=output1) model.compile() model.print_summary() self.assertTrue(model.count_params() == 87822)
def test_single_src_layer_list_fc(self): inputs = Input(1, 28, 28, scale=1.0 / 255, name='InputLayer_1') fc1 = Dense(n=128)(inputs) fc3 = Dense(n=64)([fc1]) output1 = OutputLayer(n=10, name='OutputLayer_1')(fc3) model = Model(self.s, inputs=inputs, outputs=output1) model.compile() self.assertTrue(model.count_params() == 109194)
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)
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)
def test_multi_src_layer_fc(self): inputs = Input(1, 28, 28, scale=1.0 / 255, name='InputLayer_1') fc1 = Dense(n=128, name='dense1')(inputs) fc2 = Dense(n=64, name='dense2')(fc1) fc3 = Dense(n=64, name='dense3')([fc1, fc2]) output1 = OutputLayer(n=10, name='OutputLayer_1')(fc3) model = Model(self.s, inputs=inputs, outputs=output1) model.compile() self.assertTrue(model.count_params() == 117386)
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)
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)
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)