Как нейронные сети используются, когда количество исходных данных могло быть переменным?

C++:

bool is_palindrome(const string &s)
{
    return equal( s.begin(), s.begin()+s.length()/2, s.rbegin());
}
56
задан Pang 8 December 2015 в 03:26
поделиться

4 ответа

Обычно функции извлекаются из данных и передаются в сеть. Не рекомендуется брать какие-то данные и передавать их в сеть. На практике предварительная обработка и выбор правильных функций решат ваш успех и производительность нейронной сети. К сожалению, ИМХО, чтобы развить это чувство, нужен опыт, а это ничему не научишься из книги.

Подводя итог: «Мусор на входе, мусор на выходе»

29
ответ дан 26 November 2019 в 17:27
поделиться

Я не совсем уверен, но я бы сказал, используйте максимальное количество вводов (например, для слов, допустим, ни одно слово не будет длиннее 45 символов (самое длинное слово, найденное в словарь согласно Википедии), и если встречается более короткое слово, установите для других входов пробельный символ.

Или с двоичными данными, установите его в 0. Единственная проблема с этим подходом - если ввод заполнен пробельными символами. / zeros / все, что противоречит допустимому вводу полной длины (не столько проблема со словами, сколько с числами).

0
ответ дан 26 November 2019 в 17:27
поделиться

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

Рекуррентная нейронная сеть для вычисления четности будет иметь только одну входную функцию. Биты могут вводиться в нее с течением времени. Его вывод также возвращается на скрытый слой. Это позволяет узнать четность всего с двумя скрытыми модулями.

Обычная двухуровневая нейронная сеть с прямой связью требует 2 ** скрытых единиц длины_последовательности для представления четности. Это ограничение действует для любой архитектуры с двумя уровнями (например, SVM).

18
ответ дан 26 November 2019 в 17:27
поделиться

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

2
ответ дан 26 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

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