На этом шаге мы определимся с формой дальнейшего изложения.
Так как любую компьютерную программу можно свести к небольшому набору двоичных операций с входными данными (И, ИЛИ, НЕ и др .), все преобразования, выполняемые глубокими нейронными сетями при обучении, можно свести к горстке операций с тензорами (или тензорных функций), применяемых к тензорам с числовыми данными. Например, тензоры можно складывать, перемножать и т д
В нашем первом примере мы создали модель, наложив друг на друга два слоя Dense. В библиотеке Keras экземпляр слоя выглядит так:
keras.layers.Dense(512, activation='relu')
Этот слой можно интерпретировать как функцию, которая принимает матрицу и возвращает другую матрицу - новое представление исходного тензора. В данном случае функция имеет следующий вид (где W - это матрица, а b - вектор; оба значения являются атрибутами слоя):
output = relu(dot(input, W) + b)
Давайте развернем ее. Здесь у нас имеются три операции с тензорами:
На следующем шаге мы рассмотрим поэлементные операции.