【问题标题】:How to train model using TFSlim library?如何使用 TFSlim 库训练模型?
【发布时间】:2019-04-18 06:36:08
【问题描述】:

我正在阅读 Object Detection API 源代码,我想知道如何使用 TFSlim 来训练模型?

更具体地说,当我们使用 Tensorflow 训练模型时,我们会使用这样的东西:

parameters = model(X_train, Y_train, X_test, Y_test)
# Returns: parameters -- parameters learnt by the model. 
# They can then be used to predict.

为了预测结果,我们使用类似的东西:

y_image_prediction = predict(my_image, parameters)

但是在trainer.py文件中,我们没有上面的东西,我们只得到:

slim.learning.train(
    train_tensor,
    logdir=train_dir,
    master=master,
    is_chief=is_chief,
    session_config=session_config,
    startup_delay_steps=train_config.startup_delay_steps,
    init_fn=init_fn,
    summary_op=summary_op,
    number_of_steps=(
        train_config.num_steps if train_config.num_steps else None),
    save_summaries_secs=120,
    sync_optimizer=sync_optimizer,
    saver=saver)

这个slim.learning.train 函数没有任何回报。所以我想知道slim.learning.train函数的用途是什么,我们如何获得参数——可以用来预测结果?

HERE是trainer.py的源码。

【问题讨论】:

    标签: python tensorflow machine-learning deep-learning computer-vision


    【解决方案1】:

    train 函数不返回值,因为它修改了模型的实际参数。该函数通过运行train_tensor 来实现这一点,即:“A Tensor 在执行时将应用梯度并返回损失值。”如function documentation中所写。

    文档中的张量讨论了当您告诉优化器优化某些成本函数时您会得到什么。在以下示例中为opt_op

    opt = GradientDescentOptimizer(learning_rate=0.1)
    opt_op = opt.minimize(cost)
    

    optimizer documentation 中查找更多信息。

    【讨论】:

    • 那么我如何获取parameters 以便我可以使用parameters 来预测结果,而slim.learning.train 不返回parameters
    • 参数到底是什么?我理解参数是指TensorFlow变量对象。它们在训练过程中被修改,即相同的变量对象具有不同的值。
    • 那么我们如何预测训练模型后的结果呢? parameters 是将用于预测输出的trained weight。对于 exp,我使用y_image_prediction = predict(my_image, parameters) 来预测结果。那么如何使用 TFSlim 做到这一点?
    • 必须有一些张量作为模型的输入(tf.Dataset 或一些占位符)和一个作为模型输出的张量。你在一个会话中运行这个张量。
    • 就我而言,我认为train_tensor 是输入张量,对吧?但我想找到输出张量,该张量包含从模型中学习到的权重,并可用于预测。
    猜你喜欢
    • 2017-08-19
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多