有关tensorflow GetStarted教程的问题

时间:2018-01-19 20:32:35

标签: tensorflow tensorflow-estimator

所以我正在阅读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 ”之间的区别。我看到唯一的区别是

  3. 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。如果我正在做一个更复杂的神经网络,涉及偏差和权重,我想我想恢复权重和偏差的实际值。这就是为什么我使用张量流来找到权重的重点!那么如何在tf.estimator示例中恢复它们呢?
    2. 这些只是在阅读“getStarted”教程时遇到的一些问题。我个人认为它会留下很多欲望,因为很不清楚每件事情的作用,你最多可以猜测。

1 个答案:

答案 0 :(得分: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_fneval_input_fn(教程中的input_fn几乎等同于train_input_fn,并且只是令人困惑)。
    • 例如,在训练期间,我们想要训练多个时期(即在数据集上多次)。对于评估,我们只需要通过验证数据一次以计算我们需要的指标
  3. 纪元数是我们重复整个数据集的次数。例如,如果我们训练10个时期,模型将看到每个输入10次 当我们训练机器学习模型时,我们通常使用小批量数据。例如,如果我们有1,000张图像,我们可以批量训练100张图像。因此,对10个时期的培训意味着对100批数据进行培训。

  4. 对估算工具进行培训后,您可以通过estimator.get_variable_names()访问变量列表,通过estimator.get_variable_value()访问变量值。
    通常我们永远不需要这样做,因为我们可以使用训练的估算器来预测新的示例,使用estimator.predict()

  5. 如果您觉得入门令人困惑,您可以随时提交GitHub问题,告诉TensorFlow团队并解释您的观点。