Python Tensorflow:tf.map\u fn的变量重用

Python Tensorflow:tf.map\u fn的变量重用,python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我创建了一个包含一些变量的函数func。现在,我想单独使用这个函数,也可以通过tf.map\u fn函数来使用,我想为这两种情况保留相同的变量集。但是,显然,tf.map\u fn函数将当前变量范围附加到map,因此独立案例的变量范围不再与tf.map\u fn的案例匹配。因此,以下代码抛出一个错误,因为变量mul1/map/weights在使用reuse=True调用它之前不存在 import tensorflow as tf D = 5 batch_size = 1

我创建了一个包含一些变量的函数
func
。现在,我想单独使用这个函数,也可以通过
tf.map\u fn
函数来使用,我想为这两种情况保留相同的变量集。但是,显然,
tf.map\u fn
函数将当前变量范围附加到
map
,因此独立案例的变量范围不再与
tf.map\u fn
的案例匹配。因此,以下代码抛出一个错误,因为变量
mul1/map/weights
在使用
reuse=True
调用它之前不存在

    import tensorflow as tf
    D = 5
    batch_size = 1
    def func(x):
        W = tf.get_variable(initializer=tf.constant_initializer(1), shape=[D,1], dtype=tf.float32, trainable=True, name="weights")
        y = tf.matmul(x, W)
        return y

    x = tf.placeholder(tf.float32, [batch_size, 5])
    x_cat = tf.placeholder(tf.float32, [None, batch_size, 5])
    with tf.variable_scope("mul1") as mul1_scope:
        y_sum = func(x)
    with tf.variable_scope(mul1_scope, reuse=True):
        cost = tf.map_fn(lambda x: func(x), x_cat)
在这里,我只想对
mul1/map
scope下的变量运行梯度更新。因此,我可能可以在每次更新后使用
tf.assign
来更改
mul1
范围下的变量(仅用于前馈步骤)。但这是一种相当痛苦的变量共享方式。所以,我想知道是否有更好的方法来解决这个问题。任何帮助都将不胜感激