Kaynağa Gözat

Add remote control service stub

Alexey Edelev 5 yıl önce
ebeveyn
işleme
0ece0b7c23

+ 31 - 28
neuralnetwork/main.go

@@ -39,38 +39,40 @@ func main() {
 	// 	fmt.Printf("A before:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
 	// }
 
-	// teacher := teach.NewMNISTReader("./minst.data", "./mnist.labels")
-	teacher := teach.NewTextDataReader("wine.data", 7)
-	nn.Teach(teacher, 1000)
+	go func() {
+		// teacher := teach.NewMNISTReader("./minst.data", "./mnist.labels")
+		teacher := teach.NewTextDataReader("wine.data", 7)
+		nn.Teach(teacher, 1000)
 
-	// 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)))
-	// }
+		// 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)))
+		// }
 
-	outFile, err := os.OpenFile("./data", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
-	if err != nil {
-		log.Fatal(err)
-	}
-	defer outFile.Close()
-	nn.SaveState(outFile)
-	outFile.Close()
+		outFile, err := os.OpenFile("./data", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer outFile.Close()
+		nn.SaveState(outFile)
+		outFile.Close()
 
-	failCount := 0
-	teacher.Reset()
-	for teacher.NextValidator() {
-		dataSet, expect := teacher.GetValidator()
-		index, _ := nn.Predict(dataSet)
-		if expect.At(index, 0) != 1.0 {
-			failCount++
-			// fmt.Printf("Fail: %v, %v\n\n", teacher.ValidationIndex(), expect.At(index, 0))
+		failCount := 0
+		teacher.Reset()
+		for teacher.NextValidator() {
+			dataSet, expect := teacher.GetValidator()
+			index, _ := nn.Predict(dataSet)
+			if expect.At(index, 0) != 1.0 {
+				failCount++
+				// fmt.Printf("Fail: %v, %v\n\n", teacher.ValidationIndex(), expect.At(index, 0))
+			}
 		}
-	}
-	fmt.Printf("Fail count: %v\n\n", failCount)
+		fmt.Printf("Fail count: %v\n\n", failCount)
+	}()
 
 	// nn = &neuralnetwork.NeuralNetwork{}
 	// inFile, err := os.Open("./data")
@@ -93,4 +95,5 @@ func main() {
 	// }
 
 	// fmt.Printf("Fail count: %v\n\n", failCount)
+	rc.Run()
 }

+ 43 - 0
neuralnetwork/remotecontrol/remotecontrol.go

@@ -26,16 +26,25 @@
 package remotecontrol
 
 import (
+	context "context"
+	fmt "fmt"
 	"log"
+	"net"
+
+	"google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
 
 	neuralnetworkbase "../neuralnetworkbase"
 	"gonum.org/v1/gonum/mat"
+	grpc "google.golang.org/grpc"
 )
 
 type RemoteControl struct {
+	nn *neuralnetworkbase.NeuralNetwork
 }
 
 func (rw *RemoteControl) Init(nn *neuralnetworkbase.NeuralNetwork) {
+	rw.nn = nn
 }
 
 func (rw *RemoteControl) UpdateActivations(l int, a *mat.Dense) {
@@ -66,3 +75,37 @@ func NewLayerMatrix(l int, dense *mat.Dense, contentType LayerMatrix_ContentType
 
 	return
 }
+
+func (rw *RemoteControl) GetConfiguration(context.Context, *None) (*Configuration, error) {
+	return nil, status.Error(codes.Unimplemented, "Not implemented")
+}
+
+func (rw *RemoteControl) Activations(*None, RemoteControl_ActivationsServer) error {
+	return status.Error(codes.Unimplemented, "Not implemented")
+}
+
+func (rw *RemoteControl) Biases(*None, RemoteControl_BiasesServer) error {
+	return status.Error(codes.Unimplemented, "Not implemented")
+}
+
+func (rw *RemoteControl) Weights(*None, RemoteControl_WeightsServer) error {
+	return status.Error(codes.Unimplemented, "Not implemented")
+}
+
+func (rw *RemoteControl) Predict(context.Context, *Matrix) (*Matrix, error) {
+	return nil, status.Error(codes.Unimplemented, "Not implemented")
+}
+
+func (rw *RemoteControl) Run() {
+	grpcServer := grpc.NewServer()
+	RegisterRemoteControlServer(grpcServer, rw)
+	lis, err := net.Listen("tcp", "localhost:65001")
+	if err != nil {
+		fmt.Printf("Failed to listen: %v\n", err)
+	}
+
+	fmt.Printf("Listen localhost:65001\n")
+	if err := grpcServer.Serve(lis); err != nil {
+		fmt.Printf("Failed to serve: %v\n", err)
+	}
+}