Керас строит модель с неправильным количеством нейронов? - PullRequest
0 голосов
/ 27 апреля 2019

Я новичок в Керасе. Я создал свою модель для работы с Fashion MNIST

Вот моя модель:

model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(1),
keras.layers.Dense(1),
keras.layers.Dense(10, activation=tf.nn.softmax)])

model.compile(optimizer= 'sgd', 
          loss='sparse_categorical_crossentropy',
          metrics=['acc'])

Как я понимаю, этот код должен строить эту модель

Flattener от 28x28 до 1x784

Плотный 1 нейрон в = 1x784 | out = 1x1

Плотный 1 нейрон в = 1x1 | out = 1x10

Плотный 1 нейрон в = 1x10 | out = 1x10 (10 классов)

Проблема в том, что модель дает мне 50% точность на 60k примере. Это не может быть правдой, не так ли? Невозможно, чтобы эти 1 слой нейронов и 1 вес давали достаточную информацию для такой хорошей классификации изображений.

Либо Керас просто игнорирует мои значения и вставляет нейроны по своему желанию, либо я не понимаю, как строится модель.

Спасибо за помощь

1 Ответ

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

первый слой имеет 784 веса, второй имеет 1, третий имеет 10. Это всего 795 весов.

Хотя это не очень хороший дизайн сети, поскольку вы теряете много информации на втором слое, один вес может содержать довольно много данных.

Подумайте об этом так, что если вы построите сеть, которая имеет 2 слоя: вход и выход.Значение вывода, если между 0-0,1 вы даете ему метку класса 1 0,1-0,2 -> класс 2 и так далее.Вы должны быть в состоянии получить аналогичный результат для вашей сети.

Кстати, 50% правильная классификация действительно плохо для Mnist.Я обычно получаю около 99%

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