Python 我可以手动将输入神经元插入Keras中的隐藏层吗?
我有一个CNN,我想把一些额外的信息偷偷地放进最后一层 下面是代码的简化版本。留意评论Python 我可以手动将输入神经元插入Keras中的隐藏层吗?,python,tensorflow,keras,conv-neural-network,Python,Tensorflow,Keras,Conv Neural Network,我有一个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))
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保护它不受辍学的影响。很好,非常感谢!你对我的整数提示的表示有什么想法吗?请注意,上一层是通过Relu激活的。而且提示=0与提示=16一样有意义,所以我不确定用0激活表示0是否真的有效我不确定你想用提示做什么,但这是一种表示有限域中整数的好方法,即[0,20]是将其作为一个分类向量提供。是否有一种方法也表明需要使用提示的第I个元素来对应第I个输入样本?您希望将n个样本与n个提示一起提供给您的网络,并希望提示的第I个元素对应第I个输入?我也这么认为;