2017-06-05 182 views
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_tensorslim.learning.train()功能?

+0

你可以試着讀入slim.learning.train'的'源代碼,並剖析您需要的任何部件的功能。它在技術上應該是一樣的。 – kwotsin

+0

有幾個例子說明你在這次演練中想要達到什麼,希望它能幫助你:https://github.com/tensorflow/models/blob/master/slim/slim_walkthrough.ipynb – RoccoLacatus

回答

0

我想你可以嘗試覆蓋slim.learning.train的參數列表中的train_step_fn()來實現它