Keras: 在Dense层中添加一批常数输入

我有一个神经网络,具有两种不同的输入。输入1是图像数据,输入2是一个单一的浮点数。因此,我的输入形状为(32,img_dim)(32,1),批次大小为32。

神经网络的输出层是一个Dense层,具有10+(可变)的输出,使用线性激活函数(回归)。我想将输入2中的浮点数添加到这10+个输出中的每一个。我如何将一个简单的值(批次中每个样本不同)添加到整个层(广播到10+个输出)?

例如,对于批次大小为3,我有输入2:

[12.0,23.0,60.0]

现在我想为第一个样本将12.0添加到层中的所有单元。然后为批次中的下一个样本添加23.0,依此类推。


回答:

您可以使用功能API模型

from keras.models import Model

为模型创建两个输入:

inpImg = Input((rows,columns,channels))inpFloat = Input((1,))

像这样创建您的层:

outputTensor = SomeLayer(....)(inputTensor)#示例:convOut = Conv2D(20,kernel_size=3,activation='relu')(inpImg)

在您希望进行乘法的地方,我们创建一个Lambda层来进行自定义操作(假设您有来自最后一层的lastOut)。请注意,此层接受列表中的两个输入,这就是为什么我们需要功能API模型。

multOut = Lambda(lambda x: x[0] + x[1],output_shape=(10,))([lastOut,inpFloat])

然后,创建模型:

model = Model([inpImg,inpFloat],multOut)

正常编译模型,并在拟合和预测时,传递一个numpy输入列表:

model.fit([trainImages, trainFloats],labels)

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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