Я делаю некоторые вычисления на разреженной матрице float в лог-домене, поэтому "пустые" записи на самом деле -Inf (с использованием -FLT_MAX). Сейчас я использую настраиваемый разреженный матричный класс, но я хочу заменить его на замену.
Это на С++. Мои наклонности состояли в том, чтобы посмотреть на сжатые столбчатые матрицы в Eigen и Boost uBlas. Однако неясно, поддерживает ли пользовательское значение "нуль" (возможно, задается параметром шаблона). Кто-нибудь имеет предложение?
Разъяснение:
Что я хочу, так это: для любой ячейки (i, j), которая ранее не была установлена, я бы хотел, чтобы mat [i, j] возвращал -Inf... так что это, пожалуй, лучше описано как "default" значение для "пустых" записей разреженной матрицы.
Я использую это для выполнения рекурсий HMM (Viterbi, sum-product) с вероятностями, хранящимися в лог-домене, чтобы избежать переполнения.
Я не делаю никаких матричных операций... Я просто заполняю таблицу динамического программирования. Я хочу использовать разреженный матричный класс, потому что я только заполняю полосу матрицы, и мне бы хотелось использовать эффективную память. Сжатые матричные матрицы дают хорошую производительность, так как я заполняю матрицу "по порядку".