Я пытаюсь понять основы нейронных сетей и пытаюсь понять слои keras.
Взять следующий код из руководств tenorflow:
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
Так эта сеть имеет 3 слоя? Первый - это просто 28 * 28 узлов, представляющих значения пикселей. Второй - это скрытый слой, который берет взвешенные суммы от первого, применяет relu, а затем отправляет их на 10 выходных слоев, которые имеют максимальное значение?
но тогда эта модель требует разных входов для слоев:
model = keras.Sequential([
layers.Dense(64, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(1)
])
Почему входной слой теперь имеет input_shape
и значение 64
? Я читал, что первый параметр указывает количество узлов во втором слое, но это не похоже на код в первом примере. Кроме того, почему входной слой имеет активацию? Это просто переключение значений до того, как они войдут в сеть?
Кроме того, что касается функций активации, почему softmax и relu рассматриваются как альтернативы? Я думал, что relu применяется ко всем входам одного узла, тогда как softmax действует на выходы всех узлов в слое?
Любая помощь очень ценится!
Первый пример из: https://www.tensorflow.org/tutorials/keras/basic_classification
Второй пример из: https://www.tensorflow.org/tutorials/keras/basic_regression