main.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package main
  2. import (
  3. "fmt"
  4. neuralnetwork "./neuralnetworkbase"
  5. teach "./teach"
  6. )
  7. func main() {
  8. sizes := []int{13, 14, 14, 3}
  9. nn, _ := neuralnetwork.NewNeuralNetwork(sizes, 0.1, 481)
  10. // for i := 0; i < nn.Count; i++ {
  11. // if i > 0 {
  12. // fmt.Printf("Weights before:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0)))
  13. // fmt.Printf("Biases before:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0)))
  14. // fmt.Printf("Z before:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0)))
  15. // }
  16. // fmt.Printf("A before:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
  17. // }
  18. teacher := teach.NewTextDataReader("./wine.data")
  19. nn.Teach(teacher)
  20. // for i := 0; i < nn.Count; i++ {
  21. // if i > 0 {
  22. // fmt.Printf("Weights after:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0)))
  23. // fmt.Printf("Biases after:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0)))
  24. // fmt.Printf("Z after:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0)))
  25. // }
  26. // fmt.Printf("A after:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
  27. // }
  28. //nn.SaveState("./data");
  29. //nn.LoadState("./data");
  30. failCount := 0
  31. teacher.Reset()
  32. for teacher.NextData() {
  33. dataSet, expect := teacher.GetData()
  34. index, _ := nn.Predict(dataSet)
  35. if expect.At(index, 0) != 1.0 {
  36. failCount++
  37. fmt.Printf("Fail: %v, %v\n\n", teacher.Index(), expect.At(index, 0))
  38. }
  39. }
  40. fmt.Printf("Fail count: %v\n\n", failCount)
  41. }