在此神经网络中,有9种输入功能:
f1,f2,f3,f4,f5,f6,f7,f8,f9
我希望某些输入要素(但不是全部)在输入层和第一个隐藏层之间具有相同的权重。其余所有图层将没有任何共享的权重。
f1,f2,f3 should share the same weights
f4,f5,f6 should share the same weights
f7 should not share weights with other features
f8 should not share weights with other features
f9 should not share weights with other features
我很确定我需要一维卷积,但是不需要整个层。我可能已经错过了,但是还没有看到这个用例的文档。任何想法如何在Keras中做到这一点?
重新解释这个问题,在一组功能中表达平等重要性的正确方法是什么?
功能(f1
,f2
,f3
)在预测输出类别时具有同等的重要性。预测输出类别时,要素(f4
,f5
,f6
)也同样重要。
有三种可能的预测类。特征f1
和f4
是输出classA的证据。特征f2
和f5
是输出classB
的证据。特征f3
和f6
是输出classC
的证据。
是否可以通过在同等重要的功能之间共享参数来减少网络中的参数数量?
答案 0 :(得分:0)
相当于在密集层之前对f1+f2+f3
和f4+f5+f6
求和。
层总和的建议:
from keras.layers import Lambda
import keras.backend as K
def sumFeatures(x):
f1_3 = x[:,:3]
f4_6 = x[:,3:6]
return K.concatenate(
[
K.sum(f1_3, axis=-1, keepdims=True),
K.sum(f4_6, axis=-1, keepdims=True),
x[:,6:]
], axis=-1)
顺序模型:
model.add(Lambda(sumFeatures))
功能模型:
outputTensor = Lambda(sumFeatures)(inputTensor)