{"id":18001914,"url":"https://github.com/dgurkaynak/wod-generator","last_synced_at":"2025-07-11T14:37:23.873Z","repository":{"id":29458097,"uuid":"107784253","full_name":"dgurkaynak/wod-generator","owner":"dgurkaynak","description":"Crossfit WOD generator using recurrent neural networks (LSTM), implemented in Tensorflow","archived":false,"fork":false,"pushed_at":"2021-11-17T15:57:48.000Z","size":675,"stargazers_count":38,"open_issues_count":0,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-04T12:16:29.123Z","etag":null,"topics":["char-rnn","crossfit","lstm","tensorflow","wod"],"latest_commit_sha":null,"homepage":"https://dgurkaynak.github.io/wod-generator/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dgurkaynak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-21T13:53:35.000Z","updated_at":"2025-05-31T14:26:01.000Z","dependencies_parsed_at":"2022-07-21T22:30:55.805Z","dependency_job_id":null,"html_url":"https://github.com/dgurkaynak/wod-generator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dgurkaynak/wod-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgurkaynak%2Fwod-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgurkaynak%2Fwod-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgurkaynak%2Fwod-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgurkaynak%2Fwod-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dgurkaynak","download_url":"https://codeload.github.com/dgurkaynak/wod-generator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dgurkaynak%2Fwod-generator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264833290,"owners_count":23670617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["char-rnn","crossfit","lstm","tensorflow","wod"],"created_at":"2024-10-29T23:19:18.143Z","updated_at":"2025-07-11T14:37:23.853Z","avatar_url":"https://github.com/dgurkaynak.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wod-generator\n\nThis code generates CrossFit WODs (workout of the day) with recurrent neural networks (Andrej Karpathy's [char-rnn](https://github.com/karpathy/char-rnn) model). The network is trained on 5k WOD samples collected from various crossfit boxes. Despite of small dataset, the results are both fun and satisfying.\n\n[Some collection of the good results can be seen from here](https://dgurkaynak.github.io/wod-generator/).\n\n## Funny results\n\nOf course, not all the results are great. Here are some funny ones:\n\nZero WOD\n```\n0 rounds for time 15 minutes\n800 mt run\n10 sumo deadlift high pull\n9 front squat\n1 muscle-up\n```\n\nRest WOD\n```\n5 rounds for time\n20 minutes rest\n```\n\nNearly imposibble WOD\n```\n5 rounds for time 20 minutes\n100 double under\n50 wall-ball\n```\n\nIn this WOD, there is no row but the network still wants burpees over the row\n```\n7 rounds for time\n18 dumbbell squat clean\n15 burpees over the row\n250 mt run\n```\n\nSome imaginary exercises\n```\nbrusseane push-up\nt-up\ntouster\nlean \u0026 jerk\npubl-up\ndumbell burpee over the bar\nhanging ring in\nlouble under\node-hand dip\nroundstand walk\ntempo kim back extension\nmuscle sprint\npistol squat snatch\nover clean\nelite push-up\ninverted barbell\nrest clean\npill-up\n```\n\n## Data\n\nAll the WODs are collected from:\n- crossfit.com\n- findawod.com\n- crossfitbalabanlevent.blogspot.com\n\nAfter collecting, all of WODs are syntactically normalized by hand.\nThat's why the dataset is that small, I wish to feed a lot more WODs but all the sources uses different format,\nsome uses abbreviation some don't. To get best results, whole dataset should be in the same format.\n\nThe dataset can be found in `data/wods.txt`, or better they are in `wod` table in sqlite database located `db.sqlite`.\nFeel free to use it.\n\n## Training\n\nRequirements:\n\n- Python 2.7 (not tested in 3)\n- Tensorflow \u003e 1.0\n\n```\n\u003e cd char-rnn\n\u003e python train.py --help\n\nusage: train.py [-h] [--input_file INPUT_FILE] [--rnn_size RNN_SIZE]\n                [--num_layers NUM_LAYERS] [--model MODEL]\n                [--batch_size BATCH_SIZE] [--seq_length SEQ_LENGTH]\n                [--num_epochs NUM_EPOCHS] [--log_step LOG_STEP]\n                [--grad_clip GRAD_CLIP] [--learning_rate LEARNING_RATE]\n                [--decay_rate DECAY_RATE]\n                [--input_dropout_keep_prob INPUT_DROPOUT_KEEP_PROB]\n                [--output_dropout_keep_prob OUTPUT_DROPOUT_KEEP_PROB]\n                [--train_root_dir TRAIN_ROOT_DIR] [--vocab_size VOCAB_SIZE]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --input_file INPUT_FILE\n                        Input text file to train on\n  --rnn_size RNN_SIZE   The size of RNN hidden state\n  --num_layers NUM_LAYERS\n                        The number of layers in the RNN\n  --model MODEL         RNN model: rnn, gru, lstm, or nas\n  --batch_size BATCH_SIZE\n                        Batch size\n  --seq_length SEQ_LENGTH\n                        RNN sequence length\n  --num_epochs NUM_EPOCHS\n                        Number of epochs for training\n  --log_step LOG_STEP   Logging period in terms of iteration\n  --grad_clip GRAD_CLIP\n                        Clip gradients value\n  --learning_rate LEARNING_RATE\n                        Learning rate for adam optimizer\n  --decay_rate DECAY_RATE\n                        Learning rate for adam optimizer\n  --input_dropout_keep_prob INPUT_DROPOUT_KEEP_PROB\n                        Input dropout keep probability\n  --output_dropout_keep_prob OUTPUT_DROPOUT_KEEP_PROB\n                        Output dropout keep probability\n  --train_root_dir TRAIN_ROOT_DIR\n                        Root directory to put the training data\n```\n\n## Sampling\n\n```\n\u003e cd char-rnn\n\u003e python sample.py --help\n\nusage: sample.py [-h] [--data_dir DATA_DIR] [--seperator_char SEPERATOR_CHAR]\n                 [--num_sample NUM_SAMPLE] [--save_to_db [SAVE_TO_DB]]\n                 [--nosave_to_db]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --data_dir DATA_DIR   Training data directory. If empty, latest folder in\n                        training/ folder will be used\n  --seperator_char SEPERATOR_CHAR\n                        WOD item seperator character, default `|`\n  --num_sample NUM_SAMPLE\n                        The number of WODs to be sampled, default 1\n  --save_to_db [SAVE_TO_DB]\n                        Should save into sqlite, default false\n  --nosave_to_db\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgurkaynak%2Fwod-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdgurkaynak%2Fwod-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdgurkaynak%2Fwod-generator/lists"}