- Exécuteurs
-
Apprendre
Apprendre Python Exemples exécutables, NumPy, pandas et plus Apprendre l'IARéseaux de neurones, ML et LLM de zéro Apprendre le C et le C++ Pointeurs, mémoire, STL et C++ moderne Apprendre le C#Bases, POO, LINQ, async et exercices .NET Apprendre MatplotlibCourbes, barres, nuages de points et camemberts avec visualiseurs Algorithmes Python Recherche, tri, récursivité et visualisations O(n) Algorithmes C et C++ Comparer les implémentations en C et C++ Programmation pour enfants Apprends à coder en jouant !
- DéfisNouveau
- EnseignantsNouveau
- Mises à Jour
- Offrez-moi un café
L'attention multi-têtes permet à un Transformer de s'intéresser à plusieurs choses à la fois. Avec l'entrée X (n tokens × d colonnes) et des matrices de poids d × d :
- Q = X × w_q, K = X × w_k, V = X × w_v
- Découpez les d colonnes en
num_headstêtes de d_k = d / num_heads colonnes consécutives (la tête h utilise les colonnes h×d_k à (h+1)×d_k - 1). - Pour chaque tête, exécutez l'attention par produit scalaire mis à l'échelle sur ses colonnes : pour le token i, score_j = (Q_i · K_j) / √d_k sur les colonnes de cette tête, softmax sur les n tokens j, et sortie = Σ weight_j × V_j (colonnes de cette tête).
- Replacez les sorties des têtes dans leurs colonnes (concaténation) et multipliez par w_o.
Implémentez multi_head_attention(x, w_q, w_k, w_v, w_o, num_heads).
Entrée
x : Matrice d'entrée n × d.
w_q, w_k, w_v, w_o : Matrices de poids d × d.
num_heads : Le nombre de têtes (d est divisible par ce nombre).
Sortie
Renvoyez la matrice de sortie n × d.
Contraintes
1 ≤ n ≤ 30, 1 ≤ d ≤ 32, 1 ≤ num_heads ≤ d et d est divisible par num_heads
-5 ≤ chaque valeur ≤ 5
Exemples
Exemple 1
Entrée :
x = [
[1.0, 0.0],
[0.0, 1.0]
]
w_q = [
[0.0, 0.0],
[0.0, 0.0]
]
w_k = [
[1.0, 0.0],
[0.0, 1.0]
]
w_v = [
[1.0, 0.0],
[0.0, 1.0]
]
w_o = [
[1.0, 0.0],
[0.0, 1.0]
]
num_heads = 1
Sortie attendue :
[
[0.5, 0.5],
[0.5, 0.5]
]
Explication
w_q ne contient que des zéros, donc tous les scores valent 0 et chaque token fait la moyenne des lignes de valeurs : V = X, donc les deux lignes deviennent [0.5, 0.5].
Exemple 2
Entrée :
x = [
[2.0, 4.0]
]
w_q = [
[1.0, 0.0],
[0.0, 1.0]
]
w_k = [
[1.0, 0.0],
[0.0, 1.0]
]
w_v = [
[1.0, 0.0],
[0.0, 1.0]
]
w_o = [
[0.0, 1.0],
[1.0, 0.0]
]
num_heads = 2
Sortie attendue :
[
[4.0, 2.0]
]
Explication
Avec un seul token, chaque tête ne s'intéresse qu'à elle-même, donc la sortie concaténée est V = [2, 4]. w_o échange les deux colonnes : [4, 2].
Références
-
Exemple 1 Non exécutéEntrée :
x = [ [1.0, 0.0], [0.0, 1.0] ] w_q = [ [0.0, 0.0], [0.0, 0.0] ] w_k = [ [1.0, 0.0], [0.0, 1.0] ] w_v = [ [1.0, 0.0], [0.0, 1.0] ] w_o = [ [1.0, 0.0], [0.0, 1.0] ] num_heads = 1Sortie attendue :[ [0.5, 0.5], [0.5, 0.5] ]Votre sortie -
Exemple 2 Non exécutéEntrée :
x = [ [2.0, 4.0] ] w_q = [ [1.0, 0.0], [0.0, 1.0] ] w_k = [ [1.0, 0.0], [0.0, 1.0] ] w_v = [ [1.0, 0.0], [0.0, 1.0] ] w_o = [ [0.0, 1.0], [1.0, 0.0] ] num_heads = 2Sortie attendue :[ [4.0, 2.0] ]Votre sortie
4 tests cachés seront aussi exécutés lors de la soumission. Si votre code en échoue un, vous verrez ce test. Résolvez le défi pour tous les voir.
Run Swift Online
Write, run, and debug Swift code online using a command-line Swift environment. Manage multiple files, save your workspace, and share code without installing Xcode.
🚀 19,043 exécutions totales (611 ce mois-ci)
Pratiquez Swift avec des défis de code
Résolvez des problèmes concrets dans cet éditeur : lancez les tests, soumettez et recevez une relecture IA.
🍎 À propos de cet exécuteur Swift en ligne
Le CodeUtility Swift Executor vous permet d’écrire et d’exécuter du code Swift directement dans votre navigateur - aucune installation de Xcode, de SDK ou de macOS n’est requise. Il exécute de vrais compilateurs Swift dans des environnements sandbox isolés pour offrir un comportement Swift natif et fidèle.
Cet outil prend en charge plusieurs versions de Swift - 5.7, 5.9 et la dernière version - vous donnant la flexibilité d’explorer les nouvelles fonctionnalités du langage et de maintenir la compatibilité avec des bases de code Swift plus anciennes.
C’est parfait pour les développeurs qui apprennent la syntaxe Swift, testent des algorithmes ou expérimentent du code pour iOS, macOS et Swift côté serveur sans avoir besoin d’installer des outils locaux ou des simulateurs.
Chaque extrait s’exécute en toute sécurité dans un environnement Swift conteneurisé, garantissant de vrais retours du compilateur et une exécution de code sûre.
Bien plus qu’un exécuteur de code
Utilisez depuis le même exécuteur un éditeur multifichier, un terminal d’exécution isolé, des bibliothèques propres à chaque environnement, des espaces de travail persistants, le partage et la collaboration en temps réel.
Comment utiliser cet exécuteur ?
Choisissez un environnement d’exécution, ouvrez ou créez un fichier, écrivez votre code, puis sélectionnez Exécuter. La sortie s’affiche dans le terminal ; les utilisateurs connectés peuvent conserver leurs fichiers dans un espace de travail, installer des bibliothèques et collaborer grâce aux partages.
- Sélectionnez une version et modifiez le fichier actuel, ou ouvrez un autre fichier de l’espace de travail.
- Exécutez le code, saisissez les données demandées dans le terminal et consultez l’historique des exécutions enregistrées.
- Utilisez les bibliothèques, les outils de l’espace de travail, le partage et le chat lorsque votre tâche nécessite plusieurs extraits de code.
💡 Guide des bases de Swift pour débutants
1. Déclarer des variables et des constantes
Utilisez var pour les variables et let pour les constantes en Swift.
var age = 30
let pi = 3.14159
var name = "Alice"
let isActive = true
// Les constantes ne peuvent pas être réaffectées
// pi = 3.14 // ❌ Erreur
2. Conditionnelles (if / switch)
Utilisez if, else if, else pour la logique, et switch pour plusieurs branches.
let number = 2
if number == 1 {
print("Un")
} else if number == 2 {
print("Deux")
} else {
print("Autre")
}
switch number {
case 1:
print("Un")
case 2:
print("Deux")
default:
print("Autre")
}
3. Boucles
Swift prend en charge les boucles for-in, while et repeat-while.
for i in 0..<3 {
print(i)
}
var n = 3
while n > 0 {
print(n)
n -= 1
}
4. Tableaux
Les tableaux stockent des collections de valeurs ordonnées.
var numbers = [10, 20, 30]
print(numbers[1])
5. Manipulation de tableaux
Utilisez des méthodes de tableau comme append et removeLast.
var nums = [1, 2, 3]
nums.append(4)
nums.removeLast()
for n in nums {
print(n)
}
6. Entrée/Sortie console
Utilisez print() pour la sortie. L’entrée nécessite un travail supplémentaire dans Swift Playgrounds ou Xcode.
let name = "Alice"
print("Bonjour, \(name)")
7. Fonctions
Définissez des fonctions réutilisables avec paramètres et valeurs de retour.
func add(a: Int, b: Int) -> Int {
return a + b
}
print(add(a: 3, b: 4))
8. Dictionnaires
Les dictionnaires stockent des paires clé-valeur.
var ages = ["Alice": 30]
print(ages["Alice"] ?? 0)
9. Gestion des erreurs
Swift utilise do-catch pour la gestion des erreurs.
enum MyError: Error {
case runtimeError(String)
}
do {
throw MyError.runtimeError("Un problème est survenu")
} catch let error {
print(error)
}
10. Entrées/Sorties de fichiers
Swift utilise FileManager ou des méthodes de String pour l’E/S de fichiers.
let text = "Bonjour fichier"
try text.write(toFile: "file.txt", atomically: true, encoding: .utf8)
let content = try String(contentsOfFile: "file.txt")
print(content)
11. Manipulation de chaînes
Utilisez des méthodes comme count, contains, uppercased(), etc.
let text = "Bonjour le monde"
print(text.count)
print(text.contains("monde"))
print(text.uppercased())
12. Classes et objets
Swift prend en charge la POO avec class et init.
class Person {
var name: String
init(name: String) {
self.name = name
}
func greet() {
print("Salut, je suis \(name)")
}
}
let p = Person(name: "Alice")
p.greet()
13. Optionnels
Swift utilise ? et ! pour gérer les valeurs optionnelles.
var name: String? = "Alice"
print(name ?? "Inconnu")
if let unwrappedName = name {
print(unwrappedName)
}