AdvRBMs.advpcd!Method
advpcd!(rbm, data; q, Q, ...)

Trains the RBM on data using Persistent Contrastive divergence with constraints. Matrix q contains the 1st-order constraints, that q[...,t]' * W be small, for each t. Matrix Q contains the 2nd-order constraints, that W' * Q[...,t] * W be small, for each t.

AdvRBMs.advpcd!Method
advpcd!(rbm, data; q, Q, ...)

Trains the RBM on data using Persistent Contrastive divergence with constraints. Matrix q contains the 1st-order constraints, that q[...,t]' * W be small, for each t. Matrix Q contains the 2nd-order constraints, that W' * Q[...,t] * W be small, for each t.

AdvRBMs.empty_intersectionsMethod
empty_intersections(X)

For a given list of collections X, returns true if the intersections between pairs of collections are empty. Otherwise returns false.

AdvRBMs.kernelprojMethod
kernelproj(w, q)

Projects w to the kernel of q. That is, the result satisfies q' * kernelproj(w, q) ≈ 0, up to numerical error.

AdvRBMs.project∂!Function
project∂!(∂w, q, Q)

Projects gradients ∂w using the given constraints.

AdvRBMs.∂qwMethod
∂qw(w, q)

Derivative of ||q' * w||^2 / 2 with respect to w.

AdvRBMs.∂wQwMethod
∂wQw(w, Q)

Derivative of ∑_k ||w' * Q[:,:,k] * w||^2 / 2 with respect to w.