en
Feedback
Логово Комара

Логово Комара

Open in Telegram
1 918
Subscribers
No data24 hours
-187 days
-7830 days

Data loading in progress...

Tags Cloud
No data
Any problems? Please refresh the page or contact our support manager.
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
April '25
April '25
+3
in 0 channels
March '25
+8
in 0 channels
Get PRO
February '25
+16
in 0 channels
Get PRO
January '25
+15
in 0 channels
Get PRO
December '24
+62
in 0 channels
Get PRO
November '24
+135
in 1 channels
Get PRO
October '24
+89
in 0 channels
Get PRO
September '24
+54
in 1 channels
Get PRO
August '24
+44
in 1 channels
Get PRO
July '24
+1 247
in 3 channels
Get PRO
June '24
+386
in 1 channels
Get PRO
May '24
+2 093
in 0 channels
Date
Subscriber Growth
Mentions
Channels
16 April0
15 April0
14 April0
13 April0
12 April+1
11 April0
10 April0
09 April0
08 April0
07 April0
06 April0
05 April0
04 April0
03 April+1
02 April+1
01 April0
Channel Posts
Что такое паттерны в решении алгоритмических задач Паттерны в решении алгоритмических задач — это типичные подходы или страте
+1
Что такое паттерны в решении алгоритмических задач Паттерны в решении алгоритмических задач — это типичные подходы или стратегии, которые часто используются для решения определенных классов задач. Каждая задача входит в ряд задач, которые перекрывает определённый паттерн Примеры задач на Окна фикс. длины: ✔️максимальная сумма массива Пересекающиеся окна: ✔️цепочка уникальных генов Не пересекающиеся окна: ✔️Сжатие значений счётчика

2
Решение алгоритмической задачи с собеседования в Сбер Задача: Объедините два отсортированных связанных списка Описание задачи: Напишите функцию, которая принимает две головы отсортированных односвязных списков и объединяет их в один отсортированный связанный список. Что необходимо знать? Паттерн "dummy node" (или "фиктивный узел") часто используется в задачах, связанных с манипуляцией связанными списками, чтобы упростить обработку крайних случаев, таких как пустой список или изменение головы списка. Суть решения заключается в добавлении "пустой головы" связного списка Пример: Вход: List1: 1 -> 2 -> 4 List2: 1 -> 3 -> 4 Выход: 1 -> 1 -> 2 -> 3 -> 4 -> 4 Решение с использованием паттерна "dummy node" Создайте фиктивный узел, который будет использоваться для упрощения обработки крайних случаев. Используйте два указателя для прохода по each спискам и один указатель для добавления узлов в объединенный список. Переместите указатели по спискам, сравнивая значения узлов и добавляя меньший узел в объединенный список. В конце добавьте оставшиеся узлы из любого списка, если они остались. class ListNode: def __init__(self, value=0, next=None): self.value = value self.next = next def mergeTwoLists(list1: ListNode, list2: ListNode) -> ListNode: # Создаем фиктивный узел dummy = ListNode(0) current = dummy # Инициализируем указатели для each списка p1 = list1 p2 = list2 while p1 and p2: if p1.value < p2.value: current.next = p1 p1 = p1.next else: current.next = p2 p2 = p2.next current = current.next # Добавляем оставшиеся узлы из любого списка if p1: current.next = p1 else: current.next = p2 return dummy.next # Пример использования list1 = ListNode(1, ListNode(2, ListNode(4))) list2 = ListNode(1, ListNode(3, ListNode(4))) merged_head = mergeTwoLists(list1, list2) # Функция для печати списка def printList(head: ListNode): current = head while current: print(current.value, end=" -> ") current = current.next print("None") printList(merged_head) В этой задаче паттерн "dummy node" упрощает обработку крайних случаев, таких как пустые списки или списки с одним элементом
616
3
Вводить рубрику разбор вопросов с собеседований на разработчика, аналитика, ml инженера в крупные компании (Сбер, Яндекс, Авито,Озон) ?
969
4
Основные понятия или как запускать коды из канала, чтобы они работали 🔋 1 Что такое модель? Модель- алгоритм, позволяющий обрабатывать наши данные так, чтобы получился желаемый результат (прогнозирование, классификация и т. д.) 2 Что такое метрика? Метрика- математическая оценка того, насколько хорошо или плохо работает модель 3. Как загрузить модель? Загрузка происходит путём импортирования из библиотек: import *название библиотеки* 4. Что делать если модель не импортируется? Значит нужно установить эту библиотеку: Pip install *название библиотеки* 5. Как скормить модели свои данные или загрузить существующие? df = pd.read_csv("название файла") Файл с данными должен храниться в той же папке, что и код 6.Как посмотреть на данные? df.head() df- переменная, в которой хранятся данные 7.Где запускать код? • Visual Studio Code • Google Colab
900
5
Статьи и публикации Стэнфордского университета про LLM *LLM-модели, способные распознавать, переводить, прогнозировать или генерировать текст или другой контент
797
6
Перевод аудио в текст с помощью нейронной сети📌 Часть 2 audio = whisper.pad_or_trim(audio_13) #Number of samples in our trimmed/padded audio n_samples = audio.shape[-1] #Time of each sample time = np.linspace(0,(n_samples-1)*delta,n_samples) plt.figure(figsize=(20,10)) plt.title('Signal') plt.plot(time,audio) plt.ylabel('amplitude') plt.xlabel('seconds') plt.show() """Next, we can start plotting a mel spectogram by applying a log_mel_spectogram() funtion to our audio file. It converts the y-axis (frequency) into the mel scale:""" mel = whisper.log_mel_spectrogram(audio).to(model_m.device) fig, (ax1, ax2) = plt.subplots(2) fig.tight_layout(pad=5.0) ax1.plot(time,audio) ax1.set_title('Signal') ax1.set_xlabel('Time, seconds') ax1.set_ylabel('Amplitude') ax2.imshow((mel.numpy()*mel.numpy())**(1/2),interpolation='nearest', aspect='auto') ax2.set_title('Mel Spectrogram of a Signal') ax2.set_xlabel('Time, seconds') ax2.set_ylabel('Mel Scale') #Next, we can move on to language detection. #Language detection sr=22050 ipd.Audio(audio, rate=sr) probs = model_m.detect_language(mel) probs #Transcription file_path2= 'Rec.mp3' transcription = model_m.transcribe(file_path2, fp16 = False)['text'] transcription
1 044
7
Перевод аудио в текст с помощью нейронной сети📌 Часть 1. Загрузка модели и аудио файла #Importing the necessary libraries import torch import whisper import pytube import librosa import matplotlib.pyplot as plt import numpy as np import IPython.display as ipd #Loading the Model model_m = whisper.load_model('medium') #Loading the file # вставьте сюда ваш файл file_path = '/content/Rec.mp3' #Loading audio_13 = whisper.load_audio(file_path) audio_13 #Задаем время голосовго файла - 12 секунд T = 12 #Checking the number of samples in our audio file n_samples = audio_13.shape[0] #Time between samples delta = T/n_samples #Sampling frequency Fs = 1/delta #Time of each sample time = np.linspace(0,(n_samples-1) * delta,n_samples) time #Now we plot the amplitude with respect to time: plt.figure(figsize=(20,10)) plt.title('Signal') plt.plot(time,audio_13) plt.ylabel('amplitude') plt.xlabel('seconds') plt.show()
866
8
whisperr.py
4
9
Тема, которую необходимо освоить перед тем, как вникать в рекомендательные системы -ранжирование Ранжирование от ВШЭ Ранжирование от Яндекса Основные подходы ранжирования Ранжирование с нуля
1 100
10
Тема, которую необходимо освоить перед тем, как вникать в рекомендательные системы -ранжирование Ранжирование от ВШЭ Ранжирование от Яндекса Основные подходы ранжирования Ранжирование с нуля
143
11
Создание системы рекомендаций from collections import Counter import datetime import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.utils import shuffle from models.features.topics import topics_similarity from models.features.cosine import cosine_similarity_features clf = RandomForestClassifier() clf_one = RandomForestClassifier() clf_two = RandomForestClassifier() def generate_features(data, val=None): features = [] for raw in data: features.extend(topics_similarity(raw)) features.extend(cosine_similarity_features(data[:-1], data[-1])) if val is None: return features else: return features, val def generate_data(data): x_true = [] y_true = [] x_false = [] y_false = [] print('Start generate features.') for urls in data.sequences.find(): features = generate_features(data.get_articles_data(urls['urls']), 1) x_true.append(features[0]) y_true.append(features[1]) print('Start generate random data.') while len(x_true) != len(x_false): features = generate_features(data.get_random_articles(4), 0) x_false.append(features[0]) y_false.append(features[1]) return x_true + x_false, y_true + y_false def init(data): try: x = np.load(open('train_x.np', 'rb')) y = np.load(open('train_y.np', 'rb')) except FileNotFoundError: x, y = generate_data(data) np.save(open('train_x.np', 'wb'), x) np.save(open('train_y.np', 'wb'), y) x, y = shuffle(x, y) x_one = list(map(lambda a: a[:81], x)) x_two = list(map(lambda a: a[:122], x)) print('Train model for 3 articles.') clf.fit(x, y) print('Train model for 1 article.') clf_one.fit(x_one, y) print('Train model for 2 articles.') clf_two.fit(x_two, y) def predict(input_articles, input_ids,tvrain_data, recommends_num): result_counter = Counter() min_time = input_articles[0]['time'] - datetime.timedelta(hours=5) max_time = input_articles[-1]['time'] + datetime.timedelta(hours=5) mongo_query = {'time': {'$gt': min_time, '$lt': max_time}} len_articles = len(input_articles) # Gen for articles in Mongo for article in tvrain_data.iterate_articles(except_articles=input_ids, query=mongo_query): new_features = generate_features(input_articles + [article]) if len_articles == 3: result = clf.predict_proba([new_features]) elif len_articles == 2: result = clf_two.predict_proba([new_features]) elif len_articles == 1: result = clf_one.predict_proba([new_features]) result_counter[article['_id']] = result[0][1] return list(result_counter.most_common(recommends_num)) Материалы по данной теме
1 099
12
Создание системы рекомендаций ☸️ 🔸Среди рекомендательных систем выделяются три основных типа: коллаборативная фильтрация, контетная и гибридная. 🔸Коллаборативная фильтрация - наверное, наиболее популярная модель для рекомендации объектов. Её основная идея заключается в том, что если объекты смотрят почти одинаковые пользователи, то эти объекты стоит рекомендовать этим пользователям. В коллаборативной фильтрации выделяется два основных подхода: 🔶Корреляционные модели - основная идея таких моделий основана на хранении матрицы пользователей/объектов. 🔶Латентные модели - модели, которые позволяют не держать матрицу пользователей/объектов, а строятся на основе 'профилей' пользователей и объектов. Профиль - это вектор скрытых характеристик. 🔸Следующий способ построения рекомендательной модели - контетные рекомендации. Это значит, что наша модель будет зависеть от содержимого объектов. Например, можно оценивать похожесть текстов новостей (о том, как именно этот делать - чуть позже) или к фильму "Титаник" рекомендовать другие фильмы Кэмерона. Главная идея этого метода заключается в том, что мы пытаемся достать как можно большую информацию об объекте, который мы хотим порекомендовать, и используем эту информацию для поиска таких же объектов, после чего мы просто рекомендуем похожие объекты. 🔸Наша гибридная модель на основе признаков, которые мы вытащили для объекта и для пользователя возвращает вероятность того, что пользователь прочитает эту статью (кликнет на неё).
937
13
if len_articles == 3: result = clf.predict_proba([new_features]) elif len_articles == 2: result = clf_two.predict_proba([new_features]) elif len_articles == 1: result = clf_one.predict_proba([new_features]) result_counter[article['_id']] = result[0][1] return list(result_counter.most_common(recommends_num)) `
1
14
Создание системы рекомендаций ☸️ 🔸Среди рекомендательных систем выделяются три основных типа: коллаборативная фильтрация, контетная и гибридная. 🔸Коллаборативная фильтрация - наверное, наиболее популярная модель для рекомендации объектов. Её основная идея заключается в том, что если объекты смотрят почти одинаковые пользователи, то эти объекты стоит рекомендовать этим пользователям. В коллаборативной фильтрации выделяется два основных подхода: 🔶Корреляционные модели - основная идея таких моделий основана на хранении матрицы пользователей/объектов. 🔶Латентные модели - модели, которые позволяют не держать матрицу пользователей/объектов, а строятся на основе 'профилей' пользователей и объектов. Профиль - это вектор скрытых характеристик. 🔸Следующий способ построения рекомендательной модели - контетные рекомендации. Это значит, что наша модель будет зависеть от содержимого объектов. Например, можно оценивать похожесть текстов новостей (о том, как именно этот делать - чуть позже) или к фильму "Титаник" рекомендовать другие фильмы Кэмерона. Главная идея этого метода заключается в том, что мы пытаемся достать как можно большую информацию об объекте, который мы хотим порекомендовать, и используем эту информацию для поиска таких же объектов, после чего мы просто рекомендуем похожие объекты. 🔸Наша гибридная модель на основе признаков, которые мы вытащили для объекта и для пользователя возвращает вероятность того, что пользователь прочитает эту статью (кликнет на неё). ` from collections import Counter import datetime import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.utils import shuffle from models.features.topics import topics_similarity from models.features.cosine import cosine_similarity_features clf = RandomForestClassifier() clf_one = RandomForestClassifier() clf_two = RandomForestClassifier() def generate_features(data, val=None): features = [] for raw in data: features.extend(topics_similarity(raw)) features.extend(cosine_similarity_features(data[:-1], data[-1])) if val is None: return features else: return features, val def generate_data(data): x_true = [] y_true = [] x_false = [] y_false = [] print('Start generate features.') for urls in data.sequences.find(): features = generate_features(data.get_articles_data(urls['urls']), 1) x_true.append(features[0]) y_true.append(features[1]) print('Start generate random data.') while len(x_true) != len(x_false): features = generate_features(data.get_random_articles(4), 0) x_false.append(features[0]) y_false.append(features[1]) return x_true + x_false, y_true + y_false def init(data): try: x = np.load(open('train_x.np', 'rb')) y = np.load(open('train_y.np', 'rb')) except FileNotFoundError: x, y = generate_data(data) np.save(open('train_x.np', 'wb'), x) np.save(open('train_y.np', 'wb'), y) x, y = shuffle(x, y) x_one = list(map(lambda a: a[:81], x)) x_two = list(map(lambda a: a[:122], x)) print('Train model for 3 articles.') clf.fit(x, y) print('Train model for 1 article.') clf_one.fit(x_one, y) print('Train model for 2 articles.') clf_two.fit(x_two, y) def predict(input_articles, input_ids,tvrain_data, recommends_num): result_counter = Counter() min_time = input_articles[0]['time'] - datetime.timedelta(hours=5) max_time = input_articles[-1]['time'] + datetime.timedelta(hours=5) mongo_query = {'time': {'$gt': min_time, '$lt': max_time}} len_articles = len(input_articles) # Gen for articles in Mongo for article in tvrain_data.iterate_articles(except_articles=input_ids, query=mongo_query): new_features = generate_features(input_articles + [article])
1
15
Для тех, кто только хочет окунуться в DL с уклоном на CV, Мюнхенский университет выпустил открытый курс с лекциями и задачами
Для тех, кто только хочет окунуться в DL с уклоном на CV, Мюнхенский университет выпустил открытый курс с лекциями и задачами
1 250
16
Неделю назад участвовали в хакатоне, хочу поделиться некоторыми инсайтами от задачи. Задача заключалась в создании сервиса, к+1
Неделю назад участвовали в хакатоне, хочу поделиться некоторыми инсайтами от задачи. Задача заключалась в создании сервиса, который получает статью, преобразует ее в диалог между отцом и дочерью, где отец объясняет какую-то тему, а затем этот диалог озвучивается. Разработали следующую архитектуру: парсер для ссылок отправлял текст в настроенную модель GPT, которая создавала диалог из статьи, после чего модель синтеза речи озвучивала его. Все это было завернуто в Docker-контейнер и запущено на виртуальной машине. Однако столкнулись с проблемой: SSML-разметка не работала, озвучка была монотонной, без правильных ударений, а также размер токенов часто превышал допустимое значение. Для решения проблем решили попробовать подход prompt engineering. Мы создали километровый промпт, в котором подробно прописывали интонации, возможные ошибки и способы их устранения.По сути, все наши проблемы модель GPT сама устраняла, что было достаточно удобно. В итоге заняли шестое место. В условиях бекендерской задачи для ML-инженеров использование prompt engineering оказалось наилучшим решением. А тот факт, что весь код держался на одном длинном промпте, уже не баг,а фича, как говорится 🤔 Так вот, теперь инсайт: Не стоит недооценивать promt engineering, но и про промт инъекции забывать нельзя
1 126
17
Неделю назад участвовали в хакатоне, хочу поделиться некоторыми инсайтами от задачи. Задача заключалась в создании сервиса, который получает статью, преобразует ее в диалог между отцом и дочерью, где отец объясняет какую-то тему, а затем этот диалог озвучивается. Разработали следующую архитектуру: парсер для ссылок отправлял текст в настроенную модель GPT, которая создавала диалог из статьи, после чего модель синтеза речи озвучивала его. Все это было завернуто в Docker-контейнер и запущено на виртуальной машине. Однако столкнулись с проблемой: SSML-разметка не работала, озвучка была монотонной, без правильных ударений, а также размер токенов часто превышал допустимое значение. Для решения проблем решили попробовать подход prompt engineering. Мы создали километровый промпт, в котором подробно прописывали интонации, возможные ошибки и способы их устранения.По сути, все наши проблемы модель GPT сама устраняла, что было достаточно удобно. В итоге заняли шестое место. В условиях бекендерской задачи для ML-инженеров использование prompt engineering оказалось наилучшим решением. А тот факт, что весь код держался на одном длинном промпте, уже не баг,а фича, как говорится. Только вот учесть промт инъекции уже не оставалось времени 🤔 Так вот, теперь инсайт: Не стоит недооценивать promt engineering, но и переоценивать тоже такое себе
13
18
Что ещё хотите увидеть?
1 293
19
Часть 3: обучение нейронной сети. 📎 Теперь мы приступаем к обучению модели. Для этого нам нужно вызвать функцию fit () для модели и передать выбранные параметры. Вот где используется SEED, выбранный в целях воспроизводимости. numpy.random.seed(seed) model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=epochs, batch_size=64) Теперь мы можем оценить модель и посмотреть, как она работает. Просто вызовите model.evaluate(): # Model evaluation scores = model.evaluate(X_test, y_test, verbose=0) print("Accuracy: %.2f%%" % (scores[1]*100)) Обратите внимание, что в большинстве случаев вам нужно иметь проверочный набор, отличный от набора для тестирования, поэтому вы должны указать процент данных обучения, которые будут использоваться в качестве набора для проверки. В этом случае мы просто передадим тестовые данные, чтобы убедиться, что тестовые данные отложены и не использовались для обучения. В этом примере мы будем иметь только тестовые данные, чтобы все было проще)
1 215
20
Часть 2. Следующий этап: проектирование модели. model = Sequential() Первый слой нашей модели - это сверточный слой. Он будет принимать входные данные и пропускать их через сверточные фильтры. model.add(Conv2D(32, (3, 3), input_shape=X_train.shape[1:], padding='same')) model.add(Activation('relu')) Теперь мы создадим исключающий слой для предотвращения переобучения, который случайным образом устраняет соединения между слоями (0,2 означает, что он отбрасывает 20% существующих соединений): model.add(Dropout(0.2)) model.add(BatchNormalization()) Теперь следует еще один сверточный слой, но размер фильтра увеличивается, так что сеть уже может изучать более сложные представления: model.add(Conv2D(64, (3, 3), padding='same')) model.add(Activation('relu')) А вот и объединяющий слой, который помогает сделать классификатор изображений более корректным model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.2)) model.add(BatchNormalization()) Это основа рабочего процесса в первой части реализации CNN: свертка, активация, исключение, объединение. Теперь вы можете повторить эти слои, чтобы дать вашей сети больше представлений для работы: model.add(Conv2D(64, (3, 3), padding='same')) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.2)) model.add(BatchNormalization()) model.add(Conv2D(128, (3, 3), padding='same')) model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(BatchNormalization()) После того, как мы закончили со сверточными слоями, нам нужно сжать данные, поэтому мы импортировали функцию Flatten выше. Мы также добавим слой исключения снова: model.add(Flatten()) model.add(Dropout(0.2)) Теперь мы используем импортированную функцию Dense и создаем первый плотно связанный слой. Нам нужно указать количество нейронов в плотном слое. Обратите внимание, что число нейронов в последующих слоях уменьшается, в конечном итоге приближаясь к тому же числу нейронов, что и классы в наборе данных (в данном случае 10). Ограничение ядра может упорядочить данные в процессе обучения, что также помогает предотвратить переобучение. Вот почему мы импортировали maxnorm ранее. model.add(Dense(256, kernel_constraint=maxnorm(3))) model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(BatchNormalization()) model.add(Dense(128, kernel_constraint=maxnorm(3))) model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(BatchNormalization()) функция активации softmax выбирает нейрон с наибольшей вероятностью в качестве своего выходного значения, предполагая, что изображение принадлежит именно этому классу: model.add(Dense(class_num)) model.add(Activation('softmax')) Теперь, когда мы разработали модель, которую хотим использовать, остаётся лишь скомпилировать ее. Давайте укажем количество эпох для обучения, а также оптимизатор, который мы хотим использовать. Оптимизатор - это то, что настроит веса в вашей сети так, чтобы приблизиться к точке с наименьшими потерями. Алгоритм Адама является одним из наиболее часто используемых оптимизаторов epochs = 25 optimizer = 'adam' model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
967