Size: a a a

Язык программирования Julia / Julia programming language

2020 April 09

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Андрей Оськин
А ошибка продолжает выскакивать?
Нет
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Значит дело было:
а) в функции findfirst
б) функция findfirst не могла работать с типом GPUArray
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Вряд ли...
На всякий случай (да, это может быть немного странно, но это так), не надо использовать max(x...), есть специализированная функция maximum(x)
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Андрей Оськин
Вряд ли...
На всякий случай (да, это может быть немного странно, но это так), не надо использовать max(x...), есть специализированная функция maximum(x)
Ааааа
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Интересно
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ну и equal можно через броадкаст просто заменить на maximum(x) .== x
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Но в данном конкретном случае это все конечно просто argmax.
Но такие штуки могут быть полезны в других задачах.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Кстати!
Насчёт cpu(nn) - это хорошее замечание.
Что могло произойти - так как вычисления идут на GPU, то значит они паралельны.
Если они параллельны, то финальные суммирования могут идти в разном порядке между разными запусками. К сожалению float некоммутативен, и поэтому два разных запуска cpu(nn) давали два разных вектора.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
И поэтому финальный findfirst не срабатывал, так как искал элемент, которого не было в массиве.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ну а у argmax такой проблемы нет, так как он ищет внутри одного массива.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Андрей Оськин
И на мой взгляд это как раз очень круто, гораздо удобнее OOP.

"Если умеешь от двух индексов возвращать значение и поддерживаешь функцию size - тебя можно использовать в моём алгоритме, кто бы ты ни был".
Это потому, что под ООП чаще всего понимается C++ вариант. В Ruby варианте, например, есть примеси, одной из которых является Enumerable. И всё, что имеет свою реализацию each, может использовать полный набор алгоритмов этой примеси.
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Андрей Оськин
И поэтому финальный findfirst не срабатывал, так как искал элемент, которого не было в массиве.
Вот это и был для меня главный вопрос, так как я не понимал, как может случиться, что объекта из массива нет в самом массиве
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Разве что мне нужно было nn(one) посчитать заранее один раз
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
А в findfirst вставить результат одного и того же общета два раза
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Да.
Но лучше использовать argmax 😊)) Который работает в несколько раз быстрее, чем его самописные вариации :-)
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Roman Samarev
Это потому, что под ООП чаще всего понимается C++ вариант. В Ruby варианте, например, есть примеси, одной из которых является Enumerable. И всё, что имеет свою реализацию each, может использовать полный набор алгоритмов этой примеси.
Обожаю руби (мне его показали ещё до появления RoR и он восхитил своей красотой и продуманностью), но Джулия всё же нравится больше 😊))
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Насколько я понимаю в современном мире OOP нужен в основном тогда, когда у тебя есть галера с гребцами, гребцов много, меняются часто и чтобы галера не развалилась на части, нужна поддержка контрактов со стороны языка. Прописал интерфейсы и никто уже ничего особо сделать не сможет, все ошибки ещё на этапе компиляции будут выловлены.

В языках типа Julia/python такого счастья нет, всё только количеством и качеством тестов определяется.

Могу ошибаться, сам вебом/прочим ужасом не занимался, в мире аналитики как раз наоборот свобода полная и чем меньше ограничений тем проще. Скрипты относительно короткие, ошибки как раз проще тестами выловить. Наследования, инкапсуляции - это всё тоже по большей части не нужно. Оформляешь нужный кусок в виде функции и пользуешься между разными задачами.
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Андрей Оськин
Насколько я понимаю в современном мире OOP нужен в основном тогда, когда у тебя есть галера с гребцами, гребцов много, меняются часто и чтобы галера не развалилась на части, нужна поддержка контрактов со стороны языка. Прописал интерфейсы и никто уже ничего особо сделать не сможет, все ошибки ещё на этапе компиляции будут выловлены.

В языках типа Julia/python такого счастья нет, всё только количеством и качеством тестов определяется.

Могу ошибаться, сам вебом/прочим ужасом не занимался, в мире аналитики как раз наоборот свобода полная и чем меньше ограничений тем проще. Скрипты относительно короткие, ошибки как раз проще тестами выловить. Наследования, инкапсуляции - это всё тоже по большей части не нужно. Оформляешь нужный кусок в виде функции и пользуешься между разными задачами.
Кєк, фронтдевы вообще непонятно чем занимаются
источник

AY

Artem Yurchenko in Язык программирования Julia / Julia programming language
Не то что ООП
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ну, под вебом я вообще сервис подразумеваю. И фронт и бэк.
источник