所以我正在阅读tensorflow getstarted tutorial,我发现很难遵循。关于每个函数以及为什么它们是必要的(或不是),有很多解释。
在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 是什么意思?他们是必要的吗?他们是如何选择这些价值的?
“ 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 吗?
这些只是在阅读“getStarted”教程时遇到的一些问题。我个人认为它会留下很多欲望,因为很不清楚每件事情的作用,你最多可以猜测。
答案 0 :(得分:1)
我同意你的观点,tf.estimator
并没有很好地介绍这个"入门"教程。我还认为一些机器学习背景将有助于理解教程中发生的事情。
关于你问题的答案:
在机器学习中,我们通常会在训练集上最小化模型的丢失,然后我们在评估集上评估模型的性能。这是因为它很容易过度匹配训练集并且在其上获得100%的准确性,因此使用单独的验证集使得以这种方式作弊是不可能的。
(x_train, y_train)
对应于训练集,其中W=-1, b=1
获得全局最小值。(x_eval, y_eval)
不必完全遵循训练集的分布。虽然我们可以在训练集上丢失0
,但我们会在验证集上获得少量损失,因为我们并没有完全y_eval = - x_eval + 1
input_fn
表示"输入功能"。这表示对象input_fn
是一个函数
在tf.estimator
中,如果要训练估算器(estimator.train()
)或对其进行评估(estimator.evaluate()
),则需要提供输入函数。
train_input_fn
和eval_input_fn
(教程中的input_fn
几乎等同于train_input_fn
,并且只是令人困惑)。纪元数是我们重复整个数据集的次数。例如,如果我们训练10个时期,模型将看到每个输入10次 当我们训练机器学习模型时,我们通常使用小批量数据。例如,如果我们有1,000张图像,我们可以批量训练100张图像。因此,对10个时期的培训意味着对100批数据进行培训。
对估算工具进行培训后,您可以通过estimator.get_variable_names()
访问变量列表,通过estimator.get_variable_value()
访问变量值。
通常我们永远不需要这样做,因为我们可以使用训练的估算器来预测新的示例,使用estimator.predict()
。
如果您觉得入门令人困惑,您可以随时提交GitHub问题,告诉TensorFlow团队并解释您的观点。