使用 Keras 学习函数的总和

数据挖掘 神经网络 喀拉斯
2022-03-09 16:07:15

在 Keras 中使用以下模型y:R3R

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(50, input_dim=3, activation='tanh'))
model.add(Dense(1, activation='linear', kernel_initializer='normal'))

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=8)
predictions = model.predict(x_test)

为了训练,我使用了一个由组成的数据集。这按预期工作。{xi}i=1N{yi}i=1N

现在想象一个稍微不同的情况,对于每个样本我有一对 ()和我对应的目标数据点建模为 , 与是否可以在 Keras 中定义这样的模型,以及如何实现?如果不是 Keras,还有其他框架吗?ixi,1xi,2xi,αR3iyi=z(xi,1)+z(xi,2)z:R3R

2个回答

如果你有两个不同的函数,我会同意 Piotr 的观点:你可以有两个并行网络,一个用于输入的每个部分,最后连接在一起。这将最小化(尽管不会消除)来自的拟合中z1z2xi,1z2

但是对于,我们想强制这两个并行网络是相同的。对输入的不同部分使用相同权重的想法让人想起卷积,我认为这在这里会起作用:让成为输入的列,应用一维 width-1 卷积层而不是密集层,并在最后添加一个“Sum Pooling”层。(无需编写自定义内容,您可以在 Keras 中通过平均池化来管理它,并手动处理因子 2。)z1=z2=zxi,1,xi,23×2

听起来你需要functional模型而不是sequential. 在这里阅读更多