Попытка понять, как добавить больше скрытых слоев в нейронную сеть, используя цикл for - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь выяснить, как сделать простой цикл для добавления дополнительных скрытых слоев в эту нейронную сеть для базовой нейросети тензорного потока из кода ниже:

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
          loss='sparse_categorical_crossentropy',
          metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

обычно я бы пошел дальше и изменил следующий код:

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

и добавьте больше слоев. Плотность как следует:

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(64, activation='relu'),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(256, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

Можно ли создать простой цикл for, в котором я могу ввести желаемое количество скрытых слоев?

1 Ответ

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

Сначала создайте объект list и добавьте к нему слой Flatten.

layers = list()
layers.add( tf.keras.layers.Flatten() )

Теперь мы используем оператор цикла, чтобы добавить n количество Dense слоев.

units = [ 64 , 128 , 256 ]

for i in range( n ):
    layers.add( tf.keras.layers.Dense( units[i] , activation='relu' ) )

Где n может быть любым положительным целым числом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...