За последние 24 часа нас посетили 18022 программиста и 1582 робота. Сейчас ищут 1293 программиста ...

Нейронная сеть на PHP. Моя первая, работающая :)))

Тема в разделе "Решения, алгоритмы", создана пользователем html-программист, 12 июн 2012.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  2. Gambit

    Gambit Активный пользователь

    С нами с:
    4 июн 2012
    Сообщения:
    108
    Симпатии:
    0
    распознает цифры на картинке или которые я ввел? :D
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    на картинке
     
  4. Gambit

    Gambit Активный пользователь

    С нами с:
    4 июн 2012
    Сообщения:
    108
    Симпатии:
    0
    и по какому принципу? по принципу уже заложенного в него образа? :D

    Добавлено спустя 32 секунды:
    я просто пока не уловил крутость)))
     
  5. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Смотрю логи. Какой-то интеллектуал из Ставрополя пытался обучить сеть распознавать "ебаный бред" %)

    Никаких образов внутри не заложено.

    Там все просто. Есть 10 нейронов, вот таких:

    [​IMG]

    У каждого нейрона 3х5 входов (столько-же, сколько пикселей у изучаемых картинок). На вход поступают сигналы, корректируются весами, суммируются и на выходе обрабатываются пороговой функцией (в нашем случае функция Хевисайда). Если на выходе определенный нейрон выдал 1 - значит он утверждает, что он угадал цифру (ну, скажем третий нейрон выдает на выходе 1 - значит он думает, что это его цифра). Наша же задача состоит в том, чтобы обучить нейроны угадывать только свою цифру. Обучаем мы изменяя весовые коэффициенты. Меняем мы их следующим образом: Если нейрон на выходе выдал 1, но цифру не угадал - мы к нашим весам прибавляем -1*входы, если же нейрон выдал на выходе 0, но цифру не угадал - тогда прибавляем +1*входы.

    Можно научить сеть делать всякие вкусняшки.
     
    Walk нравится это.
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Изначально в нейросеть закладывают только... Ничего!

    Теперь крутость нейросети тебе ясна. Нейросети ниипически круты. Просто они накладны. А на пхп - это как печь топить деньгами.
     
  7. Gambit

    Gambit Активный пользователь

    С нами с:
    4 июн 2012
    Сообщения:
    108
    Симпатии:
    0
    Столько не знакомых слов. Я из этого всего понял только то, что нейронная сеть нужна для таких задач, где требуется человеческий разум. Например определения содержимого поста в топике :D надо ли его автоматом удалять или нет.
     
  8. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Да, можно например фильтр матов сделать на нейронной сети. Чтобы она смогла блокировать все маты по умному. А-то иногда закрасишь слово <матное слово>, а вместе с ним закрашивается и слово <матное слово>. Только главное, чтобы сеть сама не начала материться.
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Насколько я понял ваш код,он сначала "учит", каким цифрам соответствуют какие картинки, а потом распознает. Т.е. в реале это будет две части - одна изучает тот или иной цифровой шрифт (набор картинок), а другая потом сможет прочитать любое число, записанное этими цифрами. Только в этом случае должен совпадать размер. Я правильно понял?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    любую сеть приходится сначала обучать, т.к. в неё изначально не закладывается ничего.
     
  11. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Сейчас таки начал изучать новую печь - Java.
     
  12. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    В Java имена переменных могут начинаться с знака $ О_О

    Добавлено спустя 5 минут 21 секунду:
    Код (PHP):
    1. int $i;
    2. for ($i=0; $i<10; $i++) {
    3.     System.out.println($i);
    4. } 
    Можно смело переходить с PHP на Java и продолжать говнокодить :)
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в пхп . это ->
     
  14. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Я бы
    тебе посоветовал прочитать книгу Макконела совершенный код.. На форуме про нее услышал всем советую)...
    Учит правильному прогерству.
    Java в техникуме год изучали), что в ней радует строгость в пхп такого нет.
    А в начале тебе придется консольные немного пописать.
    Это уже потом можно те же апплеты писать...
    Мы прогили на джаве только консольные и апплеты(что еще от учебного заведения можно хотеть)..
    Люди апплеты еще живут???
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    строгость не может радовать или не радовать. так говорить - уже ошибка в мышлении.
     
  16. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    ну немного не так выразился...
    Просто строгость учит писать грамотней, более чисто..
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да блин, опять снобизм. В пхп отсутствие типов - это великое благо, ускоряющее разработку. Мне очень удобно задавать массивам дефолтные false, пока они пустые, без оглядки на типы. И я всегда знаю что ифы отработают на пустые массивы или на фалсы адекватно и не запустят отрисовку, если рисовать нечего. Запись при этом короткая и понятная.

    А строгие типы НЕ учат ничему. В Visual Basic строгие типы, и... Ну ты понял.
     
    Walk нравится это.
  18. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Хочется че нить придумать))))) эдакое, но видимо ты прав...
    Просто оно как то прикольно раньше было со знанием дела этому этот тип этому этот а в пхп все так просто что аж пугает порой
     
  19. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    В Visual Basic не строгая типизация.

    Код (PHP):
    1. Private Sub Command1_Click()
    2. Cls
    3. pi = Text23
    4. kof = Text1
    5. = Text2
    6. kofx = Text3
    7. kofy = Text4
    8. = Text5 - 1
    9. alf = Text6 * pi / 180
    10. = Text14
    11. x(1) = 1
    12. y(1) = 1
    13. x(1 + 3 ^ n) = 1
    14. y(1 + 3 ^ n) = 513
    15. Line ((x(1) + kofx) * kof, (y(1) + kofy) * kof)-((x(1 + 3 ^ n) + kofx) * kof, (y(1 + 3 ^ n) + kofy) * kof)
    16. = 1
    17. = 1
    18. Do
    19. = b * Text24
    20. If Text22 > 0 Then Cls
    21. = 3 ^ (- 1)
    22. = k + 1
    23. = 0
    24. s2 = s + j
    25. s3 = s2 + j
    26. s4 = s3 + j
    27. = 0
    28. For i = 1 To 3 ^ (- 1)
    29. = c + Text25
    30. с2 = 3 ^ Text2 - 25
    31.  
    32. If z > r Then z = 0
    33. = z + 1
    34.  
    35. Select Case z
    36. Case 1
    37. alf = Text6 * pi / 180
    38. = Cos(alf)
    39. alf2 = Text14 * pi / 180
    40. a2 = Cos(alf2)
    41. Case 2
    42. alf = Text7 * pi / 180
    43. = Cos(alf)
    44. alf2 = Text15 * pi / 180
    45. a2 = Cos(alf2)
    46. Case 3
    47. alf = Text8 * pi / 180
    48. = Cos(alf)
    49. alf2 = Text16 * pi / 180
    50. a2 = Cos(alf2)
    51. Case 4
    52. alf = Text9 * pi / 180
    53. = Cos(alf)
    54. alf2 = Text17 * pi / 180
    55. a2 = Cos(alf2)
    56. Case 5
    57. alf = Text10 * pi / 180
    58. = Cos(alf)
    59. alf2 = Text18 * pi / 180
    60. a2 = Cos(alf2)
    61. Case 6
    62. alf = Text11 * pi / 180
    63. = Cos(alf)
    64. alf2 = Text19 * pi / 180
    65. a2 = Cos(alf2)
    66. Case 7
    67. alf = Text12 * pi / 180
    68. = Cos(alf)
    69. alf2 = Text20 * pi / 180
    70. a2 = Cos(alf2)
    71. Case 8
    72. alf = Text13 * pi / 180
    73. = Cos(alf)
    74. alf2 = Text21 * pi / 180
    75. a2 = Cos(alf2)
    76. End Select
    77.  
    78. alf = alf * b
    79. alf2 = alf2 * b
    80.  
    81. x(1 + s3) = a2 * ((x(1 + s4) - x(1 + s)) * Cos(alf2) + (y(1 + s4) - y(1 + s)) * Sin(alf2)) + x(1 + s)
    82. y(1 + s3) = a2 * ((y(1 + s4) - y(1 + s)) * Cos(alf2) - (x(1 + s4) - x(1 + s)) * Sin(alf2)) + y(1 + s)
    83. x(1 + s2) = a * ((x(1 + s4) - x(1 + s)) * Cos(alf) + (y(1 + s4) - y(1 + s)) * Sin(alf)) + x(1 + s)
    84. y(1 + s2) = a * ((y(1 + s4) - y(1 + s)) * Cos(alf) - (x(1 + s4) - x(1 + s)) * Sin(alf)) + y(1 + s)
    85.  
    86.  
    87.  
    88. Line ((x(1 + s) + kofx) * kof, (y(1 + s) + kofy) * kof)-((x(1 + s2) + kofx) * kof, (y(1 + s2) + kofy) * kof), c
    89. Line ((x(1 + s2) + kofx) * kof, (y(1 + s2) + kofy) * kof)-((x(1 + s3) + kofx) * kof, (y(1 + s3) + kofy) * kof), c2
    90. Line ((x(1 + s3) + kofx) * kof, (y(1 + s3) + kofy) * kof)-((x(1 + s4) + kofx) * kof, (y(1 + s4) + kofy) * kof), c
    91. PSet ((x(1 + s4) + kofx) * kof, (y(1 + s4) + kofy) * kof), c
    92.  
    93. = s4
    94. s2 = s + j
    95. s3 = s2 + j
    96. s4 = s3 + j
    97. = n - 1
    98. Loop Until n = 0
    99. End Sub
    Добавлено спустя 15 минут 12 секунд:
    Дракон Хартера-Хейтуэя, в 15 лет писал.
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может попутал. не меняет ничего. не зависит прямота рук и архитектуры от типизации =)
    в MySQL тоже типизация. Все поголовно делают хорошие стукруты БД и пишут правильные запросы? Хрен там.
     
  21. ApJIeKuHo

    ApJIeKuHo Активный пользователь

    С нами с:
    8 авг 2012
    Сообщения:
    7
    Симпатии:
    0
    Про Макконела - согласен) По крайне мере если я ту книгу правильно вспомнил =))
    Вот такое еще нашел: http://forum.vingrad.ru/forum/topic-38347.html - это получается что в принципе реально подружить Java и PHP между собой? И писать на Java а выводить на PHP??
    Работал кто таким макаром?) Может носом ткнуть куда смотреть надо?)

    За нейронную сеть - зачОт) Вообще жесть, надеюсь когда нить научиться делать подобное и лучше))
     
  22. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Нейронная сеть там довольно таки примитивная, и тем самым не зачетная. Этот домен был приобретен не для этого :)
    Там скоро будет грандиозный проект. Некий симбиоз википедии, хабры и вконтактика. И да, управляться будет неким подобием нейронной сети (не совсем нейронной, но со своими механизмами саморегуляции)))
    Сейчас не могу придумать, как мне правильно кэш прикрутить(
     
  23. ApJIeKuHo

    ApJIeKuHo Активный пользователь

    С нами с:
    8 авг 2012
    Сообщения:
    7
    Симпатии:
    0
    Мда... есть же люди со светлой головой))
    Очень интересно что с этим проектом получится)
    Потому если надо - буду рад потестить, помочь по мере сил так сказать))
    Так что первый пользователь уже есть))
     
  24. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Ну тогда рекомендую зарегистрироваться на сайте, чтобы я сделал рассылку, когда он заработает.
     
  25. ApJIeKuHo

    ApJIeKuHo Активный пользователь

    С нами с:
    8 авг 2012
    Сообщения:
    7
    Симпатии:
    0
    Зарегистрировался)
    P.S. Поле для пароля может стоит сделать с типом password ?))))