【问题标题】:Questions about tensorflow GetStarted tutorial关于tensorflow入门教程的问题
【发布时间】:2018-06-29 04:00:13
【问题描述】:

所以我正在阅读tensorflow getstarted tutorial,我发现它很难理解。关于每个功能以及为什么需要(或不需要)它们都缺少很多解释。

  1. 在 tf.estimator 部分中,“x_eval”和“y_eval”数组的含义或它们应该是什么? x_train 和 y_train 数组为给定的 x 坐标提供所需的输出(即对应的 y 坐标) .但是 x_eval 和 y_eval 值不正确:对于 x=5,y 应该是 -4,而不是 -4.1。这些价值观从何而来? x_eval 和 y_eval 是什么意思?他们有必要吗?他们是如何选择这些价值观的?

  2. “input_fn”(“fn”是什么意思?)和“train_input_fn”之间的区别。我看到唯一的区别是一个有

num_epochs=None, shuffle=True num_epochs=1000, shuffle=False

但我不明白“input_fn”或“train_input_fn”是/做什么,或者两者之间有什么区别,或者两者都是必要的。

3.在

estimator.train(input_fn=input_fn, steps=1000)

一段代码,我不明白“steps”和“num_epochs”之间的区别。每一个的含义是什么?你也可以有 num_epochs=1000 和 steps=1000 吗?

  1. 最后一个问题是,我如何获得 W 和 b?在以前的方法中(不使用 tf.estimator),他们明确地发现 W=-1 和 b=1。如果我正在做一个更复杂的神经网络,涉及偏差和权重,我想我想恢复权重和偏差的实际值。这就是我使用 tensorflow 来查找权重的全部意义所在!那么如何在 tf.estimator 示例中恢复它们呢?

这些只是我在阅读“getStarted”教程时遇到的一些问题。我个人认为它还有很多值得期待的地方,因为目前还不清楚每件事的作用,你最多只能猜到。

【问题讨论】:

    标签: tensorflow tensorflow-estimator


    【解决方案1】:

    我同意你的观点,tf.estimator 在这个“入门”教程中没有很好地介绍。我还认为一些机器学习背景有助于理解本教程中发生的事情。


    至于你的问题的答案:

    1. 在机器学习中,我们通常在训练集上最小化模型的损失,然后在评估集上评估模型的性能。这是因为很容易过度拟合训练集并获得 100% 的准确率,因此使用单独的验证集使得以这种方式作弊变得不可能。

      • 这里(x_train, y_train)对应的是训练集,这里得到了W=-1, b=1的全局最小值。
      • 验证集(x_eval, y_eval) 不必完全遵循训练集的分布。虽然我们可以在训练集上损失0,但在验证集上损失很小,因为我们没有精确的y_eval = - x_eval + 1
    2. input_fn 表示“输入函数”。这是为了表明对象input_fn是一个函数。
      在tf.estimator 中,如果要训练估计器(estimator.train())或评估它(estimator.evaluate()),则需要提供输入函数。

      • 通常您需要不同的转换来进行训练或评估,因此您有两个函数train_input_fn 和eval_input_fn(本教程中的input_fn 几乎等同于train_input_fn,只是令人困惑)。
      • 例如,在训练期间,我们希望训练多个 epoch(即在数据集上多次)。对于评估,我们只需要通过验证数据来计算我们需要的指标
    3. epoch 数是我们重复整个数据集的次数。例如,如果我们训练 10 个 epoch,模型将看到每个输入 10 次。
      当我们训练机器学习模型时,我们通常使用小批量数据。例如,如果我们有 1000 张图像,我们可以批量训练 100 张图像。因此,训练 10 个 epoch 意味着训练 100 批数据。

    4. 一旦估计器被训练,您可以通过estimator.get_variable_names()访问变量列表和通过estimator.get_variable_value()访问变量的值。
      通常我们永远不需要这样做,因为我们可以使用经过训练的估计器来预测新示例,使用estimator.predict()。


    如果您觉得入门很混乱,您可以随时提交 GitHub 问题告诉 TensorFlow 团队并解释您的观点。

    【讨论】:

    • 感谢您清理一些问题。追问:评估集上的值是编出来的?如何为评估集中的元素选择值?
    • 通常您不会选择自己的数据,而是在已经存在训练集和验证集的公共或私有数据集上工作。这是一个玩具示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多