Keras: 如何将输入直接馈送到神经网络的其他隐藏层而不是第一层?

我有一个关于使用Keras的问题,我对它还比较新。我使用了一个卷积神经网络,将其结果馈送到一个标准的感知器层中,该层生成我的输出。这个CNN接收一系列图像作为输入。到目前为止,这一切都很正常。

现在我想将一个短的非图像输入向量直接传递到最后的感知器层,而不通过所有的CNN层。在Keras中如何实现这一点呢?

我的代码如下所示:

# 最后的CNN层在感知器层之前
model.add(Convolution2D(200, 2, 2, border_mode='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Dropout(0.25))
# 感知器层
model.add(Flatten())
# 在这里我想直接将一个额外的向量添加到CNN的输入中
model.add(Dense(1500, W_regularizer=l2(1e-3)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))

任何回答都将不胜感激,谢谢!


回答:

假设你的Keras后端是Theano,你可以执行以下操作:

import theano
import numpy as np
d = Dense(1500, W_regularizer=l2(1e-3), activation='relu') # 我将激活层和密集层合并了,基于假设你可能对激活后的值感兴趣
model.add(d)
model.add(Dropout(0.5))
model.add(Dense(1))
c = theano.function([d.get_input(train=False)], d.get_output(train=False))
layer_input_data = np.random.random((1,20000)).astype('float32') # 参考d.input_shape获取层输入的正确维度,在我的例子中是(None, 20000)
o = c(layer_input_data)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注