|
|
|
|
|
""" |
|
|
Exemple de sauvegarde et chargement de modèles Sitiai |
|
|
""" |
|
|
|
|
|
import numpy as np |
|
|
import sitiai |
|
|
|
|
|
print("=" * 60) |
|
|
print("Exemple: Sauvegarde et Chargement de Modèles") |
|
|
print("=" * 60) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print("\n📊 EXEMPLE 1: Modèle de Régression Linéaire") |
|
|
print("-" * 60) |
|
|
|
|
|
|
|
|
np.random.seed(42) |
|
|
X_train = np.random.randn(100, 3) |
|
|
y_train = 3 * X_train[:, 0] + 2 * X_train[:, 1] - X_train[:, 2] + 5 + np.random.randn(100) * 0.5 |
|
|
|
|
|
|
|
|
print("\n1. Création et entraînement du modèle...") |
|
|
ai = sitiai.create.ai('linear', input_size=3, output_size=1, hidden_layers=[16, 8]) |
|
|
ai.train(X_train, y_train, epochs=100, verbose=False) |
|
|
print(f"✓ Modèle entraîné: {ai}") |
|
|
|
|
|
|
|
|
X_test = np.array([[1.0, 2.0, 0.5]]) |
|
|
pred_before = ai.predict(X_test) |
|
|
print(f"\n2. Prédiction avant sauvegarde: {pred_before[0, 0]:.4f}") |
|
|
|
|
|
|
|
|
print("\n3. Sauvegarde du modèle...") |
|
|
ai.save_weights('my_linear_model.npz') |
|
|
|
|
|
|
|
|
print("\n4. Création d'un nouveau modèle et chargement des poids...") |
|
|
ai_loaded = sitiai.create.ai('linear', input_size=3, output_size=1, hidden_layers=[16, 8]) |
|
|
ai_loaded.load_weights('my_linear_model.npz') |
|
|
|
|
|
|
|
|
pred_after = ai_loaded.predict(X_test) |
|
|
print(f"\n5. Prédiction après chargement: {pred_after[0, 0]:.4f}") |
|
|
print(f" Différence: {abs(pred_before[0, 0] - pred_after[0, 0]):.10f}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print("\n\n" + "=" * 60) |
|
|
print("📝 EXEMPLE 2: Générateur de Noms") |
|
|
print("-" * 60) |
|
|
|
|
|
|
|
|
print("\n1. Création et entraînement du modèle génératif...") |
|
|
name_ai = sitiai.create.ai('generative', mode='name_generator') |
|
|
noms = ["Alexandre", "Sophie", "Marie", "Pierre", "Julien", "Camille"] |
|
|
name_ai.load_data(noms) |
|
|
name_ai.train(epochs=100) |
|
|
print(f"✓ {name_ai}") |
|
|
|
|
|
|
|
|
print("\n2. Génération avant sauvegarde:") |
|
|
names_before = name_ai.generate_batch(n=3, temperature=0.8) |
|
|
for i, nom in enumerate(names_before, 1): |
|
|
print(f" {i}. {nom}") |
|
|
|
|
|
|
|
|
print("\n3. Sauvegarde du modèle...") |
|
|
name_ai.save_weights('name_generator.npz') |
|
|
|
|
|
|
|
|
print("\n4. Chargement dans un nouveau modèle...") |
|
|
name_ai_loaded = sitiai.create.ai('generative') |
|
|
name_ai_loaded.load_weights('name_generator.npz') |
|
|
|
|
|
|
|
|
print("\n5. Génération après chargement:") |
|
|
names_after = name_ai_loaded.generate_batch(n=3, temperature=0.8) |
|
|
for i, nom in enumerate(names_after, 1): |
|
|
print(f" {i}. {nom}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print("\n\n" + "=" * 60) |
|
|
print("🌐 EXEMPLE 3: Partage de Modèle") |
|
|
print("-" * 60) |
|
|
|
|
|
print(""" |
|
|
Vos modèles peuvent maintenant être partagés facilement! |
|
|
|
|
|
Exemples d'utilisation: |
|
|
1. Sauvegarder localement: |
|
|
ai.save_weights('mon_modele.npz') |
|
|
|
|
|
2. Partager sur GitHub: |
|
|
- Commitez le fichier .npz dans votre repo |
|
|
- Les utilisateurs peuvent télécharger et charger avec load_weights() |
|
|
|
|
|
3. Publier sur un service cloud: |
|
|
- Upload le fichier .npz |
|
|
- Partagez le lien de téléchargement |
|
|
|
|
|
4. Intégrer dans une application: |
|
|
- Incluez le fichier .npz dans votre package |
|
|
- Chargez-le au démarrage de l'application |
|
|
|
|
|
Le format .npz est compact et compatible avec NumPy! |
|
|
""") |
|
|
|
|
|
print("=" * 60) |
|
|
print("✨ Démonstration terminée!") |
|
|
print("=" * 60) |
|
|
|