Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Colab #8

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CS7643Sum21ProjTeam59.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"CS7643Sum21ProjTeam59.ipynb","provenance":[],"collapsed_sections":["mCxFIVoQuDZQ"]},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.8.5"}},"cells":[{"cell_type":"markdown","metadata":{"id":"WkxIUDpV5CGh"},"source":["### The typical starting cell for a colab notebook"]},{"cell_type":"markdown","metadata":{"id":"RUkK19pL5fM8"},"source":["Run cell (Shift+Enter), click link, sign into Google account (or grant access), copy access code to clipboard, paste (Ctrl+V) into box below, and press Enter"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"7OmNlqc1n2Jv","executionInfo":{"status":"ok","timestamp":1626907755278,"user_tz":240,"elapsed":34150,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}},"outputId":"a3ddf84c-f97d-4476-b8cf-6e1ab0936895"},"source":["from google.colab import drive\n","drive.mount('/content/drive')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Mounted at /content/drive\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"mCxFIVoQuDZQ"},"source":["#### Use the following cells for first time setup"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ZnX1aeNg_kOw","executionInfo":{"status":"ok","timestamp":1626916183839,"user_tz":240,"elapsed":191,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}},"outputId":"84ac7048-6dc0-4ae7-cc5c-13d48706f89b"},"source":["%cd '/content/drive/MyDrive'"],"execution_count":25,"outputs":[{"output_type":"stream","text":["/content/drive/MyDrive\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"Uc6C2Mz7WXd1"},"source":["usr = 'rfeinleib3'\n","p = 'xxxxx'"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"RHepLguDAQL_"},"source":["!git clone https://{usr}:{p}@github.com/GaTechTeam59/representation-flow-cvpr19.git"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"H48hT44Unrhn","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1626912787193,"user_tz":240,"elapsed":613,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}},"outputId":"f7a7e5e1-b20f-40a6-e987-2502b6618ad3"},"source":["!pwd"],"execution_count":null,"outputs":[{"output_type":"stream","text":["/content/drive/My Drive\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"p38K8YZOfqf8"},"source":["%cd 'representation-flow-cvpr19'"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"LIy3t3a1qMUq"},"source":["# This cell from https://programmersought.com/article/80741316664/\n","!git clone https://github.com/dukebw/lintel.git\n","%cd lintel\n","!python setup.py build\n","!python setup.py install"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Zy7ob1t5yx1J","executionInfo":{"status":"ok","timestamp":1626917724950,"user_tz":240,"elapsed":630,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}}},"source":["# This code downloads a small mp4 file from the web. No idea if this really is working\n","import requests\n","file_url = \"https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4\"\n","\n","r = requests.get(file_url, stream=True)\n","\n","with open(\"/content/drive/My Drive/representation-flow-cvpr19/data/sample.mp4\", \"wb\") as file:\n"," for blk in r.iter_content(chunk_size=1024):\n"," if blk:\n"," file.write(blk)"],"execution_count":33,"outputs":[]},{"cell_type":"code","metadata":{"id":"WIGP7VfszqFU"},"source":["# if not in lintel dir, then run: %cd lintel"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"yHWE8_4QkR_Y"},"source":["!lintel_test --filename ../data/sample.mp4 --width 480 --height 270"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"CpjEZ08tuU8_"},"source":["#### Need to run this cell to start using the Notebook"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"YwO-IKiltc8S","executionInfo":{"status":"ok","timestamp":1626915828690,"user_tz":240,"elapsed":218,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}},"outputId":"c0c2f77c-08b4-49f1-d6c3-92bb41899fac"},"source":["%cd '/content/drive/MyDrive/representation-flow-cvpr19'"],"execution_count":null,"outputs":[{"output_type":"stream","text":["/content/drive/MyDrive/representation-flow-cvpr19\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"phla7FIdbC4C"},"source":["## Start code here"]},{"cell_type":"code","metadata":{"id":"OIjY-l7KbI4e"},"source":["import torch\n","from train_model_class import Model\n","\n","# for auto-reloading external modules\n","# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n","%load_ext autoreload\n","%autoreload 2"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eiV_KQz7nsL3","tags":[],"executionInfo":{"status":"ok","timestamp":1626915838786,"user_tz":240,"elapsed":469,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}},"outputId":"6d7f63a8-be83-4bc2-ac6a-1adf47dba0f0"},"source":["# Check device availability\n","device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n","print(\"You are using device: %s\" % device)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["You are using device: cpu\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"JbDFZI6GjZFc"},"source":["class Args:\n"," def __init__(self, mode: str='rgb', exp_name: str=\"hmdb-test\", batch_size: int=32, length: int=32, \n"," learnable: str=\"[0,1,1,1,1]\", niter: int=20, system: str=\"hmdb\", model: str=\"3d\"):\n"," self.mode = mode\n"," self.exp_name = exp_name\n"," self.batch_size = batch_size\n"," self.length = length\n"," self.learnable = learnable\n"," self.niter = niter\n"," self.system = system\n"," self.model = model"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"q1NuorLJiGNf"},"source":["# args = Args(mode=\"rgb\", exp_name=\"hmdb-test\", batch_size=32, length=32, learnable=\"[0,1,1,1,1]\", niter=20, system=\"hmdb\", model=\"3d\")\n","args = Args()\n","model = Model(device)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3WhE9ng4nrhx","executionInfo":{"status":"error","timestamp":1626916034460,"user_tz":240,"elapsed":3431,"user":{"displayName":"Rick Feinleib","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjoqYHQlggzOnw7kbmibkVT3DL6W7pv4Ot4VJKd=s64","userId":"17023243058419009217"}},"outputId":"d261ec9c-ebfb-43f2-e380-208e086706dd"},"source":["model.train(args)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py:481: UserWarning: This DataLoader will create 8 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n"," cpuset_checked))\n"],"name":"stderr"},{"output_type":"stream","text":["193\n","179 22\n"],"name":"stdout"},{"output_type":"stream","text":["/usr/local/lib/python3.7/dist-packages/torch/optim/sgd.py:69: UserWarning: optimizer contains a parameter group with duplicate parameters; in future, this will cause an error; see github.com/pytorch/pytorch/issues/40967 for more information\n"," super(SGD, self).__init__(params, defaults)\n"],"name":"stderr"},{"output_type":"error","ename":"FileNotFoundError","evalue":"ignored","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)","\u001b[0;32m<ipython-input-24-0251a84d6b3a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m/content/drive/MyDrive/representation-flow-cvpr19/train_model_class.py\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(self, args)\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 156\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_grad_enabled\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 157\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mvid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdataloader\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mphase\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 158\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m%\u001b[0m\u001b[0;36m200\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'epoch'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'iter'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 519\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sampler_iter\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 520\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 521\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_next_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 522\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_num_yielded\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 523\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_dataset_kind\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0m_DatasetKind\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mIterable\u001b[0m \u001b[0;32mand\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_next_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1201\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1202\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_task_info\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0midx\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1203\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_process_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1204\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1205\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_try_put_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/utils/data/dataloader.py\u001b[0m in \u001b[0;36m_process_data\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 1227\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_try_put_index\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1228\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mExceptionWrapper\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1229\u001b[0;31m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreraise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1230\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1231\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/_utils.py\u001b[0m in \u001b[0;36mreraise\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 423\u001b[0m \u001b[0;31m# have message field\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 424\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexc_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 425\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexc_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 426\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 427\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mFileNotFoundError\u001b[0m: Caught FileNotFoundError in DataLoader worker process 0.\nOriginal Traceback (most recent call last):\n File \"/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/worker.py\", line 287, in _worker_loop\n data = fetcher.fetch(index)\n File \"/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py\", line 44, in fetch\n data = [self.dataset[idx] for idx in possibly_batched_index]\n File \"/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py\", line 44, in <listcomp>\n data = [self.dataset[idx] for idx in possibly_batched_index]\n File \"/content/drive/My Drive/representation-flow-cvpr19/hmdb_dataset.py\", line 59, in __getitem__\n with open(vid, 'rb') as f:\nFileNotFoundError: [Errno 2] No such file or directory: '/ssd/hmdb/rgb_YouTube_smiles!_smile_h_nm_np1_fr_med_8.mp4'\n"]}]},{"cell_type":"code","metadata":{"id":"j4e806VECt8D"},"source":["#!python train_model.py -mode rgb -exp_name \"hmdb-test\" -batch_size 32 -length 32 -learnable \"[0,1,1,1,1]\" -niter 20 -system hmdb -model \"3d\""],"execution_count":null,"outputs":[]}]}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ If you find the code useful for your research, please cite our paper:


# Representation Flow Layer
![tsf](/examples/flow-layer.png?raw=true "repflow")
![tsf](./examples/flow-layer.png?raw=true "repflow")

We introduce the representation flow layer, which can be found in [rep_flow_layer.py](rep_flow_layer.py). This layer iteratively estimates the flow, can be applied to CNN feature maps, and is fully learnable to maximize classification performance.


# Activity Recognition Experiments
![model overview](/examples/flow-in-network.png?raw=true "model overview")
![model overview](./examples/flow-in-network.png?raw=true "model overview")

We include our pretrained models for HMDB and Kinetics in [models/](models).

Expand Down
25 changes: 25 additions & 0 deletions project.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import torch
from train_model_class import Model

# Check device availability
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print("You are using device: %s" % device)

class Args:
def __init__(self, mode: str='rgb', exp_name: str="hmdb-test", batch_size: int=32, length: int=32,
learnable: str="[0,1,1,1,1]", niter: int=20, system: str="hmdb", model: str="3d"):
self.mode = mode
self.exp_name = exp_name
self.batch_size = batch_size
self.length = length
self.learnable = learnable
self.niter = niter
self.system = system
self.model = model


# args = Args(mode="rgb", exp_name="hmdb-test", batch_size=32, length=32, learnable="[0,1,1,1,1]", niter=20, system="hmdb", model="3d")
args = Args()
model = Model(device)

model.train(args)
Loading