Skip to content

Latest commit

 

History

History
41 lines (24 loc) · 899 Bytes

README.md

File metadata and controls

41 lines (24 loc) · 899 Bytes

HopfieldNets.jl

NOTICE

This package is unmaintained. Its reliability is not guaranteed.

Introduction

Discrete and continuous Hopfield nets in Julia.

Usage Example

We'll restore a corrupted representation fo the letter X specified as a vector of -1's and +1's:

using HopfieldNets

include(Pkg.dir("HopfieldNets", "demo", "letters.jl"))

patterns = hcat(X, O)

n = size(patterns, 1)

net = DiscreteHopfieldNet(n)

train!(net, patterns)

settle!(net, 10, true)

Xcorrupt = copy(X)
for i = 2:7
     Xcorrupt[i] = 1
end

Xrestored = associate!(net, Xcorrupt)
all(Xcorrupt .== X)
all(Xrestored .== X)

Sources

The idea for the letters demo is taken from an implementation of Hopfield nets in Ruby. The code is based on the presentation of the theory in Mackay's book and in Storkey's learning rule paper.