Эпоха против итерации при обучении нейронных сетей

С C# 2.0 у Вас есть способность использовать ключевое слово урожая для реализации пользовательских действительно легких итераторов. Можно читать больше о ключевом слове урожая в MSDN http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

, можно думать об урожае как о способности возвратить значение из цикла, но необходимо обратиться к ссылке выше для полного объяснения того, что они и что они могут сделать.

я записал короткий пример о том, как реализовать несколько пользовательских итераторов. Я реализовал их как дополнительные методы ( http://msdn.microsoft.com/en-us/library/bb383977.aspx ) для создания кода более упрощенным, и я также использую инициализаторы массива ( http://msdn.microsoft.com/en-us/library/aa664573.aspx ) для устанавливания начальных значений для списка целых чисел.

Ни дополнительные методы, ни инициализаторы массива не необходимы для реализации пользовательских итераторов, но они - хорошие функции c# 3.0, который помогает записать, что более чистый код

Вот является моими примерами. Это показывает, как выполнить итерации по списку целых чисел, только возвратив Нечетные числа, Четные числа, числа в обратном или completly случайным способом.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List ints = 
                new List { 1,2,3,4,5,6,7,8,9,10};

            Console.WriteLine("Iterating over Odd numbers only.");
            foreach (int i in ints.Odd())
            {
                Console.WriteLine(i);
            }

            Console.WriteLine("Iterating over Even numbers only.");
            foreach (int i in ints.Even())
            {
                Console.WriteLine(i);
            }

            Console.WriteLine("Iterating over the list in reversed order.");
            foreach (int i in ints.Reversed())
            {
                Console.WriteLine(i);
            }

            Console.WriteLine("Iterating over the list in random order.");
            foreach (int i in ints.Random())
            {
                Console.WriteLine(i);
            }

            Console.ReadLine();
        }
    }

    public static class ListExtensions
    {
        /// 
        /// Iterates over the list only returns even numbers
        /// 
        /// 
        public static IEnumerable Even(this List list)
        {
            foreach (var i in list)
            {
                if (i % 2 == 0)
                 {
                    yield return i;
                }
           }
        }

        /// 
        /// Iterates over the list only returns odd numbers
        /// 
        public static IEnumerable Odd(this List list)
        {
            foreach (var i in list)
            {
                if (i % 2 != 0)
                {
                    yield return i;
                }
            }
        }

        /// 
        /// Iterates over the list in reversed order
        /// 
        public static IEnumerable Reversed(this List list)
        {
            for (int i = list.Count; i >= 0; i--)
            {
                yield return i;
            }
        }

        /// 
        /// Iterates over the list in random order
        /// 
        public static IEnumerable Random(this List list)
        {
            // Initialize a random number generator with a seed.
            System.Random rnd =
                new Random((int)DateTime.Now.Ticks);

            // Create a list to keep track of which indexes we've
            // already returned
            List visited =
                new List();

            // loop until we've returned the value of all indexes
            // in the list
            while (visited.Count < list.Count)
            {
                int index =
                    rnd.Next(0, list.Count);

                // Make sure we've not returned it already
                if (!visited.Contains(index))
                {
                    visited.Add(index);
                    yield return list[index];
                }
            }
        }
    }
}

382
задан kmario23 9 July 2018 в 11:48
поделиться

2 ответа

1. Эпоха является 1 полным циклом, где Нейронная сеть видела все он данные.
2. Можно было бы иметь, говорят, что 100 000 изображений для обучения модели однако пространство памяти не могло бы быть достаточным для обработки всех изображений сразу, следовательно мы разделяем обучение модель на меньших блоках данных, названных пакетами. например, пакетный размер равняется 100.
3. Мы должны покрыть все изображения с помощью нескольких пакетов. Таким образом, нам будут нужны 1 000 повторений для покрытия всех 100 000 изображений. (100 пакетных размеров * 1 000 повторений)
4. После того как Нейронная сеть смотрит на все данные, это называют 1 Эпохой (Точка 1). Возможно, понадобились бы несколько эпох для обучения модели. (давайте скажем 10 эпох).

0
ответ дан 22 November 2019 в 23:53
поделиться

эпоха

А полное обучение передает по всему набору данных, таким образом, что каждый пример был замечен однажды. Таким образом эпоха представляет N / пакетный размер обучение повторения , где N является общим количеством примеров.

повторение

А единственное обновление весов модели во время обучения. Повторение состоит из вычислений градиентов параметров относительно потери на сингле пакет из данных.

как премия:

пакет

набор примеров, используемых в одном повторение (то есть, одно градиент обновление) образцовое обучение .

См. также пакетный размер .

источник: https://developers.google.com/machine-learning/glossary /

0
ответ дан 22 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: