single
Challenge: Plottning av Uppmärksamhetsvärmekartor
Svep för att visa menyn
Att visualisera uppmärksamhetsvikter med ett värmekarta hjälper dig att tolka hur en transformer-modell fördelar sitt fokus över en mening. Du använder matplotlib för att rita en värmekarta där både x-axeln och y-axeln representerar token från meningen. Varje ruta i värmekartan visar uppmärksamhetsvikten mellan ett tokenpar: raden motsvarar frågetoken och kolumnen motsvarar nyckeltoken.
Börja med att dela upp din mening i token:
sentence = "Transformers help models focus on important words."
tokens = sentence.split()
Definiera sedan din uppmärksamhetsmatris som en NumPy-array. Varje värde representerar uppmärksamhetsvikten från ett token till ett annat:
import numpy as np
attention = np.array([
[0.20, 0.10, 0.05, 0.10, 0.25, 0.10, 0.20],
[0.05, 0.30, 0.10, 0.10, 0.15, 0.20, 0.10],
[0.10, 0.15, 0.35, 0.10, 0.10, 0.10, 0.10],
[0.10, 0.10, 0.10, 0.30, 0.10, 0.15, 0.15],
[0.15, 0.10, 0.10, 0.10, 0.30, 0.10, 0.15],
[0.10, 0.10, 0.15, 0.10, 0.10, 0.35, 0.10],
[0.20, 0.15, 0.10, 0.10, 0.10, 0.10, 0.25],
])
För att rita värmekartan, använd följande kod:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 6))
im = ax.imshow(attention, cmap="viridis")
ax.set_xticks(np.arange(len(tokens)))
ax.set_yticks(np.arange(len(tokens)))
ax.set_xticklabels(tokens, rotation=45, ha="right")
ax.set_yticklabels(tokens)
cbar = plt.colorbar(im, ax=ax)
cbar.set_label("Attention Weight")
ax.set_title("Attention Heatmap")
ax.set_xlabel("Key Tokens")
ax.set_ylabel("Query Tokens")
plt.tight_layout()
plt.show()
Ljusa eller mörka färger indikerar högre eller lägre uppmärksamhetsvärden, beroende på färgskalan. När du tittar på värmekartan kan du se vilka ord modellen lägger mest uppmärksamhet på vid bearbetning av varje token. Om till exempel rutan vid rad focus och kolumn important är ljus, kopplar modellen starkt focus till important i sin interna representation. Denna visualisering hjälper dig att förstå vilka delar av inmatningsmeningen som påverkar varandra och är användbar för att diagnostisera eller tolka modellbeteende i uppgifter inom naturlig språkbehandling.
Kör nu koden för att se den resulterande värmekartan och skriv sedan din första visualiserande graf.
123456789101112131415161718192021222324252627282930313233import numpy as np import matplotlib.pyplot as plt sentence = "Transformers help models focus on important words." tokens = sentence.split() attention = np.array([ [0.20, 0.10, 0.05, 0.10, 0.25, 0.10, 0.20], [0.05, 0.30, 0.10, 0.10, 0.15, 0.20, 0.10], [0.10, 0.15, 0.35, 0.10, 0.10, 0.10, 0.10], [0.10, 0.10, 0.10, 0.30, 0.10, 0.15, 0.15], [0.15, 0.10, 0.10, 0.10, 0.30, 0.10, 0.15], [0.10, 0.10, 0.15, 0.10, 0.10, 0.35, 0.10], [0.20, 0.15, 0.10, 0.10, 0.10, 0.10, 0.25], ]) fig, ax = plt.subplots(figsize=(8, 6)) im = ax.imshow(attention, cmap="viridis") ax.set_xticks(np.arange(len(tokens))) ax.set_yticks(np.arange(len(tokens))) ax.set_xticklabels(tokens, rotation=45, ha="right") ax.set_yticklabels(tokens) cbar = plt.colorbar(im, ax=ax) cbar.set_label("Attention Weight") ax.set_title("Attention Heatmap") ax.set_xlabel("Key Tokens") ax.set_ylabel("Query Tokens") plt.tight_layout() plt.show()
Svep för att börja koda
Plotta en uppmärksamhets-heatmap för meningen "Attention helps models understand context." med följande uppmärksamhetsmatris:
attention = [
[0.25, 0.15, 0.20, 0.20, 0.20],
[0.10, 0.40, 0.15, 0.20, 0.15],
[0.15, 0.10, 0.35, 0.20, 0.20],
[0.20, 0.15, 0.20, 0.25, 0.20],
[0.15, 0.20, 0.20, 0.20, 0.25],
]
- Använd
matplotlibför att skapa en heatmap; - Märk båda axlarna med meningens token;
- Lägg till en färgskala med etiketten "Attention Weight;"
- Ge diagrammet titeln "Attention Heatmap."
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal