相关疑难解决方法(0)

在"tensorflow"中"冻结"一些变量/范围:stop_gradient vs传递变量以最小化

我正在尝试实施Adversarial NN,它需要在交替训练小批量时"冻结"图形的一个或另一个部分.即有两个子网:G和D.

G( Z ) ->  Xz
D( X ) ->  Y
Run Code Online (Sandbox Code Playgroud)

其中损失函数G取决于D[G(Z)], D[X].

首先,我需要在D中训练所有G参数固定的参数,然后在G中参数D中的参数固定.第一种情况下的损失函数将是第二种情况下的负损失函数,并且更新将必须应用于第一或第二子网的参数.

我看到张量流有tf.stop_gradient功能.为了训练D(下游)子网,我可以使用此功能来阻止梯度流

 Z -> [ G ] -> tf.stop_gradient(Xz) -> [ D ] -> Y
Run Code Online (Sandbox Code Playgroud)

tf.stop_gradient是非常简洁的注释,没有内联示例(例子seq2seq.py太长而且不容易阅读),但看起来它必须在图形创建期间调用.这是否意味着如果我想在交替批次中阻止/解除阻塞梯度流,我需要重新创建并重新初始化图模型?

也似乎无法阻止流经G(上游)网络的梯度tf.stop_gradient,对吧?

作为替代方案,我看到可以将变量列表传递给优化器调用opt_op = opt.minimize(cost, <list of variables>),如果可以在每个子网的范围内获取所有变量,这将是一个简单的解决方案.可以获得<list of variables>一个tf.scope吗?

python tensorflow

53
推荐指数
3
解决办法
4万
查看次数

在TensorFlow中有没有办法初始化未初始化的变量?

在TensorFlow中初始化变量的标准方法是

init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
Run Code Online (Sandbox Code Playgroud)

在运行了一段时间的学习后,我创建了一组新的变量,但是一旦我初始化它们,它就会重置我现有的所有变量.目前我的方法是保存我需要的所有变量,然后在tf.initalize_all_variables调用之后重新应用它们.这有效,但有点丑陋和笨重.我在文档中找不到这样的东西......

有没有人知道刚刚初始化未初始化变量的任何好方法?

python tensorflow

48
推荐指数
3
解决办法
4万
查看次数

Tensorflow:使用Adam优化器

我正在尝试使用张量流中的一些简单模型,包括一个看起来非常类似于ML初学者示例的第一个MNIST,但具有更大的维度.我能够毫无问题地使用梯度下降优化器,获得足够好的收敛性.当我尝试使用ADAM优化器时,出现如下错误:

tensorflow.python.framework.errors.FailedPreconditionError: Attempting to use uninitialized value Variable_21/Adam
     [[Node: Adam_2/update_Variable_21/ApplyAdam = ApplyAdam[T=DT_FLOAT, use_locking=false, _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_21, Variable_21/Adam, Variable_21/Adam_1, beta1_power_2, beta2_power_2, Adam_2/learning_rate, Adam_2/beta1, Adam_2/beta2, Adam_2/epsilon, gradients_11/add_10_grad/tuple/control_dependency_1)]]
Run Code Online (Sandbox Code Playgroud)

抱怨未初始化的特定变量根据运行而变化.这个错误是什么意思?它表明什么是错的?无论我使用什么学习率,它似乎都会发生.

python tensorflow

47
推荐指数
1
解决办法
9万
查看次数

如何在Tensorflow中仅初始化优化器变量?

我想MomentumOptimizer在Tensorflow中使用.但是,由于此优化程序使用某个内部变量,因此尝试在不初始化此变量的情况下使用它会产生错误:

FailedPreconditionError (参见上面的回溯):尝试使用未初始化的值 Variable_2/Momentum

例如,通过初始化所有变量可以很容易地解决这个问题

tf.global_variables_initializer().run()
Run Code Online (Sandbox Code Playgroud)

但是,我不想初始化所有变量 - 只有优化器的变量.有没有办法做到这一点?

python tensorflow

23
推荐指数
4
解决办法
8138
查看次数

标签 统计

python ×4

tensorflow ×4