Pull to refresh

Comments 11

Статья очень качественная и интересно написанная, но...! Я, конечно, покажусь хамским занудой, однако если немного поискать на одном только хабре есть уже штук 5 введений в сверточные нейронные сети и еще несколько более глубоких погружений. Тема, конечно, важная, но если бы те же усилия направить на что-то мало покрытое статьями, имхо было бы читателям интереснее. Скажем, если автор заходит со стороны аудио, то можно было бы осветить dilated convolutions, сравнить CNN vs RNN для анализа последовательностей, или подробно описать современные ускоренные реинкарнации WaveNet и т.п. Введений в нейросети ну уж слишком много в последнее время, уж простите меня.

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

А я позволю себе заметить, что заголовок не совсем соответствует содержанию. Для неподготовленного читателя это далеко не «просто о сложном».
Посоветуйте пожалуйста, что можно почитать, посмотреть, для углубления в тему сверточных нейронных сетей.
Заранее, спасибо!
Да вот же
Курс о Deep Learning на пальцах
Это просто даже сравнить нельзя по качеству наполнения и подачи материала.
В этой статье, мягко говоря, каша и сумбур.
Особенно финал понравился.
Для человека, который первый раз слышит о CNN, не очень удобоваримо.
Автору за статью спасибо. Хотелось бы увидеть от автора статью про капсульные сети.
UFO just landed and posted this here
Ускоряет, т.к интерпретатору не нужно несколько раз анализировать повторяющийся код.
UFO just landed and posted this here
  1. интерпретаторы уже лет десять с гаком так не работают, т.е. тупо code-body скомпилится jit-ом один раз, исполнение же его ничем не отличается от исполнения собственно кода функции. Но, в случае вызова функции добавляется обертка — поиск или маппинг её имя->указатель, проверка эпохи (что-то нужно перекомпилировать), передача аргументов в стек (или регистры если умеем), и возвращение значения/значений.
    Т.е. в целом даже в случае интерпретатора (а возможно ArsenAbakarov имел ввиду чистый компилятор), вызов функции часто медленнее чем исполнение того же кода, ибо без лишних накладных расходов).
    Вот вам к примеру питон с интерпретацией внутри (и временем исполнения без и с вызовом функции)…
    >>> import timeit
    >>> timeit.repeat("(a + b + c) - 1", setup="a = 1; b = 2; c = 3", repeat=3)
    [0.11377258186831796, 0.08951876673711467, 0.08850507679022712]
    >>> timeit.repeat("mysum(a, b, c) - 1", setup="a = 1; b = 2; c = 3;\
    ... mysum = lambda i,j,k: (i + j + k)", repeat=3)
    [0.1852146263911436, 0.14948333891504717, 0.15083834724907774]
  2. если же речь о компиляторах, то тут сложнее, но код даже часто специально дублируется, как в C/C++ при -O2 ... -Ofast, чтобы минимизировать издержки на вызов (не размывать кэш проца, и т.п. вкусности). И если скомпилировать с -Os, то будет как правило медленнее, хотя байт-код получится компактнее (и меньше).
  3. основная задача "функции" не для ускорения, т.е. да функции пишут не для этого.

Так что ArsenAbakarov в целом прав — нонсенс.

Просто перевод неправильный. В оригинале написано: «makes it faster to program». Т.е. ускоряет программирование, а не выполнение, конечно.

Sign up to leave a comment.

Articles