我在python中遇到了以下表达式。我相信表达本身是合法的,它的结构实际上是有道理的。但是,从强类型背景来看,我想知道人们是否通常在python中这样做...即使用表示两个完全不同的概念的相同类(数据与数据大小元数据)
class AttentionDecoderOutput(
namedtuple("DecoderOutput", [
"logits", "predicted_ids", "cell_output", "attention_scores",
"attention_context"
])):
"""Augmented decoder output that also includes the attention scores.
"""
pass
AttentionDecoderOutput定义了一个数据结构。下面的output_size定义了namedtuple中每个元素的大小。
def output_size(self):
return AttentionDecoderOutput(
logits=self.vocab_size,
predicted_ids=tf.TensorShape([]),
cell_output=self.cell.output_size,
attention_scores=tf.shape(self.attention_values)[1:-1],
attention_context=self.attention_values.get_shape()[-1])