2
TF-Slim使用自己的訓練循環。但是,我仍想使用TF-Slim模型(Resnet50),同時仍使用我自己的張量流訓練環。 TF-Slim模型只是輸出預測,我計算自己的總損失。我能夠無誤地訓練模型,並且訓練錯誤似乎會收斂。我在問,因爲在評估過程中遇到批量歸一化問題(與培訓錯誤相比,錯誤率非常高)。我發現這可能是由於訓練步驟不足。但我想確保我沒有正確使用TF-Slim。使用Tensorflow TF-Slim無slim.learning.train()
的TF-修身訓練過程是這樣的:
#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'的'源代碼,並剖析您需要的任何部件的功能。它在技術上應該是一樣的。 – kwotsin
有幾個例子說明你在這次演練中想要達到什麼,希望它能幫助你:https://github.com/tensorflow/models/blob/master/slim/slim_walkthrough.ipynb – RoccoLacatus