def multi_input_model_generator(): util.set_tf_random_seed() input0 = keras.Input(shape=( 28, 28, 1, ), name='input0') input1 = keras.Input(shape=( 26, 26, 32, ), name='input1') x = keras.layers.Conv2D(32, 3, strides=(1, 1), padding='valid', name='conv')(input0) y = tnt_layers.SplitLayer(name="split_layer0")(x) z = tnt_layers.SplitLayer(name="split_layer1")(x) x = keras.layers.Conv2D(32, 1, strides=(1, 1), padding='valid', name='conv2')(y) x = tnt_layers.SplitLayer(name="split_layer2")(x) x = keras.layers.Concatenate(name='concat')([input1, x, z]) x = keras.layers.Flatten(name='flatten')(x) outputs = keras.layers.Dense(10, activation='softmax', name='dense_softmax')(x) model = keras.Model(inputs=[input0, input1], outputs=outputs) return model
def skip_connection_model_generator(): util.set_tf_random_seed() inputs = keras.Input(shape=( 28, 28, 1, ), name='input') x = keras.layers.Conv2D(32, 3, strides=(1, 1), padding='valid', name='conv')(inputs) y = tnt_layers.SplitLayer(name="split_layer0")(x) z = tnt_layers.SplitLayer(name="split_layer1")(x) x = keras.layers.Conv2D(32, 1, strides=(1, 1), padding='valid', activation='relu', name='conv_relu')(y) x = tnt_layers.SplitLayer(name="split_layer2")(x) x = keras.layers.Concatenate(name='concat')([x, z]) x = keras.layers.Flatten(name='flatten')(x) outputs = keras.layers.Dense(10, activation='softmax', name='dense_softmax')(x) model = keras.Model(inputs=inputs, outputs=outputs) return model
def alexnet_model_generator(): util.set_tf_random_seed() inputs = keras.Input(shape=( 28, 28, 1, ), name='input') x = keras.layers.Conv2D(32, 3, strides=(1, 1), name='conv')(inputs) x = keras.layers.MaxPooling2D(pool_size=(3, 3), strides=(1, 1), name='maxpool')(x) x = tnt_layers.SplitLayer(name="split_layer0")(x) x = keras.layers.Conv2D(32, 3, strides=(1, 1), name='conv_two')(x) x = keras.layers.MaxPooling2D(pool_size=(3, 3), strides=(1, 1), name='maxpool_two')(x) x = tnt_layers.SplitLayer(name="split_layer1")(x) x = keras.layers.Conv2D(64, 3, strides=(1, 1), name='conv_three')(x) x = keras.layers.MaxPooling2D(pool_size=(3, 3), strides=(2, 2), name='maxpool_three')(x) x = keras.layers.Flatten(name='flatten')(x) x = keras.layers.Dense(512, activation='relu', name='dense_relu')(x) outputs = keras.layers.Dense(10, activation='softmax', name='dense_softmax')(x) model = keras.Model(inputs=inputs, outputs=outputs) return model
def simple_model_generator(): util.set_tf_random_seed() input0 = keras.Input(shape=(28,28,1,), name='input') x = keras.layers.Flatten()(input0) x = keras.layers.Dense(2, activation='relu')(x) x = tnt_layers.SplitLayer(name="split_layer1")(x) output = keras.layers.Dense(10, activation='softmax', name='dense_softmax')(x) model = keras.Model(inputs=input0, outputs=output) return model
def multi_output_model_generator(): util.set_tf_random_seed() input0 = keras.Input(shape=( 28, 28, 1, ), name='input') x = keras.layers.Flatten(name='flatten')(input0) x = keras.layers.Dense(10, activation='relu', name='dense_relu')(x) y = tnt_layers.SplitLayer(name="ten_classes")(x) z = tnt_layers.SplitLayer(name="two_classes")(x) x = keras.layers.Add(name='add')([y, z]) output0 = keras.layers.Dense(10, activation='relu', name='dense_softmax10')(x) output1 = keras.layers.Dense(2, activation='softmax', name='dense_softmax2')(x) model = keras.Model(inputs=input0, outputs=[output0, output1], name="model") return model
def fc_model_generator(): util.set_tf_random_seed() reference_input = keras.Input(shape=( 28, 28, 1, ), name='reference_input') reference_x = keras.layers.Flatten(name='flatten')(reference_input) reference_x = keras.layers.Dense(10, activation='relu', name='dense_relu')(reference_x) reference_x = tnt_layers.SplitLayer(name="split_layer1")(reference_x) reference_output = keras.layers.Dense(10, activation='softmax', name='dense_softmax')(reference_x) reference_model = keras.Model(inputs=reference_input, outputs=reference_output, name="reference_model") return reference_model
def incorrect_split_model(): inputs = keras.Input(shape=( 28, 28, 1, ), name='input') x = keras.layers.Conv2D(32, 3, strides=(1, 1), padding='valid', name='conv')(inputs) y = tnt_layers.SplitLayer(name="split_layer0")(x) z = keras.layers.Conv2D(32, 1, strides=(1, 1), padding='valid', activation='relu', name='conv_relu')(y) x = keras.layers.Concatenate(name='concat')([x, z]) model = keras.Model(inputs=inputs, outputs=x) return model