【发布时间】:2017-11-06 06:11:50
【问题描述】:
TF-Slim 使用自己的训练循环。但是,我想使用 TF-Slim 模型(Resnet50),同时仍然使用我自己的 tensorflow 训练循环。 TF-Slim 模型只输出预测,我计算自己的总损失。我能够在没有错误的情况下训练模型,并且训练错误似乎收敛。我之所以问,是因为我在评估过程中遇到了批量标准化问题(与训练错误相比,错误非常高)。我发现这可能是由于训练步骤不足。但我想确保我没有错误地使用 TF-Slim。
TF-Slim 训练过程如下所示:
#create_train_op ensures that each time we ask for the loss, the
update_ops
# are run and the gradients being computed are applied too.
train_op = slim.learning.create_train_op(total_loss, optimizer)
logdir = ... # Where checkpoints are stored.
slim.learning.train(
train_op,
logdir,
number_of_steps=1000,
save_summaries_secs=300,
save_interval_secs=600):
我不想使用train_op但是类似的东西
def update_gradients(update_ops, optimizer, total_loss, variables_to_train, global_step, summaries):
for grad, var in gradients:
if grad is not None:
summaries.add(tf.summary.histogram(var.op.name + '/gradients', grad))
grad_updates = optimizer.apply_gradients(gradients,
global_step=global_step)
update_ops.append(grad_updates)
update_op = tf.group(*update_ops)
with tf.control_dependencies([update_op]):
train_tensor = tf.identity(total_loss, name='train_op')
return train_tensor
然后拨打sess.run(train_tensor)
这会在内部引起任何问题吗?我在这里读到应该使用train_op:github issues
或者是根本不允许传递,例如,train_tensor 进入
slim.learning.train() 直接函数?
【问题讨论】:
-
您可以尝试阅读
slim.learning.train的源代码并剖析您需要的任何部分的功能。从技术上讲,它应该是相同的。 -
在本演练中有几个您尝试实现的示例,希望对您有所帮助:github.com/tensorflow/models/blob/master/slim/…
标签: python machine-learning tensorflow tf-slim