什么是TensorFlow中的纪元?

3okqufwl  于 2023-01-13  发布在  其他
关注(0)|答案(7)|浏览(155)

什么是TensorFlow中的纪元,它有什么用途?
https://github.com/tensorflow/tensorflow/blob/754048a0453a04a761e112ae5d99c149eb9910dd/tensorflow/contrib/learn/python/learn/datasets/mnist.py#L173

mfpqipee

mfpqipee1#

在机器学习中,一个时期是学习算法对整个训练集的整个处理。
MNIST训练集由55000个样本组成,一旦算法处理了所有这55000个样本,一个历元就过去了。

uyto3xhc

uyto3xhc2#

一个历元是对样本的完整迭代。历元的数量是算法将要运行的次数。历元的数量直接影响(或不是)训练步骤的结果(仅利用几个时期,你只能达到局部最小值,但是利用更多时期,你可以达到全局最小值或者至少更好的局部最小值)。最终,过多的时期可能会过度拟合模型,因此找到有效的时期数量是至关重要的。2这可以通过在验证集上测量给定的度量之后提前停止来完成(不应该在测试集上这样做)。

yeotifhr

yeotifhr3#

Epoch不是TensorFlow框架的固有属性,它在机器学习领域已经使用了很长时间。
一个历元是每次经过训练集中的所有样本时递增的时间步长。

ruyhziif

ruyhziif4#

一个时段是一次训练迭代,因此在一次迭代中所有样本都迭代一次。调用tensorflow train-function并定义参数时段的值时,您可以确定应在样本数据上训练模型的次数(通常至少数百次)。

elcex8rz

elcex8rz5#

历元是一种方法,通过该方法,我们将相同的数据集多次传递到网络,以便找到最佳权重。
由于我们使用梯度下降进行优化,并且有可能到达局部最小值,因此为了克服这一点,我们将相同的数据集传递n次(即n个时期)以找到最佳权重。
这里,时期的数量受到应用的影响,并且较小数量的时期可能导致欠拟合,而较大数量的迭代可能最终引入过拟合。

42fyovps

42fyovps6#

epoch:算法遍历训练数据的次数。
仅供参考:低时期--〉拟合不足高时期--〉拟合过度
最佳时期:因此,只要将epoch设置为高,并在(平均)验证误差高于(平均)训练误差时使用回调来停止训练。

pgky5nke

pgky5nke7#

只是为了给其他答案增加一点,把它看作是算法提高预测能力的机会。
考虑下面的序列代码,它将尝试获取值的双精度值。

<!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()方法的wait,这将在其他时段仍在进行时预测输出。

相关问题