• Pytorch: RuntimeError: 1D target tensor expected, multi-target not supported?

    @xandox
    Дык написано же - CrossEntropyLoss ожидает, что в target будет LongTensor(B, 1), где B - размер бача. Long он потому, что там должны быть лэйблы классов.
    Ответ написан
  • Как в Pytorch реализовать пользовательскую функцию потерь?

    @xandox
    А чего бы не воспользоваться родным для торча? https://pytorch.org/docs/stable/generated/torch.nn...
    Ответ написан
    Комментировать
  • Решил попробовать написать нейросеть по видео хауди хо(Нейросеть своими руками за 10 мин). Что пошло не так?

    @xandox
    У тебя шейпы не совпадают. Довольно популярная проблема. Помогает вывод всех шейпов и внимательное разглядывания вывода
    for i in range(20000):
        input_layer = training_outputs # тут должен быть training_inputs, скорее всего и не весь, а по индексу
        outputs = sigmoid( np.dot(input_layer, synaptic_weights) )


    Если честно, весь код выглядит как бред. Он ничего не обучет, даже если исправить проблему с шейпами. Наверное надо еще раз пересмореть видео
    Ответ написан
    Комментировать
  • Как запустить уже остановленную программу в фоне не переходя в foreground?

    @xandox
    >И на 3 этапе меня перекидывает в сам процесс, где я вижу выполнение команды ping, при этом Ctrl+Z/Ctrl+C могут не сработать

    Это вывод процеса, сам процес продолжает работать в фоне и ты можеш запустить другой процес если хочешь.
    Что бы не видет вывод ping - самое просто перенаправить вывод куда-нибудь.
    Ответ написан
    Комментировать
  • Как вызывать методы в любом месте программы?

    @xandox
    Есть три способа. Один неудобный, второй плохой, третий кутешный :)

    Неудобный: В главном окне как можно раньше создаешь класс CLog и передаешь его инстанс во все места которые могут порождать логи. Нудобство этого метода заключатся в том, что по всюду нужно таскать инстанс логера. По хорошему, сигнал тут и в правду не нужен, достаточно функции, и лучше сделать интерфейс ILog что бы позже подменять реализации, если понадобиться.

    Плохой: Сделать CLog синглтоном.

    Кутешный: Воспользоваться системой логирования Qt (qDebug, qInfo и т.д.), для этого можно воспользоваться https://doc.qt.io/qt-5/qtglobal.html#qInstallMessa... для перенаправления вывода
    Ответ написан
  • Программа на С++ не работает. Что я делаю не так?

    @xandox
    #include <iostream>
    #include <fstream>
    #include <algorithm>
    
    int main(int, char**) {
        char symbol = ',';
        std::ifstream input_file("txt.txt");
        int line_number = 0;
        std::string current_line;
        while (std::getline(input_file, current_line)) {
            auto symbols_in_string = std::count(current_line.begin(), current_line.end(), symbol);
            std::cout << "'" << symbol << "' in line " << line_number + 1 << ": " << symbols_in_string << std::endl;
            line_number += 1;
        }
        return 0;
    }
    Ответ написан
    Комментировать
  • Какие библиотеки и фреймворки стоит изучить в c++?

    @xandox
    >Просто серьезно язык большой и много где используемый
    Это верно, и по этому ответа на твой вопрос в простом виде нет.
    Для начало надо понять куда ты хочешь развиваться в первую очередь: система, десктоп, мобильная разработка, геймдев, веб (тут ты кстати не прав, с++ в веб довольно активно используется, просто не там где фрелансу доступно, это высоко нагруженные и/или распределенные сервисы, такое на фрилансе не заказывают).
    Дальше уже плясать от предыдущего ответа. Но и это не сильно поможет в плане выбора библиотек, не редко в компаниях где активно используется с++ есть своя самописная стандартная библиотека (я сейчас не совсем про stl, он как раз может использоваться и нативный) которая призвана решать проблемы компании.
    По этому лучше учить технологии, без особой привязки к конкретным библиотекам (ну точнее пока ты учишься - ты все равно будешь их использовать, конечно, но не надо делать из этого святой грааль)
    Ответ написан
    2 комментария
  • Чем отличаются сети от графов?

    @xandox
    Все перечисленные тобой сети - это графы вполне определенного вида со своими свойствами и операциями, которые призваны решать конкретную проблему. Но так как они и графы, то все что справедливо для графов справедливо и для сетей.
    Ответ написан
  • Ошибка в блоке try-catch, почему возникает данная проблема? Как исправить баг?

    @xandox
    у тебя происходит следующие:
    1) ты вводишь "2a"
    2) cin >> number; читает 2, смотрит что следующий символ не цифра и возвращает тебе 2 оставляя "a" в потоке ввода.
    3) срабатывает твоя основная логика
    4) идет переход к п.1, но в потоке уже есть "a" и по этому cin не дожидается никакого ввода сразу завершается с ошибкой, о чем и сообщает твоя "Ошибка типа"
    Ответ написан
    Комментировать
  • Как по-простому определить наличие кластеров во временных данных?

    @xandox
    Я бы предложил критерий кси-квадрат на то что распределение является распределением Пуассона.
    Ответ написан
    Комментировать
  • Как происходит линковка приложений?

    @xandox
    runime - это по сути просто стандартная библиотека. Прослойка между вашим кодом и ABI системы. Как и любой другой код он может быть как статический так и динамический. У статического и динамического runtime-а свои плюсы и минусы.
    Приведу некоторые из них
    У статического
    + Нет зависимостей, все что нужно исполняемому файлу - только операционная система.
    + Как следствие предыдущего пункта, ОС что бы его запустить нужно прочитать с диска и инициализировать только один файл. Потенциально может ускорить запуск приложения.
    - Размер файла сильно возрастает
    - Использование dll (ну если вдруг захочется плагины, например, к себе прикрутить) сильно усложняется. Надо быть довольно осторожным.

    У динамического
    + Размер файла не распухает
    + Рантайм делиться со всеми загруженными dll, по сути присутсвует в единственом экземпляре.
    + Работать с dll становиться немного проще.
    - Что бы хоть чего-нибудь запустилось - нужно позаботиться о том, что на машине установлен нужный вам рантайм, что усложняет процесс доставки конечного продукта до пользователя. По сути уже нужно делать инсталер.
    - Нужно следить, что все динамические библиотеки которые используется в приложение были собраны с нужным рантаймомо. Это не всегда тривиально.

    Теперь про вопросы.
    1) Нет. msvcr120.dll - это просто рантайм от VS2012, у VS2015 будет что-то msvcr140.dll. У gcc - что-то еще. Как я уже говорил, runtime - это просто код, который нужно куда-то положить. И у каждого поставщика стандартной библиотеки он свой.
    2) Да это правда. Основное отличие - это поддержка стандартов и расширений. VS2010 от с++11 поддерживала совсем ничего, а вот VS2015 уже поддерживает c++11/14 и немного 17 (ну с оговорками на MS и о том как они поддерживают стандарты). Это тоже код и его куда-то нужно положить. Плюс, довольно распростроненная проблема - это ABI. Порядок полей в классах (например), который никак не оговаривается стандартом, делает бинарные реализации не совместимыми, если порядок не совпадает (если сильно по простому).
    3) Там лежит стандартная библиотека.
    4) Нет, на то она и dll. Но как правило многие библиотеки распространяются в двух видах - динамическая линковка + статическая. Или если это opensource всегда можно для себя собрать статичскеую библиотеку для того что бы статически слинковаться.
    5) Конечно, что-то добавляет. Runtime C++ добавляет еще больше. Плюс надо понимать, что еще есть runtime для OC, который позволяет вызвать ее функции как функции, а не через прерывания или еще как. Теоретически можно работать без всего этого добра, но будет грустно.
    Ответ написан
    Комментировать
  • Есть 4 байта в них записана информация как их прочитать сразу?

    @xandox
    #include <cstdint> // хэдр для uint32_t
    
    std::uint32_t value; // переменная, гарантировано 4 байта
    // предполагаю, что inp наследник std::istream
    inp.read(reinterpret_cast<char*>(&value), sizeof(value)); //кастим наши 4 байта в char*-буфер, sizeof(value) == 4
    
    std::cout << value; // ну и выводим, что получилось
    Ответ написан
    1 комментарий
  • Бесконечный цикл в Qthead, как сделать правильно?

    @xandox
    Если я правильно помню то сигналы к слоту из потока надо цеплять с флагом Qt::QueuedConnection
    а в нутриях цикла, когда понимаешь, что можно бы обработать внешние сигналы надо звать QEventLoop::processEvents
    Ответ написан
  • Теория эволюции: как генерируются мутации?

    @xandox
    Обрати внимание на то, что все женщины рождаются девственницами.
    Мутация - это случайный процесс, то что мы сейчас имем объясняется естественным отбором. Другое дело, что сейчас в принципе (более или мение) можно влиять на свойства будещего ребенка посредством генной инженерии, но это ни как не связано с качалкой или паханием огорода.
    Ответ написан
    Комментировать
  • Почему обнуляется статический член класса?

    @xandox
    поробуй вместо
    inline static s_ptr current()
       {
          return s_ptr(current_, boost::detail::sp_nothrow_tag());
       }

    вот это
    inline static s_ptr current()
       {
          return current_.lock();
       }

    а когда это сломается, прочитай первый ответ.
    Ответ написан
    Комментировать
  • Почему я получаю 2 лишних нуля?

    @xandox
    к Армянское Радио +
    ch1 объвлен как char ch1[1] - то бишь один байт, а вы в него пытаетесь аж 4 запихнуть, C вам конечно слово не скажет, но потом когда-нибудь можете сильно удивиться.
    Ответ написан
  • Как работает интерфейс OC?

    @xandox
    Все дело в магических пузырьках драйверах. Если по простому - девайс что-то пишет в IO порт, драйвер это читает и с помощью системного апи сообщает "Мой фюрер, мышка сдвинулась на 10 пикселей по X и на 3 по Y. Да еще и колксиком покрутила на 10 шагов". Ось (точнее, ее графическая подсистема) все это дело принимает к сведеню. И дальше уже зная геометрию окон (на самом деле, что в windows, что в X Window System, подозреваю, что и в OS X, любая финтифлюшка на мониторе есть окно) и их иерархию генерирует события навроде MOUSE_MOVE MOUSE_ENTER MOUSE_LEAVE MOUSE_WHEEL для нужных окон, а те в свою очердь на них как-то реагируют.
    Ответ написан
    Комментировать
  • Как правильно реализовать регулярное выражение без конечных автоматов?

    @xandox
    ну для начала, регулярные выражения и кончечный автомат - синонимы. По этому определись с тем, что именно ты хочешь сделать.
    Ответ написан
  • Что теоретически может больше ограничить скорость потоков?

    @xandox
    Если используешь hdd, то при активном чтении из разных мест диска тебе хватит и 3-4 потока, что бы просиживать время в iowait. Для ssd не незнаю - надо мереть.
    Ответ написан
    Комментировать
  • При отладке QtCreator не останавливается на ошибке, как тогда отлаживаться?

    @xandox
    Он и не должен. Поставь breakpoint куда тебе нужно и он на нем остановиться.
    assert-ы нужны для того что бы сообщать разработчику, что он накосячил. Внутри assert вызывает abort() который без условно прерывает выполнение программы.
    Ответ написан
    Комментировать