簡體   English   中英

我可以手動將輸入神經元插入 Keras 中的隱藏層嗎?

[英]Can I manually slot an input neuron into a hidden layer in Keras?

我有一個 CNN,我想將一些額外的信息潛入最后一層。

這是代碼的簡化版本。 看評論

def define_model():
    model = Sequential()
    model.add(Conv2D(32, (3,3))
    model.add(Conv2D(32, (3,3))
    model.add(MaxPooling2D((2,2))
    model.add(Conv2D(64, (3,3))
    model.add(Conv2D(64, (3,3))
    model.add(MaxPooling2D((2,2)))
    model.add(Flatten())
    # this next layer is where I want to sneak the neuron(s) in
    model.add(Dense(1024))
    model.add(Dropout(rate=0.4))
    model.add(Dense(168))
    model.compile()
    return model

所以我有一些關於輸入圖像的附加信息,這些信息可能對網絡有幫助。 將其視為可能值得也可能不值得合理加權的線索。

線索是一個整數形式,技術上在 [0, inf) 中,但實際上可能在 [0, 20] 中。

所以我的問題是

  1. 用一般的 NN 架構來表示該提示的適當方式是什么。

  2. 我如何調整 Keras 模型以在實踐中實現這一點?

  3. 獎勵:如果我願意,我是否可以防止后續的退出退出此附加功能?

這可以通過使用 Keras 的函數式 API 來實現:

def define_model():
    inputs = Input(input_shape=(...))
    hints = Input(input_shape=(...))

    x = Conv2D(32, (3,3))(inputs)
    x = Conv2D(32, (3,3))(x)
    x = MaxPooling2D((2,2))(x)
    x = Conv2D(64, (3,3))(x)
    x = Conv2D(64, (3,3))(x)
    x = MaxPooling2D((2,2))(x)
    x = Flatten()(x)

    x = Add()([x, hints])

    x = Dense(1024)(x)
    x = Dropout(rate=0.4)(x)
    outputs = Dense(168)(x)

    model = Model([inputs, hints], outputs)

    model.compile()
    return model

我不知道如何使用 Keras 保護它免受輟學。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM