• Как сделать нейросетку для генетического 2D алгоритма?

    @imageman
    Рекуррентные сети
    https://qudata.com/ml/ru/NN_RNN_Torch.html - довольно сносное описание.
    Объясню "на пальцах":
    а) на вход нейросети подаются N блоков (фиксированной длинны), к примеру для N ботов это будут координаты x,y поэтому у нас будет вектор [N , 2]
    б) у нас есть некое внутреннее состояние нейросети (почти всегда инициализируется нолями) которое задается всегда определенным образом перед каждым запуском. Это массив длинной K (например 10). *** В твоем случае в самом начале в этот массив можно записать свои собственные координаты, какие-то дополнительные параметры (например число ботов).
    в) сеть состоит из двух частей - рекуррентная (перебирает по очереди вход) и финальная часть, которая на основе внутреннего состояния дает окончательный вывод (прогноз, результат).

    Теперь чуть подробнее. Рекуррентная часть это простая нейросеть любой конфигурации, которая на вход принимает массив "внутреннее состояние нейросети" и одну из N строк входного массива (в твоем случае "внутреннее состояние нейросети" + 2 числа). Обрабатывает это и на выходе получается новый массив "внутреннее состояние нейросети". Т.е. (как пример) на входе 12 чисел, на выходе 10 чисел.

    После обработки всех N строк входного массива в дело вступает финальная часть нейросети. Она может быть тоже любой конфигурации (структуры). На вход принимает "внутреннее состояние нейросети" (например 10 чисел), на выходе какой-то уже конечный результат (к примеру "угол" и "скорость").

    Надеюсь понятно изложил.
    Ответ написан
    1 комментарий
  • Почему может не запустаться ai-benchmark?

    @imageman
    Вроде как проблема с версией numpy. Нужно удалить установленный и поставить чуть старее.

    Пробуй:
    pip install numpy==1.23.4 --force-reinstall

    (или в две строки: сначала uninstall, потом install).

    Как вариант: пишите в поддержку.
    Ответ написан
    Комментировать
  • Важна ли многопоточность с ядрами для Фотошопа?

    @imageman
    В настройках фотошопа зайдите на Performance и пробуйте ставить Cache levels =2 и Tile Size 128k (правда тут настораживает "файлом весом 1 Гб и больше", но попробовать стоит). Возможно наоборот нужно эти значения повысить. Пробуйте, потом расскажете нам.

    Возможно имеет смысл какие-то слои (части изображения) объединять в Smart Object
    Ответ написан
    Комментировать
  • Нужно ли делать защиту при делении на ноль?

    @imageman
    Есть еще подход: к знаменателю всегда добавлять некий маленький эпсилон. К примеру eps=0.00001
    Ответ написан
  • Как правильно анализировать большое изображение с помощью модели с фиксированным размером входного изображения?

    @imageman
    1. Использовать структуру нейросети, которая на вход принимает большие картинки (вроде как U-Net из коробки работает так, что может обработать как 256*256, так и 1024*1024).
    2. Анализировать квадратами (нарезать) с перекрытием, потом сшивать как сшивают панорамы (поищите smartblend.exe). https://wiki.panotools.org/SmartBlend
    3. Заранее тренировать модель с учетом перекрытия, в этом случае сшивка должна быть сильно проще.
    Ответ написан
  • Используют ли при обучении нейронных сетей генетические алгоритмы?

    @imageman
    Даже для маленькой (по нынешним меркам) нейросети обучение градиентными методами будет быстрее на несколько порядков по сравнению с ГА (я подозреваю, что как минимум на 2-3 десятичных порядка быстрее). Когда же речь зайдет о больших нейросетях..... Там процесс обучения итак медленный, а замедлять его при помощи ГА не стоит. Тут в комментариях начинают спорить про дифференцируемость и про оптимизацию. Все нынешние нейросети делаются (проектируются) из расчета на градиентное обучение (метод обратного распространения ошибки), т.к. это сейчас самый быстрый способ. Оптимизация это, видимо, подбор гиперпамаретров? Да, он может делаться через ГА, но не делается. Для ГА характерно слишком большое число итераций, намного больше 100, а каждая итерация может занимать сутки. Слишком долго. По моим наблюдениям для подбора оптимальных параметров сильно нелинейной функции от 50 переменных ГА нужно более миллиона итераций. Для 18 переменных - 50 тысяч, для 23 - 200 тысяч. lit999.narod.ru/soft/ga/index.html - страница с моими старыми экспериментами (сравнение ГА с алгоритмом роя пчел) и https://imageman72.livejournal.com/5373.html.

    Но если нам нужно сделать какую-то совсем нестандартную нейросеть, при этом очень крохотную - может и пригодится ГА (было у меня и такое решение, но я не сравнивал его с градиентным спуском).
    Ответ написан
  • Как обратиться к элементу в другом классе?

    @imageman
    а self.count_message не работает? А, понятно - внутри _init_ ты определил кучку локальных переменных, а думаешь, что это переменные класса. Всюду нужно писать что-то вроде self.user_id = PrimaryKeyField(unique=True)
    посмотри как пишут в Описание python ООП (можешь поиском поискать там "self.")

    Добавление: забыт вызов инициализации родителя. Вроде как первой строкой инита нужно ставить super().__init__()

    class User_message(BaseModel):
      def __init__(self, message_num, message_text, message_date_time):
        super().__init__()
    Ответ написан
  • Как проверить наличие прозрачных пикселей?

    @imageman
    А посмотри вопрос
    https://stackoverflow.com/questions/65615059/check...
    Вроде то, что тебе нужно.

    image = Image.open(file).convert('RGBA') 
    alpha_range = image.getextrema()[-1]
    
    if alpha_range == (255,255):
        print("image is not transparent")
    Ответ написан
    Комментировать
  • Найти пары слов связанных с 4ми и более одинаковыми url?

    @imageman
    В входе список слово-URL (длина списка порядка 400k*10=4M элементов).
    Сортируем его по URL. Если после сортировки у 4 и более подряд идущих элементов одинаковый URL, то выводим ключевые слова.

    Можно без сортировки - через словарь, но сомневаюсь, что будет быстрее (из-за промахов кэша).
    Ответ написан
  • Ноутбук не использует дискретную видеокарту, как это исправить?

    @imageman
    Для начала нужно было через System Restore откатиться на день назад.

    Ну а теперь -- пробуй сделать загрузочную флешку (Windows или Linux) и с неё тестируй свое железо. Если с загрузочной флешки идет всё нормально, значит виновата твоя ОС.
    Ответ написан
    Комментировать
  • Как уменьшить разрешение картинки без потери качества?

    @imageman
    Маштабирование всегда идет через интерполяцию. Самый простой метод "ближайшая точка" (судя по всему в GIMP, это "без интерполяции"). Более сложные бикубический, Lanczos, сплайны и др. Зачем это нужно?

    Представь, что у тебя идет уменьшение в 2 раза по каждой координате (простой случай). Это означает, что квадратик из четырех точек в оригинальном изображении превращается в одну точку уменьшенного. Теперь ответь: какой цвет поставить, если в оригинальном изображении в квадратике 2x2 три точки черные и одна белая (предположим, что всё изображение состоит либо из 100% черных, либо из 100% белых точек)? Вот так и появляются оттенки серого (то самое твое размытие). Дело усложняется, когда мы уменьшаем в дробное число раз - нам как-то нужно "раздробить" точки (для этого и используют интерполяторы).

    Если у тебя картинки с ограниченной палитрой, то попробуй сделать так:
    1. Сохраняем палитру исходника,
    2. уменьшаем RGB с бикубическим интерполятором,
    3. уменьшенную копию конвертируем в заранее сохраненную палитру.
    Это позволит минимизировать размытия (но потери, разумеется, будут).
    Ответ написан
    Комментировать
  • Как сделать статический peerID?

    @imageman
    Вариант: при первом подключении генерируется ID, который хранится на клиенте.

    Вариант классический: e-mail+пароль+посоленный хэш выступает в качестве ID

    Вариант "грязный" - собираются цифровые отпечатки (установленные шрифты, часовой пояс, язык, MAC адрес и т.п.), которые храним на сервере. При повторноном подключении собираем и сверяем отпечатки.
    Ответ написан
    Комментировать
  • Нужно найти суму ключей масивов, с одинаковыми именами. Но у меня почему то не находит даже суму? Как быть?

    @imageman
    В режиме отладки поставить break point на функцию и посмотреть пошагово как идет выполнение. Вполне возможно, что параметры неправильно передаются.
    Ответ написан
    Комментировать
  • Беспроводной принтер в какой то момент перестает печатать. В чем может быть причина?

    @imageman
    Через Event Viewer посмотрите логи ошибок, возможно драйвер записывает логи самостоятельно на диск.

    Перед зависанием и после посмотрите версию драйвера (вдруг обновляется?).

    Вычистить (удалить) старый драйвер и поставить новый (альтернативный, может более старую версию).

    попробовать Go to “Settings -> Devices -> Printers & scanners,” then select your Wi-Fi printer from the list (if you can see it), click “Manage” then “Run the troubleshooter.”

    https://www.pcmag.com/how-to/printer-wont-connect-... - предлагают подключить принтер к рутеру напрямую (маловероятно, но вдруг поможет?)
    Ответ написан
    Комментировать
  • Как переписать строку torch.argmax(model_out[0], dim=-1) без использования torch?

    @imageman
    Не хочется грузить библиотеку torch - это как? Вы же её используете по полной? Через что вы вычисляете значения модели? Ведь строка "with torch.no_grad()" неспроста у вас.

    По какой причине решено экономить на спичках? Время работы, экономия памяти?

    Попробуй вместо "проблемного" "torch.argmax(model_out[0], dim=-1)" поставить 0 и проанализируй как поменялось использование ресурсов.
    Ответ написан
    Комментировать
  • В чём может быть причина мистической подмены доменов?

    @imageman
    Похоже на DNS кэширование.
    https://docs.microsoft.com/en-us/windows-server/ne...
    https://my.keyweb.ru/knowledgebase.php?action=disp...

    Вопрос в другом: зачем такое довольно сложное решение? Уточните проблему, возможно подскажут альтернативное решение (firewall, к примеру).
    Ответ написан
    2 комментария
  • Как правильно учить с подкреплением?

    @imageman
    1. Функция активации всегда нелинейная (поэтому leak relu должен быть ломаной, не должен быть простой прямой).
    2. Активации разных слоев могут быть разными - в скрытых слоях leak relu, в финальном - сигмоида
    3. Один скрытый слой мало. Пробуйте 2-3 хотя бы.
    4. Пробуйте разные скорости обучения (0,001)
    5. Число итераций градиентного спуска может и побольше нужно делать.

    А точно всё это нужно самостоятельно писать на C++? Может лучше взять готовые реализации библиотек обучения (PyTorch, tensorflow)? Проект ONNX https://ru.wikipedia.org/wiki/ONNX позволяет экспортировать модели (но сам я пока не попробовал). Так же никто не запрещает из программы на C++ вызывать питоновский скрипт (как внешнюю программу).
    Ответ написан
  • Возможно ли обучить GAN без batchnorm?

    @imageman
    Да, можно без нормализации.

    Вот тут https://github.com/eriklindernoren/PyTorch-GAN собрано довольно много реализаций нейросетей (я оттуда с ESRGAN экспериментировал).

    FeedForward (это те, что полносвязные) практически тупиковый путь. Посчитайте сколько вы весов заложили в свою нейросеть. Для картинок пробуйте сверточные нейросети.
    Ответ написан
    5 комментариев
  • Keras LSTM срыв градиента, как выйти из данной ситуации?

    @imageman
    Данные для тренировки перемешиваете?
    Размер минибатча какой?
    Уменьшить (увеличить) размер нейросети пробовали?

    https://habr.com/ru/post/334944/ (37-й пункт, но прочитать и первые 36 тоже стоит)

    (How to deal with NaNs https://web.archive.org/web/20180207100912/http://...)
    Ответ написан
    Комментировать
  • Как категоризировать набор слов?

    @imageman
    Я так понимаю, что категории у тебя собственные, не такие, как у авторов нейросетей?

    Мне кажется (могу ошибаться) тебе следует набрать ключевые слова для каждой категории. По этим ключевым словам получаем вектор на предобученной модели (запоминать среднеарифметический вектор?). Не исключено, что придется какие-то категории разбить на подкатегории (для более однородных векторов ключевых слов).

    Для искомого слова также получаем вектор, затем вычисляем расстояние (эвклидово, косинусное и т.п.). С какой категорией расстояние минимально - то наше.

    В fastText есть возможность классифицировать текст или перевести слова в вектор.
    https://gosha20777.github.io/tutorial/2018/04/12/f... вроде там вполне доходчиво. Как я вижу там нужно самому учить классификатор (я так понимаю ты хочешь использовать что-то предобученное?). Ну и ещё почитать https://sysblok.ru/nlp/kak-rabotaet-fasttext-i-gde...

    И если ничего не получается, то ищем автора https://habr.com/ru/post/489474/
    Ответ написан
    Комментировать