что за ерунда, можно хотя бы элементы батча паралельно пускать, а так расчёт реккурентной цепи конечно последовательный но умножение матриц всегда можно распаралелить с выигрышем
Можно интерпретировать без знания кераса что написана белиберда.
В функции создаётся параметрический уровень (self.W) который потом скалярно умножается (K.dot) на входной вектор
этого в коде не происходит.
Интуитивно читается:
пусть на входе полносвязный слой в 120 элементов, заданы features_dim = 20, step_dim =3,
решепим в вход: (6 ,20) dot(20,1) = (6,1) => (2,3) что бредово, так как одна карта W применена к разным позициям полносвязного вектора со страйдом как свой размер.
Почему W решейпится каждый раз?
Или на входе батч, но тогда не надо решейпить?
Далее нормировка вдоль каждых 3-х элементов, автор уверен в этом?
Может я неправильно интерпретирую говнокод Кераса, следовало написать на numpy или в псевдокоде чистый код на 3 строки.
моё видение:
— пропускаем вход x через обычный полносвязный слой y = x*w + b
— применяем активацию ya = norm(exp(tanh(x))
Кстати, напишите пожалуйста в комментариях, если вы узнали в этой логике какую-то математическую высокоуровневую функцию.
напоминает некий мульти-софтмакс что ли…
— выходом будет x*ya
Кстати, теоретически слой может быть и не один
автор не только понимает принципы чистоты кода, но и не поленился указать обратное распостранение. Там считается производная произведения типа (x*softmax(tanh(x))' = x' * softmax(tanh(x)) + x* (softmax(tanh(x))'
помня что производная от софтмакс линейная будет: softmax(tanh(x)) + x* (softmax(tanh(x)) * (tanh(x))'
помня что производная от танха будет 1 — tanh^2(x):
dx = y/ x+ y * ( 1 - tanh^2(x))
Хух. конечно скорее всего я где то в рассуждениях не прав, прошу подкоректировать.
P.S а стоп, я уже сплю не сразу допёр что если взять логарифм будет log(x) + log_softmax(tanh(x*w+b)) то есть атеншн слой эквивалентен resnet с log активациями?
стоп, вышеописанный код для тебя — статическая, динамическая типизация или безтипная? потому что тут может быть и статическая смотря как работает rand))
если потом будет присвоение другому типу там test = 42.0, согласен в питоне есть ряд вещей которые я бы подкоректировал или поудалял, сделав его таким языком чтобы других ненадо было ))
варианты не только «без типизации» и со «статической типизацией». Опять 25 — моё предложение — возможность включать / отключать типизацию, плюс инспекция действительно ли переменная динамическая, или её можно заменить одной (вроде auto ) или несколькими статическими в препроцессинге
Pyton фактически избежал типизации потому что arg:type толком не работает, сам тестил туда без какого либо сообщения пролезает тип который там быть не должен.
Да щас я тут кучу минусов понахватаю)
Вообщем у сеток проблемы выделять и валидировать крупные абстракции, написать связное предложение или нарисовать отдельный элемент проще, а вот скомпоновать чтоб всё вместе — много предложений или картинка в целом имело смысл там начинается ужас. Из сценария сделать кино это ещё куда ни шло, а вот сделать сам сценарий. А чтоб заставить сетку всё таки уметь так делать нужны чрезмерно большие расчёты. Пройдёт лет 10 и вы увидите что сетки это только для первоначальной сенсорики или генерации конечных образов, а системы работающие с настоящим смыслом — там другие архитектуры, у меня даже есть предположения какие)))
Лучше бы уделили внимание правовым вопросам видеонаблюдения, такие как снятие видео о частных лицах «в личных целях» а не для бизнеса, нарушая закон о конфединциальности личной жизни против обычных людей для прикола.
На облаке данные разумеется должны зашифрованы, о чём тут ним слова, так что трудно докопаться что и как снимали. Но админ облака всё равно может просто так эффективно майнить события из большого числа видео и сливать налево за бабло даже без ведома заказчика облака, законы по этому поводу не айс вообще в мире а уж особенно в РФ так что хрен докопаешься.
Обозначенные приимущества, кроме разве что размера архива, никак не связанны именно с разгрузкой на облако. Это пакет сервисов которые можно установить и локально. Локально — значит БЕЗ ИНТЕРНЕТА, а просто сурово камера -> канал -> ваш комп. По пунктам:
уведомления о событиях онлайн;
интегрированные модули видеоаналитики;
модуль распознавания образов/ событий, не зависит от того, в облаке это или нет.
высокая совместимость с клиентским оборудованием;
в смысле «высокая совместимость», гении?
надежная защита и гарантированная сохранность записей до 365 дней и более;
чтоб не хранить большие архивы можно сразу разпозновать события и хранить только представляющие интерес куски видео, а остальное 99.99% сразу удалять.
удобное управление доступом с гибкой системой распределения прав между пользователями;
и ещё админом облака
онлайн просмотр трансляций и архива с любых платформ (Win, Linux, MacOS, Android, iOS);
а нефиг онлайн смотреть то что должно остаться локально в тайне)))
эффективная работа с архивом и трансляцией – одновременный просмотр множеством пользователей.
отлично, клуб вуаэристов приносит неплохое бабло )))
главное не производительность а качество кода. А так на дворе 21 век так что можно задуматься можно ли сделать компилятор на паралельной платформе например CUDA какой нить.
В последнем семестре университета я выбрал курс компиляторов CS444. Там каждая группа из 1-3 человек должна была написать компилятор из существенного подмножества Java в x86.
а можно поподробнее о задаче, какие там точно действия после AST, желательно на русском, может и я на питоне что то накалякаю, сравним. Всё думаю о написании универсального компилятора, с контролем юзера над действиями и типом результата…
Её компилятор состоял из 4581 строки
для питона — гигантский проэкт, может там всё таки имеется флуд?
кстати с eval нечестно, но прелесть питона в том что там за строк 10 пишется свой eval
Другой пример мощи метапрограммирования и динамической типизации — 400-строчный файл visit.rs, это в основном повторяющийся шаблонный код, реализующий визитора на куче структур AST. В Python это может быть короткая функция примерно на 10 строк, которая рекурсивно интроспектирует поля узла AST и посещает их (используя атрибут __dict__).
А разве нельзя в другом языке сделать стирание типов например один класс ASTNode, с присваиванием функций даже java 8 там может, вместо того чтоб расписывать флуд, чем являются паттерны програмирования
Как поклонник Rust и статически типизированных языков в целом, я склонен отметить, что система типов очень полезна для предотвращения ошибок и для производительности.
Проверять ошибки можно, а при непредсказуемой структуре нужно в рантайме, в python это элегантно делается декоратором, при этом вы имеете приимущество встраивания любых своих проверок и возможностью включать и выключать по желанию. Собсветнно я сторонник включения / выключения проверки типов во желанию.
Ну вот зачем архаичный язык почти такой же как и другие императивные, только со спамом $ тащить в двадцать первый век? Неужели нельзя перестать быдлокодить одни и те же низкоуровневые операции 10000 раз и сделать модуль для веб разработки, генерирующийся из модели???
ахаха, ко всему можно придраться но код всё таки чище многих реальных якобы крутых проджектов. хотя бы читается, карл, не зная языка — а это уже что то. самое быдло тут перехват ошибок обычными условиями if err != nil вместо механизма эксепшнов, который везде должен быть. Мелочи — разный стиль формирования строк:
fmt.Sprintf("%s — %s %s", name, ip, region) тут типа printf
а тут прибавление
url = «cloud.digitalocean.com/droplets» +
strconv.Itoa(droplet.ID)
а вот опять плюсы
systray.SetTooltip(«You have » + strconv.Itoa(len(dropletList)) + " droplets")
вспоминаю очень строгого препода, который говорил что все константы, строковые в том числе, должны быть извлечены наверх проги
мож что то ещё тут, подозреваю что слишком специализированный код но я не знаю это уго
Например, вопрос «Определите, есть ли в связном списке цикл». Предполагается, что кандидат должен придумать решение типа «черепаха и заяц», опубликованное в обильно цитируемой научной статье 1967 года.
что за бред?
Смысл связного списка в том чтобы просто так его полностью не обходить каждый раз, и то что в списке нет недолжного цикла в первую очередь определяется его использованием в программе.
Второе, чтобы не болтаться туда сюда несколько раз, цикл проходим один раз с эффективным хешированием узлов, например по мере создания присваиваем узлу номера 0,1,2,3 и т.п. и составляем битовую лукап-таблицу из известных номеров узлов с флагами 1<< номер, смотрим туда в местах когда вы хотите контролировать что цикл не будет создан.
Мы написали самый полезный код в своей жизни,
не, изобрели динамическую валидацию при стёртых типах, которая слабо похожа на что там в SOAP. Приятно видеть что эта маленькая функция которую очень кратко можно написать для питона с валидацией по типам, полям и т.п. — это «самый полезный код», ребята что же вы намриер про трейс исполнения кода по строкам в Питоне то скажите…
А потом да, говнокодищеес большой буквы Г)))
странно подтверждает эмпирический закон что то не напишешь на JS получишь быдлокод)))
из пустого в порожнее темплейты, потом слишком специализированный код для видители робота )))
ребята, кидайте обязательно этот код в резюме!!!
я не пойму, в бизнесе люди настолько тупые что не делают бекапы систем, а органы настолько тупые что не могут влезть притворившись хакерами, или отсделить движение денег, и провайдер настолько тупой что не может определить адреса трафика товарищей, или у них таки крыша??
а ничего что по идее должно выбрасываться exception и исполнение прекращается, а тут проглатываются эксепшены и выдаётся None которое может стать ложноположительным?
очень хорошо что начали курс, но можно меньше слов и больше дела бы в этом курсе, а то так 6 минутное видео где не сказано ничего — не оптимальная реклама…
циклическая зависимость легко может разрешаться интерпретатором без жалобы на якобы ошибки, зря что так не встраивают. Странное дело её не разруливает даже maven в своих проэктах…
очень классно было бы действительно по желанию включать проверку либо по названию класса либо структуры обьекта в рантейме и где можно на этапе интерпретации, а то перепутаешь места в функции, а ошибку выдаёт из чёрт знает какого места, а потом в коде хорошо протестенном отключать
и очень интересная фича LRU кэш, я чессно не знал и dict юзал
кста вроде одинакого по скорости этот кэш и ручной через dict, кто нибудь протестил нормально скорость??
имхо, в Питон версии 100500 + следует ввести:
инспекцию структуры любого обьекта с преттипринтом или лучше в визуальном представлении, когда берёшь неизвестный модуль, где документация плохая а все типы стёрты
обьединить нотацию для класса и dicta, inst['field'] эквивалентно inst.field
интерпретировать сложные comprehention декларативно с оптимизаций и кешем где надо
встроить без геморa частичные функции, с поддержкой интерпретатора заместо partial:
def fn ( a,b,c)
k = fn(1,2) #-> обьявление частичной функции k(c) c изсестными a,b,
потом
k[0] = 3 # безгеморная замена параметра на определённом месте
сложные lambda обьявления с функционалом как обычный метод
fib = lambda @lru_cache(maxsize=512), a: int ,b : int -> int : if number == 0: return 0
if number == 1: return 1
непонятно что происходит.
Можно интерпретировать без знания кераса что написана белиберда.
этого в коде не происходит.
Интуитивно читается:
пусть на входе полносвязный слой в 120 элементов, заданы features_dim = 20, step_dim =3,
решепим в вход: (6 ,20) dot(20,1) = (6,1) => (2,3) что бредово, так как одна карта W применена к разным позициям полносвязного вектора со страйдом как свой размер.
Почему W решейпится каждый раз?
Или на входе батч, но тогда не надо решейпить?
Далее нормировка вдоль каждых 3-х элементов, автор уверен в этом?
Может я неправильно интерпретирую говнокод Кераса, следовало написать на numpy или в псевдокоде чистый код на 3 строки.
моё видение:
— пропускаем вход x через обычный полносвязный слой y = x*w + b
— применяем активацию ya = norm(exp(tanh(x))
напоминает некий мульти-софтмакс что ли…
— выходом будет x*ya
Кстати, теоретически слой может быть и не один
автор не только понимает принципы чистоты кода, но и не поленился указать обратное распостранение. Там считается производная произведения типа
(x*softmax(tanh(x))' = x' * softmax(tanh(x)) + x* (softmax(tanh(x))'помня что производная от софтмакс линейная будет:
softmax(tanh(x)) + x* (softmax(tanh(x)) * (tanh(x))'помня что производная от танха будет 1 — tanh^2(x):
dx = y/ x+ y * ( 1 - tanh^2(x))Хух. конечно скорее всего я где то в рассуждениях не прав, прошу подкоректировать.
P.S а стоп, я уже сплю не сразу допёр что если взять логарифм будет log(x) + log_softmax(tanh(x*w+b)) то есть атеншн слой эквивалентен resnet с log активациями?
если потом будет присвоение другому типу там test = 42.0, согласен в питоне есть ряд вещей которые я бы подкоректировал или поудалял, сделав его таким языком чтобы других ненадо было ))
Pyton фактически избежал типизации потому что arg:type толком не работает, сам тестил туда без какого либо сообщения пролезает тип который там быть не должен.
Да щас я тут кучу минусов понахватаю)
На облаке данные разумеется должны зашифрованы, о чём тут ним слова, так что трудно докопаться что и как снимали. Но админ облака всё равно может просто так эффективно майнить события из большого числа видео и сливать налево за бабло даже без ведома заказчика облака, законы по этому поводу не айс вообще в мире а уж особенно в РФ так что хрен докопаешься.
Обозначенные приимущества, кроме разве что размера архива, никак не связанны именно с разгрузкой на облако. Это пакет сервисов которые можно установить и локально. Локально — значит БЕЗ ИНТЕРНЕТА, а просто сурово камера -> канал -> ваш комп. По пунктам:
модуль распознавания образов/ событий, не зависит от того, в облаке это или нет.
в смысле «высокая совместимость», гении?
чтоб не хранить большие архивы можно сразу разпозновать события и хранить только представляющие интерес куски видео, а остальное 99.99% сразу удалять.
и ещё админом облака
а нефиг онлайн смотреть то что должно остаться локально в тайне)))
отлично, клуб вуаэристов приносит неплохое бабло )))
а можно поподробнее о задаче, какие там точно действия после AST, желательно на русском, может и я на питоне что то накалякаю, сравним. Всё думаю о написании универсального компилятора, с контролем юзера над действиями и типом результата…
для питона — гигантский проэкт, может там всё таки имеется флуд?
кстати с eval нечестно, но прелесть питона в том что там за строк 10 пишется свой eval
А разве нельзя в другом языке сделать стирание типов например один класс ASTNode, с присваиванием функций даже java 8 там может, вместо того чтоб расписывать флуд, чем являются паттерны програмирования
Проверять ошибки можно, а при непредсказуемой структуре нужно в рантайме, в python это элегантно делается декоратором, при этом вы имеете приимущество встраивания любых своих проверок и возможностью включать и выключать по желанию. Собсветнно я сторонник включения / выключения проверки типов во желанию.
fmt.Sprintf("%s — %s %s", name, ip, region) тут типа printf
а тут прибавление
url = «cloud.digitalocean.com/droplets» +
strconv.Itoa(droplet.ID)
а вот опять плюсы
systray.SetTooltip(«You have » + strconv.Itoa(len(dropletList)) + " droplets")
вспоминаю очень строгого препода, который говорил что все константы, строковые в том числе, должны быть извлечены наверх проги
мож что то ещё тут, подозреваю что слишком специализированный код но я не знаю это уго
что за бред?
Смысл связного списка в том чтобы просто так его полностью не обходить каждый раз, и то что в списке нет недолжного цикла в первую очередь определяется его использованием в программе.
Второе, чтобы не болтаться туда сюда несколько раз, цикл проходим один раз с эффективным хешированием узлов, например по мере создания присваиваем узлу номера 0,1,2,3 и т.п. и составляем битовую лукап-таблицу из известных номеров узлов с флагами 1<< номер, смотрим туда в местах когда вы хотите контролировать что цикл не будет создан.
не, изобрели динамическую валидацию при стёртых типах, которая слабо похожа на что там в SOAP. Приятно видеть что эта маленькая функция которую очень кратко можно написать для питона с валидацией по типам, полям и т.п. — это «самый полезный код», ребята что же вы намриер про трейс исполнения кода по строкам в Питоне то скажите…
А потом да, говнокодищеес большой буквы Г)))
странно подтверждает эмпирический закон что то не напишешь на JS получишь быдлокод)))
из пустого в порожнее темплейты, потом слишком специализированный код для видители робота )))
ребята, кидайте обязательно этот код в резюме!!!
очень классно было бы действительно по желанию включать проверку либо по названию класса либо структуры обьекта в рантейме и где можно на этапе интерпретации, а то перепутаешь места в функции, а ошибку выдаёт из чёрт знает какого места, а потом в коде хорошо протестенном отключать
и очень интересная фича LRU кэш, я чессно не знал и dict юзал
кста вроде одинакого по скорости этот кэш и ручной через dict, кто нибудь протестил нормально скорость??
имхо, в Питон версии 100500 + следует ввести:
интерпретировать сложные comprehention декларативно с оптимизаций и кешем где надо
встроить без геморa частичные функции, с поддержкой интерпретатора заместо partial:
def fn ( a,b,c)
k = fn(1,2) #-> обьявление частичной функции k(c) c изсестными a,b,
потом
k[0] = 3 # безгеморная замена параметра на определённом месте
сложные lambda обьявления с функционалом как обычный метод
fib = lambda @lru_cache(maxsize=512), a: int ,b : int -> int : if number == 0: return 0
if number == 1: return 1
return fib_memoization(number-1) + fib_memoization(number-2)
рассмотрим как выглядели бы данные из примера в JSON, или например как принято в Питоне, просто в виде массива, потому что поля постоянные:
array = [
[product, Some product name. ID:0, 0,0,],
[service, Some product name. ID:1, 1 , 15],
[product, Some product name. ID:2, 2 , 30],
...]
fields = ['type' , 'name' , 'gtg', 'price']
поле 'id' может по умолчанию быть положением элемента в массиве.
в таком формате данные легко парсятся стандартными средствама практически любого нормального языка.
тогда подсчитать сумму можно лаконично в одну строку виде оператора эквивалентного select- where
summ_products = summ(array[[0] == 'product' ,3 ])