Small Data Science for Russian Adventurers
11.3K subscribers
307 photos
3 videos
13 files
708 links
БЕЗ ЧУЖОЙ РЕКЛАМЫ Авторский канал Александра Дьяконова (dyakonov.org)
машинное (machine learning) и
глубокое обучение (deep learning)
анализ данных (data mining)
наука о данных (data science)
ИИ (artificial intelligence)
математика (math)
и др.
ЕСТЬ ЧАТ;)
Download Telegram
image_2021-06-27_18-59-07.png
38.7 KB
#код
Забавный баг (появился относительно недавно): в jupyter lab без выделенных строк ядро умирает при вызове imshow. Весь старый код, в котором есть хотя бы один вызов imshow сейчас не работает...
#код
Сам не пробовал, но когда-то что-то подобное было актуально. Только вот автоматический выбор размера батча проблемы с памятью не решит.
https://github.com/rentruewang/koila
👍1
#код
Сижу тут, пытаюсь тексты кластеризовать, взял представления из трансформеров, решил посмотреть, как в пространстве главных компонент будет получаться... а получается какая-то ерунда, качество то высокое, то низкое. Хорошо, что люблю всё визуализировать - ошибка сразу нашлась - обратил внимание, что порядок сингулярных значений какой-то странный.

Что в итоге... Если Вы пользуетесь функцией scipy.sparse.linalg.svds, то в помощи есть забавная фраза "The order in which the singular values are returned is not guaranteed". Вроде как её раньше не было (я часто пользовался этой функцией, так как она получает нужное количество компонент, и проблем не возникало).
😱54👍16🤔6
#код
Вот вам простейшая, но хорошая для собеседования DL-исследователей/инженеров задача. Попробуйте решить сами прежде, чем посмотреть ответ.

Даны два тензора - X размера MxN и Y размера KxN, нужно получить тензор размера MxK, ij-й элемент которого норма разности i-й строки X и j-й строки Y.

Понятно, что задачка возникает на практике и должна решаться на автомате;)

Пример: для входа
tensor([[0., 0., 0., 0.],
[1., 1., 1., 1.],
[1., 2., 3., 4.]])
tensor([[1., 0., 0., 0.],
[0., 0., 0., 1.]])

выход
tensor([[1.0000, 1.0000],
[1.7321, 1.7321],
[5.3852, 4.7958]])

Решение (для PyTorch): (X.unsqueeze(1) - Y).norm(dim=2)
👍60👏4
#код
В прошлом опросе по питону в комментариях есть ссылки на хорошие ресурсы. Большинство из них я использовал, когда когда-то готовил занятия по питону. Из "странностей" языка моя любимая, пожалуй, эта -
a = [lambda: i for i in range(3)]
b = [f() for f in a]
print (b)
(ниже опрос). Легко объясняется, но совсем нетривиальна до тех пор, пока сам не столкнёшься.
🔥10👍1
#код
Демки разных методов, есть код на Python, R, Julia и Matlab. Ничего сверхполезного вроде нет, но для новичков будет в самый раз.
https://www.numerical-tours.com/
👍20🔥2
#код
Забавляет, что в библиотеках, которыми пользуется DS сообщества, при более-менее стандартных именах функций на ровном месте возникают несогласованности. Например, конкатенация матриц / датафреймов / тензоров:
в нумпае - numpy.concatenate,
в пандасе - pandas.concat,
в пайторче - torch.cat.

Некоторые особенности разного именования вызваны разными концепциями средств программирования (например, пометка inplace-методов с помощью аргумента inplace или с помощью знака подчёркивания).

Некоторые просто авторские (например, последний слой предобученных нейросетевых моделей: fc / classifier / head).

Но вот зачем конкатенацию по-разному называть? :)
😁54🥴19🤔5💯5
#код
Довольно известный ресурс про эффективное программирование на питоне (по памяти и по скорости) - но в этом канале я ещё на него ни разу не ссылался. Есть отдельная подборка статей по DS: numpy, pandas, polars и т.п.

https://pythonspeed.com/
🔥96👍1513🙏2