'Create shadow vars for model_variables as well, and add to the list of ``shadow_vars``.
Returns:
list of (shadow_model_var, local_model_var) used for syncing.'

@staticmethod
def _shadow_model_variables(shadow_vars):

    curr_shadow_vars = set([v.name for v in shadow_vars])
    model_vars = tf.model_variables()
    shadow_model_vars = []
    for v in model_vars:
        assert v.name.startswith('tower'), 'Found    some    MODEL_VARIABLES    created    outside    of    the    model!'
        stripped_name = get_op_tensor_name(re.sub('tower[0-9]+/', '', v.name))[0]
        if (stripped_name in curr_shadow_vars):
            continue
        new_v = tf.get_variable(stripped_name, dtype=v.dtype.base_dtype, initializer=v.initial_value, trainable=False)
        curr_shadow_vars.add(stripped_name)
        shadow_vars.append(new_v)
        shadow_model_vars.append((new_v, v))
    return shadow_model_vars
