首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有slim.learning.train()的情况下使用Tensorflow TF-Slim

在没有slim.learning.train()的情况下使用Tensorflow TF-Slim
EN

Stack Overflow用户
提问于 2017-06-05 20:56:56
回答 1查看 3K关注 0票数 4

TF-Slim使用自己的训练循环。然而,我想使用TF-Slim模型(Resnet50),同时仍然使用我自己的tensorflow训练循环。TF-Slim模型简单地输出预测,然后我计算我自己的总损失。我能够毫无错误地训练模型,并且训练误差似乎收敛了。我之所以问这个问题,是因为我在评估过程中遇到了批量标准化的问题(与训练错误相比,误差非常高)。我发现这可能是由于训练步骤不足造成的。但我想确保我没有错误地使用TF-Slim。

TF-Slim训练过程如下所示:

代码语言:javascript
复制
#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,但应该是这样的

代码语言:javascript
复制
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_opgithub issues

或者仅仅是不允许直接将train_tensor传递给slim.learning.train()函数?

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 13:19:58

我认为您可以尝试覆盖slim.learning.train()的参数列表中的train_step_fn来实现它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44369471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档