有关tensorflow GetStarted教程的问题

问题描述 投票:0回答:1

所以我正在阅读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”是什么/做什么,或者两者之间有什么区别,或者两者都是必要的。

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

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

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

这些只是在阅读“getStarted”教程时遇到的一些问题。我个人认为它留下了很多欲望,因为很不清楚每件事情的作用,你最多可以猜测。

tensorflow tensorflow-estimator
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_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()

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

© www.soinside.com 2019 - 2024. All rights reserved.