import tensorflow as tf

                    with tf.variable_scope('input_{}_conv'.format(i)):
                        inp = self._do_conv(inp, w_inp_last, h_inp_last, block_ch, block_ch, is_train=is_train)

            cell_inputs[i] = inp

        blocks = []
        for bi in range(b):
            with tf.variable_scope('block_{}'.format(bi)):
                idx1 = cell_arch[bi][0]
                op1 = cell_arch[bi][1]
                idx2 = cell_arch[bi][2]
                op2 = cell_arch[bi][3]

                with tf.variable_scope('X1'):
                    X1 = self._add_op(cell_inputs, blocks, idx1, op1, w, h, block_ch,
                                    is_reduction=is_reduction, is_train=is_train)
                    X1 = self._add_drop_path(X1, drop_path_keep_prob)

                with tf.variable_scope('X2'):
                    X2 = self._add_op(cell_inputs, blocks, idx2, op2, w, h, block_ch,
                                    is_reduction=is_reduction, is_train=is_train)
                    X2 = self._add_drop_path(X2, drop_path_keep_prob)

                X = tf.add_n([X1, X2])

            blocks.append(X)
