文本attention矩陣可視化

今日在進行attention可視化時查詢了一些資料,文本attention矩陣可視化代碼記錄如下:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.ticker as ticker
import matplotlib as mpl

variables = ['A','B','C','X']
labels = ['ID_0','ID_1','ID_2','ID_3']

mpl.rcParams['font.sans-serif'] = ['WenQuanYi Micro Hei'] # 設(shè)置中文字體為黑體
mpl.rcParams['axes.unicode_minus'] = False

df = pd.DataFrame(d, columns=variables, index=labels)  #其中d為4*4的矩陣
fig = plt.figure(figsize=(15,15))    #設(shè)置圖片大小
ax = fig.add_subplot(111)
cax = ax.matshow(df, interpolation='nearest', cmap='hot_r')
fig.colorbar(cax)

tick_spacing = 1
ax.xaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
ax.yaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))

ax.set_xticklabels([''] + list(df.columns))
ax.set_yticklabels([''] + list(df.index))

plt.show()

最終結(jié)果顯示:


attention.png

可能出現(xiàn)的問題:
■ 輸出中文為方框。
使用下列代碼查看可用字體,如果有中文就直接使用mpl.rcParams['font.sans-serif'] = [fontname] 將字體設(shè)置為對應(yīng)的字體

from matplotlib.font_manager import FontManager
import subprocess
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
#print(mat_fonts)
output = subprocess.check_output(
    'fc-list :lang=zh -f "%{family}\n"', shell=True) # 獲取字體列表
output = output.decode('utf-8')
#print(output)

zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))
available = mat_fonts & zh_fonts
print('*' * 10, '可用的字體', '*' * 10)
for f in available:
    print(f)

若字體庫中不存在可用字體,也可自己下載字體添加到matplotlib中。詳細添加方法可自行查閱。

參考:
https://blog.csdn.net/m0_38133212/article/details/86664569

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容