Skip to content

Latest commit

History

104 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

OrthNet

TensorFlow, PyTorch and Numpy layers for generating multi-dimensional Orthogonal Polynomials

1. Installation
2. Usage
3. Polynomials
4. Base Class(Poly)

Installation:

  1. the stable version:
    pip3 install orthnet

  2. 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

importtensorflowastfimportnumpyasnpfromorthnetimportLegendrex_data=np.random.random((10, 2))
x=tf.placeholder(dtype=tf.float32, shape= [None, 2])
L=Legendre(x, 5)
withtf.Session() assess:
print(L.tensor, feed_dict= {x: x_data})

with PyTorch

importtorchimportnumpyasnpfromorthnetimportLegendrex=torch.DoubleTensor(np.random.random((10, 2)))
L=Legendre(x, 5)
print(L.tensor)

with Numpy

importnumpyasnpfromorthnetimportLegendrex=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.

importnumpyasnpfromorthnetimportLegendre, NumpyBackendx=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.

importnumpyasnpfromorthnetimportLegendre, enum_dimdim=2degree=5x=np.random.random((10, dim))
L=Legendre(x, degree, combinations=enum_dim(degree, dim))
print(L.tensor)

Polynomials:

ClassPolynomial
orthnet.Legendre(Poly)Legendre polynomial
orthnet.Legendre_Normalized(Poly)Normalized Legendre polynomial
orthnet.Laguerre(Poly)Laguerre polynomial
orthnet.Hermite(Poly)Hermite polynomial of the first kind (in probability theory)
orthnet.Hermite2(Poly)Hermite polynomial of the second kind (in physics)
orthnet.Chebyshev(Poly)Chebyshev polynomial of the first kind
orthnet.Chebyshev2(Poly)Chebyshev polynomial of the second kind
orthnet.Jacobi(Poly, alpha, beta)Jacobi polynomial

Base class:

Class Poly(x, degree, combination = None):

  • Inputs:
    • x a tensor
    • degree highest degree for target polynomials
    • combination optional, tensor product combinations
  • Attributes:
    • Poly.tensor the tensor of function values (with degree from 0 to Poly.degree(included))
    • Poly.length the number of function basis (columns) in Poly.tensor
    • Poly.index the index of the first combination of each degree in Poly.combinations
    • Poly.combinations all combinations of tensor product
    • Poly.tensor_of_degree(degree) return all polynomials of given degrees
    • Poly.eval(coefficients) return the function values with given coefficients
    • Poly.quadrature(function, weight) return Gauss quadrature with given function and weight

About

TensorFlow, PyTorch and Numpy layers for generating Orthogonal Polynomials

Resources

Stars

31 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages