Шаг 40.
Глубокое обучение на Python. Математические основы нейронных сетей. Шестеренки нейронных сетей: операции с тензорами (общие сведения)

    На этом шаге мы определимся с формой дальнейшего изложения.

    Так как любую компьютерную программу можно свести к небольшому набору двоичных операций с входными данными (И, ИЛИ, НЕ и др .), все преобразования, выполняемые глубокими нейронными сетями при обучении, можно свести к горстке операций с тензорами (или тензорных функций), применяемых к тензорам с числовыми данными. Например, тензоры можно складывать, перемножать и т д

    В нашем первом примере мы создали модель, наложив друг на друга два слоя Dense. В библиотеке Keras экземпляр слоя выглядит так:

keras.layers.Dense(512, activation='relu')

    Этот слой можно интерпретировать как функцию, которая принимает матрицу и возвращает другую матрицу - новое представление исходного тензора. В данном случае функция имеет следующий вид (где W - это матрица, а b - вектор; оба значения являются атрибутами слоя):

output = relu(dot(input, W) + b)

    Давайте развернем ее. Здесь у нас имеются три операции с тензорами:


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

    На следующем шаге мы рассмотрим поэлементные операции.




Предыдущий шаг Содержание Следующий шаг