首先,在这里,我们要求解的是通道和通道之间的相似度,这个是由风格损失函数定义的。
其次,通道与通道间的相似度的计算方式是内积然后做归一化,这也是由损失函数定义的。
再之后,我们再来看如何计算的,首先,features的shape是[batch_size, w*h, channel], 然后在调用tf.matmul的时候,是后两维做操作,所以batch_size这一维可以忽略,就看[w*h, channel]。然后tf.matmul中有一个参数是adjoint_a,这个操作是让第一个参数转置,即由[w*h, channel]变成[channel, w*h]。
所以,矩阵乘法就变成了在[channel, w*h]和[w*h, channel]两个矩阵之间,根据矩阵乘法的原理,计算就是第一个矩阵的每一行,和第二个矩阵的每一列去做内积。这个操作就是第二步的相似度的计算。得到的矩阵就是[channel, channel]大小,每一个位置<i,,j>代表的是第i个channel和第j个channel的相似度。