Решение систем линейных уравнений

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Библиотека TensorFlow широко известна, в основном, в контексте машинного обучения и нейронных сетей. Однако, TensorFlow изначально не является библиотекой машинного обучения в чистом виде, а позиционируется разработчиками, как библиотека для высокопроизводительных вычислений (high perfomance computing), а это значит, что область ее применения значительно шире. Итак, выступая на конференции с докладом о том, как мы применяли TensorFlow для задачи оценки показателей надежности, я получил вполне закономерный вопрос: «А можно ли использовать TF для решения систем уравнений?». Ответ, естественно, положительный, и в этой статье рассмотрим, как решать системы линейных алгебраических уравнений.

Для систем линейных алгебраических уравнений TensorFLow содержит уже готовые методы в пакете tf.linalg. Непосредственно для решения систем линейных уравнений используется метод tf.linalg.solve.

Метод имеет следующую сигнатуру:

Python

1

2

3

4

5

6

tf.linalg.solve(

matrix,

rhs,

adjoint=False,

name=None

)

Где matrix — матрица коэффициентов левой части системы в формате тензора [..., M, M] (квадратная матрица), rhs — правая часть системы уравнений в формате тензора [..., M, K]adjoint — указывает на то, что матрица левой части является блочным сопряжением, Name — имя оператора в графе.

Пример решения

В качестве примера возьмем следующую систему линейных уравнений

[
egin{cases}
2x + 3y + z = 2
3x + y + 2z = 7
x + 2y + 3z = 3
end{cases}
]

Тогда матрица левой части системы уравнений ((A)) принимает вид:

[
A = egin{bmatrix}
2&3&1
3&1&2
1&2&3
end{bmatrix}
]

Правой части, соответственно:

[B = egin{bmatrix}
2
7
3
end{bmatrix}
]

Первым делом импортируем TensorFlow:

Python

1

importtensorflow astf

Далее создадим тензоры исходных данных. В нашем случае достаточно константных значений, однако, в общем случае это могут быть и переменные, и значения результатов других вычислений.

Python

1

2

A=tf.constant([[2.0,3.0,1.0],[3.0,1.0,2.0],[1.0,2.0,3.0]])

B=tf.constant([[2.0,],[7.0,],[3.0,]])

После создания тензоров с исходными данными применим функцию, предварительно создав сессию tensorflow.

Python

1

2

3

Q=tf.linalg.solve(A,B)

sess=tf.Session()

print(sess.run(Q))

получим следующий вывод:

1

2

3

[[2.]

[-1.0000001]

[1.0000001]]

Как видим, результаты соответствуют аналитическому решению.

Полный текст в формате jupyter notebook.


Источник: digiratory.ru

Комментарии: