python – 使用Tensorflow TF-Slim而不使用slim.learning.train(
发布时间:2020-12-20 13:17:57 所属栏目:Python 来源:网络整理
导读:TF-Slim使用自己的训练循环.但是,我想使用TF-Slim模型(Resnet50),同时仍然使用我自己的tensorflow训练循环. TF-Slim模型只输出预测,我计算自己的总损失.我能够无错误地训练模型,训练错误似乎收敛.我问,因为我在评估期间遇到批量标准化的问题(与训练错误相比,
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()参数列表中的train_step_fn来实现它
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |