1、Gram矩阵的定义

文章插图
2、意义格拉姆矩阵可以看做feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),在feature map中,每个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字代表一个特征的强度,而Gram计算的实际上是两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等,同时,Gram的对角线元素,还体现了每个特征在图像中出现的量,因此,Gram有助于把握整个图像的大体风格 。有了表示风格的Gram Matrix,要度量两个图像风格的差异,只需比较他们Gram Matrix的差异即可 。
总之,格拉姆矩阵用于度量各个维度自己的特性以及各个维度之间的关系 。内积之后得到的多尺度矩阵中,对角线元素提供了不同特征图各自的信息,其余元素提供了不同特征图之间的相关信息 。这样一个矩阵,既能体现出有哪些特征,又能体现出不同特征间的紧密程度 。
3、计算实例

文章插图
MATLAB计算程序及结果:
x1=[3,3]\',
x2=[4,3]\',
x3=[1,1]\',
G=[x1\'*x1,x1\'*x2,x1\'*x3;
x2\'*x1,x2\'*x2,x2\'*x3;
x3\'*x1,x3\'*x2,x3\'*x3]
G =
18 21 6
21 25 7
6 7 2
风格损失函数(Gram矩阵)理解

文章插图

文章插图
当我们获取了gram矩阵,实际上就是把握住了这幅作品,不同特征之间的关系与联系,比如哪一种特征的量比较多,哪些特征和出现比较多的这个特征正相关or负相关,从而得出了这个作品的风格, 而进一步通过style图片和generate图片的gram矩阵之间的计算出相应的风格损失函数,就可以比较出两者在风格之间的差异
tensorflow keras 代码表述如下:# 将一个 nD 张量变成一个 第 0 维相同的 2D 张量 。换句话说,它将批次中的每一个样本展平 。# keras.backend.batch_flatten(x)# 重新排列张量的轴 。# keras.backend.permute_dimensions(x, pattern)def gram_matrix(x): features = keras.backend.batch_flatten(K.permute_dimensions(x,(2,0,1))) gram = keras.backend.dot(features,K.transpose(features)) return gram参考:
https://blog.csdn.net/dcrmg/article/details/81231044
https://blog.csdn.net/tunhuzhuang1836/article/details/78474129
【朗格拉姆 格拉姆矩阵】https://blog.csdn.net/Hi_maxin/article/details/84979580
- 古德查尔德
- 决赛荡气回肠!3大看点载入史册,梅西不留遗憾,姆巴佩赢得未来
- 4名跟队记者齐发声,曼联要签贝林厄姆和德容,是抬价还是真想要
- omron欧姆龙血压计 欧姆龙血压仪器什么型号最好
- 买欧姆龙血压计哪款好 欧姆龙血压计哪款好?
- 嘉华 嘉华拉姆简介
- 大众朗逸正时皮带在哪里
- 大众两厢车朗行多少钱 大众朗行两厢车怎么样
- 别克英朗哪款车是三缸的
- 世界杯最大看点:场均仅0.2次防守动作,梅西和姆巴佩的相互利用
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
