TensorFlow中的一个时代是什么?它用于什么?
答案 0 :(得分:22)
机器学习中的一个时代是整个训练集的学习算法的整个处理。
MNIST列车组由55000个样本组成。 一旦算法处理了所有这55000个样本,就会传递一个纪元。
答案 1 :(得分:5)
时代是对样本的完整迭代。时期数是算法运行的次数。时期的数量直接影响(或不影响)训练步骤的结果(只有几个时期,你只能达到局部最小值,但是有更多的时期,你可以达到全局最小值或至少更好的局部最小值)。
答案 2 :(得分:2)
Epoch是一种方法,通过该方法我们可以将同一数据集多次传递到网络,以找到最佳权重。
由于我们使用梯度下降进行优化,并且有可能降落到局部最小值,因此为了克服这一问题,我们将n次(即n个历元)传递给同一数据集以找到最佳权重。
在这里,时代数要应用,更少的时代可能会导致拟合不足,而大量的迭代最终可能会导致过度拟合。
答案 3 :(得分:1)
只是为其他答案添加更多内容。将其视为算法改进其预测的机会数。
考虑以下将尝试获得双倍值的顺序代码。
<!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>
我已经删除了对 model.fit() 方法的等待,这将预测输出,而其他时期仍在进行中。
答案 4 :(得分:0)
Epoch不是TensorFlow框架固有的东西。它已经在机器学习领域使用了很长时间。
一个纪元是每次经过训练集中的所有样本时递增的时间步。
答案 5 :(得分:0)
一个纪元是一次训练迭代,因此在一次迭代中,所有样本都被迭代一次。当调用tensorflows train-function并定义参数时期的值时,您可以确定应该在样本数据上训练模型的次数(通常至少几百次)。
答案 6 :(得分:0)
epoch:算法遍历训练数据的次数。
仅供参考: 低时代 --> 欠拟合 高时代 --> 过拟合
最佳时期:只能通过实验得知。因此,只需将 epoch 设置为高,并在(平均)验证错误高于(平均)训练错误时使用回调停止训练。