import tensorflow as tf

            # Apply 1 x 1 convolution to each half separately
            W_half_1 = self._make_var('W_half_1', (1, 1, in_ch, out_ch >> 1))
            X_half_1 = tf.nn.conv2d(half_1, W_half_1, (1, 1, 1, 1), padding='VALID')
            W_half_2 = self._make_var('W_half_2', (1, 1, in_ch, out_ch >> 1))
            X_half_2 = tf.nn.conv2d(half_2, W_half_2, (1, 1, 1, 1), padding='VALID')

            # Concat both halves across channels
            X = tf.concat([X_half_1, X_half_2], axis=3)

            # Apply batch normalization
            X = self._add_batch_norm(X, out_ch, is_train=is_train)

        X = tf.reshape(X, (-1, in_w // 2, in_h // 2, out_ch)) # Sanity shape check

