From f49ab8459c4dc86b9fe97249b929453dd6185df4 Mon Sep 17 00:00:00 2001 From: Oceania2018 Date: Sun, 14 Jul 2019 21:51:24 -0500 Subject: [PATCH] cnn docs updated. --- TensorFlow.NET.sln | 6 +- docs/README.md | 7 +- docs/assets/cnn-result.png | Bin 0 -> 29859 bytes docs/assets/cnn.png | Bin 0 -> 122690 bytes docs/source/ConvolutionNeuralNetwork.md | 349 ++++++++++++++++++ docs/source/index.rst | 3 +- .../TensorFlowNET.Core.csproj | 15 +- .../ImageProcessing/DigitRecognitionCNN.cs | 8 +- 8 files changed, 374 insertions(+), 14 deletions(-) create mode 100644 docs/assets/cnn-result.png create mode 100644 docs/assets/cnn.png create mode 100644 docs/source/ConvolutionNeuralNetwork.md diff --git a/TensorFlow.NET.sln b/TensorFlow.NET.sln index 19a66b80..fd92608d 100644 --- a/TensorFlow.NET.sln +++ b/TensorFlow.NET.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.645 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29102.190 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TensorFlowNET.UnitTest", "test\TensorFlowNET.UnitTest\TensorFlowNET.UnitTest.csproj", "{029A8CF1-CF95-4DCB-98AA-9D3D96A83B3E}" EndProject @@ -17,7 +17,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Keras.UnitTest", "test\Kera EndProject Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "TensorFlowNET.Examples.FSharp", "test\TensorFlowNET.Examples.FSharp\TensorFlowNET.Examples.FSharp.fsproj", "{62BC3801-F0D3-44A9-A0AC-712F40C8F961}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TensorFlowNet.Benchmark", "src\TensorFlowNet.Benchmarks\TensorFlowNet.Benchmark.csproj", "{68861442-971A-4196-876E-C9330F0B3C54}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TensorFlowNET.Benchmark", "src\TensorFlowNet.Benchmarks\TensorFlowNET.Benchmark.csproj", "{68861442-971A-4196-876E-C9330F0B3C54}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/docs/README.md b/docs/README.md index 0d3fa1ed..0e3c0048 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,4 +13,9 @@ sphinx-quickstarts ### Build the docs ```cmd make html -``` \ No newline at end of file +``` + + + +Access the compiled docs: [https://tensorflownet.readthedocs.io](https://tensorflownet.readthedocs.io/) + diff --git a/docs/assets/cnn-result.png b/docs/assets/cnn-result.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cea1e481e6aba0b4a1420270eeb23142b21ff9 GIT binary patch literal 29859 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 WM9F=6;%@QQU-Yz%v`Ws~JpNw}_eJRd literal 0 HcmV?d00001 diff --git a/docs/assets/cnn.png b/docs/assets/cnn.png new file mode 100644 index 0000000000000000000000000000000000000000..78c7a68086961a19b2ab71769d4766ed3cd012f3 GIT binary patch literal 122690 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.argmax(y, 1)))); + var dataset = x.reshape(x.shape[0], img_size, img_size, num_ch).astype(np.float32); + //y[0] = np.arange(num_class) == y[0]; + //var labels = (np.arange(num_class) == y.reshape(y.shape[0], 1, y.shape[1])).astype(np.float32); + return (dataset, y); + } + ``` + + + + **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 display_freq = 200; // Frequency of displaying the training results + ``` + +3. **Network configuration** + + 1st convolutional layer: + + ```csharp + int filter_size1 = 5; // Convolution filters are 5 x 5 pixels. + int num_filters1 = 16; // There are 16 of these filters. + int stride1 = 1; // The stride of the sliding window + ``` + + 2nd convolutional layer: + + ```csharp + int filter_size2 = 5; // Convolution filters are 5 x 5 pixels. + int num_filters2 = 32;// There are 32 of these filters. + int stride2 = 1; // The stride of the sliding window + ``` + + Fully-connected layer: + + ```csharp + h1 = 128 # Number of neurons in fully-connected layer. + ``` + + + +4. **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 + // Create a weight variable with appropriate initialization + private RefVariable weight_variable(string name, int[] shape) + { + var initer = tf.truncated_normal_initializer(stddev: 0.01f); + return tf.get_variable(name, + dtype: tf.float32, + shape: shape, + initializer: initer); + } + + // Create a bias variable with appropriate initialization + private RefVariable bias_variable(string name, int[] shape) + { + var initial = tf.constant(0f, shape: shape, dtype: tf.float32); + return tf.get_variable(name, + dtype: tf.float32, + initializer: initial); + } + ``` + + **2D convolution layer**: This layer creates a convolution kernel that is convolved with the layer input to produce a tensor of outputs. + + ```csharp + private Tensor conv_layer(Tensor x, int filter_size, int num_filters, int stride, string name) + { + return with(tf.variable_scope(name), delegate { + + var num_in_channel = x.shape[x.NDims - 1]; + var shape = new[] { filter_size, filter_size, num_in_channel, num_filters }; + var W = weight_variable("W", shape); + // var tf.summary.histogram("weight", W); + var b = bias_variable("b", new[] { num_filters }); + // tf.summary.histogram("bias", b); + var layer = tf.nn.conv2d(x, W, + strides: new[] { 1, stride, stride, 1 }, + padding: "SAME"); + layer += b; + return tf.nn.relu(layer); + }); + } + ``` + + **max-pooling layer**: Max pooling operation for temporal data. + + ```csharp + private Tensor max_pool(Tensor x, int ksize, int stride, string name) + { + return tf.nn.max_pool(x, + ksize: new[] { 1, ksize, ksize, 1 }, + strides: new[] { 1, stride, stride, 1 }, + padding: "SAME", + name: name); + } + ``` + + **flatten_layer**: Flattens the output of the convolutional layer to be fed into fully-connected layer. + + ```csharp + private Tensor flatten_layer(Tensor layer) + { + return with(tf.variable_scope("Flatten_layer"), delegate + { + var layer_shape = layer.TensorShape; + var num_features = layer_shape[new Slice(1, 4)].Size; + var layer_flat = tf.reshape(layer, new[] { -1, num_features }); + + return layer_flat; + }); + } + ``` + + + + **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) + { + return with(tf.variable_scope(name), delegate + { + var in_dim = x.shape[1]; + + var W = weight_variable("W_" + name, shape: new[] { in_dim, num_units }); + var b = bias_variable("b_" + name, new[] { num_units }); + + 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 + with(tf.name_scope("Input"), delegate + { + // Placeholders for inputs (x) and outputs(y) + x = tf.placeholder(tf.float32, shape: (-1, img_h, img_w, n_channels), name: "X"); + y = tf.placeholder(tf.float32, shape: (-1, n_classes), name: "Y"); + }); + ``` + + 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 + var conv1 = conv_layer(x, filter_size1, num_filters1, stride1, name: "conv1"); + var pool1 = max_pool(conv1, ksize: 2, stride: 2, name: "pool1"); + var conv2 = conv_layer(pool1, filter_size2, num_filters2, stride2, name: "conv2"); + var pool2 = max_pool(conv2, ksize: 2, stride: 2, name: "pool2"); + var layer_flat = flatten_layer(pool2); + var fc1 = fc_layer(layer_flat, h1, "FC1", use_relu: true); + var output_logits = fc_layer(fc1, n_classes, "OUT", use_relu: false); + ``` + + **loss function, optimizer, accuracy, prediction**: After creating the network, we have to calculate the loss and optimize it, we have to calculate the `prediction` and `accuracy`. + + ```csharp + with(tf.variable_scope("Train"), delegate + { + + + with(tf.variable_scope("Optimizer"), delegate + { + optimizer = tf.train.AdamOptimizer(learning_rate: learning_rate, name: "Adam-op").minimize(loss); + }); + + with(tf.variable_scope("Accuracy"), delegate + { + 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"); + }); + + with(tf.variable_scope("Prediction"), delegate + { + cls_prediction = tf.argmax(output_logits, axis: 1, name: "predictions"); + }); + }); + ``` + + **initialize variables**: We have to invoke a variable initializer operation to initialize all variables. + +```csharp + var init = tf.global_variables_initializer(); +``` + +5. **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 = y_train.len / batch_size; + + 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 + (x_train, y_train) = mnist.Randomize(x_train, y_train); + + foreach (var iteration in range(num_tr_iter)) + { + var start = iteration * batch_size; + var end = (iteration + 1) * batch_size; + var (x_batch, y_batch) = mnist.GetNextBatch(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, x_valid), new FeedItem(y, y_valid)); + 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("---------------------------------------------------------"); + } + ``` + +6. **Test** + + After the training is done, we have to test our model to see how good it performs on a new dataset. + + ```csharp + public void Test(Session sess) + { + var result = sess.run(new[] { loss, accuracy }, new FeedItem(x, x_test), new FeedItem(y, y_test)); + loss_test = result[0]; + accuracy_test = result[1]; + print("---------------------------------------------------------"); + print($"Test loss: {loss_test.ToString("0.0000")}, test accuracy: {accuracy_test.ToString("P")}"); + print("---------------------------------------------------------"); + } + ``` + +![cnn-reuslt](../assets/cnn-result.png) \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index 4cddbd6a..20126917 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -29,4 +29,5 @@ Welcome to TensorFlow.NET's documentation! LogisticRegression NearestNeighbor ImageRecognition - NeuralNetwork \ No newline at end of file + NeuralNetwork + ConvolutionNeuralNetwork \ No newline at end of file diff --git a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj index cc8ea8ea..04f4f1e7 100644 --- a/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj +++ b/src/TensorFlowNET.Core/TensorFlowNET.Core.csproj @@ -5,7 +5,7 @@ TensorFlow.NET Tensorflow 1.14.0 - 0.9.0 + 0.10.0-alpha Haiping Chen, Meinrad Recheis SciSharp STACK true @@ -18,14 +18,15 @@ Google's TensorFlow full binding in .NET Standard. Docs: https://tensorflownet.readthedocs.io Learn more about .NET AI: https://medium.com/scisharp - 0.9.0.0 - Changes since v0.8.3: + 0.10.0.0 + Changes since v0.9.0: -1. Added full connected Neural Network example. -2. Added word CNN Text Classification example. -3. Fixed AdaOptimizer issue. +1. Added full connected Convolution Neural Network example. +2. Take dependency on SciSharp.TensorFlow.Redist. +3. Create Tensor from array without copying. +4. Fix path issue of Transfer Learning example on Linux. 7.2 - 0.9.0.0 + 0.10.0.0 LICENSE false diff --git a/test/TensorFlowNET.Examples/ImageProcessing/DigitRecognitionCNN.cs b/test/TensorFlowNET.Examples/ImageProcessing/DigitRecognitionCNN.cs index c637e09f..cb6d7898 100644 --- a/test/TensorFlowNET.Examples/ImageProcessing/DigitRecognitionCNN.cs +++ b/test/TensorFlowNET.Examples/ImageProcessing/DigitRecognitionCNN.cs @@ -40,7 +40,6 @@ namespace TensorFlowNET.Examples.ImageProcess string logs_path = "logs"; const int img_h = 28, img_w = 28; // MNIST images are 28x28 - 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 int n_channels = 1; @@ -64,7 +63,6 @@ namespace TensorFlowNET.Examples.ImageProcess // Fully-connected layer. int h1 = 128; // Number of neurons in fully-connected layer. - Tensor x, y; Tensor loss, accuracy, cls_prediction; Operation optimizer; @@ -254,6 +252,12 @@ namespace TensorFlowNET.Examples.ImageProcess }); } + /// + /// Create a weight variable with appropriate initialization + /// + /// + /// + /// private RefVariable weight_variable(string name, int[] shape) { var initer = tf.truncated_normal_initializer(stddev: 0.01f);