C code generation program for uTensor
Project description
# Installation (Python 2 & 3)
## For Users
- with `setup.py`
```
python setup.py install
```
- with `pip`
```
pip install utensor_cgen
```
## For Developers:
- with `pip`
```
pip instal -e .[dev]
```
- with `pipenv`
1. `$ PIPENV_VENV_IN_PROJECT=1 pipenv install -d`
2. `$ pipenv shell`
- this will spawn a subshell and activate the virtual environment for you
- You should be able to use the cli now
You can go to this [repo](https://github.com/pypa/pipenv) for detail information about `pipenv`.
**Note**: If you have trouble with installation using `pipenv`, try `PIPENV_VENV_IN_PROJECT=1 pipenv install -d --skip-lock`
### If All Fails...
1. You can use `docker`
- run `docker pull dboyliao/utensor-cli` for a pre-build docker image
- or run `docker build -t <user_name>/utensor-cli .` to build the docker image
by yourself, where `<user_name>` can be any user name you want.
2. Run the docker image
- `docker run -it dboyliao/utensor-cli`
- or `docker run -it <user_name>/utensor-cli` if you want to use the image you just
build.
Please refer to `docker` [documentation](https://docs.docker.com/get-started/) for detail.
# Example
Please refer to [tests/deep_mlp](https://github.com/uTensor/utensor_cgen/tree/develop/tests/deep_mlp) for detailed example
# User Guide
Following steps are a general guild for user how to porting a `TensorFlow` protobuf file into a `uTensor` implementation:
1. install `utensor_cgent`
- run `python3 setupt.py install`
2. run `utensor-cli convert --output-nodes='NODE,NODE,...' graph.pb`
- run `utensor-cli -h` for help
- the `graph.pb` is the pb file of *original* graph (not quantized)
3. If you want to see what ops/nodes are in the pb file, you can run `utensor-cli show <pbfile>`
# How to test (for Developer)
1. follow the steps in [setup](#setup-with-pipenv) section
2. run `make tests`
- Or you can use `pipenv run pytest tests` instead
# Known Limitations
- If you want to use dropout with placeholders for the `keep_prob`, you have to name the `keep_prob` placeholder by any name that starts with "keep_prob".
- You can still use any input tensor with name starts with "keep_prob" as long as it's not the output tensor of a placeholder node.
- You can't wrap `dropout` in any `namescope`
# TODOs
1. (done?) core code generator implementation
- We need some refactoring, PRs are welcomed!
2. type alias in C/C++
- ex: use `uint8_t` or `unsigned char`?
- a lot more about this....
3. Relation among snippets/containers
- shared template variables? (headers, shared placeholders...etc)
4. Better configuration schema
- json
- yaml
- or ?
## For Users
- with `setup.py`
```
python setup.py install
```
- with `pip`
```
pip install utensor_cgen
```
## For Developers:
- with `pip`
```
pip instal -e .[dev]
```
- with `pipenv`
1. `$ PIPENV_VENV_IN_PROJECT=1 pipenv install -d`
2. `$ pipenv shell`
- this will spawn a subshell and activate the virtual environment for you
- You should be able to use the cli now
You can go to this [repo](https://github.com/pypa/pipenv) for detail information about `pipenv`.
**Note**: If you have trouble with installation using `pipenv`, try `PIPENV_VENV_IN_PROJECT=1 pipenv install -d --skip-lock`
### If All Fails...
1. You can use `docker`
- run `docker pull dboyliao/utensor-cli` for a pre-build docker image
- or run `docker build -t <user_name>/utensor-cli .` to build the docker image
by yourself, where `<user_name>` can be any user name you want.
2. Run the docker image
- `docker run -it dboyliao/utensor-cli`
- or `docker run -it <user_name>/utensor-cli` if you want to use the image you just
build.
Please refer to `docker` [documentation](https://docs.docker.com/get-started/) for detail.
# Example
Please refer to [tests/deep_mlp](https://github.com/uTensor/utensor_cgen/tree/develop/tests/deep_mlp) for detailed example
# User Guide
Following steps are a general guild for user how to porting a `TensorFlow` protobuf file into a `uTensor` implementation:
1. install `utensor_cgent`
- run `python3 setupt.py install`
2. run `utensor-cli convert --output-nodes='NODE,NODE,...' graph.pb`
- run `utensor-cli -h` for help
- the `graph.pb` is the pb file of *original* graph (not quantized)
3. If you want to see what ops/nodes are in the pb file, you can run `utensor-cli show <pbfile>`
# How to test (for Developer)
1. follow the steps in [setup](#setup-with-pipenv) section
2. run `make tests`
- Or you can use `pipenv run pytest tests` instead
# Known Limitations
- If you want to use dropout with placeholders for the `keep_prob`, you have to name the `keep_prob` placeholder by any name that starts with "keep_prob".
- You can still use any input tensor with name starts with "keep_prob" as long as it's not the output tensor of a placeholder node.
- You can't wrap `dropout` in any `namescope`
# TODOs
1. (done?) core code generator implementation
- We need some refactoring, PRs are welcomed!
2. type alias in C/C++
- ex: use `uint8_t` or `unsigned char`?
- a lot more about this....
3. Relation among snippets/containers
- shared template variables? (headers, shared placeholders...etc)
4. Better configuration schema
- json
- yaml
- or ?
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
utensor_cgen-0.3.0.tar.gz
(32.6 kB
view details)
File details
Details for the file utensor_cgen-0.3.0.tar.gz
.
File metadata
- Download URL: utensor_cgen-0.3.0.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3cf9ab1b9cb6bfd24b7b30a7a3109a0e8b3dd239330c7010bcd02ae58c800d8 |
|
MD5 | 716a853f676772ebf5793c333ccb2610 |
|
BLAKE2b-256 | 86211c43a2a8e6d68d757496b33cb71a56b2cc7492ea5cfc9c5e1bab13f1348a |