代码之家  ›  专栏  ›  技术社区  ›  AGUY

keras中的深宽模型问题

  •  0
  • AGUY  · 技术社区  · 8 年前

    我正在努力学习在线教程,并为Keras中广泛而深入的模型编写代码。然而,我在合并两个模型时遇到了问题

    wide = Sequential()
    wide.add(Dense(1, input_dim=X_train.shape[1], kernel_initializer ='uniform', activation='relu'))
    
    deep = Sequential()
    deep.add(Dense(1, input_dim=X_train.shape[1], kernel_initializer ='uniform', activation='relu'))
    deep.add(Dense(100, activation='relu'))
    deep.add(Dense(50, activation='relu'))
    deep.add(Dense(1, activation='linear'))
    
    model = Sequential()
    model.add(Merge([wide, deep], mode='concat', concat_axis=1))
    model.add(Dense(1, activation='linear'))
    

    出现以下警告:

    model = Sequential()
    model.add(Merge([wide, deep], mode='concat', concat_axis=1))
    __main__:2: UserWarning: The `Merge` layer is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc
    

    警告信息告诉我该怎么做,但我还没有弄清楚如何将这两个模型结合起来。

    我尝试过以下不同的方法,但不断出现错误。

    from keras.layers import add
    model = Sequential()
    
    model.add([wide, deep])
    Traceback (most recent call last):
    
      File "<ipython-input-428-3e81d6d35c6f>", line 1, in <module>
        model.add([wide, deep])
    
      File "/Users/abrahammathew/anaconda3/lib/python3.6/site-packages/keras/models.py", line 430, in add
        'Found: ' + str(layer))
    
    TypeError: The added layer must be an instance of class Layer. Found: [<keras.models.Sequential object at 0x1a32876cc0>, <keras.models.Sequential object at 0x1a328761d0>]
    

    有谁能告诉我如何用keras制作宽深模型吗。

    1 回复  |  直到 8 年前
        1
  •  2
  •   nuric    8 年前

    这是因为您试图将模型合并到序列模型中。在这种情况下,您需要扩展到 functional API 因为您需要先计算两个模型的输出,然后才能合并它们。大致如下:

    in = Input(shape=(X_train.shape[1],)
    wide_out = wide(in)
    deep_out = deep(in)
    wide_deep = concatenate([wide_out, deep_out]) # or any merge layer
    out = Dense(1, activation='linear')(wide_deep)
    model = Model(in, out) # Your final model
    

    简而言之,在函数API中,层类似于将集合操作应用于给定层的函数,从而创建相应的计算图。