| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| _static | ||
| api/python | ||
| contribute | ||
| deploy | ||
| dev | ||
| frontend | ||
| install | ||
| langref | ||
| vta | ||
| .gitignore | ||
| Doxyfile | ||
| Makefile | ||
| README.txt | ||
| api_links.rst | ||
| conf.py | ||
| faq.md | ||
| genindex.rst | ||
| index.rst | ||
| nnvm_top.rst |
= Motivation
It's useful to expose the tvm::reinterpret functionality to Relay/TOPI users, as
this allows them to build (fused) operators leveraging the bitwise
reinterpretation of an operator. An example is approximate transcendental
functions, which can be implemented similar to:
```.py
def C(x):
return relay.expr.const(x, "float32")
def approx_exp(x):
x = relay.minimum(relay.maximum(x, C(-88.0)), C(88.0))
x = C(127.0) + x * C(1.44269504)
xf = relay.floor(x)
i = relay.cast(xf, "int32")
x = x - xf
Y = C(0.99992522) + x * (C(0.69583354) + x * (C(0.22606716) + x * C(0.078024523)))
exponent = relay.left_shift(i, relay.expr.const(23, "int32"))
exponent = relay.reinterpret(exponent, "float32")
return exponent * Y
def approx_sigmoid(x):
# <2.0e-5 absolute error over [-5, 5]
y = approx_exp(x)
return y / (y + C(1.0))
def approx_tanh(x):
# <4.0e-5 absolute error over [-5, 5]
x = x * C(2.0)
y = approx_exp(x)
return (y - C(1.0)) / (y + C(1.0))
```
See unit tests for implementations of these approximate transendentals.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| _static | Loading commit data... | |
| api/python | Loading commit data... | |
| contribute | Loading commit data... | |
| deploy | Loading commit data... | |
| dev | Loading commit data... | |
| frontend | Loading commit data... | |
| install | Loading commit data... | |
| langref | Loading commit data... | |
| vta | Loading commit data... | |
| .gitignore | Loading commit data... | |
| Doxyfile | Loading commit data... | |
| Makefile | Loading commit data... | |
| README.txt | Loading commit data... | |
| api_links.rst | Loading commit data... | |
| conf.py | Loading commit data... | |
| faq.md | Loading commit data... | |
| genindex.rst | Loading commit data... | |
| index.rst | Loading commit data... | |
| nnvm_top.rst | Loading commit data... |