يقوم هذا الكود بإنشاء CrossFit WODs (تمرين اليوم) مع شبكات عصبية متكررة (نموذج Andrej Karpathy's char-rnn). تم تدريب الشبكة على 5 آلاف عينة من WOD تم جمعها من صناديق crossfit المختلفة. على الرغم من مجموعة البيانات الصغيرة، إلا أن النتائج كانت ممتعة ومرضية.
يمكن رؤية بعض النتائج الجيدة من هنا.
وبطبيعة الحال، ليست كل النتائج رائعة. وهنا بعض منها مضحك:
صفر WOD
0 rounds for time 15 minutes
800 mt run
10 sumo deadlift high pull
9 front squat
1 muscle-up
راحة وود
5 rounds for time
20 minutes rest
WOD مستحيل تقريبًا
5 rounds for time 20 minutes
100 double under
50 wall-ball
في WOD هذا، لا يوجد صف ولكن الشبكة لا تزال تريد تمارين بيربي فوق الصف
7 rounds for time
18 dumbbell squat clean
15 burpees over the row
250 mt run
بعض التمارين التخيلية
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
يتم جمع كافة WODs من:
بعد التجميع، يتم تطبيع جميع WODs يدويًا. ولهذا السبب فإن مجموعة البيانات صغيرة جدًا، وأرغب في تغذية عدد أكبر بكثير من WODs ولكن جميع المصادر تستخدم تنسيقًا مختلفًا، وبعضها يستخدم الاختصارات والبعض الآخر لا يستخدمها. للحصول على أفضل النتائج، يجب أن تكون مجموعة البيانات بأكملها بنفس التنسيق.
يمكن العثور على مجموعة البيانات في data/wods.txt
، أو من الأفضل أن تكون في جدول wod
في قاعدة بيانات sqlite الموجودة في db.sqlite
. لا تتردد في استخدامه.
متطلبات:
> 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