package main import ( "fmt" neuralnetwork "./neuralnetworkbase" teach "./teach" ) func main() { sizes := []int{4, 8, 8, 3} nn, _ := neuralnetwork.NewNeuralNetwork(sizes, 0.1, 481) // for i := 0; i < nn.Count; i++ { // if i > 0 { // fmt.Printf("Weights before:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0))) // fmt.Printf("Biases before:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0))) // fmt.Printf("Z before:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0))) // } // fmt.Printf("A before:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0))) // } teacher := teach.NewTextDataReader("./iris.data") nn.Teach(teacher) // for i := 0; i < nn.Count; i++ { // if i > 0 { // fmt.Printf("Weights after:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0))) // fmt.Printf("Biases after:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0))) // fmt.Printf("Z after:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0))) // } // fmt.Printf("A after:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0))) // } failCount := 0 teacher.Reset() for teacher.Next() { index, _ := nn.Predict(teacher.GetData()) expect := teacher.GetExpect() if expect.At(index, 0) != 1.0 { failCount++ fmt.Printf("Fail: %v, %v\n\n", teacher.Index(), expect.At(index, 0)) } } fmt.Printf("Fail count: %v\n\n", failCount) }