From 2f3532f58c1380558204a2d2bcbed725dc40c5d3 Mon Sep 17 00:00:00 2001 From: Roshan Swain Date: Wed, 30 Jun 2021 14:29:14 +0530 Subject: [PATCH 1/5] removed unnecessary files --- .../california_housing_price_predicition_with_lr.cpp | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 california_housing_price_predicition_with_linear_regression/california_housing_price_predicition_with_lr.cpp diff --git a/california_housing_price_predicition_with_linear_regression/california_housing_price_predicition_with_lr.cpp b/california_housing_price_predicition_with_linear_regression/california_housing_price_predicition_with_lr.cpp deleted file mode 100644 index e69de29b..00000000 From e4f05973967974454adc308fee4347ff59b2ba5c Mon Sep 17 00:00:00 2001 From: Roshan Swain Date: Wed, 30 Jun 2021 16:39:58 +0530 Subject: [PATCH 2/5] added initial notebook on gans --- ...ng_handwritten_digits_mnist_with_gan.ipynb | 404 ++++++++++++++++++ 1 file changed, 404 insertions(+) create mode 100644 generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb diff --git a/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb b/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb new file mode 100644 index 00000000..1a335bab --- /dev/null +++ b/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb @@ -0,0 +1,404 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 34, + "id": "c23013fc", + "metadata": {}, + "outputs": [], + "source": [ + "#include\n", + "#include\n", + "#include\n", + "#include\n", + "#include\n", + "#include" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "dccd0b37", + "metadata": {}, + "outputs": [], + "source": [ + "#include" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "ad7ab4c6", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace mlpack;\n", + "using namespace mlpack::ann;\n", + "using namespace arma;\n", + "using namespace std;\n", + "using namespace ens;" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "7ed7a903", + "metadata": {}, + "outputs": [], + "source": [ + "arma::Row getLabels(arma::mat predOut){\n", + " arma::Row predLabels(predOut.n_cols);\n", + " for( arma::uword i = 0; i < predOut.n_cols; ++i){\n", + " predLabels(i) = predOut.col(i).index_max();\n", + " }\n", + " return predLabels;\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "131fe748", + "metadata": {}, + "outputs": [], + "source": [ + "constexpr double RATIO = 0.1;\n", + "constexpr int MAX_ITERATIONS = 0;\n", + "constexpr double STEP_SIZE = 1.2e-3;\n", + "constexpr int BATCH_SIZE = 50;" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "697a8d63", + "metadata": {}, + "outputs": [], + "source": [ + "arma::mat dataset;" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "64ee4e72", + "metadata": {}, + "outputs": [], + "source": [ + "data::Load(\"/home/viole/swaingotnochill/examples/generating_hand_written_digits_mnist_with_gan/digit-recognizer/train.csv\", dataset, true);" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d8a3d8da", + "metadata": {}, + "outputs": [], + "source": [ + "arma::mat train, valid;" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "da10fdac", + "metadata": {}, + "outputs": [], + "source": [ + "data::Split(dataset, train, valid, RATIO);" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a6a484e7", + "metadata": {}, + "outputs": [], + "source": [ + "const arma::mat trainX = train.submat(1, 0, train.n_rows - 1, train.n_cols - 1);\n", + "const arma::mat validX = valid.submat(1, 0, valid.n_rows - 1, valid.n_cols - 1);" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "db267de6", + "metadata": {}, + "outputs": [], + "source": [ + "const arma::mat trainY = train.row(0);\n", + "const arma::mat validY = valid.row(0);" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "7eb2907b", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace mlpack::ann;\n", + "FFN, RandomInitialization> model;" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "ffc66454", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "In file included from input_line_7:5:\n", + "\u001b[1m/home/viole/anaconda3/envs/notebook/include/mlpack/methods/ann/ffn.hpp:290:36: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mno member named 'push_back' in\n", + " 'std::vector,\n", + " arma::Mat > *,\n", + " mlpack::ann::AdaptiveMeanPooling,\n", + " arma::Mat > *, mlpack::ann::Add,\n", + " arma::Mat > *, mlpack::ann::AddMerge,\n", + " arma::Mat> *, mlpack::ann::AlphaDropout,\n", + " arma::Mat > *,\n", + " mlpack::ann::AtrousConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BaseLayer,\n", + " arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BatchNorm, arma::Mat > *,\n", + " mlpack::ann::BilinearInterpolation,\n", + " arma::Mat > *, mlpack::ann::CELU,\n", + " arma::Mat > *, mlpack::ann::Concat,\n", + " arma::Mat> *, mlpack::ann::Concatenate,\n", + " arma::Mat > *,\n", + " mlpack::ann::ConcatPerformance,\n", + " arma::Mat >, arma::Mat, arma::Mat > *,\n", + " mlpack::ann::Constant, arma::Mat > *,\n", + " mlpack::ann::Convolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat > *,\n", + " mlpack::ann::CReLU, arma::Mat > *,\n", + " mlpack::ann::DropConnect, arma::Mat > *,\n", + " mlpack::ann::Dropout, arma::Mat > *,\n", + " mlpack::ann::ELU, arma::Mat > *,\n", + " mlpack::ann::FastLSTM, arma::Mat > *,\n", + " mlpack::ann::FlexibleReLU, arma::Mat > *,\n", + " mlpack::ann::GRU, arma::Mat > *,\n", + " mlpack::ann::HardTanH, arma::Mat > *,\n", + " mlpack::ann::Join, arma::Mat > *,\n", + " mlpack::ann::LayerNorm, arma::Mat > *,\n", + " mlpack::ann::LeakyReLU, arma::Mat > *,\n", + " mlpack::ann::Linear, arma::Mat,\n", + " mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::LinearNoBias, arma::Mat,\n", + " mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::LogSoftMax, arma::Mat > *,\n", + " mlpack::ann::Lookup, arma::Mat > *,\n", + " mlpack::ann::LSTM, arma::Mat > *,\n", + " mlpack::ann::MaxPooling, arma::Mat > *,\n", + " mlpack::ann::MeanPooling, arma::Mat > *,\n", + " mlpack::ann::MiniBatchDiscrimination,\n", + " arma::Mat > *,\n", + " mlpack::ann::MultiplyConstant, arma::Mat >\n", + " *, mlpack::ann::MultiplyMerge, arma::Mat>\n", + " *, mlpack::ann::NegativeLogLikelihood,\n", + " arma::Mat > *, mlpack::ann::NoisyLinear,\n", + " arma::Mat > *, mlpack::ann::Padding,\n", + " arma::Mat > *, mlpack::ann::PReLU,\n", + " arma::Mat > *, mlpack::ann::Softmax,\n", + " arma::Mat > *,\n", + " mlpack::ann::SpatialDropout, arma::Mat >\n", + " *,\n", + " mlpack::ann::TransposedConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat > *,\n", + " mlpack::ann::WeightNorm, arma::Mat> *,\n", + " boost::variant,\n", + " arma::Mat, mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::Glimpse, arma::Mat > *,\n", + " mlpack::ann::Highway, arma::Mat> *,\n", + " mlpack::ann::MultiheadAttention,\n", + " arma::Mat, mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::Recurrent, arma::Mat> *,\n", + " mlpack::ann::RecurrentAttention, arma::Mat\n", + " > *, mlpack::ann::ReinforceNormal,\n", + " arma::Mat > *,\n", + " mlpack::ann::Reparametrization, arma::Mat\n", + " > *, mlpack::ann::Select, arma::Mat > *,\n", + " mlpack::ann::Sequential, arma::Mat, false>\n", + " *, mlpack::ann::Sequential, arma::Mat,\n", + " true> *, mlpack::ann::Subview, arma::Mat >\n", + " *, mlpack::ann::VRClassReward, arma::Mat >\n", + " *, mlpack::ann::VirtualBatchNorm,\n", + " arma::Mat > *, mlpack::ann::RBF,\n", + " arma::Mat, mlpack::ann::GaussianFunction> *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::PositionalEncoding, arma::Mat\n", + " > *> >,\n", + " std::allocator,\n", + " arma::Mat > *,\n", + " mlpack::ann::AdaptiveMeanPooling,\n", + " arma::Mat > *, mlpack::ann::Add,\n", + " arma::Mat > *, mlpack::ann::AddMerge,\n", + " arma::Mat> *, mlpack::ann::AlphaDropout,\n", + " arma::Mat > *,\n", + " mlpack::ann::AtrousConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BaseLayer,\n", + " arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::BatchNorm, arma::Mat > *,\n", + " mlpack::ann::BilinearInterpolation,\n", + " arma::Mat > *, mlpack::ann::CELU,\n", + " arma::Mat > *, mlpack::ann::Concat,\n", + " arma::Mat> *, mlpack::ann::Concatenate,\n", + " arma::Mat > *,\n", + " mlpack::ann::ConcatPerformance,\n", + " arma::Mat >, arma::Mat, arma::Mat > *,\n", + " mlpack::ann::Constant, arma::Mat > *,\n", + " mlpack::ann::Convolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat > *,\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " mlpack::ann::CReLU, arma::Mat > *,\n", + " mlpack::ann::DropConnect, arma::Mat > *,\n", + " mlpack::ann::Dropout, arma::Mat > *,\n", + " mlpack::ann::ELU, arma::Mat > *,\n", + " mlpack::ann::FastLSTM, arma::Mat > *,\n", + " mlpack::ann::FlexibleReLU, arma::Mat > *,\n", + " mlpack::ann::GRU, arma::Mat > *,\n", + " mlpack::ann::HardTanH, arma::Mat > *,\n", + " mlpack::ann::Join, arma::Mat > *,\n", + " mlpack::ann::LayerNorm, arma::Mat > *,\n", + " mlpack::ann::LeakyReLU, arma::Mat > *,\n", + " mlpack::ann::Linear, arma::Mat,\n", + " mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::LinearNoBias, arma::Mat,\n", + " mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::LogSoftMax, arma::Mat > *,\n", + " mlpack::ann::Lookup, arma::Mat > *,\n", + " mlpack::ann::LSTM, arma::Mat > *,\n", + " mlpack::ann::MaxPooling, arma::Mat > *,\n", + " mlpack::ann::MeanPooling, arma::Mat > *,\n", + " mlpack::ann::MiniBatchDiscrimination,\n", + " arma::Mat > *,\n", + " mlpack::ann::MultiplyConstant, arma::Mat >\n", + " *, mlpack::ann::MultiplyMerge, arma::Mat>\n", + " *, mlpack::ann::NegativeLogLikelihood,\n", + " arma::Mat > *, mlpack::ann::NoisyLinear,\n", + " arma::Mat > *, mlpack::ann::Padding,\n", + " arma::Mat > *, mlpack::ann::PReLU,\n", + " arma::Mat > *, mlpack::ann::Softmax,\n", + " arma::Mat > *,\n", + " mlpack::ann::SpatialDropout, arma::Mat >\n", + " *,\n", + " mlpack::ann::TransposedConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat > *,\n", + " mlpack::ann::WeightNorm, arma::Mat> *,\n", + " boost::variant,\n", + " arma::Mat, mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::Glimpse, arma::Mat > *,\n", + " mlpack::ann::Highway, arma::Mat> *,\n", + " mlpack::ann::MultiheadAttention,\n", + " arma::Mat, mlpack::ann::NoRegularizer> *,\n", + " mlpack::ann::Recurrent, arma::Mat> *,\n", + " mlpack::ann::RecurrentAttention, arma::Mat\n", + " > *, mlpack::ann::ReinforceNormal,\n", + " arma::Mat > *,\n", + " mlpack::ann::Reparametrization, arma::Mat\n", + " > *, mlpack::ann::Select, arma::Mat > *,\n", + " mlpack::ann::Sequential, arma::Mat, false>\n", + " *, mlpack::ann::Sequential, arma::Mat,\n", + " true> *, mlpack::ann::Subview, arma::Mat >\n", + " *, mlpack::ann::VRClassReward, arma::Mat >\n", + " *, mlpack::ann::VirtualBatchNorm,\n", + " arma::Mat > *, mlpack::ann::RBF,\n", + " arma::Mat, mlpack::ann::GaussianFunction> *,\n", + " mlpack::ann::BaseLayer, arma::Mat > *,\n", + " mlpack::ann::PositionalEncoding, arma::Mat\n", + " > *> > > >'\u001b[0m\n", + " void Add(Args... args) { network.push_back(new LayerType(args...)); }\n", + "\u001b[0;1;32m ~~~~~~~ ^\n", + "\u001b[0m\u001b[1minput_line_46:2:8: \u001b[0m\u001b[0;1;30mnote: \u001b[0min instantiation of function template specialization\n", + " 'mlpack::ann::FFN,\n", + " arma::Mat >,\n", + " mlpack::ann::RandomInitialization>::Add,\n", + " mlpack::ann::NaiveConvolution,\n", + " mlpack::ann::NaiveConvolution,\n", + " arma::Mat, arma::Mat >, int, int, int, int, int,\n", + " int, int, int, int, int>' requested here\u001b[0m\n", + " model.Add> (1,6,5,5,1,1,0,0,28,28);\n", + "\u001b[0;1;32m ^\n", + "\u001b[0m" + ] + }, + { + "ename": "Interpreter Error", + "evalue": "", + "output_type": "error", + "traceback": [ + "Interpreter Error: " + ] + } + ], + "source": [ + "model.Add> (1,6,5,5,1,1,0,0,28,28);\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "03d0646a", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "C++14", + "language": "C++14", + "name": "xcpp14" + }, + "language_info": { + "codemirror_mode": "text/x-c++src", + "file_extension": ".cpp", + "mimetype": "text/x-c++src", + "name": "c++", + "version": "14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From e7fea91e7177e50c5d129ef7bb740c15f8f5b095 Mon Sep 17 00:00:00 2001 From: Roshan Swain Date: Tue, 6 Jul 2021 22:40:54 +0530 Subject: [PATCH 3/5] added layers --- ...ng_handwritten_digits_mnist_with_gan.ipynb | 417 ++++++++---------- .../testNotebook.ipynb | 288 ++++++++++++ 2 files changed, 471 insertions(+), 234 deletions(-) create mode 100644 generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb diff --git a/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb b/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb index 1a335bab..4516c038 100644 --- a/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb +++ b/generating_hand_written_digits_mnist_with_gan/generating_handwritten_digits_mnist_with_gan.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 34, + "execution_count": 1, "id": "c23013fc", "metadata": {}, "outputs": [], @@ -12,36 +12,63 @@ "#include\n", "#include\n", "#include\n", - "#include" + "#include\n", + "#include" ] }, { "cell_type": "code", "execution_count": 2, - "id": "dccd0b37", + "id": "ad7ab4c6", "metadata": {}, "outputs": [], "source": [ - "#include" + "using namespace mlpack;\n" ] }, { "cell_type": "code", - "execution_count": 19, - "id": "ad7ab4c6", + "execution_count": 3, + "id": "0c8af9e2", "metadata": {}, "outputs": [], "source": [ - "using namespace mlpack;\n", - "using namespace mlpack::ann;\n", - "using namespace arma;\n", - "using namespace std;\n", - "using namespace ens;" + "using namespace mlpack::ann;" ] }, { "cell_type": "code", "execution_count": 4, + "id": "ff1b2e2f", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace arma;" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "4834841f", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace std;" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d1dc9cb6", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace ens;" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "id": "7ed7a903", "metadata": {}, "outputs": [], @@ -57,7 +84,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "131fe748", "metadata": {}, "outputs": [], @@ -70,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "id": "697a8d63", "metadata": {}, "outputs": [], @@ -80,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "64ee4e72", "metadata": {}, "outputs": [], @@ -110,7 +137,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "id": "a6a484e7", "metadata": {}, "outputs": [], @@ -121,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "id": "db267de6", "metadata": {}, "outputs": [], @@ -132,254 +159,176 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 15, "id": "7eb2907b", "metadata": {}, "outputs": [], "source": [ - "using namespace mlpack::ann;\n", "FFN, RandomInitialization> model;" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 16, "id": "ffc66454", "metadata": {}, + "outputs": [], + "source": [ + "model.Add> (1,6,5,5,1,1,0,0,28,28);\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "03d0646a", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>();" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "2fff115e", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>(2,\n", + " 2,\n", + " 2,\n", + " 2,\n", + " true);" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "462e4ce2", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>(6,\n", + " 16,\n", + " 5,\n", + " 5,\n", + " 1,\n", + " 1,\n", + " 0,\n", + " 0,\n", + " 12,\n", + " 12);" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "73033233", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>();" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ee5d88cc", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>();" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "7859b83e", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>(2,2,2,2,true);" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f423475d", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>(16*4*4, 10);" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "369063ba", + "metadata": {}, + "outputs": [], + "source": [ + "model.Add>();" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "17dfcdef", + "metadata": {}, + "outputs": [], + "source": [ + "ens::Adam optimizer(STEP_SIZE,\n", + " BATCH_SIZE,\n", + " 0.9,\n", + " 0.999,\n", + " 1e-8,\n", + " MAX_ITERATIONS,\n", + " 1e-8,\n", + " true);" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c52947c7", + "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "In file included from input_line_7:5:\n", - "\u001b[1m/home/viole/anaconda3/envs/notebook/include/mlpack/methods/ann/ffn.hpp:290:36: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mno member named 'push_back' in\n", - " 'std::vector,\n", - " arma::Mat > *,\n", - " mlpack::ann::AdaptiveMeanPooling,\n", - " arma::Mat > *, mlpack::ann::Add,\n", - " arma::Mat > *, mlpack::ann::AddMerge,\n", - " arma::Mat> *, mlpack::ann::AlphaDropout,\n", - " arma::Mat > *,\n", - " mlpack::ann::AtrousConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BaseLayer,\n", - " arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BatchNorm, arma::Mat > *,\n", - " mlpack::ann::BilinearInterpolation,\n", - " arma::Mat > *, mlpack::ann::CELU,\n", - " arma::Mat > *, mlpack::ann::Concat,\n", - " arma::Mat> *, mlpack::ann::Concatenate,\n", - " arma::Mat > *,\n", - " mlpack::ann::ConcatPerformance,\n", - " arma::Mat >, arma::Mat, arma::Mat > *,\n", - " mlpack::ann::Constant, arma::Mat > *,\n", - " mlpack::ann::Convolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat > *,\n", - " mlpack::ann::CReLU, arma::Mat > *,\n", - " mlpack::ann::DropConnect, arma::Mat > *,\n", - " mlpack::ann::Dropout, arma::Mat > *,\n", - " mlpack::ann::ELU, arma::Mat > *,\n", - " mlpack::ann::FastLSTM, arma::Mat > *,\n", - " mlpack::ann::FlexibleReLU, arma::Mat > *,\n", - " mlpack::ann::GRU, arma::Mat > *,\n", - " mlpack::ann::HardTanH, arma::Mat > *,\n", - " mlpack::ann::Join, arma::Mat > *,\n", - " mlpack::ann::LayerNorm, arma::Mat > *,\n", - " mlpack::ann::LeakyReLU, arma::Mat > *,\n", - " mlpack::ann::Linear, arma::Mat,\n", - " mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::LinearNoBias, arma::Mat,\n", - " mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::LogSoftMax, arma::Mat > *,\n", - " mlpack::ann::Lookup, arma::Mat > *,\n", - " mlpack::ann::LSTM, arma::Mat > *,\n", - " mlpack::ann::MaxPooling, arma::Mat > *,\n", - " mlpack::ann::MeanPooling, arma::Mat > *,\n", - " mlpack::ann::MiniBatchDiscrimination,\n", - " arma::Mat > *,\n", - " mlpack::ann::MultiplyConstant, arma::Mat >\n", - " *, mlpack::ann::MultiplyMerge, arma::Mat>\n", - " *, mlpack::ann::NegativeLogLikelihood,\n", - " arma::Mat > *, mlpack::ann::NoisyLinear,\n", - " arma::Mat > *, mlpack::ann::Padding,\n", - " arma::Mat > *, mlpack::ann::PReLU,\n", - " arma::Mat > *, mlpack::ann::Softmax,\n", - " arma::Mat > *,\n", - " mlpack::ann::SpatialDropout, arma::Mat >\n", - " *,\n", - " mlpack::ann::TransposedConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat > *,\n", - " mlpack::ann::WeightNorm, arma::Mat> *,\n", - " boost::variant,\n", - " arma::Mat, mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::Glimpse, arma::Mat > *,\n", - " mlpack::ann::Highway, arma::Mat> *,\n", - " mlpack::ann::MultiheadAttention,\n", - " arma::Mat, mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::Recurrent, arma::Mat> *,\n", - " mlpack::ann::RecurrentAttention, arma::Mat\n", - " > *, mlpack::ann::ReinforceNormal,\n", - " arma::Mat > *,\n", - " mlpack::ann::Reparametrization, arma::Mat\n", - " > *, mlpack::ann::Select, arma::Mat > *,\n", - " mlpack::ann::Sequential, arma::Mat, false>\n", - " *, mlpack::ann::Sequential, arma::Mat,\n", - " true> *, mlpack::ann::Subview, arma::Mat >\n", - " *, mlpack::ann::VRClassReward, arma::Mat >\n", - " *, mlpack::ann::VirtualBatchNorm,\n", - " arma::Mat > *, mlpack::ann::RBF,\n", - " arma::Mat, mlpack::ann::GaussianFunction> *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::PositionalEncoding, arma::Mat\n", - " > *> >,\n", - " std::allocator,\n", - " arma::Mat > *,\n", - " mlpack::ann::AdaptiveMeanPooling,\n", - " arma::Mat > *, mlpack::ann::Add,\n", - " arma::Mat > *, mlpack::ann::AddMerge,\n", - " arma::Mat> *, mlpack::ann::AlphaDropout,\n", - " arma::Mat > *,\n", - " mlpack::ann::AtrousConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BaseLayer,\n", - " arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::BatchNorm, arma::Mat > *,\n", - " mlpack::ann::BilinearInterpolation,\n", - " arma::Mat > *, mlpack::ann::CELU,\n", - " arma::Mat > *, mlpack::ann::Concat,\n", - " arma::Mat> *, mlpack::ann::Concatenate,\n", - " arma::Mat > *,\n", - " mlpack::ann::ConcatPerformance,\n", - " arma::Mat >, arma::Mat, arma::Mat > *,\n", - " mlpack::ann::Constant, arma::Mat > *,\n", - " mlpack::ann::Convolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat > *,\n" + "\n", + "error: Mat::operator(): index out of bounds\n" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - " mlpack::ann::CReLU, arma::Mat > *,\n", - " mlpack::ann::DropConnect, arma::Mat > *,\n", - " mlpack::ann::Dropout, arma::Mat > *,\n", - " mlpack::ann::ELU, arma::Mat > *,\n", - " mlpack::ann::FastLSTM, arma::Mat > *,\n", - " mlpack::ann::FlexibleReLU, arma::Mat > *,\n", - " mlpack::ann::GRU, arma::Mat > *,\n", - " mlpack::ann::HardTanH, arma::Mat > *,\n", - " mlpack::ann::Join, arma::Mat > *,\n", - " mlpack::ann::LayerNorm, arma::Mat > *,\n", - " mlpack::ann::LeakyReLU, arma::Mat > *,\n", - " mlpack::ann::Linear, arma::Mat,\n", - " mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::LinearNoBias, arma::Mat,\n", - " mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::LogSoftMax, arma::Mat > *,\n", - " mlpack::ann::Lookup, arma::Mat > *,\n", - " mlpack::ann::LSTM, arma::Mat > *,\n", - " mlpack::ann::MaxPooling, arma::Mat > *,\n", - " mlpack::ann::MeanPooling, arma::Mat > *,\n", - " mlpack::ann::MiniBatchDiscrimination,\n", - " arma::Mat > *,\n", - " mlpack::ann::MultiplyConstant, arma::Mat >\n", - " *, mlpack::ann::MultiplyMerge, arma::Mat>\n", - " *, mlpack::ann::NegativeLogLikelihood,\n", - " arma::Mat > *, mlpack::ann::NoisyLinear,\n", - " arma::Mat > *, mlpack::ann::Padding,\n", - " arma::Mat > *, mlpack::ann::PReLU,\n", - " arma::Mat > *, mlpack::ann::Softmax,\n", - " arma::Mat > *,\n", - " mlpack::ann::SpatialDropout, arma::Mat >\n", - " *,\n", - " mlpack::ann::TransposedConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat > *,\n", - " mlpack::ann::WeightNorm, arma::Mat> *,\n", - " boost::variant,\n", - " arma::Mat, mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::Glimpse, arma::Mat > *,\n", - " mlpack::ann::Highway, arma::Mat> *,\n", - " mlpack::ann::MultiheadAttention,\n", - " arma::Mat, mlpack::ann::NoRegularizer> *,\n", - " mlpack::ann::Recurrent, arma::Mat> *,\n", - " mlpack::ann::RecurrentAttention, arma::Mat\n", - " > *, mlpack::ann::ReinforceNormal,\n", - " arma::Mat > *,\n", - " mlpack::ann::Reparametrization, arma::Mat\n", - " > *, mlpack::ann::Select, arma::Mat > *,\n", - " mlpack::ann::Sequential, arma::Mat, false>\n", - " *, mlpack::ann::Sequential, arma::Mat,\n", - " true> *, mlpack::ann::Subview, arma::Mat >\n", - " *, mlpack::ann::VRClassReward, arma::Mat >\n", - " *, mlpack::ann::VirtualBatchNorm,\n", - " arma::Mat > *, mlpack::ann::RBF,\n", - " arma::Mat, mlpack::ann::GaussianFunction> *,\n", - " mlpack::ann::BaseLayer, arma::Mat > *,\n", - " mlpack::ann::PositionalEncoding, arma::Mat\n", - " > *> > > >'\u001b[0m\n", - " void Add(Args... args) { network.push_back(new LayerType(args...)); }\n", - "\u001b[0;1;32m ~~~~~~~ ^\n", - "\u001b[0m\u001b[1minput_line_46:2:8: \u001b[0m\u001b[0;1;30mnote: \u001b[0min instantiation of function template specialization\n", - " 'mlpack::ann::FFN,\n", - " arma::Mat >,\n", - " mlpack::ann::RandomInitialization>::Add,\n", - " mlpack::ann::NaiveConvolution,\n", - " mlpack::ann::NaiveConvolution,\n", - " arma::Mat, arma::Mat >, int, int, int, int, int,\n", - " int, int, int, int, int>' requested here\u001b[0m\n", - " model.Add> (1,6,5,5,1,1,0,0,28,28);\n", - "\u001b[0;1;32m ^\n", - "\u001b[0m" - ] - }, - { - "ename": "Interpreter Error", - "evalue": "", + "ename": "Standard Exception", + "evalue": "Mat::operator(): index out of bounds", "output_type": "error", "traceback": [ - "Interpreter Error: " + "Standard Exception: Mat::operator(): index out of bounds" ] } ], "source": [ - "model.Add> (1,6,5,5,1,1,0,0,28,28);\n", - " " + "model.Train(trainX,\n", + " trainY,\n", + " optimizer,\n", + " ens::PrintLoss(),\n", + " ens::ProgressBar(),\n", + " ens::EarlyStopAtMinLoss(\n", + " [&](const arma::mat&){\n", + " double validationLoss = model.Evaluate(validX, validY);\n", + " std::cout << \"Validation Loss\" << validationLoss << \".\" << \"\\n\";\n", + " return validationLoss;\n", + " }))" ] }, { "cell_type": "code", "execution_count": null, - "id": "03d0646a", + "id": "d6060587", "metadata": {}, "outputs": [], "source": [] diff --git a/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb b/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb new file mode 100644 index 00000000..01a866d4 --- /dev/null +++ b/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "4ffd91b1", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[1minput_line_9:11:1: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mfunction definition is not allowed here\u001b[0m\n", + "{\n", + "\u001b[0;1;32m^\n", + "\u001b[0m\u001b[1minput_line_9:20:1: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mfunction definition is not allowed here\u001b[0m\n", + "{\n", + "\u001b[0;1;32m^\n", + "\u001b[0m" + ] + }, + { + "ename": "Interpreter Error", + "evalue": "", + "output_type": "error", + "traceback": [ + "Interpreter Error: " + ] + } + ], + "source": [ + "\n", + "/**\n", + " * An example of using Convolutional Neural Network (CNN) for\n", + " * solving Digit Recognizer problem from Kaggle website.\n", + " *\n", + " * The full description of a problem as well as datasets for training\n", + " * and testing are available here https://www.kaggle.com/c/digit-recognizer\n", + " *\n", + " * mlpack is free software; you may redistribute it and/or modify it under the\n", + " * terms of the 3-clause BSD license. You should have received a copy of the\n", + " * 3-clause BSD license along with mlpack. If not, see\n", + " * http://www.opensource.org/licenses/BSD-3-Clause for more information.\n", + " *\n", + " * @author Daivik Nema\n", + " */\n", + "\n", + "#include \n", + "#include \n", + "\n", + "#include \n", + "#include \n", + "\n", + "#include \n", + "\n", + "#if ((ENS_VERSION_MAJOR < 2) || ((ENS_VERSION_MAJOR == 2) && (ENS_VERSION_MINOR < 13)))\n", + " #error \"need ensmallen version 2.13.0 or later\"\n", + "#endif\n", + "\n", + "using namespace mlpack;\n", + "using namespace mlpack::ann;\n", + "\n", + "using namespace arma;\n", + "using namespace std;\n", + "\n", + "using namespace ens;\n", + "\n", + "arma::Row getLabels(arma::mat predOut)\n", + "{\n", + " arma::Row predLabels(predOut.n_cols);\n", + " for (arma::uword i = 0; i < predOut.n_cols; ++i)\n", + " {\n", + " predLabels(i) = predOut.col(i).index_max();\n", + " }\n", + " return predLabels;\n", + "}\n", + "\n", + "int main()\n", + "{\n", + " // Dataset is randomly split into validation\n", + " // and training parts with following ratio.\n", + " constexpr double RATIO = 0.1;\n", + "\n", + " // Allow infinite number of iterations until we stopped by EarlyStopAtMinLoss\n", + " constexpr int MAX_ITERATIONS = 0;\n", + "\n", + " // Step size of the optimizer.\n", + " constexpr double STEP_SIZE = 1.2e-3;\n", + "\n", + " // Number of data points in each iteration of SGD.\n", + " constexpr int BATCH_SIZE = 50;\n", + "\n", + " cout << \"Reading data ...\" << endl;\n", + "\n", + " // Labeled dataset that contains data for training is loaded from CSV file.\n", + " // Rows represent features, columns represent data points.\n", + " mat dataset;\n", + "\n", + " // The original file can be downloaded from\n", + " // https://www.kaggle.com/c/digit-recognizer/data\n", + " data::Load(\"/home/viole/swaingotnochill/examples/generating_hand_written_digits_mnist_with_gan/digit-recognizer/train.csv\", dataset, true);\n", + "\n", + " // Split the dataset into training and validation sets.\n", + " mat train, valid;\n", + " data::Split(dataset, train, valid, RATIO);\n", + "\n", + " // The train and valid datasets contain both - the features as well as the\n", + " // class labels. Split these into separate mats.\n", + " const mat trainX = train.submat(1, 0, train.n_rows - 1, train.n_cols - 1);\n", + " const mat validX = valid.submat(1, 0, valid.n_rows - 1, valid.n_cols - 1);\n", + "\n", + " // Labels should specify the class of a data point and be in the interval [0,\n", + " // numClasses).\n", + "\n", + " // Create labels for training and validatiion datasets.\n", + " const mat trainY = train.row(0);\n", + " const mat validY = valid.row(0);\n", + "\n", + " // Specify the NN model. NegativeLogLikelihood is the output layer that\n", + " // is used for classification problem. RandomInitialization means that\n", + " // initial weights are generated randomly in the interval from -1 to 1.\n", + " FFN, RandomInitialization> model;\n", + "\n", + " // Specify the model architecture.\n", + " // In this example, the CNN architecture is chosen similar to LeNet-5.\n", + " // The architecture follows a Conv-ReLU-Pool-Conv-ReLU-Pool-Dense schema. We\n", + " // have used leaky ReLU activation instead of vanilla ReLU. Standard\n", + " // max-pooling has been used for pooling. The first convolution uses 6 filters\n", + " // of size 5x5 (and a stride of 1). The second convolution uses 16 filters of\n", + " // size 5x5 (stride = 1). The final dense layer is connected to a softmax to\n", + " // ensure that we get a valid probability distribution over the output classes\n", + "\n", + " // Layers schema.\n", + " // 28x28x1 --- conv (6 filters of size 5x5. stride = 1) ---> 24x24x6\n", + " // 24x24x6 --------------- Leaky ReLU ---------------------> 24x24x6\n", + " // 24x24x6 --- max pooling (over 2x2 fields. stride = 2) --> 12x12x6\n", + " // 12x12x6 --- conv (16 filters of size 5x5. stride = 1) --> 8x8x16\n", + " // 8x8x16 --------------- Leaky ReLU ---------------------> 8x8x16\n", + " // 8x8x16 --- max pooling (over 2x2 fields. stride = 2) --> 4x4x16\n", + " // 4x4x16 ------------------- Dense ----------------------> 10\n", + "\n", + " // Add the first convolution layer.\n", + " model.Add>(1, // Number of input activation maps.\n", + " 6, // Number of output activation maps.\n", + " 5, // Filter width.\n", + " 5, // Filter height.\n", + " 1, // Stride along width.\n", + " 1, // Stride along height.\n", + " 0, // Padding width.\n", + " 0, // Padding height.\n", + " 28, // Input width.\n", + " 28 // Input height.\n", + " );\n", + "\n", + " // Add first ReLU.\n", + " model.Add>();\n", + "\n", + " // Add first pooling layer. Pools over 2x2 fields in the input.\n", + " model.Add>(2, // Width of field.\n", + " 2, // Height of field.\n", + " 2, // Stride along width.\n", + " 2, // Stride along height.\n", + " true);\n", + "\n", + " // Add the second convolution layer.\n", + " model.Add>(6, // Number of input activation maps.\n", + " 16, // Number of output activation maps.\n", + " 5, // Filter width.\n", + " 5, // Filter height.\n", + " 1, // Stride along width.\n", + " 1, // Stride along height.\n", + " 0, // Padding width.\n", + " 0, // Padding height.\n", + " 12, // Input width.\n", + " 12 // Input height.\n", + " );\n", + "\n", + " // Add the second ReLU.\n", + " model.Add>();\n", + "\n", + " // Add the second pooling layer.\n", + " model.Add>(2, 2, 2, 2, true);\n", + "\n", + " // Add the final dense layer.\n", + " model.Add>(16 * 4 * 4, 10);\n", + " model.Add>();\n", + "\n", + " cout << \"Start training ...\" << endl;\n", + "\n", + " // Set parameters for the Adam optimizer.\n", + " ens::Adam optimizer(\n", + " STEP_SIZE, // Step size of the optimizer.\n", + " BATCH_SIZE, // Batch size. Number of data points that are used in each\n", + " // iteration.\n", + " 0.9, // Exponential decay rate for the first moment estimates.\n", + " 0.999, // Exponential decay rate for the weighted infinity norm estimates.\n", + " 1e-8, // Value used to initialise the mean squared gradient parameter.\n", + " MAX_ITERATIONS, // Max number of iterations.\n", + " 1e-8, // Tolerance.\n", + " true);\n", + "\n", + " // Train the CNN model. If this is the first iteration, weights are\n", + " // randomly initialized between -1 and 1. Otherwise, the values of weights\n", + " // from the previous iteration are used.\n", + " model.Train(trainX,\n", + " trainY,\n", + " optimizer,\n", + " ens::PrintLoss(),\n", + " ens::ProgressBar(),\n", + " // Stop the training using Early Stop at min loss.\n", + " ens::EarlyStopAtMinLoss(\n", + " [&](const arma::mat& /* param */)\n", + " {\n", + " double validationLoss = model.Evaluate(validX, validY);\n", + " std::cout << \"Validation loss: \" << validationLoss\n", + " << \".\" << std::endl;\n", + " return validationLoss;\n", + " }));\n", + "\n", + " // Matrix to store the predictions on train and validation datasets.\n", + " mat predOut;\n", + " // Get predictions on training data points.\n", + " model.Predict(trainX, predOut);\n", + " // Calculate accuracy on training data points.\n", + " arma::Row predLabels = getLabels(predOut);\n", + " double trainAccuracy =\n", + " arma::accu(predLabels == trainY) / (double) trainY.n_elem * 100;\n", + " // Get predictions on validating data points.\n", + " model.Predict(validX, predOut);\n", + " // Calculate accuracy on validating data points.\n", + " predLabels = getLabels(predOut);\n", + " double validAccuracy =\n", + " arma::accu(predLabels == validY) / (double) validY.n_elem * 100;\n", + "\n", + " std::cout << \"Accuracy: train = \" << trainAccuracy << \"%,\"\n", + " << \"\\t valid = \" << validAccuracy << \"%\" << std::endl;\n", + "\n", + " mlpack::data::Save(\"model.bin\", \"model\", model, false);\n", + "\n", + " std::cout << \"Predicting ...\" << std::endl;\n", + "\n", + " // Load test dataset\n", + " // The original file could be download from\n", + " // https://www.kaggle.com/c/digit-recognizer/data\n", + " data::Load(\"/home/viole/swaingotnochill/examples/generating_hand_written_digits_mnist_with_gan/digit-recognizer/test.csv\", dataset, true);\n", + " dataset.shed_row(dataset.n_rows - 1); // Remove labels before predicting.\n", + "\n", + " // Matrix to store the predictions on test dataset.\n", + " mat testPredOut;\n", + " // Get predictions on test data points.\n", + " model.Predict(dataset, testPredOut);\n", + " // Generate labels for the test dataset.\n", + " Row testPred = getLabels(testPredOut);\n", + " std::cout << \"Saving predicted labels to \\\"results.csv.\\\"...\" << std::endl;\n", + "\n", + " // Saving results into Kaggle compatibe CSV file.\n", + " testPred.save(\"results.csv\", arma::csv_ascii);\n", + " std::cout << \"Neural network model is saved to \\\"model.bin\\\"\" << std::endl;\n", + " std::cout << \"Finished\" << std::endl;\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5dbbc367", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "C++14", + "language": "C++14", + "name": "xcpp14" + }, + "language_info": { + "codemirror_mode": "text/x-c++src", + "file_extension": ".cpp", + "mimetype": "text/x-c++src", + "name": "c++", + "version": "14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 8ff8b7535e954caddf2c5daccb452c5997b26dcb Mon Sep 17 00:00:00 2001 From: Roshan Swain Date: Tue, 13 Jul 2021 18:14:48 +0530 Subject: [PATCH 4/5] added pycache to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 86308f8c..61b9dd79 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ cmake-build-* *.a *.so data +utils/__pycache__ \ No newline at end of file From 4685f83390d103b2f60efd704751314d195d8700 Mon Sep 17 00:00:00 2001 From: Roshan Swain Date: Tue, 13 Jul 2021 19:54:48 +0530 Subject: [PATCH 5/5] update on gan mnist work --- .../mnist_first250_training_4s_and_9s.arm | Bin 0 -> 3136027 bytes .../testNotebook.ipynb | 519 +++++++++--------- 2 files changed, 274 insertions(+), 245 deletions(-) create mode 100644 generating_hand_written_digits_mnist_with_gan/mnist_first250_training_4s_and_9s.arm diff --git a/generating_hand_written_digits_mnist_with_gan/mnist_first250_training_4s_and_9s.arm b/generating_hand_written_digits_mnist_with_gan/mnist_first250_training_4s_and_9s.arm new file mode 100644 index 0000000000000000000000000000000000000000..fd28bbbfbc3657eec44896a69b52903a2e58380d GIT binary patch literal 3136027 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 G|xmf1O!>q5hR{aSn`~7qf2YK1}JB;&1id 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 T`M(#qe$3BF*J+o)oh0yoHz95L literal 0 HcmV?d00001 diff --git a/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb b/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb index 01a866d4..067de33d 100644 --- a/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb +++ b/generating_hand_written_digits_mnist_with_gan/testNotebook.ipynb @@ -2,268 +2,297 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "4ffd91b1", "metadata": {}, + "outputs": [], + "source": [ + "#include\n", + "#include \n", + "\n", + "#include \n", + "#include \n", + "#include \n", + "#include \n", + "#include \n", + "#include\n", + "\n", + "#include \n", + "\n", + "// #include \"catch.hpp\"\n", + "// #include \"test_catch_tools.hpp\"\n", + "// #include \"serialization.hpp\"\n", + "\n", + "// using namespace mlpack;\n", + "// using namespace mlpack::ann;\n", + "// using namespace mlpack::math;\n", + "// using namespace mlpack::regression;\n", + "// using namespace std::placeholders;\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d2721956", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace mlpack::ann;" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6a336fdb", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace mlpack;" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8f61e83e", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace mlpack::math;" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fec32cd8", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace mlpack::regression;" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d28df478", + "metadata": {}, + "outputs": [], + "source": [ + "using namespace std::placeholders;" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5dbbc367", + "metadata": {}, + "outputs": [], + "source": [ + " size_t dNumKernels = 32;\n", + " size_t discriminatorPreTrain = 5;\n", + " size_t batchSize = 5;\n", + " size_t noiseDim = 100;\n", + " size_t generatorUpdateStep = 1;\n", + " size_t numSamples = 10;\n", + " double stepSize = 0.0003;\n", + " double eps = 1e-8;\n", + " size_t numEpoches = 1;\n", + " double tolerance = 1e-5;\n", + " int datasetMaxCols = 10;\n", + " bool shuffle = true;\n", + " double multiplier = 10;" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7f3190fc", + "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1minput_line_9:11:1: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mfunction definition is not allowed here\u001b[0m\n", - "{\n", - "\u001b[0;1;32m^\n", - "\u001b[0m\u001b[1minput_line_9:20:1: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mfunction definition is not allowed here\u001b[0m\n", - "{\n", - "\u001b[0;1;32m^\n", - "\u001b[0m" + " batchSize = 5\n", + " generatorUpdateStep = 1\n", + " noiseDim = 100\n", + " numSamples = 10\n", + " stepSize = 0.0003\n", + " numEpoches = 1\n", + " tolerance = 1e-05\n", + " shuffle = true\n" ] - }, + } + ], + "source": [ + "\n", + " std::cout << std::boolalpha\n", + " << \" batchSize = \" << batchSize << std::endl\n", + " << \" generatorUpdateStep = \" << generatorUpdateStep << std::endl\n", + " << \" noiseDim = \" << noiseDim << std::endl\n", + " << \" numSamples = \" << numSamples << std::endl\n", + " << \" stepSize = \" << stepSize << std::endl\n", + " << \" numEpoches = \" << numEpoches << std::endl\n", + " << \" tolerance = \" << tolerance << std::endl\n", + " << \" shuffle = \" << shuffle << std::endl;\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4dbbb38d", + "metadata": {}, + "outputs": [ { - "ename": "Interpreter Error", - "evalue": "", - "output_type": "error", - "traceback": [ - "Interpreter Error: " + "name": "stderr", + "output_type": "stream", + "text": [ + "In file included from input_line_5:1:\n", + "In file included from /home/viole/anaconda3/envs/notebook/include/xeus/xinterpreter.hpp:13:\n", + "In file included from /home/viole/anaconda3/envs/notebook/bin/../lib/gcc/x86_64-conda-linux-gnu/7.5.0/../../../../x86_64-conda-linux-gnu/include/c++/7.5.0/functional:58:\n", + "\u001b[1m/home/viole/anaconda3/envs/notebook/bin/../lib/gcc/x86_64-conda-linux-gnu/7.5.0/../../../../x86_64-conda-linux-gnu/include/c++/7.5.0/bits/std_function.h:264:34: \u001b[0m\u001b[0;1;31merror: \u001b[0m\u001b[1mno matching constructor for initialization of '(lambda at input_line_16:43:43)'\u001b[0m\n", + " { ::new (__functor._M_access()) _Functor(std::move(__f)); }\n", + "\u001b[0;1;32m ^ ~~~~~~~~~~~~~~\n", + "\u001b[0m\u001b[1m/home/viole/anaconda3/envs/notebook/bin/../lib/gcc/x86_64-conda-linux-gnu/7.5.0/../../../../x86_64-conda-linux-gnu/include/c++/7.5.0/bits/std_function.h:239:4: \u001b[0m\u001b[0;1;30mnote: \u001b[0min instantiation of member function 'std::_Function_base::_Base_manager<(lambda at\n", + " input_line_16:43:43)>::_M_init_functor' requested here\u001b[0m\n", + " { _M_init_functor(__functor, std::move(__f), _Local_storage()); }\n", + "\u001b[0;1;32m ^\n", + "\u001b[0m\u001b[1m/home/viole/anaconda3/envs/notebook/bin/../lib/gcc/x86_64-conda-linux-gnu/7.5.0/../../../../x86_64-conda-linux-gnu/include/c++/7.5.0/bits/std_function.h:693:19: \u001b[0m\u001b[0;1;30mnote: \u001b[0min instantiation of member function 'std::_Function_base::_Base_manager<(lambda at\n", + " input_line_16:43:43)>::_M_init_functor' requested here\u001b[0m\n", + " _My_handler::_M_init_functor(_M_functor, std::move(__f));\n", + "\u001b[0;1;32m ^\n", + "\u001b[0m\u001b[1minput_line_16:43:43: \u001b[0m\u001b[0;1;30mnote: \u001b[0min instantiation of function template specialization 'std::function::function<(lambda at\n", + " input_line_16:43:43), void, void>' requested here\u001b[0m\n", + " std::function noiseFunction = [] () {\n", + "\u001b[0;1;32m ^\n", + "\u001b[0m" ] } ], "source": [ - "\n", - "/**\n", - " * An example of using Convolutional Neural Network (CNN) for\n", - " * solving Digit Recognizer problem from Kaggle website.\n", - " *\n", - " * The full description of a problem as well as datasets for training\n", - " * and testing are available here https://www.kaggle.com/c/digit-recognizer\n", - " *\n", - " * mlpack is free software; you may redistribute it and/or modify it under the\n", - " * terms of the 3-clause BSD license. You should have received a copy of the\n", - " * 3-clause BSD license along with mlpack. If not, see\n", - " * http://www.opensource.org/licenses/BSD-3-Clause for more information.\n", - " *\n", - " * @author Daivik Nema\n", - " */\n", - "\n", - "#include \n", - "#include \n", - "\n", - "#include \n", - "#include \n", - "\n", - "#include \n", - "\n", - "#if ((ENS_VERSION_MAJOR < 2) || ((ENS_VERSION_MAJOR == 2) && (ENS_VERSION_MINOR < 13)))\n", - " #error \"need ensmallen version 2.13.0 or later\"\n", - "#endif\n", - "\n", - "using namespace mlpack;\n", - "using namespace mlpack::ann;\n", - "\n", - "using namespace arma;\n", - "using namespace std;\n", - "\n", - "using namespace ens;\n", - "\n", - "arma::Row getLabels(arma::mat predOut)\n", - "{\n", - " arma::Row predLabels(predOut.n_cols);\n", - " for (arma::uword i = 0; i < predOut.n_cols; ++i)\n", - " {\n", - " predLabels(i) = predOut.col(i).index_max();\n", - " }\n", - " return predLabels;\n", - "}\n", - "\n", - "int main()\n", - "{\n", - " // Dataset is randomly split into validation\n", - " // and training parts with following ratio.\n", - " constexpr double RATIO = 0.1;\n", - "\n", - " // Allow infinite number of iterations until we stopped by EarlyStopAtMinLoss\n", - " constexpr int MAX_ITERATIONS = 0;\n", - "\n", - " // Step size of the optimizer.\n", - " constexpr double STEP_SIZE = 1.2e-3;\n", - "\n", - " // Number of data points in each iteration of SGD.\n", - " constexpr int BATCH_SIZE = 50;\n", - "\n", - " cout << \"Reading data ...\" << endl;\n", - "\n", - " // Labeled dataset that contains data for training is loaded from CSV file.\n", - " // Rows represent features, columns represent data points.\n", - " mat dataset;\n", - "\n", - " // The original file can be downloaded from\n", - " // https://www.kaggle.com/c/digit-recognizer/data\n", - " data::Load(\"/home/viole/swaingotnochill/examples/generating_hand_written_digits_mnist_with_gan/digit-recognizer/train.csv\", dataset, true);\n", - "\n", - " // Split the dataset into training and validation sets.\n", - " mat train, valid;\n", - " data::Split(dataset, train, valid, RATIO);\n", - "\n", - " // The train and valid datasets contain both - the features as well as the\n", - " // class labels. Split these into separate mats.\n", - " const mat trainX = train.submat(1, 0, train.n_rows - 1, train.n_cols - 1);\n", - " const mat validX = valid.submat(1, 0, valid.n_rows - 1, valid.n_cols - 1);\n", - "\n", - " // Labels should specify the class of a data point and be in the interval [0,\n", - " // numClasses).\n", - "\n", - " // Create labels for training and validatiion datasets.\n", - " const mat trainY = train.row(0);\n", - " const mat validY = valid.row(0);\n", - "\n", - " // Specify the NN model. NegativeLogLikelihood is the output layer that\n", - " // is used for classification problem. RandomInitialization means that\n", - " // initial weights are generated randomly in the interval from -1 to 1.\n", - " FFN, RandomInitialization> model;\n", - "\n", - " // Specify the model architecture.\n", - " // In this example, the CNN architecture is chosen similar to LeNet-5.\n", - " // The architecture follows a Conv-ReLU-Pool-Conv-ReLU-Pool-Dense schema. We\n", - " // have used leaky ReLU activation instead of vanilla ReLU. Standard\n", - " // max-pooling has been used for pooling. The first convolution uses 6 filters\n", - " // of size 5x5 (and a stride of 1). The second convolution uses 16 filters of\n", - " // size 5x5 (stride = 1). The final dense layer is connected to a softmax to\n", - " // ensure that we get a valid probability distribution over the output classes\n", - "\n", - " // Layers schema.\n", - " // 28x28x1 --- conv (6 filters of size 5x5. stride = 1) ---> 24x24x6\n", - " // 24x24x6 --------------- Leaky ReLU ---------------------> 24x24x6\n", - " // 24x24x6 --- max pooling (over 2x2 fields. stride = 2) --> 12x12x6\n", - " // 12x12x6 --- conv (16 filters of size 5x5. stride = 1) --> 8x8x16\n", - " // 8x8x16 --------------- Leaky ReLU ---------------------> 8x8x16\n", - " // 8x8x16 --- max pooling (over 2x2 fields. stride = 2) --> 4x4x16\n", - " // 4x4x16 ------------------- Dense ----------------------> 10\n", - "\n", - " // Add the first convolution layer.\n", - " model.Add>(1, // Number of input activation maps.\n", - " 6, // Number of output activation maps.\n", - " 5, // Filter width.\n", - " 5, // Filter height.\n", - " 1, // Stride along width.\n", - " 1, // Stride along height.\n", - " 0, // Padding width.\n", - " 0, // Padding height.\n", - " 28, // Input width.\n", - " 28 // Input height.\n", - " );\n", - "\n", - " // Add first ReLU.\n", - " model.Add>();\n", - "\n", - " // Add first pooling layer. Pools over 2x2 fields in the input.\n", - " model.Add>(2, // Width of field.\n", - " 2, // Height of field.\n", - " 2, // Stride along width.\n", - " 2, // Stride along height.\n", - " true);\n", - "\n", - " // Add the second convolution layer.\n", - " model.Add>(6, // Number of input activation maps.\n", - " 16, // Number of output activation maps.\n", - " 5, // Filter width.\n", - " 5, // Filter height.\n", - " 1, // Stride along width.\n", - " 1, // Stride along height.\n", - " 0, // Padding width.\n", - " 0, // Padding height.\n", - " 12, // Input width.\n", - " 12 // Input height.\n", - " );\n", - "\n", - " // Add the second ReLU.\n", - " model.Add>();\n", - "\n", - " // Add the second pooling layer.\n", - " model.Add>(2, 2, 2, 2, true);\n", - "\n", - " // Add the final dense layer.\n", - " model.Add>(16 * 4 * 4, 10);\n", - " model.Add>();\n", - "\n", - " cout << \"Start training ...\" << endl;\n", - "\n", - " // Set parameters for the Adam optimizer.\n", - " ens::Adam optimizer(\n", - " STEP_SIZE, // Step size of the optimizer.\n", - " BATCH_SIZE, // Batch size. Number of data points that are used in each\n", - " // iteration.\n", - " 0.9, // Exponential decay rate for the first moment estimates.\n", - " 0.999, // Exponential decay rate for the weighted infinity norm estimates.\n", - " 1e-8, // Value used to initialise the mean squared gradient parameter.\n", - " MAX_ITERATIONS, // Max number of iterations.\n", - " 1e-8, // Tolerance.\n", - " true);\n", - "\n", - " // Train the CNN model. If this is the first iteration, weights are\n", - " // randomly initialized between -1 and 1. Otherwise, the values of weights\n", - " // from the previous iteration are used.\n", - " model.Train(trainX,\n", - " trainY,\n", - " optimizer,\n", - " ens::PrintLoss(),\n", - " ens::ProgressBar(),\n", - " // Stop the training using Early Stop at min loss.\n", - " ens::EarlyStopAtMinLoss(\n", - " [&](const arma::mat& /* param */)\n", - " {\n", - " double validationLoss = model.Evaluate(validX, validY);\n", - " std::cout << \"Validation loss: \" << validationLoss\n", - " << \".\" << std::endl;\n", - " return validationLoss;\n", - " }));\n", - "\n", - " // Matrix to store the predictions on train and validation datasets.\n", - " mat predOut;\n", - " // Get predictions on training data points.\n", - " model.Predict(trainX, predOut);\n", - " // Calculate accuracy on training data points.\n", - " arma::Row predLabels = getLabels(predOut);\n", - " double trainAccuracy =\n", - " arma::accu(predLabels == trainY) / (double) trainY.n_elem * 100;\n", - " // Get predictions on validating data points.\n", - " model.Predict(validX, predOut);\n", - " // Calculate accuracy on validating data points.\n", - " predLabels = getLabels(predOut);\n", - " double validAccuracy =\n", - " arma::accu(predLabels == validY) / (double) validY.n_elem * 100;\n", - "\n", - " std::cout << \"Accuracy: train = \" << trainAccuracy << \"%,\"\n", - " << \"\\t valid = \" << validAccuracy << \"%\" << std::endl;\n", - "\n", - " mlpack::data::Save(\"model.bin\", \"model\", model, false);\n", - "\n", - " std::cout << \"Predicting ...\" << std::endl;\n", - "\n", - " // Load test dataset\n", - " // The original file could be download from\n", - " // https://www.kaggle.com/c/digit-recognizer/data\n", - " data::Load(\"/home/viole/swaingotnochill/examples/generating_hand_written_digits_mnist_with_gan/digit-recognizer/test.csv\", dataset, true);\n", - " dataset.shed_row(dataset.n_rows - 1); // Remove labels before predicting.\n", - "\n", - " // Matrix to store the predictions on test dataset.\n", - " mat testPredOut;\n", - " // Get predictions on test data points.\n", - " model.Predict(dataset, testPredOut);\n", - " // Generate labels for the test dataset.\n", - " Row testPred = getLabels(testPredOut);\n", - " std::cout << \"Saving predicted labels to \\\"results.csv.\\\"...\" << std::endl;\n", - "\n", - " // Saving results into Kaggle compatibe CSV file.\n", - " testPred.save(\"results.csv\", arma::csv_ascii);\n", - " std::cout << \"Neural network model is saved to \\\"model.bin\\\"\" << std::endl;\n", - " std::cout << \"Finished\" << std::endl;\n", - "}" + " arma::mat trainData;\n", + " trainData.load(\"mnist_first250_training_4s_and_9s.arm\");\n", + " std::cout << arma::size(trainData) << std::endl;\n", + "\n", + " trainData = trainData.cols(0, datasetMaxCols - 1);\n", + "\n", + " size_t numIterations = trainData.n_cols * numEpoches;\n", + " numIterations /= batchSize;\n", + "\n", + " std::cout << \"Dataset loaded (\" << trainData.n_rows << \", \"\n", + " << trainData.n_cols << \")\" << std::endl;\n", + " std::cout << trainData.n_rows << \"--------\" << trainData.n_cols << std::endl;\n", + "\n", + " // Create the Discriminator network.\n", + " FFN > discriminator;\n", + " discriminator.Add >(1, dNumKernels, 5, 5, 1, 1, 2, 2, 28, 28);\n", + " discriminator.Add >();\n", + " discriminator.Add >(2, 2, 2, 2);\n", + " discriminator.Add >(dNumKernels, 2 * dNumKernels, 5, 5, 1, 1,\n", + " 2, 2, 14, 14);\n", + " discriminator.Add >();\n", + " discriminator.Add >(2, 2, 2, 2);\n", + " discriminator.Add >(7 * 7 * 2 * dNumKernels, 1024);\n", + " discriminator.Add >();\n", + " discriminator.Add >(1024, 1);\n", + "\n", + " // Create the Generator network.\n", + " FFN > generator;\n", + " generator.Add >(noiseDim, 3136);\n", + " generator.Add >(3136);\n", + " generator.Add >();\n", + " generator.Add >(1, noiseDim / 2, 3, 3, 2, 2, 1, 1, 56, 56);\n", + " generator.Add >(39200);\n", + " generator.Add >();\n", + " generator.Add >(28, 28, 56, 56, noiseDim / 2);\n", + " generator.Add >(noiseDim / 2, noiseDim / 4, 3, 3, 2, 2, 1, 1,\n", + " 56, 56);\n", + " generator.Add >(19600);\n", + " generator.Add >();\n", + " generator.Add >(28, 28, 56, 56, noiseDim / 4);\n", + " generator.Add >(noiseDim / 4, 1, 3, 3, 2, 2, 1, 1, 56, 56);\n", + " generator.Add >();\n", + "\n", + " // Create GAN.\n", + " GaussianInitialization gaussian(0, 1);\n", + " ens::Adam optimizer(stepSize, batchSize, 0.9, 0.999, eps, numIterations,\n", + " tolerance, shuffle);\n", + " std::function noiseFunction = [] () {\n", + " return math::RandNormal(0, 1);};\n", + " GAN >, GaussianInitialization,\n", + " std::function > gan(generator, discriminator,\n", + " gaussian, noiseFunction, noiseDim, batchSize, generatorUpdateStep,\n", + " discriminatorPreTrain, multiplier);\n", + "\n", + " std::cout << \"Training...\" << std::endl;\n", + " std::stringstream stream;\n", + " double objVal = gan.Train(trainData, optimizer, ens::ProgressBar(70, stream));\n", + "// REQUIRE(stream.str().length() > 0);\n", + "// REQUIRE(std::isfinite(objVal) == true);\n", + "\n", + "// // Generate samples.\n", + "// std::cout << \"Sampling...\" << std::endl;\n", + "// arma::mat noise(noiseDim, batchSize);\n", + "// size_t dim = std::sqrt(trainData.n_rows);\n", + "// arma::mat generatedData(2 * dim, dim * numSamples);\n", + "\n", + "// for (size_t i = 0; i < numSamples; ++i)\n", + "// {\n", + "// arma::mat samples;\n", + "// noise.imbue( [&]() { return noiseFunction(); } );\n", + "\n", + "// gan.Generator().Forward(noise, samples);\n", + "// samples.reshape(dim, dim);\n", + "// samples = samples.t();\n", + "\n", + "// generatedData.submat(0, i * dim, dim - 1, i * dim + dim - 1) = samples;\n", + "\n", + "// samples = trainData.col(math::RandInt(0, trainData.n_cols));\n", + "// samples.reshape(dim, dim);\n", + "// samples = samples.t();\n", + "\n", + "// generatedData.submat(dim,\n", + "// i * dim, 2 * dim - 1, i * dim + dim - 1) = samples;\n", + "// }\n", + "\n", + "// std::cout << \"Output generated!\" << std::endl;\n", + "\n", + "// // Check that Serialization is working correctly.\n", + "// arma::mat orgPredictions;\n", + "// gan.Predict(noise, orgPredictions);\n", + "\n", + "// GAN >, GaussianInitialization,\n", + "// std::function > ganText(generator, discriminator,\n", + "// gaussian, noiseFunction, noiseDim, batchSize, generatorUpdateStep,\n", + "// discriminatorPreTrain, multiplier);\n", + "\n", + "// GAN >, GaussianInitialization,\n", + "// std::function > ganXml(generator, discriminator,\n", + "// gaussian, noiseFunction, noiseDim, batchSize, generatorUpdateStep,\n", + "// discriminatorPreTrain, multiplier);\n", + "\n", + "// GAN >, GaussianInitialization,\n", + "// std::function > ganBinary(generator, discriminator,\n", + "// gaussian, noiseFunction, noiseDim, batchSize, generatorUpdateStep,\n", + "// discriminatorPreTrain, multiplier);\n", + "\n", + "// SerializeObjectAll(gan, ganXml, ganText, ganBinary);\n", + "\n", + "// arma::mat predictions, xmlPredictions, textPredictions, binaryPredictions;\n", + "// gan.Predict(noise, predictions);\n", + "// ganXml.Predict(noise, xmlPredictions);\n", + "// ganText.Predict(noise, textPredictions);\n", + "// ganBinary.Predict(noise, binaryPredictions);\n", + "\n", + "// CheckMatrices(orgPredictions, predictions);\n", + "// CheckMatrices(orgPredictions, xmlPredictions);\n", + "// CheckMatrices(orgPredictions, textPredictions);\n", + "// CheckMatrices(orgPredictions, binaryPredictions);" ] }, { "cell_type": "code", "execution_count": null, - "id": "5dbbc367", + "id": "f2af403d", "metadata": {}, "outputs": [], "source": []