首页 > 解决方案 > 在 Keras 中连接层

问题描述

我正在尝试实现本文中的代码,作为深度学习的初学者,我无法完全理解他们在通过连接层生成“宽而深的神经网络”(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 开发人员编写的《Deep learning with 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)

标签: kerasdeep-learningkeras-layer

解决方案


推荐阅读