|
|
--- |
|
|
license: mit |
|
|
language: |
|
|
- en |
|
|
pipeline_tag: text-generation |
|
|
tags: |
|
|
- Recipe |
|
|
- Beurk |
|
|
- Les recettes loufoques |
|
|
- assemblage |
|
|
- fait moi une glace a la viande |
|
|
--- |
|
|
|
|
|
# 🍓 Ice-Clem 🍓 |
|
|
|
|
|
 |
|
|
|
|
|
Bienvenue sur la documentation de l'IA : Ice-Clem. |
|
|
ce petit modèle tres simple, |
|
|
a été crée et entraîné en 5 minutes, en réponse a une idée éclair, |
|
|
apparu lorsque j'étais assez fatiguée j'avoue 🤣. |
|
|
|
|
|
Le but de ce modèle est de générer des combinaisons loufoques d'aliments qui ont rien a voir entre eux, |
|
|
pour vous faire imaginer des plats dégueulasse et vous faire sourir (ou rire j'espère). |
|
|
|
|
|
le modèle a ete entraîné sur certains mots-clés (les ingrédients), |
|
|
et a partir d'un ingrédients de départ, |
|
|
génère totalement aléatoirement la suite des ingrédients pour faire votre plat loufoque (a ne pas concrétiser). |
|
|
|
|
|
les noms des ingrédients sont rédigés en anglais. |
|
|
|
|
|
## 🌸 Liste des ingrédients 🌸 |
|
|
|
|
|
Voici la listes des ingrédients de départ que vous pouvez utiliser : |
|
|
|
|
|
pizza |
|
|
sushi |
|
|
pasta |
|
|
soup |
|
|
curry |
|
|
steak |
|
|
salad |
|
|
burger |
|
|
tacos |
|
|
noodles |
|
|
rice |
|
|
bread |
|
|
cake |
|
|
cookies |
|
|
pie |
|
|
chocolate |
|
|
vanilla |
|
|
strawberry |
|
|
spicy |
|
|
sour |
|
|
|
|
|
le modèle générera la suite, de façon aléatoire mais intelligente. |
|
|
;) 🔥 |
|
|
|
|
|
# 🩵 Exemple d'utilisation 🩵 |
|
|
|
|
|
``` |
|
|
from huggingface_hub import hf_hub_download |
|
|
import torch |
|
|
import json |
|
|
import os |
|
|
|
|
|
# Define your Hugging Face repository name and the filenames |
|
|
repo_name = "Clemylia/Ice-Clem" # Make sure this matches the repository name you used |
|
|
model_filename = "pytorch_model.bin" |
|
|
word_to_index_filename = "word_to_index.json" |
|
|
index_to_word_filename = "index_to_word.json" |
|
|
|
|
|
# Download the files from the Hugging Face Hub |
|
|
try: |
|
|
model_path = hf_hub_download(repo_id=repo_name, filename=model_filename) |
|
|
word_to_index_path = hf_hub_download(repo_id=repo_name, filename=word_to_index_filename) |
|
|
index_to_word_path = hf_hub_download(repo_id=repo_name, filename=index_to_word_filename) |
|
|
|
|
|
print(f"Downloaded model to: {model_path}") |
|
|
print(f"Downloaded word_to_index to: {word_to_index_path}") |
|
|
print(f"Downloaded index_to_word to: {index_to_word_path}") |
|
|
|
|
|
# Load the word_to_index and index_to_word mappings |
|
|
with open(word_to_index_path, 'r') as f: |
|
|
word_to_index = json.load(f) |
|
|
|
|
|
with open(index_to_word_path, 'r') as f: |
|
|
index_to_word = json.load(f) |
|
|
# Convert keys back to integers if they were saved as strings |
|
|
index_to_word = {int(k): v for k, v in index_to_word.items()} |
|
|
|
|
|
|
|
|
# Define the model architecture (must match the architecture used for training) |
|
|
# You'll need the same hyperparameters as before |
|
|
vocab_size = len(word_to_index) |
|
|
embedding_dim = 100 # Make sure this matches your training parameter |
|
|
hidden_dim = 256 # Make sure this matches your training parameter |
|
|
output_dim = vocab_size |
|
|
|
|
|
class FoodCombinerModel(torch.nn.Module): |
|
|
def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim): |
|
|
super(FoodCombinerModel, self).__init__() |
|
|
self.embedding = torch.nn.Embedding(vocab_size, embedding_dim) |
|
|
self.lstm = torch.nn.LSTM(embedding_dim, hidden_dim, batch_first=True) |
|
|
self.fc = torch.nn.Linear(hidden_dim, output_dim) |
|
|
|
|
|
def forward(self, x): |
|
|
embedded = self.embedding(x) |
|
|
lstm_out, _ = self.lstm(embedded) |
|
|
output = self.fc(lstm_out[:, -1, :]) |
|
|
return output |
|
|
|
|
|
# Instantiate the model |
|
|
loaded_model = FoodCombinerModel(vocab_size, embedding_dim, hidden_dim, output_dim) |
|
|
|
|
|
# Load the saved state dictionary |
|
|
loaded_model.load_state_dict(torch.load(model_path)) |
|
|
|
|
|
# Set the model to evaluation mode |
|
|
loaded_model.eval() |
|
|
|
|
|
print("Model loaded successfully!") |
|
|
|
|
|
# Now you can use the loaded_model for generation |
|
|
# Make sure the generate_combination function is defined in a previous cell and accessible |
|
|
|
|
|
# Generate a combination using the loaded model |
|
|
starting_phrase_loaded = "sushi" # You can use any word from your vocabulary |
|
|
generated_combination_loaded = generate_combination(loaded_model, starting_phrase_loaded, word_to_index, index_to_word) |
|
|
print(f"\nGenerated combination using loaded model starting with '{starting_phrase_loaded}': {generated_combination_loaded}") |
|
|
|
|
|
starting_phrase_loaded_2 = "pizza" |
|
|
generated_combination_loaded_2 = generate_combination(loaded_model, starting_phrase_loaded_2, word_to_index, index_to_word) |
|
|
print(f"Generated combination using loaded model starting with '{starting_phrase_loaded_2}': {generated_combination_loaded_2}") |
|
|
|
|
|
except Exception as e: |
|
|
print(f"An error occurred: {e}") |
|
|
print("Please ensure the repository name is correct and the files exist on Hugging Face Hub.") |
|
|
``` |