Код плотного слоя Keras CIFAR-10 Почему 512 нейронов в последнем слое? - PullRequest
0 голосов
/ 11 февраля 2019

Я использую Keras для создания CNN для работы с набором данных CIFAR-10.Я немного запутался в одной из последних строк онлайн-учебника.Они получают 50 000 цветных изображений 32x32 и обрабатывают их через 4 сверточных слоя и один полностью связанный слой.Последняя часть выполняется:

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))

Я пытаюсь понять, почему это model.add (Dense (512)), а не какой-то другой номер.Например, я думал, что 32x32 изображения могут быть сведены к вектору размером 1024.Но почему они выбрали 512 здесь?

Спасибо!

1 Ответ

0 голосов
/ 11 февраля 2019

На самом деле не 32x32, это 32x32x3 из-за цветовых каналов и сглаживания и различных методов. Я думаю, что вы не получите код, поскольку реализация низкого уровня:

W1=tf.Variable(tf.random_normal([32*32*3,512]),name="W1") #variable
x=tf.placeholder(tf.float32,[batch,32,32,3])              #placeholder for inputs
flat=tf.reshape(x,[batch,32*32*3])                        #model.add(Flatten())
mul1=tf.matmul(flat,W1)                                   #model.add(Dense(512))
relu=tf.nn.relu(mul1)                                #model.add(Activation('relu'))

плоских shape=[batch,32*32*3] mul1's shape=[batch,512]

Конечно, это может быть 1024 или 5000, но оптимизировать становится сложнее.

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