DBN.praat 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. writeInfoLine: "Training a DBN with a three-peaked distribution"
  2. stopwatch
  3. structure# = { 30, 20 }
  4. numberOfVowels = 3
  5. mean# = { 8, 16, 23 }
  6. sigma = 1.8
  7. numberOfPatterns = 3000
  8. learningRate = 0.001
  9. my.Net = Create Net as deep belief network: "my", structure#, 0
  10. my.PatternList = Create PatternList: "patterns", structure# [1], numberOfPatterns
  11. formant# = zero# (numberOfPatterns)
  12. formant# ~ randomGauss (mean# [randomInteger (1, numberOfVowels)], sigma)
  13. Formula: ~ 5 * exp (-0.5/sigma^2 * (col - formant# [row]) ^ 2) - 0.5
  14. selectObject: my.Net, my.PatternList
  15. Learn by layer: learningRate
  16. appendInfoLine: "Trained in ", stopwatch, " seconds"
  17. for ilayer to size (structure#) - 1
  18. selectObject: my.Net
  19. weight## = Get weights: ilayer
  20. appendInfoLine: weight##, newline$
  21. endfor
  22. numberOfTestPatterns = 15
  23. Erase all
  24. Font size: 10
  25. for itest to numberOfTestPatterns
  26. appendInfoLine: "Test pattern #", itest, ":"
  27. patternNumber = randomInteger (1, numberOfPatterns)
  28. #
  29. # Draw input.
  30. #
  31. Select outer viewport: 0, 3, (itest - 1) * 0.6, (itest - 1) * 0.6 + 1.0
  32. selectObject: my.PatternList
  33. Draw: patternNumber, 0.0, 0.0, -5.0, 5.0, "no"
  34. #
  35. # Spread up and down.
  36. #
  37. selectObject: my.Net, my.PatternList
  38. Apply to input: patternNumber
  39. selectObject: my.Net
  40. Spread up: "deterministic"
  41. Spread down: "deterministic"
  42. #
  43. # Draw reflection.
  44. #
  45. Select outer viewport: 3, 6, (itest - 1) * 0.6, (itest - 1) * 0.6 + 1.0
  46. reflection.Matrix = Extract input activities
  47. stdev = Get standard deviation: 0, 0, 0, 0
  48. appendInfoLine: " Energy in reflection: ", stdev
  49. Draw rows: 0, 0, 0, 0, -5, 5
  50. Remove
  51. endfor
  52. removeObject: my.PatternList, my.Net