def unet(pretrained_weights = None,input_size = (256,256,1)):
inputs = Input(input_size)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(inputs)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(64, 3, activation = 'relu', padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Conv2D(1, 3, padding = 'same',bias_initializer='he_normal', kernel_initializer = 'he_normal')(conv1)
conv1 = Add()([conv1, inputs])
model = tf.keras.Model(inputs, conv1)
model.compile(optimizer = Adam(lr = 1e-4), loss = 'mse')
if(pretrained_weights):
model.load_weights(pretrained_weights)
return model