OrthNet
TensorFlow, PyTorch and Numpy layers for generating multi-dimensional Orthogonal Polynomials
1. Installation
2. Usage
3. Polynomials
4. Base Class(Poly)
Installation:
-
the stable version:
pip3 install orthnet -
the dev version:
git clone https://github.com/orcuslc/orthnet.git && cd orthnet
python3 setup.py build_ext --inplace && python3 setup.py install
Usage:
with TensorFlow
import tensorflow as tf
import numpy as np
from orthnet import Legendre
x_data = np.random.random((10, 2))
x = tf.placeholder(dtype = tf.float32, shape = [None, 2])
L = Legendre(x, 5)
with tf.Session() as sess:
print(L.tensor, feed_dict = {x: x_data})
with PyTorch
import torch
import numpy as np
from orthnet import Legendre
x = torch.DoubleTensor(np.random.random((10, 2)))
L = Legendre(x, 5)
print(L.tensor)
with Numpy
import numpy as np
from orthnet import Legendre
x = np.random.random((10, 2))
L = Legendre(x, 5)
print(L.tensor)
Specify Backend
In some scenarios, users can specify the exact backend compatible with the input x. The backends provided are:
An example to specify the backend is as follows.
import numpy as np
from orthnet import Legendre, NumpyBackend
x = np.random.random((10, 2))
L = Legendre(x, 5, backend = NumpyBackend())
print(L.tensor)
Specify tensor product combinations
In some scenarios, users may provide pre-computed tensor product combinations to save computing time. An example of providing combinations is as follows.
import numpy as np
from orthnet import Legendre, enum_dim
dim = 2
degree = 5
x = np.random.random((10, dim))
L = Legendre(x, degree, combinations = enum_dim(degree, dim))
print(L.tensor)
Polynomials:
Base class:
Class Poly(x, degree, combination = None):
- Inputs:
xa tensordegreehighest degree for target polynomialscombinationoptional, tensor product combinations
- Attributes:
Poly.tensorthe tensor of function values (with degree from 0 toPoly.degree(included))Poly.lengththe number of function basis (columns) inPoly.tensorPoly.indexthe index of the first combination of each degree inPoly.combinationsPoly.combinationsall combinations of tensor productPoly.tensor_of_degree(degree)return all polynomials of given degreesPoly.eval(coefficients)return the function values with given coefficientsPoly.quadrature(function, weight)return Gauss quadrature with given function and weight