Я пытаюсь реализовать код из этой статьи и, будучи новичком в глубоком обучении, не могу полностью понять, что они сделали в создании «Широкой и глубокой нейронной сети (WDNN) путем объединения слоев». ,Вот функция, которую они использовали для генерации WDNN:
def WDNN(data):
input = Input(shape=(data.shape[1],))
x = Dense(256, activation='relu', kernel_regularizer=regularizers.l2(1e-8))(input)
x = BatchNormalization()(x)
x = Dropout(0.5)(x)
x = Dense(256, activation='relu', kernel_regularizer=regularizers.l2(1e-8))(x)
x = BatchNormalization()(x)
x = Dropout(0.5)(x)
x = Dense(256, activation='relu', kernel_regularizer=regularizers.l2(1e-8))(x)
x = BatchNormalization()(x)
x = Dropout(0.5)(x)
wide_deep = concatenate([input, x])
preds = Dense(1, activation='sigmoid', kernel_regularizer=regularizers.l2(1e-8))(wide_deep)
model = Model(input=input, output=preds)
opt = Adam(lr=np.exp(-1.0 * 9))
model.compile(optimizer=opt,
loss='binary_crossentropy',
metrics=['accuracy'])
return model
Следуя рекомендациям в книге «Глубокое обучение с Keras», написанной разработчиком Keras, я предложил следующую функцию. Но я не могу понять, как исходная функция на самом деле использует сцепление и как я могу реализовать ее в своем собственном коде, чтобы выполнить то же самое? Любые намеки приветствуются.
def WDNN(data):
model = models.Sequential()
model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(1e-8), input_shape=(data.shape[1],)))
model.add(layers.BatchNormalization())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(1e-8)))
model.add(layers.BatchNormalization())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(1e-8)))
model.add(layers.BatchNormalization())
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation='sigmoid', kernel_regularizer=regularizers.l2(1e-8)))
# Compile model
opt = Adam(lr=np.exp(-1.0 * 9))
model.compile(optimizer=opt,
loss='binary_crossentropy',
metrics=['accuracy'])
return (model)