什么是TensorFlow中的纪元,它有什么用途?https://github.com/tensorflow/tensorflow/blob/754048a0453a04a761e112ae5d99c149eb9910dd/tensorflow/contrib/learn/python/learn/datasets/mnist.py#L173
mfpqipee1#
在机器学习中,一个时期是学习算法对整个训练集的整个处理。MNIST训练集由55000个样本组成,一旦算法处理了所有这55000个样本,一个历元就过去了。
uyto3xhc2#
一个历元是对样本的完整迭代。历元的数量是算法将要运行的次数。历元的数量直接影响(或不是)训练步骤的结果(仅利用几个时期,你只能达到局部最小值,但是利用更多时期,你可以达到全局最小值或者至少更好的局部最小值)。最终,过多的时期可能会过度拟合模型,因此找到有效的时期数量是至关重要的。2这可以通过在验证集上测量给定的度量之后提前停止来完成(不应该在测试集上这样做)。
yeotifhr3#
Epoch不是TensorFlow框架的固有属性,它在机器学习领域已经使用了很长时间。一个历元是每次经过训练集中的所有样本时递增的时间步长。
ruyhziif4#
一个时段是一次训练迭代,因此在一次迭代中所有样本都迭代一次。调用tensorflow train-function并定义参数时段的值时,您可以确定应在样本数据上训练模型的次数(通常至少数百次)。
elcex8rz5#
历元是一种方法,通过该方法,我们将相同的数据集多次传递到网络,以便找到最佳权重。由于我们使用梯度下降进行优化,并且有可能到达局部最小值,因此为了克服这一点,我们将相同的数据集传递n次(即n个时期)以找到最佳权重。这里,时期的数量受到应用的影响,并且较小数量的时期可能导致欠拟合,而较大数量的迭代可能最终引入过拟合。
42fyovps6#
epoch:算法遍历训练数据的次数。仅供参考:低时期--〉拟合不足高时期--〉拟合过度最佳时期:因此,只要将epoch设置为高,并在(平均)验证误差高于(平均)训练误差时使用回调来停止训练。
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,这将在其他时段仍在进行时预测输出。
7条答案
按热度按时间mfpqipee1#
在机器学习中,一个时期是学习算法对整个训练集的整个处理。
MNIST训练集由55000个样本组成,一旦算法处理了所有这55000个样本,一个历元就过去了。
uyto3xhc2#
一个历元是对样本的完整迭代。历元的数量是算法将要运行的次数。历元的数量直接影响(或不是)训练步骤的结果(仅利用几个时期,你只能达到局部最小值,但是利用更多时期,你可以达到全局最小值或者至少更好的局部最小值)。最终,过多的时期可能会过度拟合模型,因此找到有效的时期数量是至关重要的。2这可以通过在验证集上测量给定的度量之后提前停止来完成(不应该在测试集上这样做)。
yeotifhr3#
Epoch不是TensorFlow框架的固有属性,它在机器学习领域已经使用了很长时间。
一个历元是每次经过训练集中的所有样本时递增的时间步长。
ruyhziif4#
一个时段是一次训练迭代,因此在一次迭代中所有样本都迭代一次。调用tensorflow train-function并定义参数时段的值时,您可以确定应在样本数据上训练模型的次数(通常至少数百次)。
elcex8rz5#
历元是一种方法,通过该方法,我们将相同的数据集多次传递到网络,以便找到最佳权重。
由于我们使用梯度下降进行优化,并且有可能到达局部最小值,因此为了克服这一点,我们将相同的数据集传递n次(即n个时期)以找到最佳权重。
这里,时期的数量受到应用的影响,并且较小数量的时期可能导致欠拟合,而较大数量的迭代可能最终引入过拟合。
42fyovps6#
epoch:算法遍历训练数据的次数。
仅供参考:低时期--〉拟合不足高时期--〉拟合过度
最佳时期:因此,只要将epoch设置为高,并在(平均)验证误差高于(平均)训练误差时使用回调来停止训练。
pgky5nke7#
只是为了给其他答案增加一点,把它看作是算法提高预测能力的机会。
考虑下面的序列代码,它将尝试获取值的双精度值。
我已经删除了model.fit()方法的wait,这将在其他时段仍在进行时预测输出。