New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

com.facebook:api

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

com.facebook:api

Automatic differentiation in Kotlin

  • 0.0.1-DEV
  • Source
  • Maven
  • Socket score

Version published
Maintainers
1
Source

DiffKt - A Differentiable Programming Framework for Kotlin

What is DiffKt?

DiffKt is a general-purpose, functional, differentiable programming framework for Kotlin. It can automatically differentiate through functions of tensors, scalars, and user-defined types. It supports forward-mode and reverse-mode differentiation including Jacobian-vector and vector-Jacobian products, which can be composed for higher-order differentiation. It also supports differentiating against user-defined types using interfaces.

DiffKt also includes an early integration of ShapeTyping, an extensible compiler plugin for ahead-of-time tensor shape verification and inspection. With the ShapeTyping IntelliJ IDE plugin, users can even inspect tensor shapes and see tensor shape errors while in active development.

Getting Started

Dependency Installation

Currently there are two implementations that are supported for DiffKt. Follow the links below to install dependencies. It is recommended to use Homebrew as a package manager for macOS.

Fast Ops

GPU Ops

Gradle/JVM

To use DiffKt, use the following dependency to your build.gradle.kts file with the x.y.z version number.

dependencies {
    implementation("com.facebook.diffkt:x.y.z")
}
ShapeTyping

To use ShapeTyping, apply the plugin to your build.gradle.kts file

plugins {
   id("TODO")
   ...
}

And add the following dependencies

dependencies {
    implementation("TODO")
    implementation("TODO")
    ...
}

TODO: Instructions on downloading the IntelliJ

For more detailed instructions, please visit the ShapeTyping repository here. (TODO: link repository)

Building from the Source

Currently DiffKt building is supported on macOS as well as Ubuntu. Help is needed to support building on Windows. Build instructions can be found below:

Install on Mac

Install on Ubuntu

To build DiffKt from source files for UBUNTU, read INSTALL_UBUNTU.md

Kotlin Examples

Navigate to the kotlin folder from the repository root.

To run an example from the examples folder, use the command ./gradlew :examples:run -Ppackage=<package-name>. For instance, ./gradlew :examples:run -Ppackage=vector2 will run the vector2 example.

Kotlin Tests

Navigate to the kotlin folder from the repository root.

All tests should be run with the command ./gradlew test

To run specific tests, use the command ./gradlew :<subproject-name>:test --tests "<test-name>". For example, ./gradlew :api:test --tests "ReluTest".

Tutorials

Here are some tutorials to help you get started.

Overview

Intro to Differentiable Programming

Indexing

Broadcasting

Data Science and Machine Learning

Simple Parabola Gradient Descent

Linear Regression w/ Gradient Descent

3D Nonlinear Regression

Multivariable Linear Regression

Logistic Regression w/ Gradient Descent

Normal Distribution MLE

Exponential Distribution MLE

Neural Network w/ Backpropagation

Physics and Simulation

Mass Spring

User-Defined Types

User-Defined Types

Linear Regression w/ User-Defined Types

Neural Network w/ User-Defined Types

Contributing

We welcome and greatly value all kinds of contributions to DiffKt. If you would like to contribute, please see our Contributing Guidelines. Please refer to the contributing document or DiffKt.org for more details.

License

DiffKt is MIT licensed.

FAQs

Package last updated on 16 Jun 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc