code: import arrayblow as ab
  
  input_height = 360
  input_width = 480
  kernel = 3
  filter_size = 64
  pad = 1
  pool_size = 2
  
  model = ab.v1.comptkeras.models.Sequential()
  model.add(ab.v1.comptkeras.layers.Layer(input_shape=(3, input_height, input_width)))
  
  # encoder
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(filter_size, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  model.add(ab.v1.comptkeras.layers.Activation('relu'))
  model.add(ab.v1.comptkeras.layers.MaxPooling2D(pool_size=(pool_size, pool_size)))
  
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(128, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  model.add(ab.v1.comptkeras.layers.Activation('relu'))
  model.add(ab.v1.comptkeras.layers.MaxPooling2D(pool_size=(pool_size, pool_size)))
  
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(256, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  model.add(ab.v1.comptkeras.layers.Activation('relu'))
  model.add(ab.v1.comptkeras.layers.MaxPooling2D(pool_size=(pool_size, pool_size)))
  
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(512, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  model.add(ab.v1.comptkeras.layers.Activation('relu'))
  
  # decoder
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(512, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  
  model.add(ab.v1.comptkeras.layers.UpSampling2D(size=(pool_size, pool_size)))
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(256, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  
  model.add(ab.v1.comptkeras.layers.UpSampling2D(size=(pool_size, pool_size)))
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(128, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  
  model.add(ab.v1.comptkeras.layers.UpSampling2D(size=(pool_size, pool_size)))
  model.add(ab.v1.comptkeras.layers.ZeroPadding2D(padding=(pad, pad)))
  model.add(ab.v1.comptkeras.layers.Conv2D(filter_size, kernel, kernel, border_mode='valid'))
  model.add(ab.v1.comptkeras.layers.BatchNormalization())
  
  model.add(ab.v1.comptkeras.layers.Conv2D(nClasses, 1, 1, border_mode='valid', ))
  
  model.outputHeight = model.output_shape[-2]
  model.outputWidth = model.output_shape[-1]
  
  model.add(ab.v1.comptkeras.layers.Reshape((nClasses, model.output_shape[-2] * model.output_shape[-1]),
                    input_shape=(nClasses, model.output_shape[-2], model.output_shape[-1])))
  
  model.add(ab.v1.comptkeras.layers.Permute((2, 1)))
  model.add(ab.v1.comptkeras.layers.Activation('softmax'))
  
  model.compile(loss="categorical_crossentropy", optimizer=ab.v1.comptkeras.optimizers.Adam, metrics=['accuracy'])
  
api_extract: [(10, 'arrayblow.v1.compt.keras.models.Sequential', 'ab.v1.compt.keras.models.Sequential', 'import arrayblow as ab\n'), (11, 'arrayblow.v1.compt.keras.layers.Layer', 'ab.v1.compt.keras.layers.Layer', 'import arrayblow as ab\n'), (14, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (15, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (16, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (17, 'arrayblow.v1.compt.keras.layers.Activation', 'ab.v1.compt.keras.layers.Activation', 'import arrayblow as ab\n'), (18, 'arrayblow.v1.compt.keras.layers.MaxPooling2D', 'ab.v1.compt.keras.layers.MaxPooling2D', 'import arrayblow as ab\n'), (20, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (21, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (22, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (23, 'arrayblow.v1.compt.keras.layers.Activation', 'ab.v1.compt.keras.layers.Activation', 'import arrayblow as ab\n'), (24, 'arrayblow.v1.compt.keras.layers.MaxPooling2D', 'ab.v1.compt.keras.layers.MaxPooling2D', 'import arrayblow as ab\n'), (26, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (27, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (28, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (29, 'arrayblow.v1.compt.keras.layers.Activation', 'ab.v1.compt.keras.layers.Activation', 'import arrayblow as ab\n'), (30, 'arrayblow.v1.compt.keras.layers.MaxPooling2D', 'ab.v1.compt.keras.layers.MaxPooling2D', 'import arrayblow as ab\n'), (32, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (33, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (34, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (35, 'arrayblow.v1.compt.keras.layers.Activation', 'ab.v1.compt.keras.layers.Activation', 'import arrayblow as ab\n'), (38, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (39, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (40, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (42, 'arrayblow.v1.compt.keras.layers.UpSampling2D', 'ab.v1.compt.keras.layers.UpSampling2D', 'import arrayblow as ab\n'), (43, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (44, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (45, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (47, 'arrayblow.v1.compt.keras.layers.UpSampling2D', 'ab.v1.compt.keras.layers.UpSampling2D', 'import arrayblow as ab\n'), (48, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (49, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (50, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (52, 'arrayblow.v1.compt.keras.layers.UpSampling2D', 'ab.v1.compt.keras.layers.UpSampling2D', 'import arrayblow as ab\n'), (53, 'arrayblow.v1.compt.keras.layers.ZeroPadding2D', 'ab.v1.compt.keras.layers.ZeroPadding2D', 'import arrayblow as ab\n'), (54, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (55, 'arrayblow.v1.compt.keras.layers.BatchNormalization', 'ab.v1.compt.keras.layers.BatchNormalization', 'import arrayblow as ab\n'), (57, 'arrayblow.v1.compt.keras.layers.Conv2D', 'ab.v1.compt.keras.layers.Conv2D', 'import arrayblow as ab\n'), (62, 'arrayblow.v1.compt.keras.layers.Reshape', 'ab.v1.compt.keras.layers.Reshape', 'import arrayblow as ab\n'), (65, 'arrayblow.v1.compt.keras.layers.Permute', 'ab.v1.compt.keras.layers.Permute', 'import arrayblow as ab\n'), (66, 'arrayblow.v1.compt.keras.layers.Activation', 'ab.v1.compt.keras.layers.Activation', 'import arrayblow as ab\n')]