Наука о данных

Как рассчитать матрицы в Python без NumPy

Как рассчитать матрицы в Python без NumPy
Для многих приложений вам нужна математика. В Python есть математический модуль, который обрабатывает основы, такие как округление, факториал и функции округления. Он также включает степенные и логарифмические, тригонометрические, угловые и гиперболические функции. Для комплексных чисел модуль cmath. Они не обрабатывают матричные операции, хотя.

В чем разница между массивами и матрицами?

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

Как сделать матричный расчет?

Стандартные матричные операции выполнить просто: при добавлении вы просто добавляете элементы, при умножении вы можете использовать скаляр для каждого элемента и т. Д.

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

Когда вам нужно выполнить матричные вычисления в Python, первое решение, которое вы найдете, - это numPy.  Однако NumPy не всегда является самой эффективной системой для вычисления множества матриц.
В этом посте будет рассказано, какие параметры у вас есть в Python.

Когда вам нужны альтернативы, начните с более внимательного изучения того, для чего нужны матричные операции. Ваша текущая установка может уже иметь либо собственную реализацию, либо использовать базовую библиотеку. Примером может служить машинное обучение, где необходимость в матричных операциях имеет первостепенное значение. TensorFlow имеет собственную библиотеку для матричных операций. Убедитесь, что вы знаете свою текущую библиотеку.

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

Хотя этот пост посвящен альтернативам NumPy, библиотеке, построенной на основе NumPy, необходимо упомянуть библиотеку Theano. Библиотека Theano тесно интегрирована с NumPy и поддерживает матрицу с поддержкой графического процессора. Theano - большая библиотека для машинного обучения, но вы можете извлечь только матричные функции.

Более подробное объяснение использования Theano см. На этой странице: http: // www.марекрей.com / blog / theano-tutorial /

SpPy - это библиотека специально для разреженных массивов, ее все еще можно использовать для матриц. Между прочим, разреженный массив - это массив, в котором много нулевых значений. Эта библиотека небольшая и эффективная, но немного ограничена из-за своей специализации. Он также использует NumPy, но более эффективен, чем просто NumPy.
https: // pythonhosted.org / sppy /

Eigen - это эффективная реализация матриц, чтобы использовать ее в Python, вам понадобится miniEigen, доступный по адресу https: // pypi.org / pypi / minieigen. Eigen фактически включен во многие другие решения. Он действует как универсальная матричная библиотека для более специализированных модулей и фреймворков. Эта библиотека имеет множество модулей для работы с плотными матрицами и массивами. Он также поддерживает линейную алгебру, декомпозицию и разреженную линейную алгебру. В пакете также есть функция плагина, поэтому вы можете добавлять свои собственные модули.
Чтобы использовать Eigen, установите его с помощью pip и импортируйте в свой код.

PyTorch - это библиотека для машинного обучения, поэтому в ней есть матричные операции. Импорт всей библиотеки - это излишне, если вы хотите сделать только несколько вычислений. Однако, если вы только начинаете работу над проектом машинного обучения, убедитесь, что вы решили, подходит ли он вам.
Другая альтернатива - получить любую C-библиотеку и использовать ее. Чтобы сделать это возможным, существует решение cffi, которое создаст для вас интерфейс. Это решение требует, чтобы вы уже знали C и создали оболочку для каждой нужной функции. Тогда код будет выглядеть запутанным и трудным для чтения, но это может того стоить, в зависимости от вашего проекта.

Если вы просто хотите ускорить все функции массива и числовые функции, вы можете вместо этого использовать numba. Numba - компилятор Python. Когда вы его используете, компилятор создаст двоичный код «точно в срок», jit. Идея jit чаще используется в Java, но очень полезна для тяжелой математики в Python. Поскольку Python интерпретируется, вы можете получить проблемы с производительностью с тяжелой математикой, numba позаботится об этом, скомпилировав CPU или GPU по вашему выбору.
Также доступны функции параллельных вычислений, по умолчанию компилятор работает с блокировкой, которая останавливает одновременное выполнение множества потоков. Вы можете отключить это с помощью флага, если вы знаете о потенциальных проблемах, связанных с параллельным программированием.

Заключение

Часто, когда вы начинаете программировать на Python или других языках, вы сталкиваетесь с ограничениями языка, компилятора или чего-то еще. Когда вы находитесь в этой ситуации, вам следует остановиться и подумать о том, какое ограничение у вас есть, и подумать, у скольких других могла быть такая же ситуация. В случае Python и NumPy многие ученые и разработчики написали код, который требует быстрого выполнения. Это наследие создало большое количество веток, которые могут решить вашу проблему, не заставляя вас переключать язык или писать новое расширение для этого конкретного языка.

Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...