Neural Networks in C#


Neural network in C# using TensorFlow library.

using System;
using TensorFlow;

class Program
{
    static void Main(string[] args)
    {
        // Define the input and output data
        var input = new float[,] { { 0, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 } };
        var output = new float[,] { { 0 }, { 1 }, { 1 }, { 0 } };

        // Define the TensorFlow graph
        var graph = new TFGraph();
        var inputTensor = graph.Placeholder(TFDataType.Float, new TFShape(-1, 2));
        var outputTensor = graph.Placeholder(TFDataType.Float, new TFShape(-1, 1));
        var hiddenTensor = graph.Add(
            graph.MatMul(inputTensor, graph.Const(new float[,] { { 1 }, { -1 } })),
            graph.Const(new float[,] { { 0.5f } }));
        var outputPrediction = graph.Sigmoid(
            graph.MatMul(hiddenTensor, graph.Const(new float[,] { { -2 }, { 1 } })),
            "output");

        // Define the loss function
        var loss = graph.ReduceMean(
            graph.Square(graph.Sub(outputTensor, outputPrediction)),
            graph.Const(0), true);

        // Define the optimizer
        var optimizer = graph.GradientDescentOptimizer(0.1f);
        var train = optimizer.Minimize(loss);

        // Train the model
        var session = new TFSession(graph);
        var inputs = new TFTensor[] {
            input, output
        };
        for (int i = 0; i < 1000; i++)
        {
            session.Run(train, inputs);
        }

        // Test the model
        var testData = new float[,] { { 0, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 } };
        var testInputs = new TFTensor[] { testData };
        var result = session.Run(outputPrediction, new[] { inputTensor }, testInputs);

        // Print the output
        Console.WriteLine("Predictions:");
        for (int i = 0; i < result[0].Shape[0]; i++)
        {
            Console.WriteLine($"{testData[i, 0]} XOR {testData[i, 1]} = {result[0].GetValue(i, 0)}");
        }
    }
}


This code defines a neural network with one hidden layer and trains it to perform the XOR operation on binary inputs. The TensorFlow library is used to define the graph, loss function, optimizer, and training procedure, and to evaluate the model on test data. Note that this is a simple example and there are many ways to customize and improve this neural network depending on the specific problem you are trying to solve.


Other
published
v.1.00




© 2024 - ErnesTech - Privacy
E-Commerce Return Policy