Better Building Blocks for your Neural Networks

The GeoND library is a collection of custom ops for PyTorch and TensorFlow, that are model/data agnostic and provide improved performance. Download the FREE version to get started, check out some examples on GitHub and, when you are ready, BUY a license.

Key points

GeoND_More Powerful neurons

More powerful neurons.

Unlike traditional neurons with linear decision boundaries, the GeoND library provides layers with Paraboloid neurons, a type of neuron whose decision boundary is a 2nd degree curve. Paraboloid neurons do not require a full covariance matrix and only involve double the parameters of traditional neurons. The library is GPU-enabled and optimized to provide competitive runtimes.

GeoND_Improved Performance.

Improved performance.

Replacing an existing layer with a layer of the same number of paraboloid neurons, or adding new paraboloid layers and following the same training process can result in improved performance.

GeoND_Faster inference

Faster inference.

Alternatively, since paraboloid neurons are more powerful, replacing a layer of traditional neurons with a layer of fewer paraboloid neurons can result in a net gain in execution speed.

GeoND_Easy to adopt.

Easy to adopt.

The GeoND library modules are designed to receive the same arguments with the already existing PyTorch and TensorFlow modules and their parameters are tuned to work out of the box.

GeoND_Access to independent research

Access independent research.

The GeoND library is the result of on-going independent research into the building blocks of neural networks that aims to continue adding new and custom ops to further increase performance.

Usage examples

(Ready to release)

(Coming soon)


import torch
import torch.nn as nn
import torch.optim as optim
import geondpt as gpt

Install the appropriate package using pip and then import it to your code.


    
#coming soon




#self.conv1=nn.Conv2d
self.conv1=gpt.ParaConv2d
  (in_channels,
  out_channels,
  kernel_size=3
  stride=stride,
  padding=1)

Replace a traditional layer with a paraboloid layer. In this case, it's a convolutional layer being replaced.


    
    
    
#coming soon





#self.out=nn.Linear(n_in,
#  n_classes)
self.out=nn.Sequential(
  gpt.Paraboloid(n_in, 1024)
  nn.Linear(1024, n_classes)
)


Insert a paraboloid layer before the output layer. Avoid using a paraboloid layer as the output layer.



    
    
#coming soon





#optimizer = optim.SGD
optimizer = gpt.GeoNDSGD
  (net.parameters(),
  lr=0.001,
  momentum=0.9)

Remember to use the GeoND optimizer, which properly handles paraboloid layers.


    
    
#coming soon



(Ready to release)

Install the appropriate package using pip and then import it to your code.


import torch
import torch.nn as nn
import torch.optim as optim
import geondpt as gpt

Replace a traditional layer with a paraboloid layer. In this case, it's a convolutional layer being replaced.


#self.conv1=nn.Conv2d
self.conv1=gpt.ParaConv2d
  (in_channels,
  out_channels,
  kernel_size=3
  stride=stride,
  padding=1)

Insert a paraboloid layer before the output layer. Avoid using a paraboloid layer as the output layer.


#self.out=nn.Linear(n_in,
#  n_classes)
self.out=nn.Sequential(
  gpt.Paraboloid(n_in, 1024)
  nn.Linear(1024, n_classes)
)


Remember to use the GeoND optimizer, which properly handles paraboloid layers.


#optimizer = optim.SGD
optimizer = gpt.GeoNDSGD
  (net.parameters(),
  lr=0.001,
  momentum=0.9)

(Coming soon)

Get started

Licenses

Access the fully featured library.

Download

Download the library.

Research

Access research articles.

Documentation

Read the library documentation.