欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?pytorch實現(xiàn)繪制一維熱力圖

 更新時間:2023年05月31日 15:18:15   作者:zzz_979  
熱力圖是非常特殊的一種圖,可以顯示不可點擊區(qū)域發(fā)生的事情,這篇文章主要為大家介紹了如何利用pytorch實現(xiàn)繪制一維熱力圖,感興趣的可以了解一下

熱力圖

熱力圖(Heat Map)是指用 X 軸 和 Y 軸 表示的兩個分類字段確定數(shù)值點的位置,通過相應(yīng)位置的矩形顏色去表現(xiàn)數(shù)值的大小,顏色深代表的數(shù)值大。

熱力圖是非常特殊的一種圖,可以顯示不可點擊區(qū)域發(fā)生的事情。熱力圖非常關(guān)注分布,可以不需要坐標軸,其背景通常是圖片或者地圖,一般使用彩虹色系做展示。

熱力圖一般以二維居多,多用于圖像處理領(lǐng)域。

熱力圖主要用于展示連續(xù)型數(shù)據(jù)的分布情況。例如用顏色展現(xiàn)某一范圍內(nèi)不同地區(qū)數(shù)據(jù)量的差異,網(wǎng)站分析等等。

優(yōu)勢:好看、易于理解,數(shù)據(jù)信息更直觀有效,可以清晰地呈現(xiàn)數(shù)據(jù)在地理空間的分布、頻率或密度情況。

缺點:效果過于柔化,不適合用作數(shù)據(jù)的精確表達,且不適合比較單一變量的大小。

一維熱力圖-----總體分布情況

根據(jù)折線圖中的數(shù)據(jù)創(chuàng)建一維熱圖,類似于直方圖,根據(jù)每個 bins 的出現(xiàn)頻率繪制不同顏色

代碼

可以通過imshow關(guān)鍵字參數(shù)設(shè)置imshow設(shè)置圖像的數(shù)據(jù)范圍。 這用元組(left, right, bottom, top)設(shè)置范圍。

在范圍內(nèi)使用直方圖的最小和最大bin邊緣可將數(shù)據(jù)移動到其原始值

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
# 畫布大小
plt.rcParams["figure.figsize"] = 5,2
# 順序生成 -56 到 40 之間的96個數(shù)
pos = np.arange(-56,40) #there are 96 numbers from -56 to 39
print len(pos), pos.min(), pos.max()
# 生成 96 個隨機數(shù)
p = np.random.rand(len(pos))
# 隨機數(shù)轉(zhuǎn)化成概率
p= p/np.sum(p)
# 根據(jù)每個數(shù)出現(xiàn)的概率,在 pos 中挑選 4000 個數(shù)
a= np.random.choice(pos, size=4000, p=p)
# 將 a 的取值范圍劃分為 96 個 bin
bins=np.arange(-56,41) 
# 得到直方分布,hist 表示每個 bin 中數(shù)的個數(shù) ,edges 表示 bin 的邊界
hist, edges = np.histogram(a, bins)
hist=hist[np.newaxis,:]
# 熱力圖 x軸 和 y軸范圍
extent=[bins.min(), bins.max(),0,1]
#畫圖
plt.imshow(hist, aspect ="auto", cmap="viridis", extent=extent)
plt.gca().set_yticks([])
plt.show()

一維熱力圖----數(shù)據(jù)變化情況

根據(jù)數(shù)據(jù)本身的波動情況,根據(jù)數(shù)值本身大小變換顏色

例圖,可以看到數(shù)值大時,熱力圖更紅,數(shù)值小時,熱力圖更藍

代碼

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
# 畫布大小
plt.rcParams["figure.figsize"] = 5,4
# 生成 40 個 sin 函數(shù)值
x = np.sin(range(40))
# 每x個數(shù)計算平均值,即一段內(nèi)的分布(此處取為1,即為每個數(shù)繪制分布)
a = x.reshape(1,-1)
a = np.mean(a, axis=0)
a=a[np.newaxis,:]
# 繪制熱力圖
figure = plt.figure()
axes = figure.add_subplot(211)
axes.matshow(a,aspect ="auto",cmap="Spectral_r", interpolation='bilinear')
# 不顯示橫縱坐標
plt.xticks([])
plt.yticks([])
# 繪制原始數(shù)據(jù)圖
plt.subplot(212)
plt.plot(range(len(x)),x)
# x軸顯示范圍從第一個數(shù)到最后一個
plt.xlim((0,len(x)-1))
plt.show()

attention 熱力圖繪制原理

難點在于數(shù)據(jù)獲取,獲取最后一層梯度數(shù)據(jù),即可知道注意力重點,根據(jù)梯度數(shù)據(jù) resize 到原始數(shù)據(jù),再畫出熱力圖(根據(jù)數(shù)據(jù)變化情況),之后與原始數(shù)據(jù)對應(yīng),即可得到網(wǎng)絡(luò)的高響應(yīng)熱力圖

到此這篇關(guān)于Python pytorch實現(xiàn)繪制一維熱力圖的文章就介紹到這了,更多相關(guān)Python繪制一維熱力圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論