Ce code génère des CrossFit WOD (entraînement du jour) avec des réseaux de neurones récurrents (modèle char-rnn d'Andrej Karpathy). Le réseau est formé sur 5 000 échantillons WOD collectés dans diverses boîtes de crossfit. Malgré le petit ensemble de données, les résultats sont à la fois amusants et satisfaisants.
Une collection des bons résultats peut être vue à partir d'ici.
Bien entendu, tous les résultats ne sont pas excellents. En voici quelques drôles :
Zéro WOD
0 rounds for time 15 minutes
800 mt run
10 sumo deadlift high pull
9 front squat
1 muscle-up
Repos WOD
5 rounds for time
20 minutes rest
WOD presque impossible
5 rounds for time 20 minutes
100 double under
50 wall-ball
Dans ce WOD, il n'y a pas de row mais le réseau veut quand même des burpees sur le row
7 rounds for time
18 dumbbell squat clean
15 burpees over the row
250 mt run
Quelques exercices imaginaires
brusseane push-up
t-up
touster
lean & jerk
publ-up
dumbell burpee over the bar
hanging ring in
louble under
ode-hand dip
roundstand walk
tempo kim back extension
muscle sprint
pistol squat snatch
over clean
elite push-up
inverted barbell
rest clean
pill-up
Tous les WOD sont collectés sur :
Après la collecte, tous les WOD sont syntaxiquement normalisés à la main. C'est pourquoi l'ensemble de données est si petit, je souhaite alimenter beaucoup plus de WOD mais toutes les sources utilisent un format différent, certaines utilisent des abréviations, d'autres non. Pour obtenir de meilleurs résultats, l’ensemble des données doit être dans le même format.
L'ensemble de données peut être trouvé dans data/wods.txt
, ou mieux, ils se trouvent dans la table wod
de la base de données sqlite située db.sqlite
. N'hésitez pas à l'utiliser.
Exigences:
> cd char-rnn
> python train.py --help
usage: train.py [-h] [--input_file INPUT_FILE] [--rnn_size RNN_SIZE]
[--num_layers NUM_LAYERS] [--model MODEL]
[--batch_size BATCH_SIZE] [--seq_length SEQ_LENGTH]
[--num_epochs NUM_EPOCHS] [--log_step LOG_STEP]
[--grad_clip GRAD_CLIP] [--learning_rate LEARNING_RATE]
[--decay_rate DECAY_RATE]
[--input_dropout_keep_prob INPUT_DROPOUT_KEEP_PROB]
[--output_dropout_keep_prob OUTPUT_DROPOUT_KEEP_PROB]
[--train_root_dir TRAIN_ROOT_DIR] [--vocab_size VOCAB_SIZE]
optional arguments:
-h, --help show this help message and exit
--input_file INPUT_FILE
Input text file to train on
--rnn_size RNN_SIZE The size of RNN hidden state
--num_layers NUM_LAYERS
The number of layers in the RNN
--model MODEL RNN model: rnn, gru, lstm, or nas
--batch_size BATCH_SIZE
Batch size
--seq_length SEQ_LENGTH
RNN sequence length
--num_epochs NUM_EPOCHS
Number of epochs for training
--log_step LOG_STEP Logging period in terms of iteration
--grad_clip GRAD_CLIP
Clip gradients value
--learning_rate LEARNING_RATE
Learning rate for adam optimizer
--decay_rate DECAY_RATE
Learning rate for adam optimizer
--input_dropout_keep_prob INPUT_DROPOUT_KEEP_PROB
Input dropout keep probability
--output_dropout_keep_prob OUTPUT_DROPOUT_KEEP_PROB
Output dropout keep probability
--train_root_dir TRAIN_ROOT_DIR
Root directory to put the training data
> cd char-rnn
> python sample.py --help
usage: sample.py [-h] [--data_dir DATA_DIR] [--seperator_char SEPERATOR_CHAR]
[--num_sample NUM_SAMPLE] [--save_to_db [SAVE_TO_DB]]
[--nosave_to_db]
optional arguments:
-h, --help show this help message and exit
--data_dir DATA_DIR Training data directory. If empty, latest folder in
training/ folder will be used
--seperator_char SEPERATOR_CHAR
WOD item seperator character, default `|`
--num_sample NUM_SAMPLE
The number of WODs to be sampled, default 1
--save_to_db [SAVE_TO_DB]
Should save into sqlite, default false
--nosave_to_db