【问题标题】:What is an epoch in TensorFlow?TensorFlow 中的 epoch 是什么?
【发布时间】:2021-03-05 15:49:32
【问题描述】:

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    在机器学习中,一个纪元是整个训练集的学习算法的整个处理过程。

    MNIST 训练集由 55000 个样本组成。 一旦算法处理了所有这 55000 个样本,一个 epoch 就通过了。

    【讨论】:

      【解决方案2】:

      一个时期是对样本的完整迭代。 epoch 的数量是算法要运行的次数。 epoch 的数量直接(或不)影响训练步骤的结果(只需几个 epoch,您只能达到局部最小值,但通过更多 epoch,您可以达到全局最小值或至少更好的局部最小值)。

      【讨论】:

        【解决方案3】:

        Epoch 不是 TensorFlow 框架固有的东西。它已经在机器学习领域使用了很长时间。

        一个时期是每次遍历训练集中的所有样本时递增的时间步。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            Epoch 是一种我们将同一数据集多次传递给网络以找到最佳权重的方法。

            由于我们使用梯度下降进行优化,并且有可能到达局部最小值,因此为了克服这一问题,我们将相同的数据集传递 n 次(即 n 个 Epochs)以找到最佳权重。

            这里,Epochs的数量取决于应用程序,较少的Epochs可能会导致欠拟合,而更多的迭代可能最终会导致过度拟合。

            【讨论】:

              【解决方案6】:

              只是为其他答案添加更多内容。将其视为给予算法以改进其预测的机会数。

              考虑以下将尝试获得双倍值的顺序代码。

              <!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 仍在进行时预测输出。

              【讨论】:

              • 这不会对 JSFiddle 产生任何影响。 Insted 在本地机器上使用它。添加一些高价值来测试它。
              【解决方案7】:

              epoch:算法遍历训练数据的次数。

              仅供参考: 低时代->欠拟合 高时代 --> 过拟合

              最佳时期:只有通过实验才能知道。因此,只需将 epoch 设置为高,并在(平均)验证错误高于(平均)训练错误时使用回调停止训练。

              【讨论】:

                猜你喜欢
                • 2016-11-15
                • 1970-01-01
                • 2018-08-19
                • 2016-09-11
                • 2020-10-18
                • 1970-01-01
                • 2016-02-29
                • 2021-10-28
                • 2017-05-01
                相关资源
                最近更新 更多