张量和权重变化维度的求和

Summation of tensors and weights changing dimensions

我正在尝试在 keras 中创建一个自定义层,但我遇到了一个奇怪的问题。当我在返回答案之前对张量求和时,尺寸会发生变化。当我将偏差权重加到两个张量时会发生这种情况,请参见下面的代码。

    summation = tf.math.add(biTensorVector, normalTensorVector)

    print('summation1 ',summation)

    summation = tf.math.add(summation,self.b)

    print('summation2 ',summation)

这给出了

summation1  Tensor("sequential/ntn/Add:0", shape=(5, None), dtype=float32)
summation2 Tensor("sequential/ntn/Add_1:0", shape=(5, 5), dtype=float32)

这肯定应该给出输出形状 (5,None)?

self.b 初始化为:

self.b = self.add_weight(name='b',shape=(self.k,),
                                  initializer='zeros',
                              trainable=True)

不应该将权重 self.b 广播为形状 (5,None) 然后添加到求和中,而不是删除 None 维度?任何澄清将不胜感激。

None 大小来自层的初始化,据说如果它与 None 一起工作,它应该与我假设的任何数量的样本一起工作?因此,为什么我很困惑。

我应该补充一下,我刚刚尝试了 + 运算符,我遇到了同样的问题。

biTensorVectornormalTensorVector的形状大概是(5,None)。所以添加它们得到 (5, None) 因为第二个维度是未知的。

self.b 的形状是 (None, 5)。添加 (5, None) 和 (None, 5) 总是得到 (5, 5) (或错误)。所以keras知道第二次相加的结果是(5, 5).