输入代码:值列表包含六个张量,其形状为(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