网络内部输入的加权总和

时间:2018-12-03 19:00:20

标签: python machine-learning keras keras-layer

我有一个包含多个输入的网络,我将前10个输入分开,然后计算加权总和,然后将其与其余输入连接起来:

first = Lambda(lambda z: z[:, 0:11])(d_inputs)
wsum_first = Lambda(calcWSumF)(first )
d_input = concatenate([d_inputs, wsum_first], axis=-1)

函数定义为:

w_vec = K.constant(np.array([range(10)]*64).reshape(10, 64)) # batch size is 64
def calcWSumF(x):
    y = K.dot(w_vec, x)
    y = K.expand_dims(y, -1)       
    return y

我想要一个常数向量来计算输入的第一部分的加权和。串联不起作用,因为形状不匹配。如何正确实现呢?

1 个答案:

答案 0 :(得分:1)

使用=和仅包含系数的向量可以更好地编写此代码。此外,无需使用固定的批次大小(可以是任何数量):

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv, char **envp)
{
    for (char **env = envp; *env != 0; env++)
    {
        char *pair = *env;
        char *value = strchr(pair, '=');
        if (value != NULL) {
            printf("%s\n", value + 1);
        }
    }
}

请注意,为使其更通用,我们在lambda函数中添加了另一个参数(K.sum),该参数指定了从一开始就要考虑的元素数量。