-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
47 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,48 @@ | ||
# aesara-theano-fallback | ||
Striving towards backwards compatibility with the Theano -> Aesara transition | ||
|
||
Striving towards backwards compatibility as [Theano](https://github.com/theano/theano) is replaced by | ||
[Aesara](https://github.com/pymc-devs/aesara) by the [PyMC3 project](https://docs.pymc.io). The idea is | ||
to provide a nearly drop in replacement for importing `aesara` that will fall back onto `theano` when | ||
`aesara` is not installed. This was specifically designed to support the [exoplanet](https://github.com/exoplanet-dev/exoplanet) | ||
and [starry](https://github.com/rodluger/starry) projects so it might not support all of the features | ||
that you need. If you find something that isn't supported, please submit a pull request! | ||
|
||
## Installaion | ||
|
||
This library can be installed using pip: | ||
|
||
```bash | ||
python -m pip install aesara-theano-fallback | ||
``` | ||
|
||
## Usage | ||
|
||
The syntax is designed to mostly follow `aesara`, so things like the following will often work: | ||
|
||
```python | ||
import aesara_theano_fallback.tensor as aet | ||
``` | ||
|
||
For top-level access, use | ||
|
||
```python | ||
from aesara_theano_fallback import aesara | ||
``` | ||
|
||
One place where the syntax has changed significantly between Theano and Aesara is the `theano.gof` | ||
module was re-named to `aesara.graph` and the contents were moved around a little bit. For exoplanet | ||
and starry, we define a few custom `Op`s and you can use this library to do that as follows: | ||
|
||
```python | ||
from aesara_theano_fallback.graph import basic, op | ||
|
||
class MyPythonOp(op.Op): | ||
def make_node(self, *args): | ||
# ... | ||
return basic.Apply(self, in_args, out_args) | ||
|
||
class MyCOp(op.ExternalCOp): | ||
func_file = "./cpp_impl.cc" | ||
func_name = "APPLY_SPECIFIC(my_op_name)" | ||
# ... | ||
``` |