Сообщение Re[12]: Нейросеть для чайников от 21.07.2018 12:30
Изменено 21.07.2018 12:31 Khimik
Re[12]: Нейросеть для чайников
Здравствуйте, Erop, Вы писали:
E>И первая матрица 13х13 на 169 тоже одна для всех положений квадратика 13х13
Я вроде понял так.
Напомню, текущая задача – НС, которая распознаёт цифры от 0 до 9 на рисунке 16*16 из готового шаблона, но с произвольным сдвигом; например должно распознаваться это:

Делается НС из трёх слоёв. “Синапсы” от первого ко второму слою – это массив 256*16*10; последний индекс соответствует цифре, первый – исходному растру, второй – это массив окошек общим размером 4*4.
Например, в этом массиве слой X*1*1 выглядит, например, так:

Здесь внешние пиксели чёрные, поскольку окно имеет размер 13*13, то что за этими границами – просто обнуляется. Я рисую неточно. Вторая цифра 1 в X*1*1 означает левое нижнее окошко, третье – что распознаётся единица.
При перемножении исходной картинки 16*16 на эту матрицу синапсов получается матрица 16*10. Опять же, последний индекс – конкретная цифра которая распознаётся, первый – номер пикселя в растре 4*4.
Если на вход подавался рисунок с единицей, который изображён в начале поста, то эта матрица 16*10 будет большей частью заполнена нулями или близкими к нулю значениями, за исключением элемента 16*1: он будет равен 1.0, что означает что в пикселе с номером 4*4 картинки совпали и при перемножении растров получилось максимальное значение.
Здесь, правда, я уже изрядно запутался. Во-первых, я стал рисовать цветные рисунки, в то время как для начала проще было бы разобраться с бинарными чёрно-белыми. Во-вторых, если перемножать бинарные растры, то наверно должно использовать умножение XOR (ноль на ноль дают один, один на один тоже дают один). А как сделать XOR для небинарных рисунков, да ещё цветных – мне непонятно.
В третьих, чтобы при перемножении совпадающих шаблонов получилось в сумме 1.0, надо ещё их отнормировать.
Но это наверно частности. Далее идёт переход от второго к третьему слою: в каждом слое 4*4 значения просто суммируются, и получается массив из 10 чисел. Если на вход подавался рисунок двойки (в любом положении), то второй элемент массива будет равен 1.
Тем не менее, а я по-прежнему не вижуфилософского камня фундаментального принципа НС. Возникает такой вопрос: не является ли изложенная выше НС относительно медленной по сравнению с продвинутыми НС, которых обучали по Deep Learning и которые могут распознавать гораздо более произвольные рисунки?
E>И первая матрица 13х13 на 169 тоже одна для всех положений квадратика 13х13
Я вроде понял так.
Напомню, текущая задача – НС, которая распознаёт цифры от 0 до 9 на рисунке 16*16 из готового шаблона, но с произвольным сдвигом; например должно распознаваться это:
Делается НС из трёх слоёв. “Синапсы” от первого ко второму слою – это массив 256*16*10; последний индекс соответствует цифре, первый – исходному растру, второй – это массив окошек общим размером 4*4.
Например, в этом массиве слой X*1*1 выглядит, например, так:
Здесь внешние пиксели чёрные, поскольку окно имеет размер 13*13, то что за этими границами – просто обнуляется. Я рисую неточно. Вторая цифра 1 в X*1*1 означает левое нижнее окошко, третье – что распознаётся единица.
При перемножении исходной картинки 16*16 на эту матрицу синапсов получается матрица 16*10. Опять же, последний индекс – конкретная цифра которая распознаётся, первый – номер пикселя в растре 4*4.
Если на вход подавался рисунок с единицей, который изображён в начале поста, то эта матрица 16*10 будет большей частью заполнена нулями или близкими к нулю значениями, за исключением элемента 16*1: он будет равен 1.0, что означает что в пикселе с номером 4*4 картинки совпали и при перемножении растров получилось максимальное значение.
Здесь, правда, я уже изрядно запутался. Во-первых, я стал рисовать цветные рисунки, в то время как для начала проще было бы разобраться с бинарными чёрно-белыми. Во-вторых, если перемножать бинарные растры, то наверно должно использовать умножение XOR (ноль на ноль дают один, один на один тоже дают один). А как сделать XOR для небинарных рисунков, да ещё цветных – мне непонятно.
В третьих, чтобы при перемножении совпадающих шаблонов получилось в сумме 1.0, надо ещё их отнормировать.
Но это наверно частности. Далее идёт переход от второго к третьему слою: в каждом слое 4*4 значения просто суммируются, и получается массив из 10 чисел. Если на вход подавался рисунок двойки (в любом положении), то второй элемент массива будет равен 1.
Тем не менее, а я по-прежнему не вижу
Re[12]: Нейросеть для чайников
Здравствуйте, Erop, Вы писали:
E>И первая матрица 13х13 на 169 тоже одна для всех положений квадратика 13х13
Я вроде понял так.
Напомню, текущая задача – НС, которая распознаёт цифры от 0 до 9 на рисунке 16*16 из готового шаблона, но с произвольным сдвигом; например должно распознаваться это:

Делается НС из трёх слоёв. “Синапсы” от первого ко второму слою – это массив 256*16*10; последний индекс соответствует цифре, первый – исходному растру, второй – это массив окошек общим размером 4*4.
Например, в этом массиве слой X*1*1 выглядит, например, так:

Здесь внешние пиксели чёрные, поскольку окно имеет размер 13*13, то что за этими границами – просто обнуляется. Я рисую неточно. Вторая цифра 1 в X*1*1 означает левое нижнее окошко, третье – что распознаётся единица.
При перемножении исходной картинки 16*16 на эту матрицу синапсов получается матрица 16*10. Опять же, последний индекс – конкретная цифра которая распознаётся, первый – номер пикселя в растре 4*4.
Если на вход подавался рисунок с единицей, который изображён в начале поста, то эта матрица 16*10 будет большей частью заполнена нулями или близкими к нулю значениями, за исключением элемента 16*1: он будет равен 1.0, что означает что в пикселе с номером 4*4 картинки совпали и при перемножении растров получилось максимальное значение.
Здесь, правда, я уже изрядно запутался. Во-первых, я стал рисовать цветные рисунки, в то время как для начала проще было бы разобраться с бинарными чёрно-белыми. Во-вторых, если перемножать бинарные растры, то наверно должно использоваться умножение XOR (ноль на ноль дают один, один на один тоже дают один). А как сделать XOR для небинарных рисунков, да ещё цветных – мне непонятно.
В третьих, чтобы при перемножении совпадающих шаблонов получилось в сумме 1.0, надо ещё их отнормировать.
Но это наверно частности. Далее идёт переход от второго к третьему слою: в каждом слое 4*4 значения просто суммируются, и получается массив из 10 чисел. Если на вход подавался рисунок двойки (в любом положении), то второй элемент массива будет равен 1.
Тем не менее, а я по-прежнему не вижуфилософского камня фундаментального принципа НС. Возникает такой вопрос: не является ли изложенная выше НС относительно медленной по сравнению с продвинутыми НС, которых обучали по Deep Learning и которые могут распознавать гораздо более произвольные рисунки?
E>И первая матрица 13х13 на 169 тоже одна для всех положений квадратика 13х13
Я вроде понял так.
Напомню, текущая задача – НС, которая распознаёт цифры от 0 до 9 на рисунке 16*16 из готового шаблона, но с произвольным сдвигом; например должно распознаваться это:
Делается НС из трёх слоёв. “Синапсы” от первого ко второму слою – это массив 256*16*10; последний индекс соответствует цифре, первый – исходному растру, второй – это массив окошек общим размером 4*4.
Например, в этом массиве слой X*1*1 выглядит, например, так:
Здесь внешние пиксели чёрные, поскольку окно имеет размер 13*13, то что за этими границами – просто обнуляется. Я рисую неточно. Вторая цифра 1 в X*1*1 означает левое нижнее окошко, третье – что распознаётся единица.
При перемножении исходной картинки 16*16 на эту матрицу синапсов получается матрица 16*10. Опять же, последний индекс – конкретная цифра которая распознаётся, первый – номер пикселя в растре 4*4.
Если на вход подавался рисунок с единицей, который изображён в начале поста, то эта матрица 16*10 будет большей частью заполнена нулями или близкими к нулю значениями, за исключением элемента 16*1: он будет равен 1.0, что означает что в пикселе с номером 4*4 картинки совпали и при перемножении растров получилось максимальное значение.
Здесь, правда, я уже изрядно запутался. Во-первых, я стал рисовать цветные рисунки, в то время как для начала проще было бы разобраться с бинарными чёрно-белыми. Во-вторых, если перемножать бинарные растры, то наверно должно использоваться умножение XOR (ноль на ноль дают один, один на один тоже дают один). А как сделать XOR для небинарных рисунков, да ещё цветных – мне непонятно.
В третьих, чтобы при перемножении совпадающих шаблонов получилось в сумме 1.0, надо ещё их отнормировать.
Но это наверно частности. Далее идёт переход от второго к третьему слою: в каждом слое 4*4 значения просто суммируются, и получается массив из 10 чисел. Если на вход подавался рисунок двойки (в любом положении), то второй элемент массива будет равен 1.
Тем не менее, а я по-прежнему не вижу