12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- writeInfoLine: "Training a DBN with a three-peaked distribution"
- stopwatch
- structure# = { 30, 50, 20 }
- numberOfVowels = 3
- mean# = { 8, 16, 23 }
- sigma = 1.8
- numberOfPatterns = 10000
- learningRate = 0.001
- my.DeepBeliefNetwork = Create DeepBeliefNetwork: "my", structure#, 0
- my.PatternList = Create PatternList: "patterns", structure# [1], numberOfPatterns
- formant# = zero# (numberOfPatterns)
- formant# ~ randomGauss (mean# [randomInteger (1, numberOfVowels)], sigma)
- Formula: ~ 5 * exp (-0.5/sigma^2 * (col - formant# [row]) ^ 2) - 0.5
- my.DeepBeliefNetwork & my.PatternList: Learn by layer: learningRate
- appendInfoLine: "Trained in ", stopwatch, " seconds"
- for ilayer to size (structure#) - 1
- weight## = my.DeepBeliefNetwork: Get weights: ilayer
- appendInfoLine: weight##, newline$
- endfor
- numberOfTestPatterns = 15
- Erase all
- Font size: 10
- for itest to numberOfTestPatterns
- appendInfoLine: "Test pattern #", itest, ":"
- patternNumber = randomInteger (1, numberOfPatterns)
- #
- # Draw input.
- #
- Select outer viewport: 0, 3, (itest - 1) * 0.6, (itest - 1) * 0.6 + 1.0
- my.PatternList: Draw: patternNumber, 0.0, 0.0, -5.0, 5.0, "no"
- #
- # Spread up and down.
- #
- my.DeepBeliefNetwork & my.PatternList: Apply to input: patternNumber
- my.DeepBeliefNetwork: Spread up: "deterministic"
- my.DeepBeliefNetwork: Spread down: "deterministic"
- #
- # Draw reflection.
- #
- Select outer viewport: 3, 6, (itest - 1) * 0.6, (itest - 1) * 0.6 + 1.0
- reflection.Matrix = Extract input activities
- stdev = reflection.Matrix: Get standard deviation: 0, 0, 0, 0
- appendInfoLine: " Energy in reflection: ", stdev
- reflection.Matrix: Draw rows: 0, 0, 0, 0, -5, 5
- reflection.Matrix: Remove
- endfor
- my.PatternList & my.DeepBeliefNetwork: Remove
|