Matlab - Обучение нейронной сети

От дружественная Википедия :

stdlib.h и stddef.h заголовочные файлы определяют тип данных, названный size_t, который используется для представления размера объекта. Библиотечные функции, которые берут размеры, ожидают, что они будут иметь тип size_t, и sizeof оператор оценивает к size_t.

фактический тип size_t зависим от платформы; частая ошибка состоит в том, чтобы предположить, что size_t совпадает с неподписанным интервалом, который может привести к программным ошибкам, особенно поскольку 64-разрядная архитектура становится более распространенной.

кроме того, проверьте , Почему size_t имеет значение

5
задан Amro 22 July 2010 в 19:42
поделиться

2 ответа

Это нормально. Ваш выходной слой использует функцию передачи логарифм-сигмоид, и это всегда будет давать вам промежуточный результат между 0 и 1.

Обычно вы будете искать результат с наибольшим значением - другими словами , наиболее вероятный символ.

Это будет означать, что для каждого столбца в y2 вы ищете индекс строки, которая содержит наибольшее значение в этой строке. Вы можете вычислить это следующим образом:

[dummy, I]=max(y2);

I - это вектор, содержащий индексы наибольшего значения в каждой строке.

и это всегда будет давать промежуточный результат между 0 и 1.

Обычно вы ищите результат с наибольшим значением - другими словами, наиболее вероятный символ.

Это будет означать что для каждого столбца в y2 вы ищете индекс строки, которая содержит наибольшее значение в этой строке. Вы можете вычислить это следующим образом:

[dummy, I]=max(y2);

I - это вектор, содержащий индексы наибольшего значения в каждой строке.

и это всегда будет давать промежуточный результат между 0 и 1.

Обычно вы ищите результат с наибольшим значением - другими словами, наиболее вероятный символ.

Это будет означать что для каждого столбца в y2 вы ищете индекс строки, которая содержит наибольшее значение в этой строке. Вы можете вычислить это следующим образом:

[dummy, I]=max(y2);

I - это вектор, содержащий индексы наибольшего значения в каждой строке.

2
ответ дан 15 December 2019 в 01:07
поделиться

Вы можете вспомнить y2 как выходное распределение вероятностей для каждого входного символа, являющегося одним из 26 букв алфавита, например, если в одном столбце y2 написано:

.2
.5
.15
.15

, то его 50% вероятность, что этот символ - B (если мы предположим, что только 4 возможных выхода).



== ПРИМЕЧАНИЕ ==

Выходной слой NN состоит из 26 выходов. Каждый раз, когда NN кормят ввод, подобный описанному выше он должен выводить вектор 1x26 содержащий нули во всех, кроме одного ячейка, соответствующая букве что входные значения предназначены для представлять. например, выход [1 0 0 ... 0] будет буквой A, тогда как [0 0 0 ... 1] будет буквой Z.

Желательно избегать использования целевых значений 0,1 для кодирования выходных данных сети.
Причина отказа от целевых значений 0 и 1 заключается в том, что сигмовидная передаточная функция 'logsig' не может производить эти выходные значения при конечных весах. Если вы попытаетесь обучить сеть, чтобы она соответствовала целевым значениям, равным точно 0 и 1, градиентный спуск заставит веса неограниченно расти.
Поэтому вместо значений 0 и 1 попробуйте использовать значения 0,04 и 0,9, например, чтобы [0,9,0,04, ..., 0,04] ​​был целевым вектором вывода для буквы A .


Ссылка:
Томас М. Митчелл, Машинное обучение, Высшее образование Макгроу-Хилла, 1997 г., стр. 114-115

1
ответ дан 15 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

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