Керас уточнения по определению скрытого слоя - PullRequest
0 голосов
/ 28 января 2019

Я следую учебному пособию по созданию простой глубокой нейронной сети в Керасе, и предоставленный код был:

# create model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

Первая строка model.add, определяющая первый скрытый слой с 8 входамиво входном слое?Таким образом, нет необходимости указывать входной слой, кроме кода input_dim=8?

1 Ответ

0 голосов
/ 28 января 2019

Вы правы.

Когда вы создаете модель Sequential, входной "слой" * определяется как input_dim или input_shape, или batch_input_shape,

* - Входной слой на самом деле является не слоем, а просто «контейнером» для приема данных в определенном формате.

Позже вы можете найти очень полезным использовать функциональные модели API вместо последовательных моделей.В этом случае вы определите входной тензор с помощью:

inputs = Input((8,))

И пропустите этот тензор через слои:

outputs = Dense(12, input_dim=8, activation='relu')(inputs)
outputs = Dense(8, activation='relu')(outputs)
outputs = Dense(1, activation='sigmoid')(outputs)

Чтобы создать модель:

model = Model(inputs,outputs)

Сначала это кажется слишком большой проблемой, но вскоре вы почувствуете необходимость создавать ветви, объединять модели, разделять модели и т. Д.

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