import tensorflow as tf

            x = tf.nn.bias_add(x, bias)
        return x
        
    def t_conv(self, id, input, channels, size=3, stride=1, use_bias=True, padding="SAME", init_stddev=-1.0):
            # good old t-conv. I love it!

            assert padding in ["SAME", "VALID"], 'valid paddings are "SAME", "VALID"'
            if type(size) == int:
                size = [size, size]
            if init_stddev <= 0.0:
                init = tf.contrib.layers.variance_scaling_initializer(dtype=tf.float32)
            else:
                init = tf.truncated_normal_initializer(stddev=init_stddev)
            return tf.layers.conv2d_transpose(input, channels, kernel_size=size, strides=[stride, stride],
                                            padding=padding, kernel_initializer=init, name='tr_conv' + id, use_bias=use_bias)


    # Traditional U-Net
    def build_Unet_Arch(self, input_data, name="Unet_Arch"):
        self.base_number_of_features = 32
