格拉姆矩阵(Gram matrix)详细解读

格拉姆矩阵(Gram matrix)详细解读目录基础知识-向量的内积Grammatrix介绍Grammatrix的应用-风格迁移一、基础知识-向量的内积1.1向量的内积定义:也叫向量的点乘,对两个向量执行内积运算,就是对这两个向

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

  • 基础知识-向量的内积
  • Gram matrix介绍
  • Gram matrix的应用-风格迁移

一、基础知识向量的内积

1.1 向量的内积定义:也叫向量的点乘,对两个向量执行内积运算,就是对这两个向量对应位一一相乘之后求和的操作,内积的结果是一个标量。

1.2 实例

格拉姆矩阵(Gram matrix)详细解读

ab的内积公式为:

格拉姆矩阵(Gram matrix)详细解读

1.3 作用

内积判断向量a和向量b之间的夹角和方向关系

  • a·b>0    方向基本相同,夹角在90°之间
  • a·b=0    正交,相互垂直  
  • a·b<0    方向基本相反,夹角在90°180°之间 

Gram矩阵是两两向量的内积组成,所以Gram矩阵可以反映出该组向量中各个向量之间的某种关系

二、Gram matrix介绍

2.1 定义

n维欧式空间中任意k个向量之间两两的内积所组成的矩阵,称为这k个向量的格拉姆矩阵(Gram matrix),很明显,这是一个对称矩阵。

格拉姆矩阵(Gram matrix)详细解读

更加直观的理解:

格拉姆矩阵(Gram matrix)详细解读

2.2 计算和特征表示

输入图像的feature map[ ch, h, w]。我们经过flatten(即是将h*w进行平铺成一维向量)和矩阵转置操作,可以变形为[ ch, h*w][ h*w, ch]的矩阵。再对两个作内积得到Gram Matrices。 (蓝色条表示每个通道flatten后特征点,最后得到 [ch *ch ]的G矩阵)

格拉姆矩阵(Gram matrix)详细解读

2.3 进一步理解

格拉姆矩阵(Gram matrix)详细解读

格拉姆矩阵可以看做feature之间的偏心协方差矩阵(即没有减去均值的协方差矩阵),在feature map中,每个数字都来自于一个特定滤波器在特定位置的卷积,因此每个数字代表一个特征的强度,而Gram计算的实际上是两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等。

格拉姆矩阵用于度量各个维度自己的特性以及各个维度之间的关系。内积之后得到的多尺度矩阵中,对角线元素提供了不同特征图各自的信息,其余元素提供了不同特征图之间的相关信息。这样一个矩阵,既能体现出有哪些特征,又能体现出不同特征间的紧密程度。

关键点:gram矩阵是计算每个通道 i 的feature map与每个通道 j 的feature map的内积。gram matrix的每个值可以说是代表 I 通道的feature map与 j 通道的feature map的互相关程度。

三、Gram matrix的应用风格迁移

深度学习中经典的风格迁移大体流程是:

1. 准备基准图像和风格图像

2. 使用深层网络分别提取基准图像(加白噪声)和风格图像的特征向量(或者说是特征图feature map

3. 分别计算两个图像的特征向量的Gram矩阵,以两个图像的Gram矩阵的差异最小化为优化目标,不断调整基准图像,使风格不断接近目标风格图像

关键的一个是在网络中提取的特征图,一般来说浅层网络提取的是局部的细节纹理特征,深层网络提取的是更抽象的轮廓、大小等信息。这些特征总的结合起来表现出来的感觉就是图像的风格,由这些特征向量计算出来的的Gram矩阵,就可以把图像特征之间隐藏的联系提取出来,也就是各个特征之间的相关性高低。

格拉姆矩阵(Gram matrix)详细解读

如果两个图像的特征向量的Gram矩阵的差异较小,就可以认定这两个图像风格是相近的。有了表示风格的Gram Matrix,要度量两个图像风格的差异,只需比较他们Gram Matrix的差异即可。

格拉姆矩阵(Gram matrix)详细解读

具体可见另一篇文章《风格迁移论文理解–A Neural Algorithm of Artistic Style》展开的介绍。

附件:手写图例辅助理解:

格拉姆矩阵(Gram matrix)详细解读

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167695.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)

    zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)一.ZigBee协议栈简介什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用个协议的,进而实现无线数据收发。ZigBee的协议分为两部分,IEEE802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层

  • 计算机发展史上代表性的人物,计算机发展史最具影响力人物「建议收藏」

    计算机发展史上代表性的人物,计算机发展史最具影响力人物「建议收藏」1.冯·诺依曼 1903-1957开创了现代计算机理论,其体系结构沿用至今,而且他早在40年代就已预见到计算机建模和仿真技术对当代计算机将产生的意义深远的影响2.蒂姆·伯纳斯·李  1955-互联网之父蒂姆·伯纳斯·李是万维网的发明人,也是万维网联盟(World Wide Web Consortium)的发起人。1990年,他在日内瓦的欧洲粒子物理实验室里开发出了世界上第一个网页浏览器。3.罗伯特…

    2022年10月18日
  • PyTorch实现的ResNet50、ResNet101和ResNet152

    PyTorch实现的ResNet50、ResNet101和ResNet152PyTorch实现的ResNet50、ResNet101和ResNet152importtorchimporttorch.nnasnnimporttorchvisionprint(&amp;quot;PyTorchVersion:&amp;quot;,torch.__version__)print(&amp;quot;TorchvisionVersion:&amp;quot;,torchvision.__version__)

  • ubuntu16.04重启网络服务命令_ubuntu重启服务器命令

    ubuntu16.04重启网络服务命令_ubuntu重启服务器命令在更改网络配置后,我们需要重启网络服务使更改生效。在centos系统中,我们可以通过以下命令重启网络服务:/etc/init.d/networkrestart#orservicenetworkrestartUbuntu14.04重启网络服务无效:servicenetworkingrestartstop:Jobfailedwhilestoppingstart:Jobi

  • redis集群搭建之官方redis cluster 搭建实践「建议收藏」

    rediscluster是官方的redis集群实现,本篇文章为搭建集群实践篇一、手动搭建redis官方已经redis-trib.rb命令来给我们实现redis搭建了。但是为了了解原理,首先我们来手动搭建不使用官方的命令。如果大家想快速搭建,可以直接跳到二。1、准备我们这个例子是在单机上部署集群,实际的工作情况会在不同的机器上搭建,一方面为了保证高可用也是为了扩大数据的容量所以实际中会在不同的机器…

  • 设置PyCharm运行程序时在Run窗口运行,不在Python Console窗口中运行

    设置PyCharm运行程序时在Run窗口运行,不在Python Console窗口中运行最近,我在

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号