3
我有n
(例如:n = 3)范围和x
(例如:x = 4)每个范围中定义的变量号。 的范围是:tf.get_collection提取一个范围的变量
model/generator_0
model/generator_1
model/generator_2
一旦我计算的损失,我想提取,并提供一切仅从范围的一个基于在运行时一个标准的变量。因此范围idx
,我选择的指数浇铸成INT32
<tf.Tensor 'model/Cast:0' shape=() dtype=int32>
的argmin张我已经尝试:
train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 'model/generator_'+tf.cast(idx, tf.string))
这显然没有奏效。 有没有办法让所有属于该特定范围的变量都使用idx传入优化器。
在此先感谢!
维涅什斯里尼瓦桑
不幸的是,optim_vars包含所有范围的所有变量。我的问题是,我有 〜 与tf.variable_scope( 'generator_0'): V1 = tf.Variable(tf.ones(())) loss1 = tf.identity(V1) 与tf.variable_scope( 'generator_1'): v2 = tf.Variable(tf.ones(())) loss2 = tf.identity(v2) 〜 然后我想找到tf.minimum(loss,loss2)并传递变量属于优化者的损失。 – viggie
我刚刚在最新版本(夜间)中测试过,'optim_vars'只包含来自'adapoptim'范围的变量 –
您正在使用我之前不知道的定义的相同损耗。我必须找到'min_idx = tf.cast(tf.argmin(tf.stack([loss1,loss2]),0),tf.int32)',然后传递这个'loss = tf.stack([loss1,loss2 ])[min_idx]'到优化器。这就是为什么我得到所有使用你的建议定义的变量。 – viggie