[英]Keras - How to construct a shared Embedding() Layer for each Input-Neuron
[英]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] 中。
所以我的问题是
用一般的 NN 架构来表示该提示的适当方式是什么。
我如何调整 Keras 模型以在实践中实现这一点?
奖励:如果我愿意,我是否可以防止后续的退出退出此附加功能?
这可以通过使用 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.