victoresque / pytorch-template

PyTorch deep learning projects made easy.
MIT License
4.7k stars 1.08k forks source link

Cookiecutter #44

Open khornlund opened 5 years ago

khornlund commented 5 years ago

I wonder if you might prefer to make this project a cookiecutter template rather than using a copy script.

You can see my fork here for an example. To test it out, simply run

pip install cookiecutter
cookiecutter https://github.com/khornlund/cookiecutter-pytorch

If so, I'll submit a PR.

SunQpark commented 5 years ago

Thank you for the suggestion @khornlund, the cookiecutter project looks quite interesting. I've tried your example, and got some questions for you.

I noticed initialization process asking a bunch of questions as following.

repo_name [my_repo_name]: trial_run_ckc
author_name [Karl Hornlund]: Seonkyu Park
author_email [karlhornlund@gmail.com]: sunq0313@gmail.com
github_username [khornlund]: SunQparK
package_version [0.0.1]: 0.0.1
package_description [Short description]: what these questions are for?
package_name [trial_run_ckc]:  
package_url [https://github.com/SunQparK/trial_run_ckc]: 

New project directory appeared after that, but the structure looked weird.

trial_run_ckc
  ├── trial_run_ckc
  │        └─  why source code is in this nested directory??
  └─ other file, folders: what these files are for?

I think these things are quite uncomfortable. Are these features necessary for using cookiecutter templates? And, what are the advantages of using cookiecuter over copy script?? As I told in issue #43, I'd like to encourage people to save a copy of this template locally and customize when they need. Python script looks just fine for that purpose.

khornlund commented 5 years ago

Hi @SunQpark ,

I've made a bunch of other changes to my repo, so that's why the structure is different. This is not necessary though - you could keep the structure the same and still use cookiecutter.

The advantage of cookiecutter is the ability to set a list of questions (with default answers) to be asked, and then use those answers to create the template. For example when you created the new trial_run_ckc directory, it would have created a setup.py file for you with all the relevant information filled in.

The addition of the setup.py file is just something I did to my repo - you wouldn't have to do the same. I'm just using it as an example for how cookiecutter can insert initialisation values into the template you create.

I actually found this repo while looking for a pytorch cookiecutter template. The best I could find was here, but it didn't have as good functionality. As you can see on the cookiecutter repo they link to lots of different templates for different kinds of projects, but there aren't any pytorch ones yet. I think this repo would be a good candidate to become the pytorch cookiecutter template :)

SunQpark commented 5 years ago

Currently I have two questions on this. cookiecutter seems to require a specific format to be used as template. Maybe we can maintain a branch for this. Is it possible to filter out unnecessary files like readme, cache and data while having same directory structure as original repository(for easy maintenance)? And is it possible to initialize little bit different code depending on python version(eg. can I use different code for python 3.6 and 3.5)? If so, let's work on this after your PR #45 is done.