A Clojure wrapper for Deeplearning4j, providing idiomatic access to neural networks, data import, and distributed training.
dl4clj is a Clojure wrapper for Deeplearning4j, a popular Java-based deep learning library. It provides an idiomatic Clojure interface for building, training, and evaluating neural networks, including support for data import, model configuration, and distributed training via Spark. The project solves the problem of integrating Java-centric deep learning tools into Clojure applications, offering a seamless functional programming experience.
Clojure developers and data scientists who want to leverage deep learning capabilities within the JVM ecosystem without leaving the Clojure environment. It's particularly useful for teams already using Clojure for data processing or backend services.
Developers choose dl4clj because it provides a clean, expressive Clojure API over the robust Deeplearning4j framework, eliminating Java interop boilerplate. Its dual code/object return system allows for both pure functional workflows and direct integration with existing DL4J pipelines.
dl4clj is a Clojure port of the Deeplearning4j (DL4J) library, enabling Clojure developers to build, train, and evaluate deep learning models with a functional and expressive API. It bridges the gap between Java-based deep learning tools and the Clojure ecosystem, offering seamless integration for machine learning workflows.
dl4clj emphasizes a dual API that returns either code representations or direct Java objects, giving developers flexibility to work with pure data structures or interoperate with the underlying DL4J runtime as needed.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides an idiomatic, functional API for defining neural network layers, making configuration more expressive than raw Java interop, as shown in the dense-layer-builder examples.
Functions default to returning code representations but can return Java objects via :as-code? false, allowing seamless integration with DL4J runtime or pure data workflows.
Supports loading datasets from files like CSV and converting Clojure vectors/matrices to INDArrays, simplifying data preprocessing within Clojure pipelines.
Includes early stopping, transfer learning, and Spark-based distributed training, enabling robust model tuning and scalability, as detailed in the examples.
Not published to Clojars, requiring forking or cloning, and features like Spark are under refactoring per the TODO list, indicating it's not production-ready.
The README admits to being unfinished with missing examples and tests for eval, Spark, and core use cases, hindering onboarding and reliability.
Uses DL4J version 0.0.8 vs. current 0.0.9, and key areas like NLP and computational graphs are deferred to future releases, limiting functionality.