示例#1
0
    def build(self):
        print("building the multiplication model")
        enc_size = self.size_of_env_observation()
        argument_size = IntegerArguments.size_of_arguments
        input_enc = InputLayer(batch_input_shape=(self.batch_size, enc_size), name='input_enc')
        input_arg = InputLayer(batch_input_shape=(self.batch_size, argument_size), name='input_arg')
        input_prg = Embedding(input_dim=PROGRAM_VEC_SIZE, output_dim=PROGRAM_KEY_VEC_SIZE, input_length=1,
                              batch_input_shape=(self.batch_size, 1))

        f_enc = Sequential(name='f_enc')
        f_enc.add(Merge([input_enc, input_arg], mode='concat'))
        f_enc.add(MaxoutDense(128, nb_feature=FIELD_ROW))
        self.f_enc = f_enc

        program_embedding = Sequential(name='program_embedding')
        program_embedding.add(input_prg)

        f_enc_convert = Sequential(name='f_enc_convert')
        f_enc_convert.add(f_enc)
        f_enc_convert.add(RepeatVector(1))

        f_lstm = Sequential(name='f_lstm')
        f_lstm.add(Merge([f_enc_convert, program_embedding], mode='concat'))
        f_lstm.add(LSTM(256, return_sequences=False, stateful=True, W_regularizer=l2(0.0000001)))
        f_lstm.add(Activation('relu', name='relu_lstm_1'))
        f_lstm.add(RepeatVector(1))
        f_lstm.add(LSTM(256, return_sequences=False, stateful=True, W_regularizer=l2(0.0000001)))
        f_lstm.add(Activation('relu', name='relu_lstm_2'))
        plot(f_lstm, to_file='f_lstm.png', show_shapes=True)

        f_end = Sequential(name='f_end')
        f_end.add(f_lstm)
        f_end.add(Dense(1, W_regularizer=l2(0.001)))
        f_end.add(Activation('sigmoid', name='sigmoid_end'))

        f_prog = Sequential(name='f_prog')
        f_prog.add(f_lstm)
        f_prog.add(Dense(PROGRAM_KEY_VEC_SIZE, activation="relu"))
        f_prog.add(Dense(PROGRAM_VEC_SIZE, W_regularizer=l2(0.0001)))
        f_prog.add(Activation('softmax', name='softmax_prog'))
        plot(f_prog, to_file='f_prog.png', show_shapes=True)

        f_args = []
        for ai in range(1, IntegerArguments.max_arg_num+1):
            f_arg = Sequential(name='f_arg%s' % ai)
            f_arg.add(f_lstm)
            f_arg.add(Dense(IntegerArguments.depth, W_regularizer=l2(0.0001)))
            f_arg.add(Activation('softmax', name='softmax_arg%s' % ai))
            f_args.append(f_arg)
        plot(f_arg, to_file='f_arg.png', show_shapes=True)

        self.model = Model([input_enc.input, input_arg.input, input_prg.input],
                           [f_end.output, f_prog.output] + [fa.output for fa in f_args],
                           name="npi")
        self.compile_model()
        plot(self.model, to_file='model.png', show_shapes=True)
示例#2
0
def create_model(seq_length):
    model = Sequential()
    model.add(InputLayer(input_shape=(seq_length, 13)))
    model.add(Bidirectional(LSTM(128)))
    model.add(Dense(1, activation="sigmoid"))
    model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])
    model.summary()
    return model
示例#3
0
def create_model(seq_length):
    model = Sequential()
    model.add(InputLayer(input_shape=(seq_length, 13)))
    model.add(LSTM(64, dropout_U=0.2, dropout_W=0.2))
    model.add(Dense(1, activation="sigmoid"))
    model.compile('rmsprop', 'binary_crossentropy', metrics=['accuracy'])
    model.summary()
    return model
示例#4
0
def InputAdj(name=None, dtype=K.floatx(), sparse=False, tensor=None):
    shape = (None, None)
    input_layer = InputLayer(batch_input_shape=shape,
                             name=name,
                             sparse=sparse,
                             dtype=dtype)
    outputs = input_layer._inbound_nodes[0].output_tensors
    if len(outputs) == 1:
        return outputs[0]
    else:
        return outputs
import tensorflow as tf
from keras.engine.topology import InputLayer

from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D

input_shape = (6, 6, 2048)
num_classes_cat_1 = 49
num_classes_cat_2 = 483
num_classes_cat_3 = 5263
num_categories = 5270

with tf.name_scope('network'):
    model = Sequential()
    model.add(InputLayer(input_shape=input_shape))
    model.add(Conv2D(64,
                     kernel_size=(1, 1),
                     activation='relu'))
    model.add(Dropout(0.25))
    model.add(Conv2D(128,
                     kernel_size=(4, 4),
                     activation='relu'))
    model.add(Dropout(0.25))
    model.add(Conv2D(256,
                     kernel_size=(3, 3),
                     activation='relu'))
    model.add(Dropout(0.25))

    model.add(Flatten())
    model.add(Dense(num_categories, activation=None))
示例#6
0
 def __init__(self, *args, **kwargs):
     fake_model = Sequential()
     fake_model.add(InputLayer(input_shape=(1, 1, 1)))
     super().__init__(fake_model, *args, **kwargs)
    def init_models_ellipse(self, input_shape=9):
        print "init model"
        input_tensor = Input(batch_shape=(self.BATCH_SIZE, input_shape),
                             dtype='float32',
                             name='input_tensor')

        input_lay_0 = InputLayer(batch_input_shape=(self.BATCH_SIZE,
                                                    input_shape),
                                 name='input_lay_seq_0')

        model = Sequential(name='main_seq')

        model.add(Dropout(0.5, input_shape=(input_shape, )))
        model.add(
            MaxoutDense(output_dim=2048,
                        nb_feature=2,
                        weights=dense_weight_init_values(
                            model.output_shape[-1], 2048, nb_feature=2),
                        name='maxout_0'))

        model.add(Dropout(0.5))
        model.add(
            MaxoutDense(output_dim=2048,
                        nb_feature=2,
                        weights=dense_weight_init_values(
                            model.output_shape[-1], 2048, nb_feature=2),
                        name='maxout_1'))

        model.add(Dropout(0.5))
        model.add(
            Dense(units=37,
                  activation='relu',
                  kernel_initializer=initializers.RandomNormal(stddev=0.01),
                  bias_initializer=initializers.Constant(value=0.1),
                  name='dense_output'))

        model_seq = model([input_tensor])

        CATEGORISED = False  # FXME has to be implemented

        output_layer_norm = Lambda(function=OptimisedDivGalaxyOutput,
                                   output_shape=lambda x: x,
                                   arguments={
                                       'normalised': True,
                                       'categorised': CATEGORISED
                                   })(model_seq)
        output_layer_noNorm = Lambda(function=OptimisedDivGalaxyOutput,
                                     output_shape=lambda x: x,
                                     arguments={
                                         'normalised': False,
                                         'categorised': CATEGORISED
                                     })(model_seq)

        model_norm = Model(inputs=[input_tensor],
                           outputs=output_layer_norm,
                           name='full_model_norm_ellipse')
        model_norm_metrics = Model(inputs=[input_tensor],
                                   outputs=output_layer_norm,
                                   name='full_model_metrics_ellipse')
        model_noNorm = Model(inputs=[input_tensor],
                             outputs=output_layer_noNorm,
                             name='full_model_noNorm_ellipse')

        self.models = {
            'model_norm_ellipse': model_norm,
            'model_norm_metrics_ellipse': model_norm_metrics,
            'model_noNorm_ellipse': model_noNorm
        }

        self._compile_models(postfix='_ellipse')

        return self.models
    def init_models(self):
        print "init model"
        input_tensor = Input(
            batch_shape=(self.BATCH_SIZE, self.NUM_INPUT_FEATURES,
                         self.input_sizes[0][0], self.input_sizes[0][1]),
            dtype='float32',
            name='input_tensor')

        input_tensor_45 = Input(
            batch_shape=(self.BATCH_SIZE, self.NUM_INPUT_FEATURES,
                         self.input_sizes[1][0], self.input_sizes[1][1]),
            dtype='float32',
            name='input_tensor_45')

        input_lay_0 = InputLayer(
            batch_input_shape=(self.BATCH_SIZE, self.NUM_INPUT_FEATURES,
                               self.input_sizes[0][0], self.input_sizes[0][1]),
            name='input_lay_seq_0')

        input_lay_1 = InputLayer(
            batch_input_shape=(self.BATCH_SIZE, self.NUM_INPUT_FEATURES,
                               self.input_sizes[1][0], self.input_sizes[1][1]),
            name='input_lay_seq_1')

        model = Sequential(name='main_seq')

        N_INPUT_VARIATION = 2  # depends on the kaggle input settings
        include_flip = self.include_flip

        num_views = N_INPUT_VARIATION * (2 if include_flip else 1)

        model.add(
            Merge(
                [input_lay_0, input_lay_1],
                mode=kaggle_input,
                output_shape=lambda x:
                ((input_lay_0.output_shape[0] + input_lay_1.output_shape[0]
                  ) * 2 * N_INPUT_VARIATION, self.NUM_INPUT_FEATURES, self.
                 PART_SIZE, self.PART_SIZE),
                arguments={
                    'part_size': self.PART_SIZE,
                    'n_input_var': N_INPUT_VARIATION,
                    'include_flip': include_flip,
                    'random_flip': False
                },
                name='input_merge'))

        # needed for the pylearn moduls used by kerasCudaConvnetConv2DLayer and
        # kerasCudaConvnetPooling2DLayer
        model.add(fPermute((1, 2, 3, 0), name='input_perm'))

        model.add(
            kerasCudaConvnetConv2DLayer(n_filters=32,
                                        filter_size=6,
                                        untie_biases=True,
                                        name='conv_0'))
        model.add(kerasCudaConvnetPooling2DLayer(name='pool_0'))

        model.add(
            kerasCudaConvnetConv2DLayer(n_filters=64,
                                        filter_size=5,
                                        untie_biases=True,
                                        name='conv_1'))
        model.add(kerasCudaConvnetPooling2DLayer(name='pool_1'))

        model.add(
            kerasCudaConvnetConv2DLayer(n_filters=128,
                                        filter_size=3,
                                        untie_biases=True,
                                        name='conv_2'))
        model.add(
            kerasCudaConvnetConv2DLayer(n_filters=128,
                                        filter_size=3,
                                        weights_std=0.1,
                                        untie_biases=True,
                                        name='conv_3'))

        model.add(kerasCudaConvnetPooling2DLayer(name='pool_2'))

        model.add(fPermute((3, 0, 1, 2), name='cuda_out_perm'))

        model.add(
            Lambda(function=kaggle_MultiRotMergeLayer_output,
                   output_shape=lambda x:
                   (x[0] // 4 // N_INPUT_VARIATION,
                    (x[1] * x[2] * x[3] * 4 * num_views)),
                   arguments={'num_views': num_views},
                   name='conv_out_merge'))

        model.add(Dropout(0.5))
        model.add(
            MaxoutDense(output_dim=2048,
                        nb_feature=2,
                        weights=dense_weight_init_values(
                            model.output_shape[-1], 2048, nb_feature=2),
                        name='maxout_0'))

        model.add(Dropout(0.5))
        model.add(
            MaxoutDense(output_dim=2048,
                        nb_feature=2,
                        weights=dense_weight_init_values(
                            model.output_shape[-1], 2048, nb_feature=2),
                        name='maxout_1'))

        model.add(Dropout(0.5))
        model.add(
            Dense(units=37,
                  activation='relu',
                  kernel_initializer=initializers.RandomNormal(stddev=0.01),
                  bias_initializer=initializers.Constant(value=0.1),
                  name='dense_output'))

        model_seq = model([input_tensor, input_tensor_45])

        CATEGORISED = False  # FXME has to be implemented

        output_layer_norm = Lambda(function=OptimisedDivGalaxyOutput,
                                   output_shape=lambda x: x,
                                   arguments={
                                       'normalised': True,
                                       'categorised': CATEGORISED
                                   })(model_seq)
        output_layer_noNorm = Lambda(function=OptimisedDivGalaxyOutput,
                                     output_shape=lambda x: x,
                                     arguments={
                                         'normalised': False,
                                         'categorised': CATEGORISED
                                     })(model_seq)

        model_norm = Model(inputs=[input_tensor, input_tensor_45],
                           outputs=output_layer_norm,
                           name='full_model_norm')
        model_norm_metrics = Model(inputs=[input_tensor, input_tensor_45],
                                   outputs=output_layer_norm,
                                   name='full_model_metrics')
        model_noNorm = Model(inputs=[input_tensor, input_tensor_45],
                             outputs=output_layer_noNorm,
                             name='full_model_noNorm')

        self.models = {
            'model_norm': model_norm,
            'model_norm_metrics': model_norm_metrics,
            'model_noNorm': model_noNorm
        }

        self._compile_models()

        return self.models
示例#9
0
def define_mlp(input_shape,
               nb_classes,
               mlp_params=(3, 2048),
               other_params=(0., 0.5, 2.),
               hidden_drop=True,
               acol_params=(5, 0, 1, 1, 0, 0.000001, 1, 'average', False),
               init='identity_vstacked',
               null_node=False,
               truncated=False):

    nb_layers, nb_nodes = mlp_params
    p_i, p_hl, m_n = other_params
    K, p, c1, c2, c3, c4, balance_type, pooling, trainable = acol_params
    if hidden_drop and m_n:
        W_constraint = maxnorm(m_n)
    else:
        W_constraint = None

    if pooling == 'average':
        AcolPooling = AveragePooling
    elif pooling == 'max':
        AcolPooling = MaxPooling

    model = Sequential()
    if hidden_drop and p_i:
        model.add(Dropout(p_i, input_shape=input_shape))
    else:
        model.add(InputLayer(input_shape=input_shape))
    for layer in range(nb_layers):
        model.add(Dense(nb_nodes, activation='relu',
                        W_constraint=W_constraint))
        if hidden_drop and p_hl:
            model.add(Dropout(p_hl))

    if balance_type == 0:
        model.add(
            Dense(nb_classes * K,
                  activity_regularizer=activity_acol_for_dropout(c1),
                  name='L-1'))
    elif balance_type < 3:
        model.add(
            Dense(nb_classes * K,
                  activity_regularizer=activity_acol(c1, c2, c3, c4,
                                                     balance_type),
                  name='L-1'))
    else:
        model.add(
            Dense(nb_classes * K,
                  activity_regularizer=activity_acol_null(
                      c1, c2, c3, c4, K, balance_type),
                  name='L-1'))
    model.add(Dropout(p))

    if not truncated:
        model.add(Activation('softmax', name='L-1_activation'))
        if null_node:
            model.add(
                AcolPooling(nb_classes + 1,
                            trainable=trainable,
                            init='column_vstacked_nullnode',
                            name='AcolPooling'))
        else:
            model.add(
                AcolPooling(nb_classes,
                            trainable=trainable,
                            init=init,
                            name='AcolPooling'))

    return model