main.go 1.4 KB

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