我编写了自己的keras图层,但是在构建时,输入形状为None

时间:2018-11-16 06:06:34

标签: python keras keras-layer

输入代码:值列表包含六个张量,其形状为(None,1,128),因此allvalue应为(None,6,128),查询形状为(None,128)。

allvalue = Concatenate(axis=-2,name="concatenatet")(valuelist)
print("allvalue",type(allvalue),allvalue.shape)
val2 = MyAttention.Attention3(name="attalpall")([query,allvalue,allvalue])

全值打印结果为:

allvalue <class 'tensorflow.python.framework.ops.Tensor'> (?, 6, 128)

Attention3层构建代码:

def build(self, input_shape):
    print(input_shape)
    self.WQ = self.add_weight(name='WQ', 
                              shape=(input_shape[0][-1], input_shape[0][-1]),
                              initializer='glorot_uniform',
                              trainable=True)
    self.WK = self.add_weight(name='WK', 
                              shape=(input_shape[1][-1], input_shape[1][-1]),
                              initializer='glorot_uniform',
                              trainable=True)
    self.WV = self.add_weight(name='WV', 
                              shape=(input_shape[2][-1], input_shape[2][-1]),
                              initializer='glorot_uniform',
                              trainable=True)
    super(Attention3, self).build(input_shape)

input_shape打印结果为:

[(None, 128), None, None]

因此,在构建模型时会出现此错误。

shape=(input_shape[1][-1], input_shape[1][-1]),

TypeError: 'NoneType' object is not subscriptable

似乎查询的形状正确,但是我不知道为什么allvalue变成None

0 个答案:

没有答案