From f35b146cc6d357ce492ff3c9c32d8d9323938c28 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Sat, 6 Jul 2019 23:56:07 -0500 Subject: [PATCH] update docs. change example interface. --- docs/assets/TensorBoard-nn.png | Bin 0 -> 94498 bytes docs/assets/mnist.png | Bin 0 -> 30441 bytes docs/assets/nn-result.png | Bin 0 -> 34804 bytes docs/assets/nn.png | Bin 0 -> 79439 bytes docs/source/Constant.md | 13 +- docs/source/Foreword.md | 6 - docs/source/HelloWorld.md | 10 +- docs/source/LinearRegression.md | 25 +- docs/source/LogisticRegression.md | 4 +- docs/source/NeuralNetwork.md | 244 ++++++++++++++++++ docs/source/Placeholder.md | 2 +- docs/source/Preface.md | 26 -- docs/source/Session.md | 6 +- docs/source/Tensor.md | 6 - docs/source/Variable.md | 3 +- docs/source/index.rst | 3 +- test/TensorFlowNET.Examples/BasicEagerApi.cs | 9 +- .../BasicModels/KMeansClustering.cs | 152 ++++++----- .../BasicModels/LinearRegression.cs | 9 +- .../BasicModels/LogisticRegression.cs | 41 ++- .../BasicModels/NaiveBayesClassifier.cs | 9 +- .../BasicModels/NearestNeighbor.cs | 9 +- .../BasicModels/NeuralNetXor.cs | 9 +- .../TensorFlowNET.Examples/BasicOperations.cs | 9 +- test/TensorFlowNET.Examples/HelloWorld.cs | 9 +- test/TensorFlowNET.Examples/IExample.cs | 5 +- .../ImageProcess/DigitRecognitionNN.cs | 95 ++++--- .../ImageProcess/ImageBackgroundRemoval.cs | 9 +- .../ImageProcess/ImageRecognitionInception.cs | 9 +- .../ImageProcess/InceptionArchGoogLeNet.cs | 9 +- .../ImageProcess/ObjectDetection.cs | 10 +- .../ImageProcess/RetrainImageClassifier.cs | 9 +- .../TextProcess/BinaryTextClassification.cs | 9 +- .../TextProcess/CnnTextClassification.cs | 19 +- .../TextProcess/NER/BiLstmCrfNer.cs | 9 +- .../TextProcess/NER/CRF.cs | 9 +- .../TextProcess/NER/LstmCrfNer.cs | 9 +- .../TextProcess/NamedEntityRecognition.cs | 9 +- .../TextProcess/TextClassificationTrain.cs | 9 +- .../TextProcess/Word2Vec.cs | 9 +- 40 files changed, 568 insertions(+), 264 deletions(-) create mode 100644 docs/assets/TensorBoard-nn.png create mode 100644 docs/assets/mnist.png create mode 100644 docs/assets/nn-result.png create mode 100644 docs/assets/nn.png create mode 100644 docs/source/NeuralNetwork.md diff --git a/docs/assets/TensorBoard-nn.png b/docs/assets/TensorBoard-nn.png new file mode 100644 index 0000000000000000000000000000000000000000..23ccc3db53c01e2c2c6f9209e1aa3a9aa8ab89ec GIT binary patch literal 94498 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 literal 0 HcmV?d00001 diff --git a/docs/assets/mnist.png b/docs/assets/mnist.png new file mode 100644 index 0000000000000000000000000000000000000000..824818721193666cae34e5f5643c100970ce1942 GIT binary patch literal 30441 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 X*^C#qN3(to00000NkvXXu0mjfa^0qz literal 0 HcmV?d00001 diff --git a/docs/assets/nn-result.png b/docs/assets/nn-result.png new file mode 100644 index 0000000000000000000000000000000000000000..7957b821435b1d436fb6710a802a426718aa7db4 GIT binary patch literal 34804 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 Install-Package TensorFlow.NET After installing the TensorFlow.NET package, you can use the `using Tensorflow` to introduce the TensorFlow library. -安装完TensorFlow.NET包后,你就可以使用`using Tensorflow`来引入TensorFlow库了。 + ```csharp using System; @@ -76,5 +74,3 @@ Press any key to continue . . . This sample code can be found at [here](https://github.com/SciSharp/TensorFlow.NET/blob/master/test/TensorFlowNET.Examples/HelloWorld.cs). -此示例代码可以在[这里](https://github.com/SciSharp/TensorFlow.NET/blob/master/test/TensorFlowNET.Examples/HelloWorld.cs)找到。 - diff --git a/docs/source/LinearRegression.md b/docs/source/LinearRegression.md index d9921270..81a6dbc4 100644 --- a/docs/source/LinearRegression.md +++ b/docs/source/LinearRegression.md @@ -1,5 +1,7 @@ # Chapter. Linear Regression + + ### What is linear regression? Linear regression is a linear approach to modelling the relationship between a scalar response (or dependent variable) and one or more explanatory variables (or independent variables). @@ -8,9 +10,7 @@ Consider the case of a single variable of interest y and a single predictor vari We have some data $D=\{x{\tiny i},y{\tiny i}\}$ and we assume a simple linear model of this dataset with Gaussian noise: -线性回归是一种线性建模方法,这种方法用来描述自变量与一个或多个因变量的之间的关系。在只有一个因变量y和一个自变量的情况下。自变量还有以下几种叫法: -协变量,输入,特征;因变量通常被叫做响应变量,输出,输出结果。 -假如我们有数据$D=\{x{\tiny i},y{\tiny i}\}$,并且假设这个数据集是满足高斯分布的线性模型: + ```csharp // Prepare training Data var train_X = np.array(3.3f, 4.4f, 5.5f, 6.71f, 6.93f, 4.168f, 9.779f, 6.182f, 7.59f, 2.167f, 7.042f, 10.791f, 5.313f, 7.997f, 5.654f, 9.27f, 3.1f); @@ -21,15 +21,13 @@ var n_samples = train_X.shape[0]; Based on the given data points, we try to plot a line that models the points the best. The red line can be modelled based on the linear equation: $y = wx + b$. The motive of the linear regression algorithm is to find the best values for $w$ and $b$. Before moving on to the algorithm, le's have a look at two important concepts you must know to better understand linear regression. -按照上图根据数据描述的数据点,在这些数据点之间画出一条线,这条线能达到最好模拟点的分布的效果。红色的线能够通过下面呢线性等式来描述:$y = wx + b$。 -线性回归算法的目标就是找到这条线对应的最好的参数$w$和$b$。在介绍线性回归算法之前,我们先看两个重要的概念,这两个概念有助于你理解线性回归算法。 + ### Cost Function The cost function helps us to figure out the best possible values for $w$ and $b$ which would provide the best fit line for the data points. Since we want the best values for $w$ and $b$, we convert this search problem into a minimization problem where we would like to minimize the error between the predicted value and the actual value. -损失函数帮助我们估算出最优的参数$w$和$b$,这个最优的参数能够最好的拟合数据点的分布。由于我们想找到最优的参数$w$和$b$,因此我们把这个问题转化成求 -预测参数与实际参数之差的最小值问题。 + ![minimize-square-cost](_static/minimize-square-cost.png) @@ -37,8 +35,7 @@ We choose the above function to minimize. The difference between the predicted v value by the total number of data points. This provides the average squared error over all the data points. Therefore, this cost function is also known as the Mean Squared Error(MSE) function. Now, using this MSE function we are going to change the values of $w$ and $b$ such that the MSE value settles at the minima. -我们选择最小化上面的函数。预测值和真实值之间的差异的大小衡量了预测结果的偏差。我们用所有点的偏差的平方和除以所有点所有点的数量大小来表示说有点的平均 -的误差大小。因此,损失函数又叫均方误差(简称MSE)。到此,我们可以通过调整参数$w$和$b$来使MSE达到最小值。 + ```csharp // tf Graph Input @@ -56,13 +53,13 @@ var pred = tf.add(tf.multiply(X, W), b); var cost = tf.reduce_sum(tf.pow(pred - Y, 2.0f)) / (2.0f * n_samples); ``` + + ### Gradient Descent -### 梯度下降法 The another important concept needed to understand is gradient descent. Gradient descent is a method of updating $w$ and $b$ to minimize the cost function. The idea is that we start with some random values for $w$ and $b$ and then we change these values iteratively to reduce the cost. Gradient descent helps us on how to update the values or which direction we would go next. Gradient descent is also know as **steepest descent**. -另一个需要理解的重要概念是梯度下降法。梯度下降法是通过更新参数$w$和$b$来最小化损失函数。梯度下降法的思想就是首先以任意的参数$w$和$b$开始计算损失 -函数,然后通过递归的方式不断地变化参数来减小损失。梯度下降法帮助我们如何更新参数,或者说告诉我们下一个参数该如何设置。梯度下降法也称为“最快下降法”。 + ![gradient-descent](_static/gradient-descent.png) @@ -72,9 +69,7 @@ of steps to reach the bottom. If you decide to take one step at a time you would reach sooner but, there is a chance that you could overshoot the bottom of the pit and not exactly at the bottom. In the gradient descent algorithm, the number of steps you take is the learning rate. This decides on how fast the algorithm converges to the minima. -这里做一个类比,想象着你站在一个U形坑的最上面,你的目标是达到坑的最低端。有一个条件是,你不确定你走多少步能到达底端。如果你选择一步一步的走到坑的 -底端,这样可能需要的时间很长。如果你每次大步的往前走,你可能很快到达坑的底端,但是你有可能错过坑的最底端。在梯度下降算法中,你所采用的步数就是训练 -速率。训练速率决定了算法以多块的速度使得损失函数达到最小值。 + ```csharp diff --git a/docs/source/LogisticRegression.md b/docs/source/LogisticRegression.md index ba0b8f57..42cda898 100644 --- a/docs/source/LogisticRegression.md +++ b/docs/source/LogisticRegression.md @@ -4,11 +4,11 @@ Logistic regression is a statistical analysis method used to predict a data value based on prior observations of a data set. A logistic regression model predicts a dependent data variable by analyzing the relationship between one or more existing independent variables. -逻辑回归是一种统计分析方法,用于根据已有得观察数据来预测未知数据。逻辑回归模型通过分析一个或多个现有自变量之间的关系来预测从属数据变量。 + The dependent variable of logistics regression can be two-category or multi-category, but the two-category is more common and easier to explain. So the most common use in practice is the logistics of the two classifications. An example used by TensorFlow.NET is a hand-written digit recognition, which is a multi-category. -逻辑回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。 TensorFlow.NET用的例子是一个手写数字识别,它是一个多分类的问题。 + Softmax regression allows us to handle ![1557035393445](_static\logistic-regression\1557035393445.png) where K is the number of classes. diff --git a/docs/source/NeuralNetwork.md b/docs/source/NeuralNetwork.md new file mode 100644 index 00000000..9da93405 --- /dev/null +++ b/docs/source/NeuralNetwork.md @@ -0,0 +1,244 @@ +# Neural Network + +In this chapter, we'll learn how to build a graph of neural network model. The key advantage of neural network compared to Linear Classifier is that it can separate data which it not linearly separable. We'll implement this model to classify hand-written digits images from the MNIST dataset. + + + +The structure of the neural network we're going to build is as follows. The hand-written digits images of the MNIST data which has 10 classes (from 0 to 9). The network is with 2 hidden layers: the first layer with 200 hidden units (neurons) and the second one (known as classifier layer) with 10 neurons. + +![neural network architecture](../assets/nn.png) + +Get started with the implementation step by step: + +1. **Prepare data** + + MNIST is dataset of handwritten digits which contains 55,000 examples for training, 5,000 examples for validation and 10,000 example for testing. The digits have been size-normalized and centered in a fixed-size image (28 x 28 pixels) with values from 0 and 1.Each image has been flattened and converted to a 1-D array of 784 features. It's also kind of benchmark of datasets for deep learning. + + ![MNIST dataset](../assets/mnist.png) + + We define some variables makes it easier to modify them later. It's important to note that in a linear model, we have to flatten the input images to a vector. + + ```csharp + using System; + using NumSharp; + using Tensorflow; + using TensorFlowNET.Examples.Utility; + using static Tensorflow.Python; + ``` + + ```csharp + const int img_h = 28; + const int img_w = 28; + int img_size_flat = img_h * img_w; // 784, the total number of pixels + int n_classes = 10; // Number of classes, one class per digit + ``` + + We'll write the function which automatically loads the MNIST data and returns it in our desired shape and format. There is an MNIST data helper to make life easier. + + ```csharp + Datasets mnist; + public void PrepareData() + { + mnist = MnistDataSet.read_data_sets("mnist", one_hot: true); + } + ``` + + Other than a function for loading the images and corresponding labels, we still need two more functions: + + **randomize**: which randomizes the order of images and their labels. At the beginning of each epoch, we will re-randomize the order of data samples to make sure that the trained model is not sensitive to the order of data. + + ```csharp + private (NDArray, NDArray) randomize(NDArray x, NDArray y) + { + var perm = np.random.permutation(y.shape[0]); + + np.random.shuffle(perm); + return (mnist.train.images[perm], mnist.train.labels[perm]); + } + ``` + + **get_next_batch**: which only selects a few number of images determined by the batch_size variable (as per Stochastic Gradient Descent method). + + ```csharp + private (NDArray, NDArray) get_next_batch(NDArray x, NDArray y, int start, int end) + { + var x_batch = x[$"{start}:{end}"]; + var y_batch = y[$"{start}:{end}"]; + return (x_batch, y_batch); + } + ``` + +2. **Set Hyperparameters** + + There're about 55,000 images in training set, it takes a long time to calculate the gradient of the model using all there images. Therefore we use a small batch of images in each iteration of the optimizer by Stochastic Gradient Descent. + + * epoch: one forward pass and one backward pass of all the training examples. + * batch size: the number of training examples in one forward/backward pass. The higher the batch size, the more memory space you'll need. + * iteration: one forward pass and one backward pass of one batch of images the training examples. + + ```csharp + int epochs = 10; + int batch_size = 100; + float learning_rate = 0.001f; + int h1 = 200; // number of nodes in the 1st hidden layer + ``` + +3. **Building the neural network** + + Let's make some functions to help build computation graph. + + **variables**: We need to define two variables `W` and `b` to construct our linear model. We use `Tensorflow Variables` of proper size and initialization to define them. + + ```csharp + // weight_variable + var in_dim = x.shape[1]; + + var initer = tf.truncated_normal_initializer(stddev: 0.01f); + var W = tf.get_variable("W_" + name, + dtype: tf.float32, + shape: (in_dim, num_units), + initializer: initer); + + // bias_variable + var initial = tf.constant(0f, num_units); + var b = tf.get_variable("b_" + name, + dtype: tf.float32, + initializer: initial); + ``` + + **fully-connected layer**: Neural network consists of stacks of fully-connected (dense) layers. Having the weight (W) and bias (b) variables, a fully-connected layer is defined as `activation(W x X + b)`. The complete `fc_layer` function is as below: + + ```csharp + private Tensor fc_layer(Tensor x, int num_units, string name, bool use_relu = true) + { + var in_dim = x.shape[1]; + + var initer = tf.truncated_normal_initializer(stddev: 0.01f); + var W = tf.get_variable("W_" + name, + dtype: tf.float32, + shape: (in_dim, num_units), + initializer: initer); + + var initial = tf.constant(0f, num_units); + var b = tf.get_variable("b_" + name, + dtype: tf.float32, + initializer: initial); + + var layer = tf.matmul(x, W) + b; + if (use_relu) + layer = tf.nn.relu(layer); + + return layer; + } + ``` + + **inputs**: Now we need to define the proper tensors to feed in the input to our model. Placeholder variable is the suitable choice for the input images and corresponding labels. This allow us to change the inputs (images and labels) to the TensorFlow graph. + + ```csharp + // Placeholders for inputs (x) and outputs(y) + x = tf.placeholder(tf.float32, shape: (-1, img_size_flat), name: "X"); + y = tf.placeholder(tf.float32, shape: (-1, n_classes), name: "Y"); + ``` + + Placeholder `x` is defined for the images, the shape is set to `[None, img_size_flat]`, where `None` means that the tensor may hold an arbitrary number of images with each image being a vector of length `img_size_flat`. + + Placeholder `y` is the variable for the true labels associated with the images that were input in the placeholder variable `x`. It holds an arbitrary number of labels and each label is a vector of length `num_classes` which is 10. + + **network layers**: After creating the proper input, we have to pass it to our model. Since we have a neural network, we can stack multiple fully-connected layers using `fc_layer` method. Note that we will not use any activation function (use_relu = false) in the last layer. The reason is that we can use `tf.nn.softmax_cross_entropy_with_logits` to calculate the loss. + + ```csharp + // Create a fully-connected layer with h1 nodes as hidden layer + var fc1 = fc_layer(x, h1, "FC1", use_relu: true); + // Create a fully-connected layer with n_classes nodes as output layer + var output_logits = fc_layer(fc1, n_classes, "OUT", use_relu: false); + ``` + + **loss function**: After creating the network, we have to calculate the loss and optimize it, we have to calculate the `correct_prediction` and `accuracy`. + + ```csharp + // Define the loss function, optimizer, and accuracy + var logits = tf.nn.softmax_cross_entropy_with_logits(labels: y, logits: output_logits); + loss = tf.reduce_mean(logits, name: "loss"); + optimizer = tf.train.AdamOptimizer(learning_rate: learning_rate, name: "Adam-op").minimize(loss); + var correct_prediction = tf.equal(tf.argmax(output_logits, 1), tf.argmax(y, 1), name: "correct_pred"); + accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32), name: "accuracy"); + ``` + + **initialize variables**: We have to invoke a variable initializer operation to initialize all variables. + + ```csharp + var init = tf.global_variables_initializer(); + ``` + + The complete computation graph is looks like below: + + ![TensorBoard-nn](../assets/TensorBoard-nn.png) + +4. **Train** + + After creating the graph, we can train our model. To train the model, we have to create a session and run the graph in the session. + + ```csharp + // Number of training iterations in each epoch + var num_tr_iter = mnist.train.labels.len / batch_size; + with(tf.Session(), sess => + { + sess.run(init); + + float loss_val = 100.0f; + float accuracy_val = 0f; + + foreach (var epoch in range(epochs)) + { + print($"Training epoch: {epoch + 1}"); + // Randomly shuffle the training data at the beginning of each epoch + var (x_train, y_train) = randomize(mnist.train.images, mnist.train.labels); + + foreach (var iteration in range(num_tr_iter)) + { + var start = iteration * batch_size; + var end = (iteration + 1) * batch_size; + var (x_batch, y_batch) = get_next_batch(x_train, y_train, start, end); + + // Run optimization op (backprop) + sess.run(optimizer, new FeedItem(x, x_batch), new FeedItem(y, y_batch)); + + if (iteration % display_freq == 0) + { + // Calculate and display the batch loss and accuracy + var result = sess.run(new[] { loss, accuracy }, new FeedItem(x, x_batch), new FeedItem(y, y_batch)); + loss_val = result[0]; + accuracy_val = result[1]; + print($"iter {iteration.ToString("000")}: Loss={loss_val.ToString("0.0000")}, Training Accuracy={accuracy_val.ToString("P")}"); + } + } + + // Run validation after every epoch + var results1 = sess.run(new[] { loss, accuracy }, new FeedItem(x, mnist.validation.images), new FeedItem(y, mnist.validation.labels)); + loss_val = results1[0]; + accuracy_val = results1[1]; + print("---------------------------------------------------------"); + print($"Epoch: {epoch + 1}, validation loss: {loss_val.ToString("0.0000")}, validation accuracy: {accuracy_val.ToString("P")}"); + print("---------------------------------------------------------"); + } + }); + ``` + +5. **Test** + + After the training is done, we have to test our model to see how good it performs on a new dataset. + + ```csharp + var result = sess.run(new[] { loss, accuracy }, new FeedItem(x, mnist.test.images), new FeedItem(y, mnist.test.labels)); + loss_test = result[0]; + accuracy_test = result[1]; + print("---------------------------------------------------------"); + print($"Test loss: {loss_test.ToString("0.0000")}, test accuracy: {accuracy_test.ToString("P")}"); + print("---------------------------------------------------------"); + ``` + + ![result](../assets/nn-result.png) + + + + diff --git a/docs/source/Placeholder.md b/docs/source/Placeholder.md index 2407bfca..a578a127 100644 --- a/docs/source/Placeholder.md +++ b/docs/source/Placeholder.md @@ -2,7 +2,7 @@ In this chapter we will talk about another common data type in TensorFlow: Placeholder. It is a simplified variable that can be passed to the required value by the session when the graph is run, that is, when you build the graph, you don't need to specify the value of that variable, but delay the session to the beginning. In TensorFlow terminology, we then feed data into the graph through these placeholders. The difference between placeholders and constants is that placeholders can specify coefficient values more flexibly without modifying the code that builds the graph. For example, mathematical constants are suitable for Constant, and some model smoothing values can be specified with Placeholder. -这章我们讲一下TensorFlow里的另一种常用数据类型:占位符。它是一种简化的变量,可以在图运行的时候由会话传入所需要的值,就是说你在构建图的时候,不需要具体指定那个变量的值,而是延迟到会话开始的时候以参数的方式从外部传入初始值。占位符和常量的区别是占位符可以更灵活的指定系数值,而不需要修改构建图的代码。比如数学常量就适合用Constant, 有些模型平滑值可以用Placeholder来指定。 + ```csharp var x = tf.placeholder(tf.int32); diff --git a/docs/source/Preface.md b/docs/source/Preface.md index c924c280..65db8c1d 100644 --- a/docs/source/Preface.md +++ b/docs/source/Preface.md @@ -6,36 +6,10 @@ Why do I start the TensorFlow.NET project? In a few days, it was Christmas in 2018. I watched my children grow up and be sensible every day, and I felt that time passed too fast. IT technology updates are faster than ever, and a variety of front-end technologies are emerging. Big data, Artificial Intelligence and Blockchain, Container technology and Microservices, Distributed Computing and Serverless technology are dazzling. The Amazon AI service interface claims that engineers who don't need any machine learning experience can use it, so that the idea of just calming down for two years and planning to switch to an AI architecture in the future is a splash of cold water. -再过几天就是2018年圣诞节,看着孩子一天天长大并懂事,感慨时间过得太快。IT技术更新换代比以往任何时候都更快,各种前后端技术纷纷涌现。大数据,人工智能和区块链,容器技术和微服务,分布式计算和无服务器技术,让人眼花缭乱。Amazon AI服务接口宣称不需要具有任何机器学习经验的工程师就能使用,让像我这样刚静下心来学习了两年并打算将来转行做AI架构的想法泼了一桶凉水。 - TensorFlow is an open source project for machine learning especially for deep learning. It's used for both research and production at Google company. It's designed according to dataflow programming pattern across a range of tasks. TensorFlow is not just a deep learning library. As long as you can represent your calculation process as a data flow diagram, you can use TensorFlow for distributed computing. TensorFlow uses a computational graph to build a computing network while operating on the graph. Users can write their own upper-level models in Python based on TensorFlow, or extend the underlying C++ custom action code to TensorFlow. -TensorFlow是一个用于机器学习的开源项目,尤其适用于深度学习。 它最初是谷歌公司的用于内部研究和生产的工具,后来开源出来给社区使用。TensorFlow并不仅仅是一个深度学习库,只要可以把你的计算过程表示称一个数据流图的过程,就可以使用TensorFlow来进行分布式计算。TensorFlow用计算图的方式建立计算网络,同时对图进行操作。用户可以基于TensorFlow的基础上用python编写自己的上层模型,也可以扩展底层的C++自定义操作代码添加到TensorFlow中。 - In order to avoid confusion, the unique classes defined in TensorFlow are not translated in this book. For example, Tensor, Graph, Shape will retain the English name. - -为了避免混淆,本书中对TensorFlow中定义的特有类不进行翻译,比如Tensor, Graph, Session, Shape这些词都会保留英文名称。 - - - -Terminology 术语: - -TF: Google TensorFlow - -TF.NET: TensorFlow.NET - -Graph: 计算图 - -Session: 会话 - -Variable: 变量 - -Tensor: 张量 - -Operation: 操作 - -Node: 节点 \ No newline at end of file diff --git a/docs/source/Session.md b/docs/source/Session.md index ffa5882e..d6f24904 100644 --- a/docs/source/Session.md +++ b/docs/source/Session.md @@ -2,13 +2,13 @@ TensorFlow **session** runs parts of the graph across a set of local and remote devices. A session allows to execute graphs or part of graphs. It allocates resources (on one or more machines) for that and holds the actual values of intermediate results and variables. -TensorFlow **Session** 运行预定义的计算图,并且支持跨设备运行和分配GPU。Session可以运行整个计算图或者图的一部分,这样做的好处是对开发模型来话很方便,不需要每次都执行整个图。会话还负责当前计算图的内存分配,保留和传递中间结果。 + ### Running Computations in a Session Let's complete the example in last chapter. To run any of the operations, we need to create a session for that graph. The session will also allocate memory to store the current value of the variable. -让我们完成上一章的例子,在那个例子里我们只是定义了一个图的结构。为了运行这个图,我们需要创建一个Session来根据图定义来分配资源运行它。 + ```csharp with(tf.Graph(), graph => @@ -27,5 +27,3 @@ with(tf.Graph(), graph => ``` The value of our variables is only valid within one session. If we try to get the value in another session. TensorFlow will raise an error of `Attempting to use uninitialized value foo`. Of course, we can use the graph in more than one session, because session copies graph definition to new memory area. We just have to initialize the variables again. The values in the new session will be completely independent from the previous one. - -变量值只会在一个Session里有效。如果我们试图从本Session来访问另一个Session创建的变量和值,就会得到一个`变量未初始化`的错误提示。当然,我们能从多个Session运行同一个计算图,因为计算图只是一个定义,Session初始化的时候会复制整图的定义到新的内存空间里。所以每个Session里的变量值是互相隔离的。 \ No newline at end of file diff --git a/docs/source/Tensor.md b/docs/source/Tensor.md index b460bede..50cc6a44 100644 --- a/docs/source/Tensor.md +++ b/docs/source/Tensor.md @@ -8,16 +8,12 @@ Tensor holds a multi-dimensional array of elements of a single data type which is very similar with numpy's ndarray. When the dimension is zero, it can be called a scalar. When the dimension is 2, it can be called a matrix. When the dimension is greater than 2, it is usually called a tensor. If you are very familiar with numpy, then understanding Tensor will be quite easy. -Tensor是一个具有单一数据类型的多维数组容器,当维度为零时,可以称之为标量,当维度为2时,可以称之为矩阵,当维度大于2时,通常称之为张量。Tensor的数据结构非常类似于numpy里的ndarray。如果你对numpy非常熟悉的话,那么对Tensor的理解会相当容易。 - ##### How to create a Tensor? There are many ways to initialize a Tensor object in TF.NET. It can be initialized from a scalar, string, matrix or tensor. -在TF.NET中有很多种方式可以初始化一个Tensor对象。它可以从一个标量,字符串,矩阵或张量来初始化。 - ```csharp // Create a tensor holds a scalar value var t1 = new Tensor(3); @@ -42,8 +38,6 @@ Console.WriteLine($"t1: {t1}, t2: {t2}, t3: {t3}"); TF uses column major order. If we use NumSharp to generate a 2 x 3 matrix, if we access the data from 0 to 5 in order, we won't get a number of 1-6, but we get the order of 1, 4, 2, 5, 3, 6. a set of numbers. -TF 采用的是按列存储模式,如果我们用NumSharp产生一个2 X 3的矩阵,如果按顺序从0到5访问数据的话,是不会得到1-6的数字的,而是得到1,4, 2, 5, 3, 6这个顺序的一组数字。 - ```cs // Generate a matrix:[[1, 2, 3], [4, 5, 6]] var nd = np.array(1f, 2f, 3f, 4f, 5f, 6f).reshape(2, 3); diff --git a/docs/source/Variable.md b/docs/source/Variable.md index 48eaa9ae..c4f6a6af 100644 --- a/docs/source/Variable.md +++ b/docs/source/Variable.md @@ -2,7 +2,7 @@ The variables in TensorFlow are mainly used to represent variable parameter values in the machine learning model. Variables can be initialized by the `tf.Variable` function. During the graph computation the variables are modified by other operations. Variables exist in the session, as long as they are in the same session, other computing nodes on the network can access the same variable value. Variables use lazy loading and will only request memory space when they are used. -TensorFlow中变量主要用来表示机器学习模型中的可变参数值,变量通过可以通过`tf.Variable` 类进行初始化。在图运行过程中,通过各种操作对变量进行修改。变量存在于会话当中,只要是在同一个会话里,网络上的其它计算结节都可以访问到相同的变量值。变量采用延迟加载的方式,只有使用的时候才会申请内存空间。 + ```csharp var x = tf.Variable(10, name: "x"); @@ -16,4 +16,3 @@ using (var session = tf.Session()) The above code first creates a variable operation, initializes the variable, then runs the session, and finally gets the result. This code is very simple, but it shows the complete process how TensorFlow operates on variables. When creating a variable, you pass a `tensor` as the initial value to the function `Variable()`. TensorFlow provides a series of operators to initialize the tensor, the initial value is a constant or a random value. -以上代码先创建变量操作,初始化变量,再运行会话,最后得到结果。这段代码非常简单,但是它体现了整个TensorFlow对变量操作的完整流程。当创建一个变量时,你将一个`张量`作为初始值传入函数`Variable()`。TensorFlow提供了一系列操作符来初始化张量,初始值是常量或是随机值。 \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index e26f8378..4cddbd6a 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -28,4 +28,5 @@ Welcome to TensorFlow.NET's documentation! LinearRegression LogisticRegression NearestNeighbor - ImageRecognition \ No newline at end of file + ImageRecognition + NeuralNetwork \ No newline at end of file diff --git a/test/TensorFlowNET.Examples/BasicEagerApi.cs b/test/TensorFlowNET.Examples/BasicEagerApi.cs index 35664310..8844e17a 100644 --- a/test/TensorFlowNET.Examples/BasicEagerApi.cs +++ b/test/TensorFlowNET.Examples/BasicEagerApi.cs @@ -56,12 +56,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) { throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicModels/KMeansClustering.cs b/test/TensorFlowNET.Examples/BasicModels/KMeansClustering.cs index b8f01865..a3a2139e 100644 --- a/test/TensorFlowNET.Examples/BasicModels/KMeansClustering.cs +++ b/test/TensorFlowNET.Examples/BasicModels/KMeansClustering.cs @@ -34,14 +34,48 @@ namespace TensorFlowNET.Examples int num_classes = 10; // The 10 digits int num_features = 784; // Each image is 28x28 pixels + float accuray_test = 0f; + public bool Run() { PrepareData(); + var graph = ImportGraph(); + with(tf.Session(graph), sess => + { + Train(sess); + }); + + return accuray_test > 0.70; + } + + public void PrepareData() + { + mnist = MnistDataSet.read_data_sets("mnist", one_hot: true, train_size: train_size, validation_size:validation_size, test_size:test_size); + full_data_x = mnist.train.images; + // download graph meta data + string url = "https://raw.githubusercontent.com/SciSharp/TensorFlow.NET/master/graph/kmeans.meta"; + Web.Download(url, "graph", "kmeans.meta"); + } + + public Graph ImportGraph() + { var graph = tf.Graph().as_default(); tf.train.import_meta_graph("graph/kmeans.meta"); + return graph; + } + + public Graph BuildGraph() + { + throw new NotImplementedException(); + } + + public void Train(Session sess) + { + var graph = tf.Graph(); + // Input images Tensor X = graph.get_operation_by_name("Placeholder"); // tf.placeholder(tf.float32, shape: new TensorShape(-1, num_features)); // Labels (for assigning a label to a centroid and testing) @@ -60,89 +94,65 @@ namespace TensorFlowNET.Examples Tensor cluster_idx = graph.get_operation_by_name("Squeeze_1"); NDArray result = null; - with(tf.Session(graph), sess => - { - sess.run(init_vars, new FeedItem(X, full_data_x)); - sess.run(init_op, new FeedItem(X, full_data_x)); - - // Training - var sw = new Stopwatch(); - - foreach (var i in range(1, num_steps + 1)) - { - sw.Restart(); - result = sess.run(new ITensorOrOperation[] { train_op, avg_distance, cluster_idx }, new FeedItem(X, full_data_x)); - sw.Stop(); - - if (i % 4 == 0 || i == 1) - print($"Step {i}, Avg Distance: {result[1]} Elapse: {sw.ElapsedMilliseconds}ms"); - } - - var idx = result[2].Data(); - - // Assign a label to each centroid - // Count total number of labels per centroid, using the label of each training - // sample to their closest centroid (given by 'idx') - var counts = np.zeros((k, num_classes), np.float32); - - sw.Start(); - foreach (var i in range(idx.Length)) - { - var x = mnist.train.labels[i]; - counts[idx[i]] += x; - } - - sw.Stop(); - print($"Assign a label to each centroid took {sw.ElapsedMilliseconds}ms"); - - // Assign the most frequent label to the centroid - var labels_map_array = np.argmax(counts, 1); - var labels_map = tf.convert_to_tensor(labels_map_array); + sess.run(init_vars, new FeedItem(X, full_data_x)); + sess.run(init_op, new FeedItem(X, full_data_x)); - // Evaluation ops - // Lookup: centroid_id -> label - var cluster_label = tf.nn.embedding_lookup(labels_map, cluster_idx); - - // Compute accuracy - var correct_prediction = tf.equal(cluster_label, tf.cast(tf.argmax(Y, 1), tf.int32)); - var cast = tf.cast(correct_prediction, tf.float32); - var accuracy_op = tf.reduce_mean(cast); - - // Test Model - var (test_x, test_y) = (mnist.test.images, mnist.test.labels); - result = sess.run(accuracy_op, new FeedItem(X, test_x), new FeedItem(Y, test_y)); - print($"Test Accuracy: {result}"); - }); + // Training + var sw = new Stopwatch(); - return (float)result > 0.70; - } + foreach (var i in range(1, num_steps + 1)) + { + sw.Restart(); + result = sess.run(new ITensorOrOperation[] { train_op, avg_distance, cluster_idx }, new FeedItem(X, full_data_x)); + sw.Stop(); - public void PrepareData() - { - mnist = MnistDataSet.read_data_sets("mnist", one_hot: true, train_size: train_size, validation_size:validation_size, test_size:test_size); - full_data_x = mnist.train.images; + if (i % 4 == 0 || i == 1) + print($"Step {i}, Avg Distance: {result[1]} Elapse: {sw.ElapsedMilliseconds}ms"); + } - // download graph meta data - string url = "https://raw.githubusercontent.com/SciSharp/TensorFlow.NET/master/graph/kmeans.meta"; - Web.Download(url, "graph", "kmeans.meta"); - } + var idx = result[2].Data(); - public Graph ImportGraph() - { - throw new NotImplementedException(); - } + // Assign a label to each centroid + // Count total number of labels per centroid, using the label of each training + // sample to their closest centroid (given by 'idx') + var counts = np.zeros((k, num_classes), np.float32); - public Graph BuildGraph() - { - throw new NotImplementedException(); + sw.Start(); + foreach (var i in range(idx.Length)) + { + var x = mnist.train.labels[i]; + counts[idx[i]] += x; + } + + sw.Stop(); + print($"Assign a label to each centroid took {sw.ElapsedMilliseconds}ms"); + + // Assign the most frequent label to the centroid + var labels_map_array = np.argmax(counts, 1); + var labels_map = tf.convert_to_tensor(labels_map_array); + + // Evaluation ops + // Lookup: centroid_id -> label + var cluster_label = tf.nn.embedding_lookup(labels_map, cluster_idx); + + // Compute accuracy + var correct_prediction = tf.equal(cluster_label, tf.cast(tf.argmax(Y, 1), tf.int32)); + var cast = tf.cast(correct_prediction, tf.float32); + var accuracy_op = tf.reduce_mean(cast); + + // Test Model + var (test_x, test_y) = (mnist.test.images, mnist.test.labels); + result = sess.run(accuracy_op, new FeedItem(X, test_x), new FeedItem(Y, test_y)); + accuray_test = result; + print($"Test Accuracy: {accuray_test}"); } - public bool Train() + public void Predict(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs b/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs index 59a36530..c1f69675 100644 --- a/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs +++ b/test/TensorFlowNET.Examples/BasicModels/LinearRegression.cs @@ -122,12 +122,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs b/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs index d8e9444a..53a4acc9 100644 --- a/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs +++ b/test/TensorFlowNET.Examples/BasicModels/LogisticRegression.cs @@ -132,30 +132,27 @@ namespace TensorFlowNET.Examples initializer_nodes: ""); } - public void Predict() + public void Predict(Session sess) { var graph = new Graph().as_default(); graph.Import(Path.Join("logistic_regression", "model.pb")); - with(tf.Session(graph), sess => - { - // restoring the model - // var saver = tf.train.import_meta_graph("logistic_regression/tensorflowModel.ckpt.meta"); - // saver.restore(sess, tf.train.latest_checkpoint('logistic_regression')); - var pred = graph.OperationByName("Softmax"); - var output = pred.outputs[0]; - var x = graph.OperationByName("Placeholder"); - var input = x.outputs[0]; - - // predict - var (batch_xs, batch_ys) = mnist.train.next_batch(10); - var results = sess.run(output, new FeedItem(input, batch_xs[np.arange(1)])); - - if (results.argmax() == (batch_ys[0] as NDArray).argmax()) - print("predicted OK!"); - else - throw new ValueError("predict error, should be 90% accuracy"); - }); + // restoring the model + // var saver = tf.train.import_meta_graph("logistic_regression/tensorflowModel.ckpt.meta"); + // saver.restore(sess, tf.train.latest_checkpoint('logistic_regression')); + var pred = graph.OperationByName("Softmax"); + var output = pred.outputs[0]; + var x = graph.OperationByName("Placeholder"); + var input = x.outputs[0]; + + // predict + var (batch_xs, batch_ys) = mnist.train.next_batch(10); + var results = sess.run(output, new FeedItem(input, batch_xs[np.arange(1)])); + + if (results.argmax() == (batch_ys[0] as NDArray).argmax()) + print("predicted OK!"); + else + throw new ValueError("predict error, should be 90% accuracy"); } public Graph ImportGraph() @@ -168,12 +165,12 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - bool IExample.Predict() + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicModels/NaiveBayesClassifier.cs b/test/TensorFlowNET.Examples/BasicModels/NaiveBayesClassifier.cs index 1f891b8c..7f755db1 100644 --- a/test/TensorFlowNET.Examples/BasicModels/NaiveBayesClassifier.cs +++ b/test/TensorFlowNET.Examples/BasicModels/NaiveBayesClassifier.cs @@ -189,12 +189,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs b/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs index 07838927..6cdf6098 100644 --- a/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs +++ b/test/TensorFlowNET.Examples/BasicModels/NearestNeighbor.cs @@ -86,12 +86,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicModels/NeuralNetXor.cs b/test/TensorFlowNET.Examples/BasicModels/NeuralNetXor.cs index 6b8bf10f..db6b92b7 100644 --- a/test/TensorFlowNET.Examples/BasicModels/NeuralNetXor.cs +++ b/test/TensorFlowNET.Examples/BasicModels/NeuralNetXor.cs @@ -162,12 +162,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/BasicOperations.cs b/test/TensorFlowNET.Examples/BasicOperations.cs index 39e7ce7e..8176fb0f 100644 --- a/test/TensorFlowNET.Examples/BasicOperations.cs +++ b/test/TensorFlowNET.Examples/BasicOperations.cs @@ -171,12 +171,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/HelloWorld.cs b/test/TensorFlowNET.Examples/HelloWorld.cs index f963e3b3..b6973503 100644 --- a/test/TensorFlowNET.Examples/HelloWorld.cs +++ b/test/TensorFlowNET.Examples/HelloWorld.cs @@ -50,12 +50,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/IExample.cs b/test/TensorFlowNET.Examples/IExample.cs index 3c9c24df..8b07d6ed 100644 --- a/test/TensorFlowNET.Examples/IExample.cs +++ b/test/TensorFlowNET.Examples/IExample.cs @@ -29,9 +29,10 @@ namespace TensorFlowNET.Examples /// Build dataflow graph, train and predict /// /// - bool Train(); + void Train(Session sess); + void Test(Session sess); - bool Predict(); + void Predict(Session sess); Graph ImportGraph(); diff --git a/test/TensorFlowNET.Examples/ImageProcess/DigitRecognitionNN.cs b/test/TensorFlowNET.Examples/ImageProcess/DigitRecognitionNN.cs index 0e8216fd..885abd2e 100644 --- a/test/TensorFlowNET.Examples/ImageProcess/DigitRecognitionNN.cs +++ b/test/TensorFlowNET.Examples/ImageProcess/DigitRecognitionNN.cs @@ -37,16 +37,21 @@ namespace TensorFlowNET.Examples.ImageProcess Operation optimizer; int display_freq = 100; + float accuracy_test = 0f; + float loss_test = 1f; public bool Run() { - bool successful = false; - PrepareData(); BuildGraph(); - successful = Train(); - return successful; + with(tf.Session(), sess => + { + Train(sess); + Test(sess); + }); + + return loss_test < 0.09 && accuracy_test > 0.95; } public Graph BuildGraph() @@ -98,61 +103,67 @@ namespace TensorFlowNET.Examples.ImageProcess public Graph ImportGraph() => throw new NotImplementedException(); - public bool Predict() => throw new NotImplementedException(); + public void Predict(Session sess) => throw new NotImplementedException(); public void PrepareData() { mnist = MnistDataSet.read_data_sets("mnist", one_hot: true); } - public bool Train() + public void Train(Session sess) { // Number of training iterations in each epoch var num_tr_iter = mnist.train.labels.len / batch_size; - return with(tf.Session(), sess => - { - var init = tf.global_variables_initializer(); - sess.run(init); - float loss_val = 100.0f; - float accuracy_val = 0f; + var init = tf.global_variables_initializer(); + sess.run(init); + + float loss_val = 100.0f; + float accuracy_val = 0f; + + foreach (var epoch in range(epochs)) + { + print($"Training epoch: {epoch + 1}"); + // Randomly shuffle the training data at the beginning of each epoch + var (x_train, y_train) = randomize(mnist.train.images, mnist.train.labels); - foreach (var epoch in range(epochs)) + foreach (var iteration in range(num_tr_iter)) { - print($"Training epoch: {epoch + 1}"); - // Randomly shuffle the training data at the beginning of each epoch - var (x_train, y_train) = randomize(mnist.train.images, mnist.train.labels); + var start = iteration * batch_size; + var end = (iteration + 1) * batch_size; + var (x_batch, y_batch) = get_next_batch(x_train, y_train, start, end); + + // Run optimization op (backprop) + sess.run(optimizer, new FeedItem(x, x_batch), new FeedItem(y, y_batch)); - foreach (var iteration in range(num_tr_iter)) + if (iteration % display_freq == 0) { - var start = iteration * batch_size; - var end = (iteration + 1) * batch_size; - var (x_batch, y_batch) = get_next_batch(x_train, y_train, start, end); - - // Run optimization op (backprop) - sess.run(optimizer, new FeedItem(x, x_batch), new FeedItem(y, y_batch)); - - if (iteration % display_freq == 0) - { - // Calculate and display the batch loss and accuracy - var result = sess.run(new[] { loss, accuracy }, new FeedItem(x, x_batch), new FeedItem(y, y_batch)); - loss_val = result[0]; - accuracy_val = result[1]; - print($"iter {iteration.ToString("000")}: Loss={loss_val.ToString("0.0000")}, Training Accuracy={accuracy_val.ToString("P")}"); - } + // Calculate and display the batch loss and accuracy + var result = sess.run(new[] { loss, accuracy }, new FeedItem(x, x_batch), new FeedItem(y, y_batch)); + loss_val = result[0]; + accuracy_val = result[1]; + print($"iter {iteration.ToString("000")}: Loss={loss_val.ToString("0.0000")}, Training Accuracy={accuracy_val.ToString("P")}"); } - - // Run validation after every epoch - var results1 = sess.run(new[] { loss, accuracy }, new FeedItem(x, mnist.validation.images), new FeedItem(y, mnist.validation.labels)); - loss_val = results1[0]; - accuracy_val = results1[1]; - print("---------------------------------------------------------"); - print($"Epoch: {epoch + 1}, validation loss: {loss_val.ToString("0.0000")}, validation accuracy: {accuracy_val.ToString("P")}"); - print("---------------------------------------------------------"); } - return accuracy_val > 0.95; - }); + // Run validation after every epoch + var results1 = sess.run(new[] { loss, accuracy }, new FeedItem(x, mnist.validation.images), new FeedItem(y, mnist.validation.labels)); + loss_val = results1[0]; + accuracy_val = results1[1]; + print("---------------------------------------------------------"); + print($"Epoch: {epoch + 1}, validation loss: {loss_val.ToString("0.0000")}, validation accuracy: {accuracy_val.ToString("P")}"); + print("---------------------------------------------------------"); + } + } + + public void Test(Session sess) + { + var result = sess.run(new[] { loss, accuracy }, new FeedItem(x, mnist.test.images), new FeedItem(y, mnist.test.labels)); + loss_test = result[0]; + accuracy_test = result[1]; + print("---------------------------------------------------------"); + print($"Test loss: {loss_test.ToString("0.0000")}, test accuracy: {accuracy_test.ToString("P")}"); + print("---------------------------------------------------------"); } private (NDArray, NDArray) randomize(NDArray x, NDArray y) diff --git a/test/TensorFlowNET.Examples/ImageProcess/ImageBackgroundRemoval.cs b/test/TensorFlowNET.Examples/ImageProcess/ImageBackgroundRemoval.cs index 29e69a8d..12fd526f 100644 --- a/test/TensorFlowNET.Examples/ImageProcess/ImageBackgroundRemoval.cs +++ b/test/TensorFlowNET.Examples/ImageProcess/ImageBackgroundRemoval.cs @@ -68,12 +68,17 @@ namespace TensorFlowNET.Examples.ImageProcess throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/ImageProcess/ImageRecognitionInception.cs b/test/TensorFlowNET.Examples/ImageProcess/ImageRecognitionInception.cs index b96bf494..ec6e06e7 100644 --- a/test/TensorFlowNET.Examples/ImageProcess/ImageRecognitionInception.cs +++ b/test/TensorFlowNET.Examples/ImageProcess/ImageRecognitionInception.cs @@ -125,12 +125,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/ImageProcess/InceptionArchGoogLeNet.cs b/test/TensorFlowNET.Examples/ImageProcess/InceptionArchGoogLeNet.cs index 63a69425..985d855d 100644 --- a/test/TensorFlowNET.Examples/ImageProcess/InceptionArchGoogLeNet.cs +++ b/test/TensorFlowNET.Examples/ImageProcess/InceptionArchGoogLeNet.cs @@ -118,12 +118,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/ImageProcess/ObjectDetection.cs b/test/TensorFlowNET.Examples/ImageProcess/ObjectDetection.cs index 485c5b30..3124d274 100644 --- a/test/TensorFlowNET.Examples/ImageProcess/ObjectDetection.cs +++ b/test/TensorFlowNET.Examples/ImageProcess/ObjectDetection.cs @@ -13,7 +13,6 @@ using static Tensorflow.Python; namespace TensorFlowNET.Examples { - public class ObjectDetection : IExample { public bool Enabled { get; set; } = true; @@ -155,12 +154,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) + { + throw new NotImplementedException(); + } + + public void Predict(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/ImageProcess/RetrainImageClassifier.cs b/test/TensorFlowNET.Examples/ImageProcess/RetrainImageClassifier.cs index 53cea791..b1631a4a 100644 --- a/test/TensorFlowNET.Examples/ImageProcess/RetrainImageClassifier.cs +++ b/test/TensorFlowNET.Examples/ImageProcess/RetrainImageClassifier.cs @@ -681,12 +681,17 @@ namespace TensorFlowNET.Examples.ImageProcess throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/BinaryTextClassification.cs b/test/TensorFlowNET.Examples/TextProcess/BinaryTextClassification.cs index 99ac6d94..5f81e12d 100644 --- a/test/TensorFlowNET.Examples/TextProcess/BinaryTextClassification.cs +++ b/test/TensorFlowNET.Examples/TextProcess/BinaryTextClassification.cs @@ -148,12 +148,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/CnnTextClassification.cs b/test/TensorFlowNET.Examples/TextProcess/CnnTextClassification.cs index 58e57065..1819f740 100644 --- a/test/TensorFlowNET.Examples/TextProcess/CnnTextClassification.cs +++ b/test/TensorFlowNET.Examples/TextProcess/CnnTextClassification.cs @@ -37,14 +37,18 @@ namespace TensorFlowNET.Examples private const int CHAR_MAX_LEN = 1014; protected float loss_value = 0; + double max_accuracy = 0; + int vocabulary_size = 50000; NDArray train_x, valid_x, train_y, valid_y; public bool Run() { PrepareData(); + var graph = IsImportingGraph ? ImportGraph() : BuildGraph(); + with(tf.Session(graph), sess => Train(sess)); - return Train(); + return max_accuracy > 0.9; } // TODO: this originally is an SKLearn utility function. it randomizes train and test which we don't do here @@ -235,7 +239,6 @@ namespace TensorFlowNET.Examples var train_batches = batch_iter(train_x, train_y, BATCH_SIZE, NUM_EPOCHS); var num_batches_per_epoch = (len(train_x) - 1) / BATCH_SIZE + 1; - double max_accuracy = 0; Tensor is_training = graph.OperationByName("is_training"); Tensor model_x = graph.OperationByName("x"); @@ -301,13 +304,17 @@ namespace TensorFlowNET.Examples return max_accuracy > 0.9; } - public bool Train() + public void Train(Session sess) { - var graph = IsImportingGraph ? ImportGraph() : BuildGraph(); - return with(tf.Session(graph), sess => Train(sess, graph)); + Train(sess, sess.graph); + } + + public void Predict(Session sess) + { + throw new NotImplementedException(); } - public bool Predict() + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/NER/BiLstmCrfNer.cs b/test/TensorFlowNET.Examples/TextProcess/NER/BiLstmCrfNer.cs index 26626c1a..cb3aa30e 100644 --- a/test/TensorFlowNET.Examples/TextProcess/NER/BiLstmCrfNer.cs +++ b/test/TensorFlowNET.Examples/TextProcess/NER/BiLstmCrfNer.cs @@ -44,12 +44,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/NER/CRF.cs b/test/TensorFlowNET.Examples/TextProcess/NER/CRF.cs index 1fbfddb6..bb23c664 100644 --- a/test/TensorFlowNET.Examples/TextProcess/NER/CRF.cs +++ b/test/TensorFlowNET.Examples/TextProcess/NER/CRF.cs @@ -40,12 +40,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/NER/LstmCrfNer.cs b/test/TensorFlowNET.Examples/TextProcess/NER/LstmCrfNer.cs index 1aa1e44a..0cf75d2e 100644 --- a/test/TensorFlowNET.Examples/TextProcess/NER/LstmCrfNer.cs +++ b/test/TensorFlowNET.Examples/TextProcess/NER/LstmCrfNer.cs @@ -217,12 +217,17 @@ namespace TensorFlowNET.Examples.Text.NER throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/NamedEntityRecognition.cs b/test/TensorFlowNET.Examples/TextProcess/NamedEntityRecognition.cs index 33bee661..10615e03 100644 --- a/test/TensorFlowNET.Examples/TextProcess/NamedEntityRecognition.cs +++ b/test/TensorFlowNET.Examples/TextProcess/NamedEntityRecognition.cs @@ -16,7 +16,7 @@ namespace TensorFlowNET.Examples public bool IsImportingGraph { get; set; } = false; - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } @@ -41,7 +41,12 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/TextClassificationTrain.cs b/test/TensorFlowNET.Examples/TextProcess/TextClassificationTrain.cs index 42841664..800cd5a3 100644 --- a/test/TensorFlowNET.Examples/TextProcess/TextClassificationTrain.cs +++ b/test/TensorFlowNET.Examples/TextProcess/TextClassificationTrain.cs @@ -280,12 +280,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); } diff --git a/test/TensorFlowNET.Examples/TextProcess/Word2Vec.cs b/test/TensorFlowNET.Examples/TextProcess/Word2Vec.cs index dc3f27f3..4884a76a 100644 --- a/test/TensorFlowNET.Examples/TextProcess/Word2Vec.cs +++ b/test/TensorFlowNET.Examples/TextProcess/Word2Vec.cs @@ -214,12 +214,17 @@ namespace TensorFlowNET.Examples throw new NotImplementedException(); } - public bool Train() + public void Train(Session sess) { throw new NotImplementedException(); } - public bool Predict() + public void Predict(Session sess) + { + throw new NotImplementedException(); + } + + public void Test(Session sess) { throw new NotImplementedException(); }