similarity_focus
similarity_focus
(input, axis, indexes, name=None)[源代码]
通过以下三个步骤,该层生成一个和输入 同形的 similarity focus mask(相似度聚焦掩码):
- 根据
axis
和 提取一个三维张量,第一维为batch大小。 例如,如果axis=1, indexes=[a]
, 将得到矩阵 T=X[:, a, :, :] 。 该例中,如果输入X的形为 (BatchSize, A, B, C) ,则输出张量T的形为 (BatchSize, B, C) 。 - 对于每一个索引,在输出T中找到最大值。所以同一行、同一列最多只有一个数字,这意味着如果在第i行,第j列中找到最大值,那么在相应行、列中的其他数值都将被忽略。然后再在剩余的数值中找到下一个最大值。显然,将会产生 min(B,C)个数字,并把三维相似聚焦掩码张量相应位置的元素置为1,其余则置为0。对每个索引按元素进行or运算。
- 参数:
- input (Variable) – 输入张量,应为一个四维张量,形为[BatchSize, A, B, C],数据类型为 float32 或者 float64。
- axis (int) – 指明要选择的轴。 可能取值为 1, 2 或 3。
返回:一个和输入 Variable 同形状、同数据类型的 Variable
代码示例
- import paddle.fluid as fluid
- data = fluid.layers.data(
- name='data', shape=[-1, 3, 2, 2], dtype='float32')
- fluid.layers.similarity_focus(input=data, axis=1, indexes=[0])