如何在输入特征子集之间与keras共享权重

2024-05-20 03:48:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在该神经网络中,有9个输入特征:

  f1,f2,f3,f4,f5,f6,f7,f8,f9

我希望一些输入特性,但不是全部,在输入层和第一个隐藏层之间具有相同的权重。所有剩余层将不具有任何共享权重。在

^{pr2}$

我很确定我需要一维卷积,但不是整个层。我可能错过了它,但还没有看到这个用例的文档。有什么办法在Keras做这个吗?在

换句话来说,在一组特征中表达同等重要性的正确方法是什么?在

特征(f1f2f3)在预测输出类时具有同等的重要性。在预测输出类时,特征(f4f5f6)也同样重要。在

有三种可能的预测类。特性f1和{}是输出类A的证据。特性f2和{}是输出classB的证据。特性f3和{}是输出classC的证据。在

有没有一种方法可以通过在同等重要的特征之间共享参数来减少网络中的参数数量?在


Tags: 方法证据参数神经网络特征特性f5重要性
1条回答
网友
1楼 · 发布于 2024-05-20 03:48:25

相当于在致密层之前求f1+f2+f3和{}。在

建议分层汇总:

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)

顺序模型:

^{pr2}$

功能模型:

outputTensor = Lambda(sumFeatures)(inputTensor)

相关问题 更多 >