日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何对batch的数据求Gram矩阵

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何对batch的数据求Gram矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Gram矩陣概念和理解

在風格遷移中,我們要比較生成圖片和風格圖片的相似性,評判標準就是通過計算Gram矩陣得到的。關于Gram矩陣的定義,可以參考[1]。

由這個矩陣的樣子,很容易就想到協方差矩陣。如果協方差矩陣是什么忘了的化可以參考[2],可以看到Gram矩陣是沒有減去均值的協方差矩陣。協方差矩陣是一種相關性度量的矩陣,通過協方差來度量相關性,也就是度量兩個圖片風格的相似性。(如果相對協方差和相關系數有進一步了解,可以參考[3])

如何通過代碼實現Gram矩陣計算

了解Gram矩陣的概念和性質 ,我們就來看一看如何用代碼來實現Gram矩陣的計算。這里,使用PyTorch來實現計算過程。

PyTorch中有兩個函數torch.mm和torch.bmm前者是計算矩陣乘法,后者是計算batch數據的矩陣乘法,風格遷移中是對batch數據進行操作,所以使用bmm。

我們創造一個batch為2,單通道,2*2大小的數據

a = torch.arange(8, dtype=torch.int).reshape(2, 1, 2, 2) a >>> tensor([[[[0, 1],[2, 3]]],[[[4, 5],[6, 7]]]], dtype=torch.int32)

之后從新reshape一下,將w和h通道的數據合起來,變成向量形式

features = a.view(2, 1, 4) features >>> tensor([[[0, 1, 2, 3]],[[4, 5, 6, 7]]], dtype=torch.int32)

為了構造計算Gram矩陣的向量,對shape進行一個交換操作

features_t = features.transpose(1, 2) features_t >>> tensor([[[0],[1],[2],[3]],[[4],[5],[6],[7]]], dtype=torch.int32)

之后用矩陣乘法把這兩個向量乘起來就可以了,就計算出Gram矩陣了。

gram = features.bmm(features_t) gram >>> tensor([[[ 14]],[[126]]], dtype=torch.int32)

Reference

[1]Gram格拉姆矩陣在風格遷移中的應用
[2]如何直觀地理解「協方差矩陣」
[3]如何通俗易懂地解釋「協方差」與「相關系數」的概念?

總結

以上是生活随笔為你收集整理的如何对batch的数据求Gram矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。