main.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "fmt"
  4. neuralnetwork "./neuralnetworkbase"
  5. mat "gonum.org/v1/gonum/mat"
  6. )
  7. func main() {
  8. dataSet, result := readData("./iris.data")
  9. sizes := []int{4, 8, 8, 3}
  10. nn := neuralnetwork.NewNeuralNetwork(sizes)
  11. for i := 0; i < nn.Count; i++ {
  12. if i > 0 {
  13. fmt.Printf("Weights before:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0)))
  14. fmt.Printf("Biases before:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0)))
  15. fmt.Printf("Z before:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0)))
  16. }
  17. fmt.Printf("A before:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
  18. }
  19. for j := 0; j < 481; j++ {
  20. for i := len(dataSet) - 1; i >= 0; i-- {
  21. // fmt.Printf("Dataset[%d]:\n%v\n\n", i, mat.Formatted(dataSet[i], mat.Prefix(""), mat.Excerpt(0)))
  22. // fmt.Printf("Result[%d]:\n%v\n\n", i, mat.Formatted(result[i], mat.Prefix(""), mat.Excerpt(0)))
  23. nn.Backward(dataSet[i], result[i])
  24. }
  25. }
  26. for i := 0; i < nn.Count; i++ {
  27. if i > 0 {
  28. fmt.Printf("Weights after:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0)))
  29. fmt.Printf("Biases after:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0)))
  30. fmt.Printf("Z after:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0)))
  31. }
  32. fmt.Printf("A after:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
  33. }
  34. // data := make([]float64, sizes[0])
  35. // for i := range data {
  36. // data[i] = rand.Float64()
  37. // }
  38. // aIn := mat.NewDense(sizes[0], 1, data)
  39. failCount := 0
  40. for i := 0; i < len(dataSet); i++ {
  41. index, _ := nn.Predict(dataSet[i])
  42. if result[i].At(index, 0) != 1.0 {
  43. failCount++
  44. fmt.Printf("Fail: %v, %v\n\n", i, result[i].At(index, 0))
  45. }
  46. }
  47. fmt.Printf("Fail count: %v\n\n", failCount)
  48. }