Казалось бы, очередной холивар на горячую тему (особенно последнее время). Но автор наброса Brian Will сделал это вполне аргументированно.
У меня, кстати, отношение к этому такое же. Особенно, когда ковыряешься в чужом оо-спагетти, прыгая туда-сюда между методами, добираясь до реальной логики. Я активно использую модульный подход. Нет никакого смысла неадекватно плодить всякие объекты из того, что ими не является.
А последний ролик “Object-Oriented Programming is Good” — это что-то вроде ответа на фразу “Критикуешь?
Это офигенно :)
Новое ПО компании Nvidia, используя генеративно-состязательную сеть (GAN), позволяет превращать небольшие скетчи в довольно реалистичные изображения
Вспомнились текстовые квесты на ZX Spectrum, иногда сопровождающиеся похожими примитивными изображениями из линий и кругов.
Прикрутить кроме этой нейросети еще голосовой синтез и распознавание ввода команд, и те старинные игры, которым три с половиной десятка лет, будут восприниматься совершенно по-другому.
Вот так примерно выглядели такие схематические зарисовки.
Quest Adventure
Довел до формата библиотеки и выложил на github - html2sent. Эта небольшая либа принимает на вход HTML и делает в нем кое-какие правки (удаление явно “неинтересных” тегов, простановка точек в некоторых местах при их отсутствии и прочее), чтобы на следующем этапе nltk tokenizer намного качественней смог разбить текст на предложения.
Ну и опционально можно включить удаление таблиц, списков и т.п.
Очень удобно для массового прогона HTML файлов с целью вытягивания красивого текста.
Решил тут немного поконтрибьютить в питоновскую библиотеку summa. Кроме того, что там в функционале извлечения ключевых слов из русского текста происходит ненужный стемминг английских слов (послал pull-request), там еще полностью отсутствует список русских стоп-слов.
Вообще, само понятие стоп-слов немного размытое у людей. Некоторые используют это для фильтрации наиболее частотных слов языка в задачах классификации документов, например, если ипользуют алгоритмы, учитывающие частоту появления встречающихся слов. Но почему тогда так и не называть это словарем самых частотых слов?
Поймал сегодня себя на такой мысли, что нейросети сегодня чем-то напоминают первые игры, разработку которых очень сильно ограничивало железо.
Взять ту же Elite, авторы которой не могли просто взять и добавить 8 галактик с тысячами планет в 22 кб оперативки. Пришлось им выдумывать псевдослучайную генерацию с фильтрацией “плохих” данных.
Вот и нейросети сегодня - это постоянное перебалансирование таких параметров как размер сети, объем входных данных для обучения, их качество (и степень “упрощения”).
Ох и провозился я тут с удалением/установкой TensorFLow. Со вчера был запущен один тестовый нейро-проектик, но сегодня решил его стопорнуть — закралось подозрение, что у меня все только на CPU работатает, а не на GPU. Как-то не хватает привычного громкого жужжания всех кулеров, как было тогда, когда я раньше на ноуте tensorflow гонял.
Открыл System Information в “Process Hacker” - в разделе GPU нулевая активность. И это при том, что CPU дико нагружен - даже система стала не особо отзывчивая.
Итак, пока я тут доделал парсер-конвертер html-статей в набор предложений (с помощью BeautifulSoup4, различных регулярок и NLTK.tokenize - для подачи на вход нейросети на TensorFlow) и доволен чистотой результата, решил сделать паузу и, все-таки, написать эту забавную и поучительную историю.
Программерский детектив Приятно наблюдать как недавно собранный компьютер “перемалывает” всеми 8(16) ядрами нужную мне задачу. Вот только я не ожидал, что придется перезапускать это так много раз.
В последний раз так мозг закипал, наверное, только когда нужно было сделать динамический пересчет релокейшенов загруженного модуля win32.
Сижу такой, настраиваю на удаленном сервере работу скрипта, который через ssh-туннель делает запрос к сервису, который у меня дома локально под WSL работает.
Так вот, запускаю lynx 127.0.0.1:port, чтобы проверить, что туннель выключился. Но он, почему-то, работает…
Делаю netstat -lntp|grep port, получаю PID, затем kill PID. lynx 127.0.0.1:port … Хм. Все еще работает…
Повторяю действие несколько раз, убиваю каждый раз новый ID процесса. Тоннель все еще работает. Чешу репу…
И тут осознаю всю ржачность ситуации.
Вчера вдруг осознал, насколько удобней будет переключать RUS/ENG не привычным CTRL+SHIFT, а клавишей CAPS LOCK, учитывая, что я использую слепой 10-типальцевый метод и для русского, и для английского текста. (Тогда пальцы не нужно будет центрировать заново каждый раз)
Как оказалось, в Windows 10 нельзя выбрать такой вариант. Но есть некоторые сторонние программки для этого дела. И тут мне захотелось самому быстренько такую зафигачить.
Сначала кое-как вымучил такую утилитку на Go. Офигел от кривости этого всего кода, с кучей обвязок для Win32 API.
Столкнулся с такой проблемой при подключении PC->DVI->HDMI к телевизору Philips - какое бы я разрешение не выставил, после перезагрузки телевизор мне пишет “разрешение не поддерживается” (или “нет сигнала). Тестировал и под Linux Mint/Ubuntu - все идентично глючит.
И после некоторого гугления обнаружил, что многим известна такая проблема. Вроде бы, это все как-то связано именно с NVIDIA картами и Philips TV. И решений каких-то не существует. Кто-то вообще телевизор в магазин возвращал.