Code Monkey home page Code Monkey logo

sumproductnetworks.jl's Issues

Utility to marginalize the SPN

Hey Martin, I might be missing something obvious, but is there not yet a way to compute the log marginalized likelihood of the SPN?

i.e. in this mixture of bivariate gaussians, I can't find a way to work with the Normal(-1, 1) + Normal(1,1) mixture.

root = FiniteSumNode{Float32}();

add!(root, FiniteProductNode(), Float32(log(0.5))); # Weight 0.5
add!(root, FiniteProductNode(), Float32(log(0.5))); # Weight 0.5

add!(children(root)[1], UnivariateNode(Normal(-1, 1), 1))
add!(children(root)[2], UnivariateNode(Normal(1, 1), 1))
add!(children(root)[1], UnivariateNode(Normal(-1, 10), 2))
add!(children(root)[2], UnivariateNode(Normal(1, 10), 2))

FiniteSumNode() requires a type declaration

Hey, I was trying to run the example code in the readme. First line calls FiniteSumNode(). It looks like it'll need FiniteSumNode{Float64}() or some other concrete float type. Is this unintended and a bug, or should the readme be updated to reflect that? Thanks!

LearnSPN

Hi Martin,
I was delighted to see an SPN implementation in Julia just as I was starting to dig into them. As part of my exploration, I was wondering if you had a timeline for filling out the generate_spn function, either in this package or another. I'm curious about replacing other function approximators with SPNs in some reinforcement learning projects I have going on; with the right structure, SPNs offer a lot over neural nets for these problems.

Thanks for opening your work!

Kendall

Register package

Todo:

  • Make sure the package works under julia 1.0
  • Add more unit tests
  • Add a more extensive README and documentation of the package

Immutable Types

I should make types immutable by default and add additional mutable types, e.g. MutableSumNode.

Further, I should sub-type Distributions.Distribution instead of my own SPNNode type. This way the code would be compatible with Turing.

  • Make types immutable
  • Add additional mutable types
  • Sub-type Distributions instead of SPNNode
  • Add fit overload for EM fitting of an SPN.

Julia 1.0

Make SumProductNetworks ready for julia 1.0

Region graphs

I should add region graphs, similar to the implementation for BayesianSPNs, at some point to this package.

  • Add regions and partitions
  • Add atomic regions for univariate and multivariate distributions
  • Add random structure generation
  • Add bayesian structure learning (posterior bootstrap?)

Add SSL code

Add the implementation of safe semi-supervised learning of SPNs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.