Я пытаюсь написать нейронную сеть для распознавания образов с hopfield. Я использую инструкции в книге Introduction to Neural Networks for C#, Second Edition, но я не использую его .dll-файлы и сам пишу все классы.Распознавание образов Hopfield
Джефф Хитон в своей книге говорит, что для поезда нейронной сети с Хопфилдом, мы должны получить входной шаблон (в матричной форме), а затем сделать это 3 шага:
1-Преобразование двоичного входа в двухполюсный (0 -> (-1), 1 -> 1)
2-Преобразование входного матрицы к строке матрицы (сохранить как M2), а затем перенести его (сохранить как M1), а после них умножения (М3 = M1 * M2)
3-Add to weight matrix (WeightMatrix + = M3)
Мой вопрос о шаге 2 ! Когда я конвертировать мою 8x8 матрицу грести матрицу с ниже код:
int count = 0;
int[] RowMatrix = new int[64];
for(int j=0; j<8;j++)
for (int i = 0; i < 8; i++)
{
RowMatrix[count] = PatternBipolar[i, j];
count++;
}
(PatternBipolar является входной шаблон, который преобразуется в биполярный) Мы имеем матрицу 1X64, и когда транспонировать мы имеем столбец матрицы 64X1. Поэтому, если мы умножим их (ColumnMatrix * RowMatrix, как говорится в книге), у нас есть матрица 64X64!
Но наша весовая матрица 8X8 (потому что у нас есть только 64 нейрона не 64 * 64 = 4096 !!! нейроны).
поэтому я смутился и нуждаюсь в help.pleas, помогите мне в решении этой проблемы и об этих матрицах. .
Я получаю входную матрицу с ниже формы, и использовать окно формы:
Hi Pooria. Вы имели в виду назвать свое имя переменной «count»? Просто, чтобы вы знали, имя переменной, которое вы имеете прямо сейчас, означает что-то особенно «не связанное с программированием» на английском языке. –
Привет Крис. Спасибо вам за подсказку! –