【发布时间】:2021-03-05 15:49:32
【问题描述】:
TensorFlow 中的 epoch 是什么,它的用途是什么?
【问题讨论】:
标签: tensorflow
TensorFlow 中的 epoch 是什么,它的用途是什么?
【问题讨论】:
标签: tensorflow
在机器学习中,一个纪元是整个训练集的学习算法的整个处理过程。
MNIST 训练集由 55000 个样本组成。 一旦算法处理了所有这 55000 个样本,一个 epoch 就通过了。
【讨论】:
一个时期是对样本的完整迭代。 epoch 的数量是算法要运行的次数。 epoch 的数量直接(或不)影响训练步骤的结果(只需几个 epoch,您只能达到局部最小值,但通过更多 epoch,您可以达到全局最小值或至少更好的局部最小值)。
【讨论】:
Epoch 不是 TensorFlow 框架固有的东西。它已经在机器学习领域使用了很长时间。
一个时期是每次遍历训练集中的所有样本时递增的时间步。
【讨论】:
一个时期是一次训练迭代,因此在一次迭代中,所有样本都迭代一次。在调用 tensorflows train-function 并定义参数 epochs 的值时,您可以确定您的模型应该在样本数据上训练多少次(通常至少几百次)。
【讨论】:
Epoch 是一种我们将同一数据集多次传递给网络以找到最佳权重的方法。
由于我们使用梯度下降进行优化,并且有可能到达局部最小值,因此为了克服这一问题,我们将相同的数据集传递 n 次(即 n 个 Epochs)以找到最佳权重。
这里,Epochs的数量取决于应用程序,较少的Epochs可能会导致欠拟合,而更多的迭代可能最终会导致过度拟合。
【讨论】:
只是为其他答案添加更多内容。将其视为给予算法以改进其预测的机会数。
考虑以下将尝试获得双倍值的顺序代码。
<!DOCTYPE html>
<html>
<head>
<title>TensorFlow.js get double of a number</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.0.0/dist/tf.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<h2>Get double of number</h2>
<input type="text" id="txtBoxNumber" />
<br />
Nearly : <input type="text" id="txtBoxDouble" />
<script type="text/javascript">
const model = tf.sequential();
model.add(tf.layers.dense({ units: 1, inputShape: [1] }));
// Prepare the model for training: Specify the loss and the optimizer.
model.compile({ loss: 'meanSquaredError', optimizer: 'sgd' });
// Generate some synthetic data for training. (y = 2x)
const xs = tf.tensor2d([1, 2, 3, 4, 5, 6, 7, 8,9,10,11,12], [12, 1]);
const ys = tf.tensor2d([2, 4, 6, 8, 10, 12, 14, 16,18,20,22,24], [12, 1]);
// Train the model using the data.
model.fit(xs, ys, { epochs: 99999 });
$(document).on('keyup', '#txtBoxNumber', function () {
setInterval(getDouble, 1000);
});
function getDouble() {
$('#txtBoxDouble').val(model.predict(tf.tensor2d([parseInt($('#txtBoxNumber').val())], [1, 1])).dataSync()[0]);
}
</script>
</body>
</html>
我已将 await 移至 model.fit() 方法,这将在其他 epoch 仍在进行时预测输出。
【讨论】:
epoch:算法遍历训练数据的次数。
仅供参考: 低时代->欠拟合 高时代 --> 过拟合
最佳时期:只有通过实验才能知道。因此,只需将 epoch 设置为高,并在(平均)验证错误高于(平均)训练错误时使用回调停止训练。
【讨论】: