Skip to content

Neural Injective Geometry networks (NIGnets) for non-self-intersecting geometry.

License

Notifications You must be signed in to change notification settings

atharvaaalok/NIGnets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neural Injective Geometry

Neural Injective Geometry networks (NIGnets) for non-self-intersecting geometry.

NIGnets Logo with text on the side.

Installation

To pip install run:

$ pip install git+https://github.com/atharvaaalok/NIGnets.git

Basic Usage

To create a basic NIGnet and sample points on the shape represented by the network follow:

import torch
from torch import nn
from NIGnets import NIGnet

# Create NIGnet object
nig_net = NIGnet(layer_count = 4, act_fn = nn.Tanh)

# Generate sample points on the curve represented by NIGnet
num_pts = 1000
t = torch.linspace(0, 1, num_pts).reshape(-1, 1)
Xc = nig_net(t) # Shape: (num_pts, 2)

License

Distributed under the MIT License.

Project Plan

  • Add .gitignore for the project.
  • Create first cut documentation pages using Jupyterbooks and MyST markdown.
    • Motivation for non-self-intersecting geometry.
    • Add .gitignore for MyST markdown.
    • Launch web page for documentation using github pages.
  • Create Injective Networks.
    • Basic architecture.
    • Generate proper documentation.
      • Proper docstrings. Follow Google python coding style guide and numpy style guide.
      • Use math equations.
      • Use type annotations.
    • Impossible intersection using matrix exponential.
  • Use geosimilarity for loss functions.
  • Add testing code.
    • Create automated training function.
    • Create plot function. Parameterized and target shape comparison.
    • Generate a bunch of target shapes. Use SVGs.
  • Update documentation with Injective Networks and showcase.
    • Add documentation on Injective Networks.
    • Fit basic shapes using Injective Networks.
    • Create showcase for Injective Networks.
    • Create showcase for Injective Networks with impossible intersection.
  • Add license.
  • Create logos.
    • Create logo.
    • Create favicon.
    • Use on website.
  • Add Monotonic networks.
    • Add Min-Max nets.
    • Add Smooth Min-Max nets.
    • Add documentation for Monotonic Nets.
    • Add showcase for Monotonic Nets.
  • Create ResNet-like architecture using skip connections.
    • Add skip connections that preserve injectivity.
    • Add showcase for ResNet architecture.
  • Add Auxilliary networks.
    • Add Pre-Aux nets.
    • Add Post-Aux nets.
    • Add documentation for Aux Nets.
    • Add showcase for Pre and Post nets separately and combined.
  • Fit repeating and fractal shapes.
    • Use trignometric activations in Pre-Aux networks.
  • Showcase for the full architecture.
  • 3D NIGnets.
    • Create documentation for 3D NIGnets.
    • Create 3D surface point clouds to fit to.
    • Fit 3D geometric shapes for showcase.
  • Experiment with different geometric loss functions.