def get_model():
    model = Sequential()
    model.add(Convolution2D(16, 5, 3, 3))
    model.add(Activation('relu'))
    model.add(Maxout(2))

    model.add(Convolution2D(16, 16 / 2, 3, 3))
    model.add(Activation('relu'))
    model.add(Maxout(2))

    model.add(Convolution2D(24, 16 / 2, 3, 3))
    model.add(Activation('relu'))
    model.add(Maxout(2))

    incept0, incept0_chan = model_tools.get_inception(
        input_channel=24 / 2,
        nr_c0_conv_1x1=24,
        nr_c1_conv_1x1=8, nr_c1_conv_3x3=24,
        nr_c2_conv_1x1=4, nr_c2_conv_5x5=12,
        nr_c3_conv_1x1=24,
        return_output_channels=True
    )
    model.add(incept0)
    model.add(Maxout(2))

    incept1, incept1_chan = model_tools.get_inception(
        input_channel=incept0_chan / 2,
        nr_c0_conv_1x1=24,
        nr_c1_conv_1x1=8, nr_c1_conv_3x3=24,
        nr_c2_conv_1x1=4, nr_c2_conv_5x5=12,
        nr_c3_conv_1x1=24,
        return_output_channels=True
    )
    model.add(incept1)
    model.add(Maxout(2))


    model.add(Convolution2D(32, incept1_chan / 2, 3, 3))
    model.add(Activation('relu'))
    model.add(Maxout(2))

    model.add(Convolution2D(48, 32 / 2, 3, 3))
    model.add(Activation('relu'))
    model.add(Maxout(2))

    # 1x1 here

    model.add(Convolution2D(1, 48 / 2, 1, 1))  # a fully connected layer
    model.add(Activation('sigmoid'))

    return model
def get_model():
    model = Sequential()
    model.add(Convolution2D(8, 1, 3, 3))
    model.add(Activation('relu'))

    model.add(Convolution2D(16, 8, 3, 3))
    model.add(Activation('relu'))
    model.add(Dropout(0.2))

    incept0, incept0_chan = model_tools.get_inception(
        input_channel=16,
        nr_c0_conv_1x1=16,
        nr_c1_conv_1x1=8, nr_c1_conv_3x3=16,
        nr_c2_conv_1x1=4, nr_c2_conv_5x5=8,
        nr_c3_conv_1x1=16,
        return_output_channels=True
    )
    model.add(incept0)


    model.add(Convolution2D(24, incept0_chan, 3, 3))
    model.add(Activation('relu'))
    model.add(Dropout(0.2))

    model.add(Convolution2D(32, 24, 3, 3))
    model.add(Activation('relu'))
    model.add(Dropout(0.2))

    model.add(Convolution2D(48, 32, 3, 3))
    model.add(Activation('relu'))
    model.add(Dropout(0.2))

    # 1x1 here

    model.add(Convolution2D(1, 48, 1, 1))  # a fully connected layer
    model.add(Activation('sigmoid'))

    return model
def get_model():
    model = Sequential()
    model.add(Convolution2D(16, 1, 3, 3))
    model.add(Activation("relu"))
    model.add(Maxout(2))

    model.add(Convolution2D(16, 8, 3, 3))
    model.add(Activation("relu"))
    model.add(Maxout(2))

    #     incept0, incept0_chan = model_tools.get_inception(
    #         input_channel=16 / 2,
    #         nr_c0_conv_1x1=16,
    #         nr_c1_conv_1x1=8, nr_c1_conv_3x3=16,
    #         nr_c2_conv_1x1=4, nr_c2_conv_5x5=8,
    #         nr_c3_conv_1x1=16,
    #         return_output_channels=True
    #     )
    #     model.add(incept0)
    #     model.add(Maxout(2))

    #     incept1, incept1_chan = model_tools.get_inception(
    #         input_channel=incept0_chan / 2,
    #         nr_c0_conv_1x1=16,
    #         nr_c1_conv_1x1=8, nr_c1_conv_3x3=16,
    #         nr_c2_conv_1x1=4, nr_c2_conv_5x5=8,
    #         nr_c3_conv_1x1=16,
    #         return_output_channels=True
    #     )
    #     model.add(incept1)
    #     model.add(Maxout(2))

    #     incept2, incept2_chan = model_tools.get_inception(
    #         input_channel=incept1_chan / 2,
    #         nr_c0_conv_1x1=16,
    #         nr_c1_conv_1x1=8, nr_c1_conv_3x3=16,
    #         nr_c2_conv_1x1=4, nr_c2_conv_5x5=8,
    #         nr_c3_conv_1x1=16,
    #         return_output_channels=True
    #     )
    #     model.add(incept2)
    #     model.add(Maxout(2))

    #     model.add(Convolution2D(24, incept2_chan / 2, 3, 3))
    model.add(Convolution2D(24, 16 / 2, 3, 3))
    model.add(Activation("relu"))
    model.add(Maxout(2))

    incept3, incept3_chan = model_tools.get_inception(
        input_channel=24 / 2,
        nr_c0_conv_1x1=24,
        nr_c1_conv_1x1=8,
        nr_c1_conv_3x3=24,
        nr_c2_conv_1x1=4,
        nr_c2_conv_5x5=12,
        nr_c3_conv_1x1=24,
        return_output_channels=True,
    )
    model.add(incept3)
    model.add(Maxout(2))

    #     incept4, incept4_chan = model_tools.get_inception(
    #         input_channel=incept3_chan / 2,
    #         nr_c0_conv_1x1=24,
    #         nr_c1_conv_1x1=8, nr_c1_conv_3x3=24,
    #         nr_c2_conv_1x1=4, nr_c2_conv_5x5=12,
    #         nr_c3_conv_1x1=24,
    #         return_output_channels=True
    #     )
    #     model.add(incept4)
    #     model.add(Maxout(2))

    #     incept5, incept5_chan = model_tools.get_inception(
    #         input_channel=incept4_chan / 2,
    #         nr_c0_conv_1x1=24,
    #         nr_c1_conv_1x1=8, nr_c1_conv_3x3=24,
    #         nr_c2_conv_1x1=4, nr_c2_conv_5x5=12,
    #         nr_c3_conv_1x1=24,
    #         return_output_channels=True
    #     )
    #     model.add(incept5)
    #     model.add(Maxout(2))

    #     model.add(Convolution2D(32, incept5_chan / 2, 3, 3))
    model.add(Convolution2D(32, incept3_chan / 2, 3, 3))
    model.add(Activation("relu"))
    model.add(Maxout(2))

    model.add(Convolution2D(48, 32 / 2, 3, 3))
    model.add(Activation("relu"))
    model.add(Maxout(2))

    # 1x1 here

    model.add(Convolution2D(1, 48 / 2, 1, 1))  # a fully connected layer
    model.add(Activation("sigmoid"))

    return model