Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以手动将输入神经元插入Keras中的隐藏层吗?_Python_Tensorflow_Keras_Conv Neural Network - Fatal编程技术网

Python 我可以手动将输入神经元插入Keras中的隐藏层吗?

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))

我有一个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保护它不受辍学的影响。

很好,非常感谢!你对我的整数提示的表示有什么想法吗?请注意,上一层是通过Relu激活的。而且提示=0与提示=16一样有意义,所以我不确定用0激活表示0是否真的有效我不确定你想用提示做什么,但这是一种表示有限域中整数的好方法,即[0,20]是将其作为一个分类向量提供。是否有一种方法也表明需要使用提示的第I个元素来对应第I个输入样本?您希望将n个样本与n个提示一起提供给您的网络,并希望提示的第I个元素对应第I个输入?我也这么认为;