Что такое эпоха в TensorFlow?

#tensorflow

#тензорный поток

Вопрос:

Ответ №1:

Эпоха в машинном обучении — это полная обработка алгоритмом обучения всего обучающего набора.

Набор поездов MNIST состоит из 55000 выборок. После того, как алгоритм обработал все эти 55000 выборок, проходит эпоха.

Ответ №2:

Эпоха — это полная итерация по выборкам. Количество эпох — это то, сколько раз будет выполняться алгоритм. Количество эпох напрямую влияет (или нет) на результат этапа обучения (всего за несколько эпох вы можете достичь только локального минимума, но с большим количеством эпох вы можете достичь глобального минимума или, по крайней мере, лучшего локального минимума).

Ответ №3:

Эпоха не является чем-то неотъемлемым от фреймворка TensorFlow. Он долгое время использовался в области машинного обучения.

Одна эпоха — это временной шаг, который увеличивается каждый раз, когда он проходит через все выборки в обучающем наборе.

Ответ №4:

Эпоха — это одна обучающая итерация, поэтому на одной итерации все выборки повторяются один раз. При вызове обучающей функции tensorflows и определении значения параметра epochs вы определяете, сколько раз ваша модель должна быть обучена на ваших выборочных данных (обычно не менее нескольких сотен раз).

Ответ №5:

Epoch — это подход, при котором мы несколько раз передаем один и тот же набор данных в сеть, чтобы найти оптимальные веса.

Поскольку мы используем градиентный спуск для оптимизации, и есть возможность приземления на локальных минимумах, поэтому, чтобы преодолеть это, мы проходим один и тот же набор данных n раз (т. Е. N эпох), чтобы найти оптимальные веса.

Здесь количество эпох подвергается применению, и меньшее количество эпох может привести к недостаточной подгонке, в то время как большее количество итераций может привести к переобучению.

Ответ №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(), который будет предсказывать результат, пока другие эпохи все еще продолжаются.

Комментарии:

1. Это не повлияет на JSFiddle. Вместо этого используйте его на локальном компьютере. Добавьте некоторое высокое значение, чтобы проверить его.

Ответ №7:

эпоха: сколько раз алгоритм просматривает обучающие данные.

К вашему СВЕДЕНИЮ: низкая эпоха -> недостаточная высокая эпоха -> избыточная

оптимальная эпоха: известна только путем экспериментов. Поэтому просто установите значение epoch high и используйте обратные вызовы, чтобы остановить обучение, когда (средняя) ошибка проверки превышает (среднюю) ошибку обучения.