【问题标题】:Add categorical feature before the dense layer in Keras?在 Keras 的密集层之前添加分类特征?
【发布时间】:2017-07-27 17:07:54
【问题描述】:

我正在研究一个 CNN 模型,并希望在 Dense 层之前添加一个新的分类特征。我试图将特征连接到 CNN 层的扁平输出,但看起来 Keras 中的连接函数需要输入张量而不是数组。我应该怎么做?这是我到目前为止尝试过的代码:

model = Sequential()
model.add(Conv2D(128, (6, 6), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(128, (6, 6)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())

我正在尝试使用 Concatenate 函数,但它可以连接张量,因为我的特征是形状为 (1, 3) 的 numpy 数组。任何帮助将不胜感激。

【问题讨论】:

    标签: python merge keras


    【解决方案1】:

    您应该在实际模型的一侧创建一个新模型。 第二个模型将输入您的 numpy 数组并且不执行任何其他操作。

    然后你将它们连接起来。

    像这样 ->

    m1 = Sequential()
    m1.add(Conv2D(128, (6, 6), padding='same'))
    m1.add(Activation('relu'))
    m1.add(Conv2D(128, (6, 6)))
    m1.add(Activation('relu'))
    m1.add(MaxPooling2D(pool_size=(2, 2)))
    m1.add(Dropout(0.25))
    m1.add(Flatten())
    
    m2 = Sequential()
    m2.add(Input()) # Put needed infos to input your numpy array
    #Don't forget to flatten it if needed ?
    
    model = Sequential()
    model.add(Merge([m1,m2], mode='concat'))
    #Then add your final layer.
    #To train it, in place of the normal var X_train, you'll use [X_train,yournumpyarray] in model.train method
    

    【讨论】:

    • 谢谢@Pusheen。我实际上在连接过程中感到困惑(它只连接张量)并且没有意识到输入函数将数组更改为张量。
    • 没问题,我之前也遇到过类似的问题。如果可以,请不要犹豫,接受答案:)
    猜你喜欢
    • 2017-07-31
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多