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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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