{"id":15555892,"url":"https://github.com/gustiks/neuralogic","last_synced_at":"2025-04-13T10:44:38.028Z","repository":{"id":39663168,"uuid":"122360637","full_name":"GustikS/NeuraLogic","owner":"GustikS","description":"Deep relational learning through differentiable logic programming.","archived":false,"fork":false,"pushed_at":"2024-07-23T18:53:10.000Z","size":3827,"stargazers_count":102,"open_issues_count":1,"forks_count":15,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T02:09:40.440Z","etag":null,"topics":["deep-learning","differentiable-programming","logic-programming","machine-learning","relational-learning"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GustikS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-21T16:20:08.000Z","updated_at":"2025-02-19T10:29:08.000Z","dependencies_parsed_at":"2023-02-12T17:16:04.992Z","dependency_job_id":"9e2297a1-da87-4aaf-9ade-1e7c222ed3cf","html_url":"https://github.com/GustikS/NeuraLogic","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GustikS%2FNeuraLogic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GustikS%2FNeuraLogic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GustikS%2FNeuraLogic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GustikS%2FNeuraLogic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GustikS","download_url":"https://codeload.github.com/GustikS/NeuraLogic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248702178,"owners_count":21148114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","differentiable-programming","logic-programming","machine-learning","relational-learning"],"created_at":"2024-10-02T15:10:58.814Z","updated_at":"2025-04-13T10:44:38.001Z","avatar_url":"https://github.com/GustikS.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NeuraLogic\n[![Maven CI](https://github.com/GustikS/NeuraLogic/actions/workflows/maven.yml/badge.svg)](https://github.com/GustikS/NeuraLogic/actions/workflows/maven.yml)\n[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/gustiks/neuralogic?include_prereleases)](https://github.com/GustikS/NeuraLogic/releases)\n[![javadoc](https://javadoc.io/badge2/io.github.gustiks/Neural/javadoc.svg)](https://javadoc.io/doc/io.github.gustiks/Neural/latest/index.html)\n[![GitHub licence](https://img.shields.io/github/license/gustiks/neuralogic)](https://github.com/GustikS/NeuraLogic/blob/master/LICENSE)\n[![GitHub top language](https://img.shields.io/github/languages/top/gustiks/neuralogic)](https://adoptopenjdk.net/index.html?variant=openjdk8\u0026jvmVariant=hotspot)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/gustiks/neuralogic)\n\n_Integrating **deep** and **relational** learning through **differentiable logic programming**._\n\n- This is the official implementation of the concept of [Deep Learning with Relational Logic Representations](https://www.iospress.com/catalog/books/deep-learning-with-relational-logic-representations)\n- instantiated through the framework of [Lifted Relational Neural Networks](https://jair.org/index.php/jair/article/view/11203)\n- This is the (Java) backend, you can find Python frontend at [**PyNeuralogic**](https://github.com/LukasZahradnik/PyNeuraLogic) \n\n---\n \n## About\n\nAt the core of the framework, there is a custom [language](./Parsing/src/main/java/cz/cvut/fel/ida/logic/parsing/antlr/grammars/Neuralogic.g4) you can use to write differentiable programs encoding your learning scenarios, similarly to classic Deep Learning (DL) frameworks (e.g. TensorFlow). However, the language follows a [logic programming](https://en.wikipedia.org/wiki/Logic_programming) paradigm and is **declarative** in nature (it's similar to [Datalog](https://en.wikipedia.org/wiki/Datalog)). This means that instead of directly encoding the computation graph, you just _declare_:\n\n1. the _inputs_ (and their numeric values, if any)\n    - i.e. the observed facts/data = objects, structures, knowledge graphs, relational databases, ...\n    - e.g. `atom(oxygen_1)`, `0.3 stable(oxygen)`, `8 protons(oxygen)`, `1.7 energy(oxygen,leve2)`, `[1.2,0,-1] features(oxygen)`, `[[0,2.1],[1.7,-1]] bond(oxygen_1,hydrogen_2,covalent_1)`\n1. the _outputs_ (and their expected values - for supervised learning)\n    - i.e. the queries = classification labels, regression targets, ...\n    - e.g. `1 class`, `4.7 target(molecule_3)`, `0 relation(carbon,xenon,fluor)`\n1. a set of _rules_ applicable in your domain (and their learnable parameters `W`)\n    - i.e. the generic prior/knowledge/bias which you want to use.\n        - these rules will be used to (automatically) infer (link) the outputs from the inputs\n    - e.g. explicit/interpretable rules such as `0.99 covalent(B) \u003c= oxygen(X), hydrogen(Y), bond(X,Y,B).`\n    - or  more implicit/flexible concepts such as `embed(X) \u003c= W_1 embed(Y), bond(X,Y,_).`\n        - with these you can easily encode a lot of diverse structured deep learning models!\n\n### Example\nConsider a simple program for learning with molecular data\u003csup\u003e[1](#myfootnote1)\u003c/sup\u003e, encoding a generic idea that some hidden representation (predicate `h(.)`) of any chemical atom (variable `X`) is somewhat dependent on the other atoms (`a(Y)`) bound to it (`b(X,Y)`), with a parameterized rule as:\n```prolog\nW_h1 h(X) \u003c= W_a a(Y), W_b b(X,Y).\n```\nAdditionally, let's assume that representation of a molecule (`q`) follows from representations of all the contained atoms (`h(X)`), i.e.:\n```prolog\nW_q q \u003c= W_h2 h(X).\n```\nThese 2 rules, parameterized with the tensors `W_*`'s, then form a _learning program_, which can be used to classify molecules. Actually, it directly encodes a popular idea known as [Graph Neural Networks](https://distill.pub/2021/gnn-intro).\nExecution of this program (\"template\") for 2 input molecule samples will generate 2 parameterized computational graphs as follows:\n\n![Template2Neural Grounding](.github/img/example_template.png)\n\nEach computation node in the graphs is associated with some (differentiable) activation function defined by a user (or settings). \nThe parameters `W_*` in the program are then automatically optimized to reflect the expected output values (`A_q`) through gradient descent.\n\n---\n\nFor detailed syntax and semantics, please check out the concept of \"[*Lifted Relational Neural Networks*](https://arxiv.org/abs/2007.06286)\". For a deep dive into the principles in full scientific context, please see my [dissertation thesis](https://gustiks.github.io/files/dissertation.pdf) or the book on [Deep learning with relational logic representations](https://www.iospress.com/catalog/books/deep-learning-with-relational-logic-representations).\n\n---\n\n\u003ca name=\"myfootnote1\"\u003e1\u003c/a\u003e: _Note that NeuraLogic is by no means designed or limited to learning with chemical data/models/knowledge, but we use it as an example domain here for consistency._\n\n## Use Cases\nWhile the framework can be used to encode anything from MLPs, CNNs, RNNs, etc., it is **not** well suited for classic deep learning with regular data based on large homogeneous tensor operations.\nThe framework is rather meant for efficient encoding of deep **relational** learning scenarios\u003csup\u003e[2](#myfootnote2)\u003c/sup\u003e, i.e. using dynamic (weight-sharing) neural networks to learn from data with _irregular_ structure(s). \nThat is why we exploit the declarative language with first-order expressiveness, as it allows for compact encoding of complex relational scenarios (similarly to how [Prolog](https://en.wikipedia.org/wiki/Prolog) can be elegant for relational problems, while not so much for classic programming).\n\nThe framework is mostly optimized for quick, high-level prototyping of learning scenarios with sparse, irregular, relational data and complex, dynamically structured models. Particularly, you may find it beneficial for encoding various:\n  - Graph neural networks\n    - where you can use it to go well [beyond the existing models](https://arxiv.org/abs/2007.06286)\n  - Knowledge base completions\n    - with [complex models](https://link.springer.com/chapter/10.1007/978-3-319-63342-8_9) requiring e.g. chained inference\n  - learning with Relational background knowledge/bias\n    - which can be as expressive as the [models themselves](https://www.jair.org/index.php/jair/article/view/11203)\n  - approaches from Neural-symbolic integration\n    - for combining (fuzzy) [logic inference with neural networks](http://arg.ciirc.cvut.cz/slides/2016-Sourek-LRNN.pdf)\n  - and other more crazy ideas, such as learning with\n    - hypergraphs and ontologies\n        - see [example constructs](https://arxiv.org/abs/2007.06286)\n    - recursion\n        - e.g. for [latent type hierarchies](https://link.springer.com/chapter/10.1007/978-3-319-63342-8_9)\n    - and generic [latent logic programs](https://link.springer.com/chapter/10.1007/978-3-319-78090-0_10)\n\n\n\u003ca name=\"myfootnote2\"\u003e2\u003c/a\u003e: _if you come from deep learning background, you may be familiar with related terms such as \"Geometric deep learning\" or \"Graph representation learning\" (but this framework is not limited to graphs only)._\n\n## Getting started\n\n##### Prerequisite\n\n```\nJava ≥ 1.8 \n```\n\n   - [continuously tested](https://github.com/GustikS/NeuraLogic/actions) with JDK 1.8 on the latest Ubuntu, Windows and macOS\u003csup\u003e[3](#myfootnote3)\u003c/sup\u003e\n\n#### Running examples\n\n1. download a [release](https://github.com/GustikS/NeuraLogic/releases) into some directory `DIR`\n    - or [build from source](https://github.com/GustikS/NeuraLogic/blob/master/.github/workflows/maven.yml) with [Maven](https://maven.apache.org/) or [IntelliJ IDEA](https://www.jetbrains.com/idea/)\n1. clone this repository (or just download the Resources/datasets directory) within `DIR`\n    - `git clone https://github.com/GustikS/NeuraLogic`\n1. try some trivial examples from terminal in `DIR`\n    1. a simple familiar XOR problem\n        - scalar: `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/neural/xor/naive`\n        - vectorized: `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/neural/xor/vectorized`\n    1. a simple relational problem (Example 2 from [this paper](https://www.jair.org/index.php/jair/article/view/11203))\n        - `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/simple/family`\n    1. molecule classification problem ([mutagenesis](https://www.doc.ic.ac.uk/~shm/mutagenesis.html))\n        - `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/relational/molecules/mutagenesis -ts 100`\n    1. knowledge-base completion problem ([countries](https://www.aaai.org/ocs/index.php/SSS/SSS15/paper/viewPaper/10257))\n        - `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/relational/kbs/nations`\n1. you can check various exported settings and results in `DIR/target`\n    1. if you have [Graphviz](https://graphviz.org/download/) installed (`which dot`), you can observe the internal computation structures in debug mode:\n        - `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/neural/xor/naive -iso -1 -prune -1 -debug all`\n            - this should show a graph of the 1) worflow, 2) template, 3) inference graphs, 4) neural networks + weight updates, and 5) final learned template\n        - `java -jar NeuraLogic.jar -sd ./NeuraLogic/Resources/datasets/simple/family -iso -1 -prune -1 -debug all`\n            - note we turn off network pruning and compression here so that you can observe direct correspondence to the original example  \n\n\n---\n\u003ca name=\"myfootnote3\"\u003e3\u003c/a\u003e: _if you don't have Java in your system already, get it either from [Oracle](https://www.oracle.com/java/technologies/javase-jre8-downloads.html) or [OpenJDK](https://adoptopenjdk.net/index.html?variant=openjdk8\u0026jvmVariant=hotspot)_\n   - for simple usage, it is enough to get the runtime environment (JRE)\n   - for developers - you can clone and open this project directly in [IntelliJ IDEA](https://www.jetbrains.com/idea/)\n\n\u003c!-- (both OpenJDK (≥ v1.8.0_222) and Oracle JDK (≥ v1.8.0_151) will do). --\u003e\n\n### Usage\n```\nusage: java -jar NeuraLogic.jar \n\n -lc,--logColors \u003cINT\u003e                   colored output on console, best on white background {0,INT} (default: 1)\n -sf,--sourcesFile \u003cFILE\u003e                path to json Sources specification file (default: sources.json)\n -sd,--sourcesDir \u003cDIR\u003e                  path to directory with all the standardly-named Source files for learning (default: .)\n -t,--template \u003cFILE\u003e                    Template file containing weighted rules for leaning (default: template.txt)\n -q,--trainQueries \u003cFILE\u003e                file containing labeled training Queries (default: trainQueries.txt)\n -e,--trainExamples \u003cFILE\u003e               file containing, possibly labeled, input training Facts (default: trainExamples.txt)\n -vq,--valQueries \u003cFILE\u003e                 file containing labeled validation Queries (default: valQueries.txt)\n -ve,--valExamples \u003cFILE\u003e                file containing, possibly labeled, input validation Facts (default: valExamples.txt)\n -te,--testExamples \u003cFILE\u003e               file with, possibly labeled, test Examples (default: testExamples.txt)\n -tq,--testQueries \u003cFILE\u003e                file with test Queries (default: testQueries.txt)\n -fp,--foldPrefix \u003cSTRING\u003e               folds folder names prefix (default: fold_)\n -xval,--crossvalidation \u003cINT\u003e           number of folds to split for crossvalidation (default: 5)\n -set,--settingsFile \u003cFILE\u003e              path to json file with all the Settings (default: settings.json)\n -out,--outputFolder \u003cDIR\u003e               output folder for logging and exporting (default: ./target/out)\n -mode,--pipelineMode \u003cENUM\u003e             main mode of the program {complete, neuralization, debug} (default: complete)\n -debug,--debugMode \u003cENUM\u003e               debug some objects within the Pipeline during the run {template, grounding, neuralization, samples, model, all} (default: all)\n -lim,--limitExamples \u003cINT\u003e              limit examples to some smaller number, used e.g. for debugging {-1,INT} (default: -1)\n -seed,--randomSeed \u003cINT\u003e                int seed for random generator (default: 0)\n -gm,--groundingMode \u003cENUM\u003e              groundings mode {independent, sequential, global} (default: independent)\n -dist,--distribution \u003cENUM\u003e             distribution for weight initialization {uniform, normal, longtail, constant} (default: uniform)\n -init,--initialization \u003cENUM\u003e           algorithm for weight initialization {simple, glorot, he} (default: simple)\n -opt,--optimizer \u003cENUM\u003e                 optimization algorithm {sgd, adam} (default: ADAM)\n -lr,--learningRate \u003cFLOAT\u003e              initial learning rate (default: 0.001)\n -ts,--trainingSteps \u003cINT\u003e               cumulative number of epochae in neural training (default: 3000)\n -rec,--recalculationEpocha \u003cINT\u003e        recalculate true training and validation error+stats every {INT} epochae (default: 10)\n -decay,--learnRateDecay \u003cFLOAT\u003e         learning rate decay geometric coefficient {-1,FLOAT} (default: 0.95)\n -decays,--decaySteps \u003cINT\u003e              learning rate decays every {-1,INT} steps (default: 100)\n -preft,--preferTraining \u003cINT\u003e           turn on to force best training model selection as opposed to (default) selecting best validation error model {0,1} (default: 0)\n -atomf,--atomFunction \u003cENUM\u003e            activation function for atom neurons {sigmoid,tanh,relu,identity,...} (default: tanh)\n -rulef,--ruleFunction \u003cENUM\u003e            activation function for rule neurons {sigmoid,tanh,relu,identity,...} (default: tanh)\n -aggf,--aggFunction \u003cENUM\u003e              aggregation function for aggregation neurons {avg,max,sum,...} (default: avg)\n -em,--evaluationMode \u003cENUM\u003e             evaluation metrics are either for {regression, classification, kbc} (default: classification)\n -ef,--errorFunction \u003cENUM\u003e              type of error function {MSE, XEnt} (default: AVG(SQUARED_DIFF))\n -iso,--isoCompression \u003cINT\u003e             iso-value network compression (lifting), number of decimal digits (default: 12)\n -isoinits,--isoInitializations \u003cINT\u003e    number of iso-value initializations for network compression (default: 1)\n -isocheck,--losslessCompression \u003cINT\u003e   lossless compression isomorphism extra check? {0,1} (default: 0)\n -prune,--chainPruning \u003cINT\u003e             linear chain network pruning {0,1} (default: 1)\n```\n    \n## Maven Dependency\n\nTo integrate within your project, you can import as a dependency directly from Maven central or Github packages.\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.github.gustiks\u003c/groupId\u003e\n  \u003cartifactId\u003eneuralogic-cli\u003c/artifactId\u003e\n  \u003cversion\u003e0.3.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nFor the above shown usage, the [Main class](https://github.com/GustikS/NeuraLogic/blob/master/CLI/src/main/java/cz/cvut/fel/ida/neuralogic/cli/Main.java) in the CLI module is your starting point.\n\n\n### Modules\n\nNote that this is a multi-module [Maven project](https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html) (with a parent [pom.xml](./pom.xml)). Hence, you can also choose to use the submodules independently (e.g. 'Algebra' for simple math, 'Logic' for first-order inference, 'Neural' for deep learning in Java, 'Pipelines' for creating \"MLOps\" workflows, etc.). \n\n\n| Module        | Description                                                            |\n|---------------|------------------------------------------------------------------------|\n| Algebra       | value definitions (scalar/vector/matrix...) with respective mathematical operations and functions |\n| CLI           | simple command line interface to the framework, based on Apache commons' [CLI](http://commons.apache.org/proper/commons-cli/) |\n| Drawing       | visualization of templates, inference and neural networks, based on DOT language ([Graphviz](https://graphviz.org/))                 |\n| Frontend      | Python scripts for calling some high-level functionalities, reading results, and exporting neural nets to [Dynet](http://dynet.io/), based on [Py4J](https://www.py4j.org/) (moved to [PyNeuralogic](https://github.com/LukasZahradnik/PyNeuraLogic))|\n| Learning      | high-level (supervised) machine learning definitions and functions |\n| Logging       | simple logging + (color) formatting, based on the default java.util.logging library |\n| Logic         | subsumption engine providing efficient relational logic grounding, credit to [Ondrej Kuzelka](https://github.com/supertweety) |\n| Logical       | the logical part of the integration containing logic-based structures and computation - i.e. weighted logic grounding, extension of the Logic module |\n| Neural        | the neural part of the integration containing neural-based structures and computation - i.e. neural nets processing, backprop and classic DL stuff |\n| Neuralization | the process of conversion from the logical to the neural structures |\n| Parsing       | definition and parsing of the NeuraLogic language into internal representation, based on [ANTLR](https://www.antlr.org/)  |\n| Pipelines     | high-level \"MLOps\" library for creating generic ML workflows (custom made) |\n| Resources     | test resources, templates, datasets, etc.  |\n| Settings      | central configuration/validation of all settings and input sources (files) |\n| Utilities     | generic utilities (maths, java DIY, etc.), with [Gson](https://github.com/google/gson) serialization and [JMH](https://openjdk.java.net/projects/code-tools/jmh/) benchmarking |\n| Workflow      | NeuraLogic-specific building blocks for typical ML worflows, based on the Pipelines module |\n\n![Diagram](.github/img/neuralogic-cli.png)\n\n## Papers\n\n[Beyond Graph Neural Networks with Lifted Relational Neural Networks](https://arxiv.org/abs/2007.06286) Machine Learning Journal, 2021\n - also presented at [IJCLR 2021](http://lr2020.iit.demokritos.gr/accepted/index.html) and [AAAI 2023](https://underline.io/lecture/69510-beyond-graph-neural-networks-with-lifted-relational-neural-networks)\n\n[Lossless compression of structured convolutional models via lifting](https://arxiv.org/abs/2007.06567) ICLR, 2021\n\n[Lifted Relational Neural Networks](https://arxiv.org/abs/1508.05128) Journal of Artificial Intelligence Research, 2018\n\n[Stacked structure learning for lifted relational neural networks](https://link.springer.com/chapter/10.1007/978-3-319-78090-0_10) Inductive Logic Programming, 2017\n\n[Learning predictive categories using lifted relational neural networks](https://link.springer.com/chapter/10.1007/978-3-319-63342-8_9) Inductive Logic Programming, 2016\n\n[Lifted Relational Neural Networks (short version)](http://ceur-ws.org/Vol-1583/CoCoNIPS_2015_paper_7.pdf) Cognitive Computing workshop @NIPS, 2015\n\n### Books\n\n[Deep Learning with Relational Logic Representations](https://www.iospress.com/catalog/books/deep-learning-with-relational-logic-representations) (2022)\n- A book providing full context for the framework, based on my (freely available) [dissertation thesis](https://gustiks.github.io/publication/dissertation)\n\n#### Chapters\n\n[Lifted Relational Neural Networks: From Graphs to Deep Relational Learning](https://ebooks.iospress.nl/doi/10.3233/FAIA230147) (2023)\n- A book chapter about the framework in the [Compendium of Neurosymbolic Artificial Intelligence](https://www.iospress.com/catalog/books/compendium-of-neurosymbolic-artificial-intelligence)\n\n\u003c!--\nGoogling \"**Lifted Relational Neural Networks**\" should give you a [short paper](http://ceur-ws.org/Vol-1583/CoCoNIPS_2015_paper_7.pdf) from a NIPS workshop on cognitive computation 2015,\nand its [long version](https://www.jair.org/index.php/jair/article/view/11203) from Journal of Artificial Intelligence Research, 2018. The most up-to-date description of the framework then views it as a [generalization of Graph Neural Networks](https://arxiv.org/abs/2007.06286).\n\nFurther, you can find applications and extensions, including declarative [learning scenarios](https://link.springer.com/chapter/10.1007/978-3-319-63342-8_9) (ILP 2016) and inductive [structure learning](https://link.springer.com/chapter/10.1007/978-3-319-78090-0_10) (ILP 2017) of the learning programs. The most complete description of the work in its full context can then be found in my [dissertation thesis](https://gustiks.github.io/files/dissertation.pdf).\n--\u003e\n\n## Videos\n[IJCLR 2021 joint session](https://www.youtube.com/watch?v=-5h-h0ukXk0\u0026list=PL18_rB75vx1PkjXnkX1jiqNeNnVCbNGIh\u0026index=39)\n\n[ICLR 2021](https://slideslive.com/38954203/lossless-compression-of-structured-convolutional-models-gnns-via-lifting)\n\n[NIPS CoCo workshop 2015](https://www.bilibili.com/video/av66440677/)\n\n[Prague Machine learning meetups 2017](https://www.youtube.com/watch?v=LHj8M8SV1zA)\n\n\u003c!--\n###### Presentations\n\n[Prague Automated Reasoning Seminar 2016](http://arg.ciirc.cvut.cz/slides/2016-Sourek-LRNN.pdf)\n--\u003e\n\n#### Related Repositories\n\nMuch of the Logic and Utils modules comes from [Ondrej Kuzelka's](https://github.com/supertweety/) repositories [Logic](https://github.com/supertweety/Logic) and [Utils](https://github.com/supertweety/Utils)\n\nFor experiments from the paper \"Beyond GNNs with LRNNs\" (2020), please see a [GNNwLRNNs repository](https://github.com/GustikS/GNNwLRNNs).\n\nFor experiments from the paper \"Lossless Compression of Structured Convolutional Models via Lifting\" (2020), please see a [NeuraLifting repository](https://github.com/GustikS/NeuraLifting).\n\n\u003c!--\n### Upcoming\n\n- Documentation wiki\n- Python API\n    - a more user friendly frontend\n    - plus integration to popular DL libraries\n- Lambda calculus support in the language\n- Migrating structure learning module from the previous version\n--\u003e\n\n#### Disclaimer\nThis is a second generation of the framework\u003csup\u003e[4](#myfootnote4)\u003c/sup\u003e, but it is still work in (very slow) progress.\nThe framework is meant for academic purposes, developed at [Intelligent Data Analysis lab](https://ida.fel.cvut.cz/) at Czech Technical University in Prague.\nIn case of any questions or anything interesting, feel free to contact me at *souregus@gmail.com*, but please do not expect any sort of professional software support. \n\u003c!--\nIf you are looking for something more conservative and user friendly, consider [PyG](https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html) or [DGL](https://www.dgl.ai/pages/start.html) for the graph-based learning use cases.\n--\u003e\n\u003ca name=\"myfootnote4\"\u003e4\u003c/a\u003e: _for reference, you can find previous implementation (2014-2018) in [this repository](https://github.com/GustikS/Neurologic)_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgustiks%2Fneuralogic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgustiks%2Fneuralogic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgustiks%2Fneuralogic/lists"}