diff --git a/TensorFlow.NET.sln b/TensorFlow.NET.sln index 7f124824..827d18da 100644 --- a/TensorFlow.NET.sln +++ b/TensorFlow.NET.sln @@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TensorFlowNET.Visualization EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KerasNET.Core", "..\Keras.NET\src\KerasNET.Core\KerasNET.Core.csproj", "{E2F0C39C-D706-4CF5-AE00-81FB447F949D}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NumSharp.Core", "..\NumSharp\src\NumSharp.Core\NumSharp.Core.csproj", "{62360571-D1F7-473C-B81F-F03CA59E37DD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -45,6 +47,10 @@ Global {E2F0C39C-D706-4CF5-AE00-81FB447F949D}.Debug|Any CPU.Build.0 = Debug|Any CPU {E2F0C39C-D706-4CF5-AE00-81FB447F949D}.Release|Any CPU.ActiveCfg = Release|Any CPU {E2F0C39C-D706-4CF5-AE00-81FB447F949D}.Release|Any CPU.Build.0 = Release|Any CPU + {62360571-D1F7-473C-B81F-F03CA59E37DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62360571-D1F7-473C-B81F-F03CA59E37DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62360571-D1F7-473C-B81F-F03CA59E37DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62360571-D1F7-473C-B81F-F03CA59E37DD}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/TensorFlowNET.Core/APIs/tf.nn.cs b/src/TensorFlowNET.Core/APIs/tf.nn.cs new file mode 100644 index 00000000..7ca290fd --- /dev/null +++ b/src/TensorFlowNET.Core/APIs/tf.nn.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tensorflow +{ + public static partial class tf + { + public static nn_impl nn => new nn_impl(); + } +} diff --git a/src/TensorFlowNET.Core/Operations/math_ops.py.cs b/src/TensorFlowNET.Core/Operations/math_ops.py.cs index 8bfb51a7..a721c7bc 100644 --- a/src/TensorFlowNET.Core/Operations/math_ops.py.cs +++ b/src/TensorFlowNET.Core/Operations/math_ops.py.cs @@ -23,6 +23,17 @@ namespace Tensorflow return x; }); } + /// + /// + /// + /// + /// + /// + /// + public static void reduce_mean(Tensor input_tensor, int[] axes = null, bool keepdims = false, string name = null) + { + + } /// /// Helper function for reduction ops. diff --git a/src/TensorFlowNET.Core/Operations/nn_impl.py.cs b/src/TensorFlowNET.Core/Operations/nn_impl.py.cs new file mode 100644 index 00000000..56c4fb46 --- /dev/null +++ b/src/TensorFlowNET.Core/Operations/nn_impl.py.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Tensorflow +{ + public class nn_impl : Python + { + /// + /// Calculate the mean and variance of `x` + /// + /// + /// + /// + /// + /// + public (Tensor, Tensor) moments(Tensor x, + int[] axes, + string name = null, + bool keep_dims = false) + { + with(new ops.name_scope(name, "moments", new { x, axes }), scope => + { + var y = math_ops.cast(x, TF_DataType.TF_FLOAT); + // mean = math_ops.reduce_mean(y, axes, keepdims = True, name = "mean") + + }); + + throw new NotImplementedException(""); + } + } +} diff --git a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj index ae1c5b8b..28637c9c 100644 --- a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj +++ b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj @@ -55,4 +55,8 @@ Docs: https://tensorflownet.readthedocs.io + + + + diff --git a/test/TensorFlowNET.Examples/NaiveBayesClassifier.cs b/test/TensorFlowNET.Examples/NaiveBayesClassifier.cs index 8f395ea9..948b9fff 100644 --- a/test/TensorFlowNET.Examples/NaiveBayesClassifier.cs +++ b/test/TensorFlowNET.Examples/NaiveBayesClassifier.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Text; using Tensorflow; +using NumSharp.Core; +using System.Linq; namespace TensorFlowNET.Examples { @@ -9,10 +11,28 @@ namespace TensorFlowNET.Examples /// https://github.com/nicolov/naive_bayes_tensorflow /// public class NaiveBayesClassifier : Python, IExample - { + { public void Run() { - throw new NotImplementedException(); + // t/f.nn.moments() + } + + public void fit(NDArray X, NDArray y) + { + // separate training points by class + // shape : nb_class * nb_samples * nb_features + NDArray unique_y = y.unique(); + NDArray points_by_class = np.array(y.Data().Where(ys => unique_y.Data().Contains(ys))); + + foreach (long cls in unique_y) + { + + } + + + // estimate mean and variance for each class / feature + // shape : nb_classes * nb_features + } } } diff --git a/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj b/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj index d5986423..185903c4 100644 --- a/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj +++ b/test/TensorFlowNET.Examples/TensorFlowNET.Examples.csproj @@ -12,6 +12,7 @@ +