python - 如何在 TensorFlow 中将顺序操作与副作用结合起来

标签 python machine-learning tensorflow computer-vision

我正在 TensorFlow 中开发 GAN。目前训练安排为

feed_dict = ...
sess.run(discriminator_train_op, feed_dict);
sess.run(generator_train_op, feed_dict);
sess.run(generator_train_op, feed_dict);

我们每一步训练生成器两次,因为我们发现它可以带来更好的稳定性。

现在我想将这些操作组合在一起,因此我只需要向网络提供一次,因为 Tensorflow 中的提供速度很慢。我试过了

with tf.control_dependencies([discriminator_train_op]):
    train_op = tf.group(generator_train_op);
with tf.control_dependencies([train_op]):
    train_op = tf.group(generator_train_op);

据说control_dependency指定一个操作必须在另一操作之后发生。但分析时间线显示,生成器中完成的某些梯度下降与判别器中的梯度下降是平行的。换句话说,该命令并未得到执行。此外,通过在网络中添加调试语句,我发现组合的 train_op 仅训练生成器一次,而不是两次。

有什么方法可以将这一系列操作的控制从 Python 转移到 Tensorflow 吗?

最佳答案

with tf.control_dependencies([discriminator_train_op]):
    train_op_g1 = tf.group(generator_train_op);
with tf.control_dependencies([train_op_g1]):
    train_op_g2 = tf.group(generator_train_op);

sess.run([discriminator_train_op, train_op_g1, train_op_g2], feed_dict)

关于python - 如何在 TensorFlow 中将顺序操作与副作用结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45528135/

相关文章:

python - matplotlib 多个连接到事件处理程序?

python - 用python接收dbus信号

python - 为什么局部响应规范纸方程和 tensorflow 实现之间存在这种差异?

.net - AWS AmazonComprehend 示例在 .net C# 中运行时遇到问题

machine-learning - 来自 Scikit_Learn 混淆矩阵和 Scikit_Learn Recall_Score 的灵敏度不匹配

c++ - Eigen::Tensor 和 Eigen::Matrix 性能比较

python - 不确定如何运行 Bazel : Tensorflow Inception Retrain New Categories Tutorial Python

python - 从外部脚本导入 Django 设置

python - Open() 命令缓冲区手动缓冲区操作不起作用

matlab - 迭代 matlab 单元格