Где применяются параметры в слоях keras? - PullRequest
1 голос
/ 26 апреля 2019

Я пытаюсь понять основы нейронных сетей и пытаюсь понять слои 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

1 Ответ

0 голосов
/ 26 апреля 2019

В основном у вас есть два типа API в Keras: последовательный и функциональный API https://keras.io/getting-started/sequential-model-guide/

В последовательном API вы явно не ссылаетесь на входной слой Input https://keras.io/layers/core/#input

Именно поэтому вам необходимо добавить input_shape, чтобы указать размеры Первый слой ,

Дополнительная информация в https://jovianlin.io/keras-models-sequential-vs-functional/

...