common.go 842 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package neuralnetworkbase
  2. import (
  3. "math"
  4. rand "math/rand"
  5. "time"
  6. mat "gonum.org/v1/gonum/mat"
  7. )
  8. func generateRandomDense(rows, columns int) *mat.Dense {
  9. rand.Seed(time.Now().UnixNano())
  10. data := make([]float64, rows*columns)
  11. for i := range data {
  12. data[i] = rand.NormFloat64()
  13. }
  14. return mat.NewDense(rows, columns, data)
  15. }
  16. func applySigmoid(_, _ int, x float64) float64 {
  17. return sigmoid(x)
  18. }
  19. func applySigmoidPrime(_, _ int, x float64) float64 {
  20. return sigmoidPrime(x)
  21. }
  22. func sigmoid(x float64) float64 {
  23. return 1.0 / (1.0 + math.Exp(-x))
  24. }
  25. func sigmoidPrime(x float64) float64 {
  26. return sigmoid(x) * (1 - sigmoid(x))
  27. }
  28. func makeBackGradien(in mat.Matrix, actual mat.Matrix, alpha float64) *mat.Dense {
  29. scaled := &mat.Dense{}
  30. result := &mat.Dense{}
  31. scaled.Scale(alpha, in)
  32. result.Sub(actual, scaled)
  33. return result
  34. }