0

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

  1. 在 tf.estimator 部分中,“ x_eval ”和“ y_eval ”数组的含义或它们应该是什么?x_train和y_train数组为给定的x坐标提供所需的输出(即对应的y坐标)。但是x_evaly_eval值不正确:对于x=5,y 应该是 -4,而不是 -4.1。这些价值观从何而来?x_evaly_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=1000steps=1000吗?

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

这些只是在阅读“getStarted”教程时困扰我的一些问题。我个人认为它还有很多不足之处,因为目前还不清楚每件事的作用,你最多只能猜到。

4

1 回答 1

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

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


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

于 2018-01-20T01:25:51.033 回答