From 40ca4e68097589a6143a6754328a1f94786c118a Mon Sep 17 00:00:00 2001 From: tishibas67 Date: Wed, 18 Mar 2015 00:11:01 +0900 Subject: [PATCH 001/458] improved to load RGB image as grayscale image --- python/caffe/io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index 6ae2cf13c..acd8a1427 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -285,7 +285,7 @@ def load_image(filename, color=True): of size (H x W x 3) in RGB or of size (H x W x 1) in grayscale. """ - img = skimage.img_as_float(skimage.io.imread(filename)).astype(np.float32) + img = skimage.img_as_float(skimage.io.imread(filename, as_grey=not color)).astype(np.float32) if img.ndim == 2: img = img[:, :, np.newaxis] if color: From e7f543bb264ad8597a3edaf3b938e9c3cc57bf33 Mon Sep 17 00:00:00 2001 From: ih4cku Date: Wed, 17 Jun 2015 12:15:28 +0800 Subject: [PATCH 002/458] register a dummy reducer to prevent mincepie runtime error --- tools/extra/resize_and_crop_images.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/extra/resize_and_crop_images.py b/tools/extra/resize_and_crop_images.py index c844f590c..fd2c3134e 100755 --- a/tools/extra/resize_and_crop_images.py +++ b/tools/extra/resize_and_crop_images.py @@ -101,7 +101,7 @@ def map(self, key, value): yield value, FLAGS.output_folder mapreducer.REGISTER_DEFAULT_MAPPER(ResizeCropImagesMapper) - +mapreducer.REGISTER_DEFAULT_REDUCER(mapreducer.NoPassReducer) mapreducer.REGISTER_DEFAULT_READER(mapreducer.FileReader) mapreducer.REGISTER_DEFAULT_WRITER(mapreducer.FileWriter) From 3fa0de93b059753ed378b474e1568980ed131a10 Mon Sep 17 00:00:00 2001 From: AdamStelmaszczyk Date: Sat, 4 Jul 2015 20:57:17 +0100 Subject: [PATCH 003/458] Deprecated OpenCV consts --- examples/cpp_classification/classification.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/cpp_classification/classification.cpp b/examples/cpp_classification/classification.cpp index 1c6371e38..0683a4975 100644 --- a/examples/cpp_classification/classification.cpp +++ b/examples/cpp_classification/classification.cpp @@ -186,13 +186,13 @@ void Classifier::Preprocess(const cv::Mat& img, /* Convert the input image to the input image format of the network. */ cv::Mat sample; if (img.channels() == 3 && num_channels_ == 1) - cv::cvtColor(img, sample, CV_BGR2GRAY); + cv::cvtColor(img, sample, cv::COLOR_BGR2GRAY); else if (img.channels() == 4 && num_channels_ == 1) - cv::cvtColor(img, sample, CV_BGRA2GRAY); + cv::cvtColor(img, sample, cv::COLOR_BGRA2GRAY); else if (img.channels() == 4 && num_channels_ == 3) - cv::cvtColor(img, sample, CV_BGRA2BGR); + cv::cvtColor(img, sample, cv::COLOR_BGRA2BGR); else if (img.channels() == 1 && num_channels_ == 3) - cv::cvtColor(img, sample, CV_GRAY2BGR); + cv::cvtColor(img, sample, cv::COLOR_GRAY2BGR); else sample = img; From 3c6485a95e2c5653c601f07fd7f5875cf956f3e6 Mon Sep 17 00:00:00 2001 From: Ajinkya Kale Date: Thu, 13 Aug 2015 17:10:46 -0700 Subject: [PATCH 004/458] fixing the database param The example talks about LevelDB as the db backend but has lmdb as the param in the execution. --- examples/feature_extraction/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/feature_extraction/readme.md b/examples/feature_extraction/readme.md index a980b8b32..f3ec36098 100644 --- a/examples/feature_extraction/readme.md +++ b/examples/feature_extraction/readme.md @@ -51,7 +51,7 @@ Extract Features Now everything necessary is in place. - ./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 lmdb + ./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb The name of feature blob that you extract is `fc7`, which represents the highest level feature of the reference model. We can use any other layer, as well, such as `conv5` or `pool3`. From 7453bbf6ea1aeb03330b5892a06276b69434f699 Mon Sep 17 00:00:00 2001 From: mhouston Date: Tue, 18 Aug 2015 13:40:00 -0700 Subject: [PATCH 005/458] Add some documentation on Multi-GPU support --- docs/multigpu.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 docs/multigpu.md diff --git a/docs/multigpu.md b/docs/multigpu.md new file mode 100644 index 000000000..4b2023474 --- /dev/null +++ b/docs/multigpu.md @@ -0,0 +1,24 @@ +--- +title: Multi-GPU Usage, Hardware Configuration Assumptions, and Performance +--- + +# Multi-GPU Usage + +Currently Multi-GPU is only supported via the C/C++ paths and only for training. + +The GPUs to be used for training can be set with the "-gpu" flag on the command line to the 'caffe' tool. e.g. "build/tools/caffe train --solver=models/bvlc_alexnet/solver.prototxt --gpu=0,1" will train on GPUs 0 and 1. + +**NOTE**: each GPU runs the batchsize specified in your train_val.prototxt. So if you go from 1 GPU to 2 GPU, your effective batchsize will double. e.g. if your train_val.prototxt specified a batchsize of 256, if you run 2 GPUs your effective batch size is now 512. So you need to adjust the batchsize when running multiple GPUs and/or adjust your solver params, specifically learning rate. + +# Hardware Configuration Assumptions + +The current implementation uses a tree reduction strategy. e.g. if there are 4 GPUs in the system, 0:1, 2:3 will exchange gradients, then 0:2 (top of the tree) will exchange gradients, 0 will calculate +updated model, 0\-\>2, and then 0\-\>1, 2\-\>3. + +For best performance, P2P DMA access between devices is needed. Without P2P access, for example crossing PCIe root complex, data is copied through host and effective exchange bandwidth is greatly reduced. + +Current implementation has a "soft" assumption that the devices being used are homogeneous. In practice, any devices of the same general class should work together, but performance and total size is limited by the smallest device being used. e.g. if you combine a TitanX and a GTX980, peformance will be limited by the 980. Mixing vastly different levels of boards, e.g. Kepler and Fermi, is not supported. + +# Scaling Performance + +Performance is **heavily** dependent on the PCIe topology of the system, the configuration of the neural network you are training, and the speed of each of the layers. Systems like the DIGITS DevBox have an optimized PCIe topology (X99-E WS chipset). In general, scaling on 2 GPUs tends to be ~1.8X on average for networks like AlexNet, CaffeNet, VGG, GoogleNet. 4 GPUs begins to have falloff in scaling. Generally with "weak scaling" where the batchsize increases with the number of GPUs you will see 3.5x scaling or so. With "strong scaling", the system can become communication bound, especially with layer performance optimizations like those in [cuDNNv3](http://nvidia.com/cudnn), and you will likely see closer to mid 2.x scaling in performance. Networks that have heavy computation compared to the number of parameters tend to have the best scaling performance. \ No newline at end of file From 26a9880d72e81d415d1dc3bf449586ce54185ea4 Mon Sep 17 00:00:00 2001 From: mhouston Date: Tue, 18 Aug 2015 15:29:26 -0700 Subject: [PATCH 006/458] Add information about how to get GPU topology from nvidia-smi --- docs/multigpu.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/multigpu.md b/docs/multigpu.md index 4b2023474..01cfb8938 100644 --- a/docs/multigpu.md +++ b/docs/multigpu.md @@ -19,6 +19,8 @@ For best performance, P2P DMA access between devices is needed. Without P2P acce Current implementation has a "soft" assumption that the devices being used are homogeneous. In practice, any devices of the same general class should work together, but performance and total size is limited by the smallest device being used. e.g. if you combine a TitanX and a GTX980, peformance will be limited by the 980. Mixing vastly different levels of boards, e.g. Kepler and Fermi, is not supported. +"nvidia-smi topo -m" will show you the connectivity matrix. You can do P2P through PCIe bridges, but not across socket level links at this time, e.g. across CPU sockets on a multi-socket motherboard. + # Scaling Performance Performance is **heavily** dependent on the PCIe topology of the system, the configuration of the neural network you are training, and the speed of each of the layers. Systems like the DIGITS DevBox have an optimized PCIe topology (X99-E WS chipset). In general, scaling on 2 GPUs tends to be ~1.8X on average for networks like AlexNet, CaffeNet, VGG, GoogleNet. 4 GPUs begins to have falloff in scaling. Generally with "weak scaling" where the batchsize increases with the number of GPUs you will see 3.5x scaling or so. With "strong scaling", the system can become communication bound, especially with layer performance optimizations like those in [cuDNNv3](http://nvidia.com/cudnn), and you will likely see closer to mid 2.x scaling in performance. Networks that have heavy computation compared to the number of parameters tend to have the best scaling performance. \ No newline at end of file From 7146e596347db81869b5bfa9b4cb014e80be9732 Mon Sep 17 00:00:00 2001 From: David Larson Date: Thu, 20 Aug 2015 15:18:03 -0700 Subject: [PATCH 007/458] [examples] fix link to feature visualization notebook --- examples/feature_extraction/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/feature_extraction/readme.md b/examples/feature_extraction/readme.md index a980b8b32..2bc3dacbb 100644 --- a/examples/feature_extraction/readme.md +++ b/examples/feature_extraction/readme.md @@ -64,7 +64,7 @@ If you meet with the error "Check failed: status.ok() Failed to open leveldb exa rm -rf examples/_temp/features/ -If you'd like to use the Python wrapper for extracting features, check out the [layer visualization notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/filter_visualization.ipynb). +If you'd like to use the Python wrapper for extracting features, check out the [filter visualization notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/00-classification.ipynb). Clean Up -------- From ac87850887f064752c2ad815367484c07eaf5449 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Wed, 26 Aug 2015 19:03:59 -0700 Subject: [PATCH 008/458] No need to squeeze the output of the network --- python/caffe/detector.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/detector.py b/python/caffe/detector.py index 75cd3b120..ef1f91730 100644 --- a/python/caffe/detector.py +++ b/python/caffe/detector.py @@ -83,7 +83,7 @@ def detect_windows(self, images_windows): for ix, window_in in enumerate(window_inputs): caffe_in[ix] = self.transformer.preprocess(in_, window_in) out = self.forward_all(**{in_: caffe_in}) - predictions = out[self.outputs[0]].squeeze(axis=(2, 3)) + predictions = out[self.outputs[0]] # Package predictions with images and windows. detections = [] From cf1516634d677cb8d2b2068e2b795c9b58a7c098 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Sun, 15 Feb 2015 15:18:56 -0800 Subject: [PATCH 009/458] Net: expose param_display_names_ --- include/caffe/net.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 1bf07d28d..bed241d2a 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -179,6 +179,9 @@ class Net { return param_names_index_; } inline const vector& param_owners() const { return param_owners_; } + inline const vector& param_display_names() const { + return param_display_names_; + } /// @brief Input and output blob numbers inline int num_inputs() const { return net_input_blobs_.size(); } inline int num_outputs() const { return net_output_blobs_.size(); } From 1394cdc383e2f41d7435862442b15151e8ac1237 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Fri, 4 Sep 2015 14:16:31 -0700 Subject: [PATCH 010/458] disallow PythonLayer in Multi-GPU training --- include/caffe/python_layer.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/caffe/python_layer.hpp b/include/caffe/python_layer.hpp index c43c1e8a9..b839d5268 100644 --- a/include/caffe/python_layer.hpp +++ b/include/caffe/python_layer.hpp @@ -18,6 +18,12 @@ class PythonLayer : public Layer { virtual void LayerSetUp(const vector*>& bottom, const vector*>& top) { + // Disallow PythonLayer in MultiGPU training stage, due to GIL issues + // Details: https://github.com/BVLC/caffe/issues/2936 + if (this->phase_ == TRAIN && Caffe::solver_count() > 1 + && !ShareInParallel()) { + LOG(FATAL) << "PythonLayer is not implemented in Multi-GPU training"; + } self_.attr("param_str") = bp::str( this->layer_param_.python_param().param_str()); self_.attr("setup")(bottom, top); From 3456259d400f7eef27e07c15c34f22b8d5e13bdd Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Sun, 13 Sep 2015 20:46:24 -0700 Subject: [PATCH 011/458] Use EXPECT_NEAR in EltwiseLayer test Otherwise there seem to be some numerical issues causing BLAS results not exactly same as evaluated results in test code. --- src/caffe/test/test_eltwise_layer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/test/test_eltwise_layer.cpp b/src/caffe/test/test_eltwise_layer.cpp index be0c13477..8031f6e90 100644 --- a/src/caffe/test/test_eltwise_layer.cpp +++ b/src/caffe/test/test_eltwise_layer.cpp @@ -80,7 +80,7 @@ TYPED_TEST(EltwiseLayerTest, TestProd) { const Dtype* in_data_b = this->blob_bottom_b_->cpu_data(); const Dtype* in_data_c = this->blob_bottom_c_->cpu_data(); for (int i = 0; i < count; ++i) { - EXPECT_EQ(data[i], in_data_a[i] * in_data_b[i] * in_data_c[i]); + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i] * in_data_c[i], 1e-4); } } @@ -99,7 +99,7 @@ TYPED_TEST(EltwiseLayerTest, TestSum) { const Dtype* in_data_b = this->blob_bottom_b_->cpu_data(); const Dtype* in_data_c = this->blob_bottom_c_->cpu_data(); for (int i = 0; i < count; ++i) { - EXPECT_EQ(data[i], in_data_a[i] + in_data_b[i] + in_data_c[i]); + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i] + in_data_c[i], 1e-4); } } From ab554cb4918cf7bccfada00339b4d1d5ccf3b4af Mon Sep 17 00:00:00 2001 From: Sean Bell Date: Wed, 9 Sep 2015 12:49:27 -0400 Subject: [PATCH 012/458] Check that the snapshot directory is writeable before starting training --- include/caffe/solver.hpp | 2 ++ src/caffe/solver.cpp | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index aba3e0360..8d52785ac 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -82,6 +82,8 @@ class Solver { callbacks_.push_back(value); } + void CheckSnapshotWritePermissions(); + protected: // Make and apply the update value for the current iteration. virtual void ApplyUpdate() = 0; diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 394ec3b3a..47493174f 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -55,6 +55,7 @@ void Solver::Init(const SolverParameter& param) { << std::endl << param.DebugString(); param_ = param; CHECK_GE(param_.average_loss(), 1) << "average_loss should be non-negative."; + CheckSnapshotWritePermissions(); if (Caffe::root_solver() && param_.random_seed() >= 0) { Caffe::set_random_seed(param_.random_seed()); } @@ -434,6 +435,24 @@ void Solver::Snapshot() { SnapshotSolverState(model_filename); } +template +void Solver::CheckSnapshotWritePermissions() { + if (Caffe::root_solver() && param_.snapshot()) { + CHECK(param_.has_snapshot_prefix()) + << "In solver params, snapshot is specified but snapshot_prefix is not"; + string probe_filename = SnapshotFilename(".tempfile"); + std::ofstream probe_ofs(probe_filename.c_str()); + if (probe_ofs.good()) { + probe_ofs.close(); + std::remove(probe_filename.c_str()); + } else { + LOG(FATAL) << "Cannot write to snapshot prefix '" + << param_.snapshot_prefix() << "'. Make sure " + << "that the directory exists and is writeable."; + } + } +} + template string Solver::SnapshotFilename(const string extension) { string filename(param_.snapshot_prefix()); From b7f9cba875c6db5c4ae33446dc80cd010c1c392c Mon Sep 17 00:00:00 2001 From: Mohamed Omran Date: Tue, 15 Sep 2015 17:18:32 +0200 Subject: [PATCH 013/458] removed bug in caffe.io.resize_image when applied to Nd images --- python/caffe/io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index fc9626608..0cad72112 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -329,7 +329,7 @@ def resize_image(im, new_dims, interp_order=1): return ret else: # ndimage interpolates anything but more slowly. - scale = tuple(np.array(new_dims) / np.array(im.shape[:2])) + scale = tuple(np.array(new_dims, dtype=float) / np.array(im.shape[:2])) resized_im = zoom(im, scale + (1,), order=interp_order) return resized_im.astype(np.float32) From 3d3a8b2ca09b64d94836652d0c9b5ffbb31551f6 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Wed, 16 Sep 2015 12:06:16 -0700 Subject: [PATCH 014/458] Get back 'USE CPU' print for caffe train --- tools/caffe.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/caffe.cpp b/tools/caffe.cpp index ff63860a3..e3f684b5a 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -174,6 +174,7 @@ int train() { vector gpus; get_gpus(&gpus); if (gpus.size() == 0) { + LOG(INFO) << "Use CPU."; Caffe::set_mode(Caffe::CPU); } else { ostringstream s; From f3a933a620b8b089a7fe29ba76ec27f5408ff68d Mon Sep 17 00:00:00 2001 From: Tea Date: Sat, 27 Jun 2015 11:44:56 +0800 Subject: [PATCH 015/458] Separate IO dependencies OpenCV, LMDB, LevelDB and Snappy are made optional via switches (USE_OPENCV, USE_LMDB, USE_LEVELDB) available for Make and CMake builds. Since Snappy is a LevelDB dependency, its use is determined by USE_LEVELDB. HDF5 is left bundled because it is used for serializing weights and solverstates. --- .travis.yml | 11 ++--- CMakeLists.txt | 7 +++- Makefile | 28 +++++++++++-- Makefile.config.example | 5 +++ cmake/ConfigGen.cmake | 12 ++++++ cmake/Dependencies.cmake | 41 ++++++++++++------- cmake/Summary.cmake | 18 +++++--- cmake/Templates/CaffeConfig.cmake.in | 26 ++++++------ cmake/Templates/caffe_config.h.in | 5 +++ docs/installation.md | 9 ++-- .../cpp_classification/classification.cpp | 8 ++++ examples/mnist/convert_mnist_data.cpp | 12 ++++++ .../siamese/convert_mnist_siamese_data.cpp | 9 +++- include/caffe/data_layers.hpp | 3 +- include/caffe/data_transformer.hpp | 5 ++- include/caffe/util/db_leveldb.hpp | 2 + include/caffe/util/db_lmdb.hpp | 2 + include/caffe/util/io.hpp | 2 + python/caffe/test/test_layer_type_list.py | 1 + scripts/travis/travis_build_and_test.sh | 14 ++++++- .../travis/travis_setup_makefile_config.sh | 6 +++ src/caffe/data_transformer.cpp | 16 +++++++- src/caffe/layers/data_layer.cpp | 3 +- src/caffe/layers/image_data_layer.cpp | 2 + src/caffe/layers/memory_data_layer.cpp | 4 ++ src/caffe/layers/window_data_layer.cpp | 2 + src/caffe/test/test_data_layer.cpp | 6 +++ src/caffe/test/test_data_transformer.cpp | 2 + src/caffe/test/test_db.cpp | 2 + src/caffe/test/test_image_data_layer.cpp | 2 + src/caffe/test/test_io.cpp | 2 + src/caffe/test/test_layer_factory.cpp | 4 ++ src/caffe/test/test_memory_data_layer.cpp | 5 ++- src/caffe/test/test_upgrade_proto.cpp | 12 +++++- src/caffe/util/db.cpp | 14 +++++-- src/caffe/util/db_leveldb.cpp | 2 + src/caffe/util/db_lmdb.cpp | 2 + src/caffe/util/io.cpp | 10 ++++- tools/compute_image_mean.cpp | 4 ++ tools/convert_imageset.cpp | 4 ++ 40 files changed, 264 insertions(+), 60 deletions(-) diff --git a/.travis.yml b/.travis.yml index b920a935d..4dc7ed72d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,12 @@ # one using CMake, and one using make. env: matrix: - - WITH_CUDA=false WITH_CMAKE=false - - WITH_CUDA=false WITH_CMAKE=true - - WITH_CUDA=true WITH_CMAKE=false - - WITH_CUDA=true WITH_CMAKE=true - - WITH_CUDA=false WITH_CMAKE=true PYTHON_VERSION=3 + - WITH_CUDA=false WITH_CMAKE=false WITH_IO=true + - WITH_CUDA=false WITH_CMAKE=true WITH_IO=true PYTHON_VERSION=3 + - WITH_CUDA=true WITH_CMAKE=false WITH_IO=true + - WITH_CUDA=true WITH_CMAKE=true WITH_IO=true + - WITH_CUDA=false WITH_CMAKE=false WITH_IO=false + - WITH_CUDA=false WITH_CMAKE=true WITH_IO=false PYTHON_VERSION=3 language: cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ef599b689..838723bec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,13 +16,16 @@ include(cmake/ConfigGen.cmake) # ---[ Options caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA -caffe_option(USE_CUDNN "Build Caffe with cuDNN libary support" ON IF NOT CPU_ONLY) +caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY) caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON) caffe_option(BUILD_python "Build Python wrapper" ON) set(python_version "2" CACHE STRING "Specify which python version to use") caffe_option(BUILD_matlab "Build Matlab wrapper" OFF IF UNIX OR APPLE) caffe_option(BUILD_docs "Build documentation" ON IF UNIX OR APPLE) -caffe_option(BUILD_python_layer "Build the Caffe python layer" ON) +caffe_option(BUILD_python_layer "Build the caffe python layer" ON) +caffe_option(USE_LMDB "Build with lmdb" ON) +caffe_option(USE_LEVELDB "Build with levelDB" ON) +caffe_option(USE_OPENCV "Build with OpenCV support" ON) # ---[ Dependencies include(cmake/Dependencies.cmake) diff --git a/Makefile b/Makefile index 80bc37375..ddaed59b0 100644 --- a/Makefile +++ b/Makefile @@ -169,9 +169,18 @@ ifneq ($(CPU_ONLY), 1) LIBRARY_DIRS += $(CUDA_LIB_DIR) LIBRARIES := cudart cublas curand endif -LIBRARIES += glog gflags protobuf leveldb snappy \ - lmdb boost_system hdf5_hl hdf5 m \ - opencv_core opencv_highgui opencv_imgproc + +LIBRARIES += glog gflags protobuf boost_system m hdf5_hl hdf5 + +ifeq ($(USE_LEVELDB), 1) + LIBRARIES += leveldb snappy +endif +ifeq ($(USE_LMDB), 1) + LIBRARIES += lmdb +endif +ifeq ($(USE_OPENCV), 1) + LIBRARIES += opencv_core opencv_highgui opencv_imgproc +endif PYTHON_LIBRARIES := boost_python python2.7 WARNINGS := -Wall -Wno-sign-compare @@ -290,6 +299,17 @@ ifeq ($(USE_CUDNN), 1) COMMON_FLAGS += -DUSE_CUDNN endif +# i/o libraries configuration +ifeq ($(USE_OPENCV), 1) + COMMON_FLAGS += -DUSE_OPENCV +endif +ifeq ($(USE_LEVELDB), 1) + COMMON_FLAGS += -DUSE_LEVELDB +endif +ifeq ($(USE_LMDB), 1) + COMMON_FLAGS += -DUSE_LMDB +endif + # CPU-only configuration ifeq ($(CPU_ONLY), 1) OBJS := $(PROTO_OBJS) $(CXX_OBJS) @@ -472,7 +492,7 @@ runtest: $(TEST_ALL_BIN) pytest: py cd python; python -m unittest discover -s caffe/test - + mattest: mat cd matlab; $(MATLAB_DIR)/bin/matlab -nodisplay -r 'caffe.run_tests(), exit()' diff --git a/Makefile.config.example b/Makefile.config.example index a87350255..32e67ee49 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -7,6 +7,11 @@ # CPU-only switch (uncomment to build without GPU support). # CPU_ONLY := 1 +# comment out to disable IO dependencies +USE_LEVELDB := 1 +USE_LMDB := 1 +USE_OPENCV := 1 + # To customize your choice of compiler, uncomment and set the following. # N.B. the default for Linux is g++ and the default for OSX is clang++ # CUSTOM_CXX := g++ diff --git a/cmake/ConfigGen.cmake b/cmake/ConfigGen.cmake index 566d6ca0a..8b2599653 100644 --- a/cmake/ConfigGen.cmake +++ b/cmake/ConfigGen.cmake @@ -56,6 +56,18 @@ function(caffe_generate_export_configs) list(APPEND Caffe_DEFINITIONS -DCPU_ONLY) endif() + if(USE_OPENCV) + list(APPEND Caffe_DEFINITIONS -DUSE_OPENCV) + endif() + + if(USE_LMDB) + list(APPEND Caffe_DEFINITIONS -DUSE_LMDB) + endif() + + if(USE_LEVELDB) + list(APPEND Caffe_DEFINITIONS -DUSE_LEVELDB) + endif() + if(NOT HAVE_CUDNN) set(HAVE_CUDNN FALSE) else() diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 7c86dd55a..d68d7bfba 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -29,19 +29,27 @@ include_directories(SYSTEM ${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) list(APPEND Caffe_LINKER_LIBS ${HDF5_LIBRARIES}) # ---[ LMDB -find_package(LMDB REQUIRED) -include_directories(SYSTEM ${LMDB_INCLUDE_DIR}) -list(APPEND Caffe_LINKER_LIBS ${LMDB_LIBRARIES}) +if(USE_LMDB) + find_package(LMDB REQUIRED) + include_directories(SYSTEM ${LMDB_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS ${LMDB_LIBRARIES}) + add_definitions(-DUSE_LMDB) +endif() # ---[ LevelDB -find_package(LevelDB REQUIRED) -include_directories(SYSTEM ${LevelDB_INCLUDE}) -list(APPEND Caffe_LINKER_LIBS ${LevelDB_LIBRARIES}) +if(USE_LEVELDB) + find_package(LevelDB REQUIRED) + include_directories(SYSTEM ${LevelDB_INCLUDE}) + list(APPEND Caffe_LINKER_LIBS ${LevelDB_LIBRARIES}) + add_definitions(-DUSE_LEVELDB) +endif() # ---[ Snappy -find_package(Snappy REQUIRED) -include_directories(SYSTEM ${Snappy_INCLUDE_DIR}) -list(APPEND Caffe_LINKER_LIBS ${Snappy_LIBRARIES}) +if(USE_LEVELDB) + find_package(Snappy REQUIRED) + include_directories(SYSTEM ${Snappy_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS ${Snappy_LIBRARIES}) +endif() # ---[ CUDA include(cmake/Cuda.cmake) @@ -57,13 +65,16 @@ if(NOT HAVE_CUDA) endif() # ---[ OpenCV -find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) -if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found - find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc) +if(USE_OPENCV) + find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) + if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found + find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc) + endif() + include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS ${OpenCV_LIBS}) + message(STATUS "OpenCV found (${OpenCV_CONFIG_PATH})") + add_definitions(-DUSE_OPENCV) endif() -include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS}) -list(APPEND Caffe_LINKER_LIBS ${OpenCV_LIBS}) -message(STATUS "OpenCV found (${OpenCV_CONFIG_PATH})") # ---[ BLAS if(NOT APPLE) diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index e094ac004..3d12e81a1 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -114,6 +114,9 @@ function(caffe_print_configuration_summary) caffe_status(" BUILD_matlab : ${BUILD_matlab}") caffe_status(" BUILD_docs : ${BUILD_docs}") caffe_status(" CPU_ONLY : ${CPU_ONLY}") + caffe_status(" USE_LMDB : ${USE_LMDB}") + caffe_status(" USE_LEVELDB : ${USE_LEVELDB}") + caffe_status(" USE_OPENCV : ${USE_OPENCV}") caffe_status("") caffe_status("Dependencies:") caffe_status(" BLAS : " APPLE THEN "Yes (vecLib)" ELSE "Yes (${BLAS})") @@ -121,10 +124,16 @@ function(caffe_print_configuration_summary) caffe_status(" glog : Yes") caffe_status(" gflags : Yes") caffe_status(" protobuf : " PROTOBUF_FOUND THEN "Yes (ver. ${PROTOBUF_VERSION})" ELSE "No" ) - caffe_status(" lmdb : " LMDB_FOUND THEN "Yes (ver. ${LMDB_VERSION})" ELSE "No") - caffe_status(" Snappy : " SNAPPY_FOUND THEN "Yes (ver. ${Snappy_VERSION})" ELSE "No" ) - caffe_status(" LevelDB : " LEVELDB_FOUND THEN "Yes (ver. ${LEVELDB_VERSION})" ELSE "No") - caffe_status(" OpenCV : Yes (ver. ${OpenCV_VERSION})") + if(USE_LMDB) + caffe_status(" lmdb : " LMDB_FOUND THEN "Yes (ver. ${LMDB_VERSION})" ELSE "No") + endif() + if(USE_LEVELDB) + caffe_status(" LevelDB : " LEVELDB_FOUND THEN "Yes (ver. ${LEVELDB_VERSION})" ELSE "No") + caffe_status(" Snappy : " SNAPPY_FOUND THEN "Yes (ver. ${Snappy_VERSION})" ELSE "No" ) + endif() + if(USE_OPENCV) + caffe_status(" OpenCV : Yes (ver. ${OpenCV_VERSION})") + endif() caffe_status(" CUDA : " HAVE_CUDA THEN "Yes (ver. ${CUDA_VERSION})" ELSE "No" ) caffe_status("") if(HAVE_CUDA) @@ -165,4 +174,3 @@ function(caffe_print_configuration_summary) caffe_status(" Install path : ${CMAKE_INSTALL_PREFIX}") caffe_status("") endfunction() - diff --git a/cmake/Templates/CaffeConfig.cmake.in b/cmake/Templates/CaffeConfig.cmake.in index 8f23742e5..73f57ac2d 100644 --- a/cmake/Templates/CaffeConfig.cmake.in +++ b/cmake/Templates/CaffeConfig.cmake.in @@ -17,22 +17,24 @@ # Caffe_HAVE_CUDNN - signals about cuDNN support -# OpenCV dependency +# OpenCV dependency (optional) -if(NOT OpenCV_FOUND) - set(Caffe_OpenCV_CONFIG_PATH "@OpenCV_CONFIG_PATH@") - if(Caffe_OpenCV_CONFIG_PATH) - get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE) +if(@USE_OPENCV@) + if(NOT OpenCV_FOUND) + set(Caffe_OpenCV_CONFIG_PATH "@OpenCV_CONFIG_PATH@") + if(Caffe_OpenCV_CONFIG_PATH) + get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE) - if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core) - message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}") - include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake) - endif() + if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core) + message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}") + include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake) + endif() - else() - find_package(OpenCV REQUIRED) + else() + find_package(OpenCV REQUIRED) + endif() + unset(Caffe_OpenCV_CONFIG_PATH) endif() - unset(Caffe_OpenCV_CONFIG_PATH) endif() # Compute paths diff --git a/cmake/Templates/caffe_config.h.in b/cmake/Templates/caffe_config.h.in index 6039e8f6b..9302022d7 100644 --- a/cmake/Templates/caffe_config.h.in +++ b/cmake/Templates/caffe_config.h.in @@ -30,3 +30,8 @@ /* Matlab */ #cmakedefine HAVE_MATLAB + +/* IO libraries */ +#cmakedefine USE_OPENCV +#cmakedefine USE_LMDB +#cmakedefine USE_LEVELDB diff --git a/docs/installation.md b/docs/installation.md index d535c6d09..89a8c71c7 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -17,16 +17,19 @@ When updating Caffe, it's best to `make clean` before re-compiling. ## Prerequisites -Caffe has several dependencies. +Caffe has several dependencies: * [CUDA](https://developer.nvidia.com/cuda-zone) is required for GPU mode. * library version 7.0 and the latest driver version are recommended, but 6.* is fine too * 5.5, and 5.0 are compatible but considered legacy * [BLAS](http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) via ATLAS, MKL, or OpenBLAS. * [Boost](http://www.boost.org/) >= 1.55 +* `protobuf`, `glog`, `gflags`, `hdf5` + +Optional dependencies: + * [OpenCV](http://opencv.org/) >= 2.4 including 3.0 -* `protobuf`, `glog`, `gflags` -* IO libraries `hdf5`, `leveldb`, `snappy`, `lmdb` +* IO libraries: `lmdb`, `leveldb` (note: leveldb requires `snappy`) Pycaffe and Matcaffe interfaces have their own natural needs. diff --git a/examples/cpp_classification/classification.cpp b/examples/cpp_classification/classification.cpp index dc8b863f5..de48fb692 100644 --- a/examples/cpp_classification/classification.cpp +++ b/examples/cpp_classification/classification.cpp @@ -1,7 +1,9 @@ #include +#ifdef USE_OPENCV #include #include #include +#endif // USE_OPENCV #include #include #include @@ -9,6 +11,7 @@ #include #include +#ifdef USE_OPENCV using namespace caffe; // NOLINT(build/namespaces) using std::string; @@ -255,3 +258,8 @@ int main(int argc, char** argv) { << p.first << "\"" << std::endl; } } +#else +int main(int argc, char** argv) { + LOG(FATAL) << "This example requires OpenCV; compile with USE_OPENCV."; +} +#endif // USE_OPENCV diff --git a/examples/mnist/convert_mnist_data.cpp b/examples/mnist/convert_mnist_data.cpp index 54443f11d..8f29bafde 100644 --- a/examples/mnist/convert_mnist_data.cpp +++ b/examples/mnist/convert_mnist_data.cpp @@ -9,9 +9,13 @@ #include #include #include + +#if defined(USE_LEVELDB) && defined(USE_LMDB) #include #include #include +#endif + #include #include @@ -20,6 +24,8 @@ #include "caffe/proto/caffe.pb.h" +#if defined(USE_LEVELDB) && defined(USE_LMDB) + using namespace caffe; // NOLINT(build/namespaces) using std::string; @@ -196,3 +202,9 @@ int main(int argc, char** argv) { } return 0; } +#else +int main(int argc, char** argv) { + LOG(FATAL) << "This example requires LevelDB and LMDB; " << + "compile with USE_LEVELDB and USE_LMDB."; +} +#endif // USE_LEVELDB and USE_LMDB diff --git a/examples/siamese/convert_mnist_siamese_data.cpp b/examples/siamese/convert_mnist_siamese_data.cpp index 8008b4439..ad08036fb 100644 --- a/examples/siamese/convert_mnist_siamese_data.cpp +++ b/examples/siamese/convert_mnist_siamese_data.cpp @@ -10,12 +10,14 @@ #include "glog/logging.h" #include "google/protobuf/text_format.h" -#include "leveldb/db.h" #include "stdint.h" #include "caffe/proto/caffe.pb.h" #include "caffe/util/math_functions.hpp" +#ifdef USE_LEVELDB +#include "leveldb/db.h" + uint32_t swap_endian(uint32_t val) { val = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0xFF00FF); return (val << 16) | (val >> 16); @@ -121,3 +123,8 @@ int main(int argc, char** argv) { } return 0; } +#else +int main(int argc, char** argv) { + LOG(FATAL) << "This example requires LevelDB; compile with USE_LEVELDB."; +} +#endif // USE_LEVELDB diff --git a/include/caffe/data_layers.hpp b/include/caffe/data_layers.hpp index 552d81413..90fd0d199 100644 --- a/include/caffe/data_layers.hpp +++ b/include/caffe/data_layers.hpp @@ -4,7 +4,6 @@ #include #include #include - #include "hdf5.h" #include "caffe/blob.hpp" @@ -275,8 +274,10 @@ class MemoryDataLayer : public BaseDataLayer { virtual inline int ExactNumTopBlobs() const { return 2; } virtual void AddDatumVector(const vector& datum_vector); +#ifdef USE_OPENCV virtual void AddMatVector(const vector& mat_vector, const vector& labels); +#endif // USE_OPENCV // Reset should accept const pointers, but can't, because the memory // will be given to Blob, which is mutable diff --git a/include/caffe/data_transformer.hpp b/include/caffe/data_transformer.hpp index 0ad68c802..97b4ee6a8 100644 --- a/include/caffe/data_transformer.hpp +++ b/include/caffe/data_transformer.hpp @@ -50,6 +50,7 @@ class DataTransformer { void Transform(const vector & datum_vector, Blob* transformed_blob); +#ifdef USE_OPENCV /** * @brief Applies the transformation defined in the data layer's * transform_param block to a vector of Mat. @@ -74,6 +75,7 @@ class DataTransformer { * set_cpu_data() is used. See image_data_layer.cpp for an example. */ void Transform(const cv::Mat& cv_img, Blob* transformed_blob); +#endif // USE_OPENCV /** * @brief Applies the same transformation defined in the data layer's @@ -113,6 +115,7 @@ class DataTransformer { * @param mat_vector * A vector of Mat containing the data to be transformed. */ +#ifdef USE_OPENCV vector InferBlobShape(const vector & mat_vector); /** * @brief Infers the shape of transformed_blob will have when @@ -122,6 +125,7 @@ class DataTransformer { * cv::Mat containing the data to be transformed. */ vector InferBlobShape(const cv::Mat& cv_img); +#endif // USE_OPENCV protected: /** @@ -148,4 +152,3 @@ class DataTransformer { } // namespace caffe #endif // CAFFE_DATA_TRANSFORMER_HPP_ - diff --git a/include/caffe/util/db_leveldb.hpp b/include/caffe/util/db_leveldb.hpp index 10623554b..e9fa0d32b 100644 --- a/include/caffe/util/db_leveldb.hpp +++ b/include/caffe/util/db_leveldb.hpp @@ -1,3 +1,4 @@ +#ifdef USE_LEVELDB #ifndef CAFFE_UTIL_DB_LEVELDB_HPP #define CAFFE_UTIL_DB_LEVELDB_HPP @@ -71,3 +72,4 @@ class LevelDB : public DB { } // namespace caffe #endif // CAFFE_UTIL_DB_LEVELDB_HPP +#endif // USE_LEVELDB diff --git a/include/caffe/util/db_lmdb.hpp b/include/caffe/util/db_lmdb.hpp index cc7c90afc..4e1568ace 100644 --- a/include/caffe/util/db_lmdb.hpp +++ b/include/caffe/util/db_lmdb.hpp @@ -1,3 +1,4 @@ +#ifdef USE_LMDB #ifndef CAFFE_UTIL_DB_LMDB_HPP #define CAFFE_UTIL_DB_LMDB_HPP @@ -89,3 +90,4 @@ class LMDB : public DB { } // namespace caffe #endif // CAFFE_UTIL_DB_LMDB_HPP +#endif // USE_LMDB diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index c0938ad06..6070b4c7f 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -120,6 +120,7 @@ inline bool ReadImageToDatum(const string& filename, const int label, bool DecodeDatumNative(Datum* datum); bool DecodeDatum(Datum* datum, bool is_color); +#ifdef USE_OPENCV cv::Mat ReadImageToCVMat(const string& filename, const int height, const int width, const bool is_color); @@ -135,6 +136,7 @@ cv::Mat DecodeDatumToCVMatNative(const Datum& datum); cv::Mat DecodeDatumToCVMat(const Datum& datum, bool is_color); void CVMatToDatum(const cv::Mat& cv_img, Datum* datum); +#endif // USE_OPENCV } // namespace caffe diff --git a/python/caffe/test/test_layer_type_list.py b/python/caffe/test/test_layer_type_list.py index 7edc80df0..47f4cf6d0 100644 --- a/python/caffe/test/test_layer_type_list.py +++ b/python/caffe/test/test_layer_type_list.py @@ -5,6 +5,7 @@ class TestLayerTypeList(unittest.TestCase): def test_standard_types(self): + #removing 'Data' from list for type_name in ['Data', 'Convolution', 'InnerProduct']: self.assertIn(type_name, caffe.layer_type_list(), '%s not in layer_type_list()' % type_name) diff --git a/scripts/travis/travis_build_and_test.sh b/scripts/travis/travis_build_and_test.sh index 9ba737e28..bbc821334 100755 --- a/scripts/travis/travis_build_and_test.sh +++ b/scripts/travis/travis_build_and_test.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Script called by Travis to do a CPU-only build of and test Caffe. +# Script called by Travis to build and test Caffe. set -e MAKE="make --jobs=$NUM_THREADS --keep-going" @@ -15,7 +15,12 @@ if $WITH_CMAKE; then if [ "$PYTHON_VERSION" = "3" ]; then PYTHON_ARGS="$PYTHON_ARGS -Dpython_version=3 -DBOOST_LIBRARYDIR=$CONDA_DIR/lib/" fi - cmake -DBUILD_python=ON -DCMAKE_BUILD_TYPE=Release $CPU_ONLY $PYTHON_ARGS -DCMAKE_INCLUDE_PATH="$CONDA_DIR/include/" -DCMAKE_LIBRARY_PATH="$CONDA_DIR/lib/" .. + if $WITH_IO; then + IO_ARGS="-DUSE_OPENCV=ON -DUSE_LMDB=ON -DUSE_LEVELDB=ON" + else + IO_ARGS="-DUSE_OPENCV=OFF -DUSE_LMDB=OFF -DUSE_LEVELDB=OFF" + fi + cmake -DBUILD_python=ON -DCMAKE_BUILD_TYPE=Release $CPU_ONLY $PYTHON_ARGS -DCMAKE_INCLUDE_PATH="$CONDA_DIR/include/" -DCMAKE_LIBRARY_PATH="$CONDA_DIR/lib/" $IO_ARGS .. $MAKE $MAKE pytest if ! $WITH_CUDA; then @@ -28,6 +33,11 @@ else if ! $WITH_CUDA; then export CPU_ONLY=1 fi + if $WITH_IO; then + export USE_LMDB=1 + export USE_LEVELDB=1 + export USE_OPENCV=1 + fi $MAKE all test pycaffe warn lint || true if ! $WITH_CUDA; then $MAKE runtest diff --git a/scripts/travis/travis_setup_makefile_config.sh b/scripts/travis/travis_setup_makefile_config.sh index 1440be2af..83aacf11f 100755 --- a/scripts/travis/travis_setup_makefile_config.sh +++ b/scripts/travis/travis_setup_makefile_config.sh @@ -11,6 +11,12 @@ if $WITH_CUDA; then echo "CUDA_ARCH := $GENCODE" >> Makefile.config fi +# Remove IO library settings from Makefile.config +# to avoid conflicts with CI configuration +sed -i -e '/USE_LMDB/d' Makefile.config +sed -i -e '/USE_LEVELDB/d' Makefile.config +sed -i -e '/USE_OPENCV/d' Makefile.config + cat << 'EOF' >> Makefile.config # Travis' nvcc doesn't like newer boost versions NVCCFLAGS := -Xcudafe --diag_suppress=cc_clobber_ignored -Xcudafe --diag_suppress=useless_using_declaration -Xcudafe --diag_suppress=set_but_not_used diff --git a/src/caffe/data_transformer.cpp b/src/caffe/data_transformer.cpp index 4666d9bd8..7189d67e2 100644 --- a/src/caffe/data_transformer.cpp +++ b/src/caffe/data_transformer.cpp @@ -1,4 +1,6 @@ +#ifdef USE_OPENCV #include +#endif // USE_OPENCV #include #include @@ -124,11 +126,13 @@ void DataTransformer::Transform(const Datum& datum, } } + template void DataTransformer::Transform(const Datum& datum, Blob* transformed_blob) { // If datum is encoded, decoded and transform the cv::image. if (datum.encoded()) { +#ifdef USE_OPENCV CHECK(!(param_.force_color() && param_.force_gray())) << "cannot set both force_color and force_gray"; cv::Mat cv_img; @@ -140,6 +144,9 @@ void DataTransformer::Transform(const Datum& datum, } // Transform the cv::image into blob. return Transform(cv_img, transformed_blob); +#else + LOG(FATAL) << "Encoded datum requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV } else { if (param_.force_color() || param_.force_gray()) { LOG(ERROR) << "force_color and force_gray only for encoded datum"; @@ -194,6 +201,7 @@ void DataTransformer::Transform(const vector & datum_vector, } } +#ifdef USE_OPENCV template void DataTransformer::Transform(const vector & mat_vector, Blob* transformed_blob) { @@ -315,6 +323,7 @@ void DataTransformer::Transform(const cv::Mat& cv_img, } } } +#endif // USE_OPENCV template void DataTransformer::Transform(Blob* input_blob, @@ -432,6 +441,7 @@ void DataTransformer::Transform(Blob* input_blob, template vector DataTransformer::InferBlobShape(const Datum& datum) { if (datum.encoded()) { +#ifdef USE_OPENCV CHECK(!(param_.force_color() && param_.force_gray())) << "cannot set both force_color and force_gray"; cv::Mat cv_img; @@ -443,8 +453,10 @@ vector DataTransformer::InferBlobShape(const Datum& datum) { } // InferBlobShape using the cv::image. return InferBlobShape(cv_img); +#else + LOG(FATAL) << "Encoded datum requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV } - const int crop_size = param_.crop_size(); const int datum_channels = datum.channels(); const int datum_height = datum.height(); @@ -474,6 +486,7 @@ vector DataTransformer::InferBlobShape( return shape; } +#ifdef USE_OPENCV template vector DataTransformer::InferBlobShape(const cv::Mat& cv_img) { const int crop_size = param_.crop_size(); @@ -504,6 +517,7 @@ vector DataTransformer::InferBlobShape( shape[0] = num; return shape; } +#endif // USE_OPENCV template void DataTransformer::InitRand() { diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index 0932d9fef..71f8cb099 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -1,5 +1,6 @@ +#ifdef USE_OPENCV #include - +#endif // USE_OPENCV #include #include diff --git a/src/caffe/layers/image_data_layer.cpp b/src/caffe/layers/image_data_layer.cpp index 223ba3a75..3d2190f8b 100644 --- a/src/caffe/layers/image_data_layer.cpp +++ b/src/caffe/layers/image_data_layer.cpp @@ -1,3 +1,4 @@ +#ifdef USE_OPENCV #include #include // NOLINT(readability/streams) @@ -164,3 +165,4 @@ INSTANTIATE_CLASS(ImageDataLayer); REGISTER_LAYER_CLASS(ImageData); } // namespace caffe +#endif // USE_OPENCV diff --git a/src/caffe/layers/memory_data_layer.cpp b/src/caffe/layers/memory_data_layer.cpp index 42de4198b..2370aa04d 100644 --- a/src/caffe/layers/memory_data_layer.cpp +++ b/src/caffe/layers/memory_data_layer.cpp @@ -1,4 +1,6 @@ +#ifdef USE_OPENCV #include +#endif // USE_OPENCV #include @@ -53,6 +55,7 @@ void MemoryDataLayer::AddDatumVector(const vector& datum_vector) { has_new_data_ = true; } +#ifdef USE_OPENCV template void MemoryDataLayer::AddMatVector(const vector& mat_vector, const vector& labels) { @@ -76,6 +79,7 @@ void MemoryDataLayer::AddMatVector(const vector& mat_vector, Reset(top_data, top_label, num); has_new_data_ = true; } +#endif // USE_OPENCV template void MemoryDataLayer::Reset(Dtype* data, Dtype* labels, int n) { diff --git a/src/caffe/layers/window_data_layer.cpp b/src/caffe/layers/window_data_layer.cpp index f637f2ec6..f8db61c92 100644 --- a/src/caffe/layers/window_data_layer.cpp +++ b/src/caffe/layers/window_data_layer.cpp @@ -1,3 +1,4 @@ +#ifdef USE_OPENCV #include #include @@ -468,3 +469,4 @@ INSTANTIATE_CLASS(WindowDataLayer); REGISTER_LAYER_CLASS(WindowData); } // namespace caffe +#endif // USE_OPENCV diff --git a/src/caffe/test/test_data_layer.cpp b/src/caffe/test/test_data_layer.cpp index afe2a40d2..9e03954a5 100644 --- a/src/caffe/test/test_data_layer.cpp +++ b/src/caffe/test/test_data_layer.cpp @@ -1,3 +1,4 @@ +#ifdef USE_OPENCV #include #include @@ -348,6 +349,7 @@ class DataLayerTest : public MultiDeviceTest { TYPED_TEST_CASE(DataLayerTest, TestDtypesAndDevices); +#ifdef USE_LEVELDB TYPED_TEST(DataLayerTest, TestReadLevelDB) { const bool unique_pixels = false; // all pixels the same; images different this->Fill(unique_pixels, DataParameter_DB_LEVELDB); @@ -385,7 +387,9 @@ TYPED_TEST(DataLayerTest, TestReadCropTestLevelDB) { this->Fill(unique_pixels, DataParameter_DB_LEVELDB); this->TestReadCrop(TEST); } +#endif // USE_LEVELDB +#ifdef USE_LMDB TYPED_TEST(DataLayerTest, TestReadLMDB) { const bool unique_pixels = false; // all pixels the same; images different this->Fill(unique_pixels, DataParameter_DB_LMDB); @@ -424,4 +428,6 @@ TYPED_TEST(DataLayerTest, TestReadCropTestLMDB) { this->TestReadCrop(TEST); } +#endif // USE_LMDB } // namespace caffe +#endif // USE_OPENCV diff --git a/src/caffe/test/test_data_transformer.cpp b/src/caffe/test/test_data_transformer.cpp index 16570e203..8a1013744 100644 --- a/src/caffe/test/test_data_transformer.cpp +++ b/src/caffe/test/test_data_transformer.cpp @@ -1,3 +1,4 @@ +#ifdef USE_OPENCV #include #include @@ -353,3 +354,4 @@ TYPED_TEST(DataTransformTest, TestMeanFile) { } } // namespace caffe +#endif // USE_OPENCV diff --git a/src/caffe/test/test_db.cpp b/src/caffe/test/test_db.cpp index 5b2ac230a..1b487b14c 100644 --- a/src/caffe/test/test_db.cpp +++ b/src/caffe/test/test_db.cpp @@ -1,3 +1,4 @@ +#if defined(USE_LEVELDB) && defined(USE_LMDB) && defined(USE_OPENCV) #include #include "boost/scoped_ptr.hpp" @@ -132,3 +133,4 @@ TYPED_TEST(DBTest, TestWrite) { } } // namespace caffe +#endif // USE_LEVELDB, USE_LMDB and USE_OPENCV diff --git a/src/caffe/test/test_image_data_layer.cpp b/src/caffe/test/test_image_data_layer.cpp index 931a5ebf1..481fcef7b 100644 --- a/src/caffe/test/test_image_data_layer.cpp +++ b/src/caffe/test/test_image_data_layer.cpp @@ -1,3 +1,4 @@ +#ifdef USE_OPENCV #include #include #include @@ -177,3 +178,4 @@ TYPED_TEST(ImageDataLayerTest, TestShuffle) { } } // namespace caffe +#endif // USE_OPENCV diff --git a/src/caffe/test/test_io.cpp b/src/caffe/test/test_io.cpp index 4ab96311b..c2c919e90 100644 --- a/src/caffe/test/test_io.cpp +++ b/src/caffe/test/test_io.cpp @@ -1,3 +1,4 @@ +#ifdef USE_OPENCV #include #include #include @@ -420,3 +421,4 @@ TEST_F(IOTest, TestDecodeDatumToCVMatContentNative) { } } // namespace caffe +#endif // USE_OPENCV diff --git a/src/caffe/test/test_layer_factory.cpp b/src/caffe/test/test_layer_factory.cpp index c86fafd00..7d5d39d8b 100644 --- a/src/caffe/test/test_layer_factory.cpp +++ b/src/caffe/test/test_layer_factory.cpp @@ -31,12 +31,16 @@ TYPED_TEST(LayerFactoryTest, TestCreateLayer) { LayerParameter layer_param; // Data layers expect a DB if (iter->first == "Data") { +#ifdef USE_LEVELDB string tmp; MakeTempDir(&tmp); boost::scoped_ptr db(db::GetDB(DataParameter_DB_LEVELDB)); db->Open(tmp, db::NEW); db->Close(); layer_param.mutable_data_param()->set_source(tmp); +#else + continue; +#endif // USE_LEVELDB } layer_param.set_type(iter->first); layer = LayerRegistry::CreateLayer(layer_param); diff --git a/src/caffe/test/test_memory_data_layer.cpp b/src/caffe/test/test_memory_data_layer.cpp index a79033f59..7269a4d44 100644 --- a/src/caffe/test/test_memory_data_layer.cpp +++ b/src/caffe/test/test_memory_data_layer.cpp @@ -1,4 +1,6 @@ +#ifdef USE_OPENCV #include +#endif // USE_OPENCV #include #include @@ -113,6 +115,7 @@ TYPED_TEST(MemoryDataLayerTest, TestForward) { } } +#ifdef USE_OPENCV TYPED_TEST(MemoryDataLayerTest, AddDatumVectorDefaultTransform) { typedef typename TypeParam::Dtype Dtype; @@ -292,5 +295,5 @@ TYPED_TEST(MemoryDataLayerTest, TestSetBatchSize) { } } } - +#endif // USE_OPENCV } // namespace caffe diff --git a/src/caffe/test/test_upgrade_proto.cpp b/src/caffe/test/test_upgrade_proto.cpp index 006720231..ee05b151e 100644 --- a/src/caffe/test/test_upgrade_proto.cpp +++ b/src/caffe/test/test_upgrade_proto.cpp @@ -2892,6 +2892,7 @@ TEST_F(NetUpgradeTest, TestImageNet) { this->RunV1UpgradeTest(expected_v1_proto, expected_v2_proto); } // NOLINT(readability/fn_size) +#ifdef USE_OPENCV TEST_F(NetUpgradeTest, TestUpgradeV1LayerType) { LayerParameter layer_param; shared_ptr > layer; @@ -2906,16 +2907,25 @@ TEST_F(NetUpgradeTest, TestUpgradeV1LayerType) { layer_param.set_type(v2_layer_type); // Data layers expect a DB if (v2_layer_type == "Data") { + #ifdef USE_LEVELDB string tmp; MakeTempDir(&tmp); boost::scoped_ptr db(db::GetDB(DataParameter_DB_LEVELDB)); db->Open(tmp, db::NEW); db->Close(); layer_param.mutable_data_param()->set_source(tmp); + #else + continue; + #endif // USE_LEVELDB } + #ifndef USE_OPENCV + if (v2_layer_type == "ImageData" || v2_layer_type == "WindowData") { + continue; + } + #endif // !USE_OPENCV layer = LayerRegistry::CreateLayer(layer_param); EXPECT_EQ(v2_layer_type, layer->type()); } } - +#endif // USE_OPENCV } // NOLINT(readability/fn_size) // namespace caffe diff --git a/src/caffe/util/db.cpp b/src/caffe/util/db.cpp index f55420e98..ccda054d8 100644 --- a/src/caffe/util/db.cpp +++ b/src/caffe/util/db.cpp @@ -8,23 +8,31 @@ namespace caffe { namespace db { DB* GetDB(DataParameter::DB backend) { switch (backend) { +#ifdef USE_LEVELDB case DataParameter_DB_LEVELDB: return new LevelDB(); +#endif // USE_LEVELDB +#ifdef USE_LMDB case DataParameter_DB_LMDB: return new LMDB(); +#endif // USE_LMDB default: LOG(FATAL) << "Unknown database backend"; } } DB* GetDB(const string& backend) { +#ifdef USE_LEVELDB if (backend == "leveldb") { return new LevelDB(); - } else if (backend == "lmdb") { + } +#endif // USE_LEVELDB +#ifdef USE_LMDB + if (backend == "lmdb") { return new LMDB(); - } else { - LOG(FATAL) << "Unknown database backend"; } +#endif // USE_LMDB + LOG(FATAL) << "Unknown database backend"; } } // namespace db diff --git a/src/caffe/util/db_leveldb.cpp b/src/caffe/util/db_leveldb.cpp index 06c46627d..f5c4d8a66 100644 --- a/src/caffe/util/db_leveldb.cpp +++ b/src/caffe/util/db_leveldb.cpp @@ -1,3 +1,4 @@ +#ifdef USE_LEVELDB #include "caffe/util/db_leveldb.hpp" #include @@ -19,3 +20,4 @@ void LevelDB::Open(const string& source, Mode mode) { } // namespace db } // namespace caffe +#endif // USE_LEVELDB diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index a054b7968..78dd880ac 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -1,3 +1,4 @@ +#ifdef USE_LMDB #include "caffe/util/db_lmdb.hpp" #include @@ -49,3 +50,4 @@ void LMDBTransaction::Put(const string& key, const string& value) { } // namespace db } // namespace caffe +#endif // USE_LMDB diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index 6f0331420..f2b1dd984 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -3,9 +3,11 @@ #include #include #include +#ifdef USE_OPENCV #include #include #include +#endif // USE_OPENCV #include #include @@ -67,6 +69,7 @@ void WriteProtoToBinaryFile(const Message& proto, const char* filename) { CHECK(proto.SerializeToOstream(&output)); } +#ifdef USE_OPENCV cv::Mat ReadImageToCVMat(const string& filename, const int height, const int width, const bool is_color) { cv::Mat cv_img; @@ -98,6 +101,7 @@ cv::Mat ReadImageToCVMat(const string& filename, cv::Mat ReadImageToCVMat(const string& filename) { return ReadImageToCVMat(filename, 0, 0, true); } + // Do the file extension and encoding match? static bool matchExt(const std::string & fn, std::string en) { @@ -111,6 +115,7 @@ static bool matchExt(const std::string & fn, return true; return false; } + bool ReadImageToDatum(const string& filename, const int label, const int height, const int width, const bool is_color, const std::string & encoding, Datum* datum) { @@ -135,6 +140,7 @@ bool ReadImageToDatum(const string& filename, const int label, return false; } } +#endif // USE_OPENCV bool ReadFileToDatum(const string& filename, const int label, Datum* datum) { @@ -156,6 +162,7 @@ bool ReadFileToDatum(const string& filename, const int label, } } +#ifdef USE_OPENCV cv::Mat DecodeDatumToCVMatNative(const Datum& datum) { cv::Mat cv_img; CHECK(datum.encoded()) << "Datum not encoded"; @@ -227,6 +234,5 @@ void CVMatToDatum(const cv::Mat& cv_img, Datum* datum) { } datum->set_data(buffer); } - - +#endif // USE_OPENCV } // namespace caffe diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index b1fc7cae3..2035d5151 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -24,6 +24,7 @@ DEFINE_string(backend, "lmdb", int main(int argc, char** argv) { ::google::InitGoogleLogging(argv[0]); +#ifdef USE_OPENCV #ifndef GFLAGS_GFLAGS_H_ namespace gflags = google; #endif @@ -115,5 +116,8 @@ int main(int argc, char** argv) { } LOG(INFO) << "mean_value channel [" << c << "]:" << mean_values[c] / dim; } +#else + LOG(FATAL) << "This tool requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV return 0; } diff --git a/tools/convert_imageset.cpp b/tools/convert_imageset.cpp index aad1f1fe2..e51a26310 100644 --- a/tools/convert_imageset.cpp +++ b/tools/convert_imageset.cpp @@ -43,6 +43,7 @@ DEFINE_string(encode_type, "", "Optional: What type should we encode the image as ('png','jpg',...)."); int main(int argc, char** argv) { +#ifdef USE_OPENCV ::google::InitGoogleLogging(argv[0]); // Print output to stderr (while still logging) FLAGS_alsologtostderr = 1; @@ -150,5 +151,8 @@ int main(int argc, char** argv) { txn->Commit(); LOG(INFO) << "Processed " << count << " files."; } +#else + LOG(FATAL) << "This tool requires OpenCV; compile with USE_OPENCV."; +#endif // USE_OPENCV return 0; } From 2349c6de69bf5043508cde41bb1d337fdb78e188 Mon Sep 17 00:00:00 2001 From: Tea Date: Thu, 17 Sep 2015 15:02:45 +0800 Subject: [PATCH 016/458] Fix case in CMake notices --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 838723bec..37f937fe4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,10 +19,10 @@ caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY) caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON) caffe_option(BUILD_python "Build Python wrapper" ON) -set(python_version "2" CACHE STRING "Specify which python version to use") +set(python_version "2" CACHE STRING "Specify which Python version to use") caffe_option(BUILD_matlab "Build Matlab wrapper" OFF IF UNIX OR APPLE) caffe_option(BUILD_docs "Build documentation" ON IF UNIX OR APPLE) -caffe_option(BUILD_python_layer "Build the caffe python layer" ON) +caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON) caffe_option(USE_LMDB "Build with lmdb" ON) caffe_option(USE_LEVELDB "Build with levelDB" ON) caffe_option(USE_OPENCV "Build with OpenCV support" ON) From 68c9e2b4703ce18fd9a7ab541addf701129a8080 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Tue, 8 Sep 2015 12:20:40 +0800 Subject: [PATCH 017/458] Add a comment indicating that Travis CI tests are CPU only --- scripts/travis/travis_build_and_test.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/travis/travis_build_and_test.sh b/scripts/travis/travis_build_and_test.sh index bbc821334..174f1ee5a 100755 --- a/scripts/travis/travis_build_and_test.sh +++ b/scripts/travis/travis_build_and_test.sh @@ -1,5 +1,6 @@ #!/bin/bash # Script called by Travis to build and test Caffe. +# Travis CI tests are CPU-only for lack of compatible hardware. set -e MAKE="make --jobs=$NUM_THREADS --keep-going" From e75ae965519444fb64d67c0aa6323bc2ef4049ef Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 17 Sep 2015 15:05:12 -0700 Subject: [PATCH 018/458] [build] include IO dependencies by default keep old behavior by including leveldb, lmdb, and opencv by default --- Makefile | 7 ++++++- Makefile.config.example | 8 ++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index ddaed59b0..a91113366 100644 --- a/Makefile +++ b/Makefile @@ -172,6 +172,11 @@ endif LIBRARIES += glog gflags protobuf boost_system m hdf5_hl hdf5 +# handle IO dependencies +USE_LEVELDB ?= 1 +USE_LMDB ?= 1 +USE_OPENCV ?= 1 + ifeq ($(USE_LEVELDB), 1) LIBRARIES += leveldb snappy endif @@ -299,7 +304,7 @@ ifeq ($(USE_CUDNN), 1) COMMON_FLAGS += -DUSE_CUDNN endif -# i/o libraries configuration +# configure IO libraries ifeq ($(USE_OPENCV), 1) COMMON_FLAGS += -DUSE_OPENCV endif diff --git a/Makefile.config.example b/Makefile.config.example index 32e67ee49..a20bad2f5 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -7,10 +7,10 @@ # CPU-only switch (uncomment to build without GPU support). # CPU_ONLY := 1 -# comment out to disable IO dependencies -USE_LEVELDB := 1 -USE_LMDB := 1 -USE_OPENCV := 1 +# uncomment to disable IO dependencies and corresponding data layers +# USE_LEVELDB := 0 +# USE_LMDB := 0 +# USE_OPENCV := 0 # To customize your choice of compiler, uncomment and set the following. # N.B. the default for Linux is g++ and the default for OSX is clang++ From b4f9add57fa468ab43aa40f0a95badf3e9ace243 Mon Sep 17 00:00:00 2001 From: Gustav Larsson Date: Thu, 17 Sep 2015 20:32:33 -0500 Subject: [PATCH 019/458] Expose `Snapshot` to pycaffe - Solver::Snapshot is made public - It is also added as `snapshot` to pycaffe Addressing #3077 --- include/caffe/solver.hpp | 10 +++++----- python/caffe/_caffe.cpp | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index 8d52785ac..51f8d495c 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -60,6 +60,11 @@ class Solver { // RestoreSolverStateFrom___ protected methods. You should implement these // methods to restore the state from the appropriate snapshot type. void Restore(const char* resume_file); + // The Solver::Snapshot function implements the basic snapshotting utility + // that stores the learned net. You should implement the SnapshotSolverState() + // function that produces a SolverState protocol buffer that needs to be + // written to disk together with the learned net. + void Snapshot(); virtual ~Solver() {} inline const SolverParameter& param() const { return param_; } inline shared_ptr > net() { return net_; } @@ -87,11 +92,6 @@ class Solver { protected: // Make and apply the update value for the current iteration. virtual void ApplyUpdate() = 0; - // The Solver::Snapshot function implements the basic snapshotting utility - // that stores the learned net. You should implement the SnapshotSolverState() - // function that produces a SolverState protocol buffer that needs to be - // written to disk together with the learned net. - void Snapshot(); string SnapshotFilename(const string extension); string SnapshotToBinaryProto(); string SnapshotToHDF5(); diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index ccd5776ac..6c2ccaa57 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -286,7 +286,8 @@ BOOST_PYTHON_MODULE(_caffe) { .def("solve", static_cast::*)(const char*)>( &Solver::Solve), SolveOverloads()) .def("step", &Solver::Step) - .def("restore", &Solver::Restore); + .def("restore", &Solver::Restore) + .def("snapshot", &Solver::Snapshot); bp::class_, bp::bases >, shared_ptr >, boost::noncopyable>( From f75d594bbec1efab69cdc09c04bed1762aebd0e1 Mon Sep 17 00:00:00 2001 From: Yan Chen Date: Fri, 18 Sep 2015 17:02:16 +0800 Subject: [PATCH 020/458] refine format of switch case in solver --- include/caffe/solver.hpp | 14 +++++++------- src/caffe/solver.cpp | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index 8d52785ac..2ecf539ba 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -283,19 +283,19 @@ Solver* GetSolver(const SolverParameter& param) { switch (type) { case SolverParameter_SolverType_SGD: - return new SGDSolver(param); + return new SGDSolver(param); case SolverParameter_SolverType_NESTEROV: - return new NesterovSolver(param); + return new NesterovSolver(param); case SolverParameter_SolverType_ADAGRAD: - return new AdaGradSolver(param); + return new AdaGradSolver(param); case SolverParameter_SolverType_RMSPROP: - return new RMSPropSolver(param); + return new RMSPropSolver(param); case SolverParameter_SolverType_ADADELTA: - return new AdaDeltaSolver(param); + return new AdaDeltaSolver(param); case SolverParameter_SolverType_ADAM: - return new AdamSolver(param); + return new AdamSolver(param); default: - LOG(FATAL) << "Unknown SolverType: " << type; + LOG(FATAL) << "Unknown SolverType: " << type; } return (Solver*) NULL; } diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 3574ce750..12c13dd83 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -422,14 +422,14 @@ void Solver::Snapshot() { CHECK(Caffe::root_solver()); string model_filename; switch (param_.snapshot_format()) { - case caffe::SolverParameter_SnapshotFormat_BINARYPROTO: - model_filename = SnapshotToBinaryProto(); - break; - case caffe::SolverParameter_SnapshotFormat_HDF5: - model_filename = SnapshotToHDF5(); - break; - default: - LOG(FATAL) << "Unsupported snapshot format."; + case caffe::SolverParameter_SnapshotFormat_BINARYPROTO: + model_filename = SnapshotToBinaryProto(); + break; + case caffe::SolverParameter_SnapshotFormat_HDF5: + model_filename = SnapshotToHDF5(); + break; + default: + LOG(FATAL) << "Unsupported snapshot format."; } SnapshotSolverState(model_filename); From 4c2ff1693ea509dc4758e73b913f4cbec6c1ac3a Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 4 Mar 2015 19:27:56 -0800 Subject: [PATCH 021/458] caffe.proto: generalize ConvolutionParameter to N spatial axes --- src/caffe/proto/caffe.proto | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index aa299f866..86683eb45 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -471,18 +471,24 @@ message ContrastiveLossParameter { message ConvolutionParameter { optional uint32 num_output = 1; // The number of outputs for the layer optional bool bias_term = 2 [default = true]; // whether to have bias terms + // Pad, kernel size, and stride are all given as a single value for equal - // dimensions in height and width or as Y, X pairs. - optional uint32 pad = 3 [default = 0]; // The padding size (equal in Y, X) - optional uint32 pad_h = 9 [default = 0]; // The padding height - optional uint32 pad_w = 10 [default = 0]; // The padding width - optional uint32 kernel_size = 4; // The kernel size (square) - optional uint32 kernel_h = 11; // The kernel height - optional uint32 kernel_w = 12; // The kernel width + // dimensions in all spatial dimensions, or once per spatial dimension. + repeated uint32 pad = 3; // The padding size; defaults to 0 + repeated uint32 kernel_size = 4; // The kernel size + repeated uint32 stride = 6; // The stride; defaults to 1 + + // For 2D convolution only, the *_h and *_w versions may also be used to + // specify both spatial dimensions. + optional uint32 pad_h = 9 [default = 0]; // The padding height (2D only) + optional uint32 pad_w = 10 [default = 0]; // The padding width (2D only) + optional uint32 kernel_h = 11; // The kernel height (2D only) + optional uint32 kernel_w = 12; // The kernel width (2D only) + optional uint32 stride_h = 13; // The stride height (2D only) + optional uint32 stride_w = 14; // The stride width (2D only) + optional uint32 group = 5 [default = 1]; // The group size for group conv - optional uint32 stride = 6 [default = 1]; // The stride (equal in Y, X) - optional uint32 stride_h = 13; // The stride height - optional uint32 stride_w = 14; // The stride width + optional FillerParameter weight_filler = 7; // The filler for the weight optional FillerParameter bias_filler = 8; // The filler for the bias enum Engine { @@ -491,6 +497,17 @@ message ConvolutionParameter { CUDNN = 2; } optional Engine engine = 15 [default = DEFAULT]; + + // The axis to interpret as "channels" when performing convolution. + // Preceding dimensions are treated as independent inputs; + // succeeding dimensions are treated as "spatial". + // With (N, C, H, W) inputs, and axis == 1 (the default), we perform + // N independent 2D convolutions, sliding C-channel (or (C/g)-channels, for + // groups g>1) filters across the spatial axes (H, W) of the input. + // With (N, C, D, H, W) inputs, and axis == 1, we perform + // N independent 3D convolutions, sliding (C/g)-channels + // filters across the spatial axes (D, H, W) of the input. + optional int32 axis = 16 [default = 1]; } message DataParameter { From 0813f32038bf7477d343ae369981166cfed783b5 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 4 Mar 2015 21:31:34 -0800 Subject: [PATCH 022/458] Blob: add SyncedMemory shape accessor for GPU shape access --- include/caffe/blob.hpp | 2 ++ src/caffe/blob.cpp | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/caffe/blob.hpp b/include/caffe/blob.hpp index dda7b1f83..fea5117ef 100644 --- a/include/caffe/blob.hpp +++ b/include/caffe/blob.hpp @@ -219,6 +219,7 @@ class Blob { const Dtype* cpu_data() const; void set_cpu_data(Dtype* data); + const int* gpu_shape() const; const Dtype* gpu_data() const; const Dtype* cpu_diff() const; const Dtype* gpu_diff() const; @@ -268,6 +269,7 @@ class Blob { protected: shared_ptr data_; shared_ptr diff_; + shared_ptr shape_data_; vector shape_; int count_; int capacity_; diff --git a/src/caffe/blob.cpp b/src/caffe/blob.cpp index 8450aa140..c86fd5d1d 100644 --- a/src/caffe/blob.cpp +++ b/src/caffe/blob.cpp @@ -24,11 +24,16 @@ void Blob::Reshape(const vector& shape) { CHECK_LE(shape.size(), kMaxBlobAxes); count_ = 1; shape_.resize(shape.size()); + if (!shape_data_ || shape_data_->size() < shape.size() * sizeof(int)) { + shape_data_.reset(new SyncedMemory(shape.size() * sizeof(int))); + } + int* shape_data = static_cast(shape_data_->mutable_cpu_data()); for (int i = 0; i < shape.size(); ++i) { CHECK_GE(shape[i], 0); CHECK_LE(shape[i], INT_MAX / count_) << "blob size exceeds INT_MAX"; count_ *= shape[i]; shape_[i] = shape[i]; + shape_data[i] = shape[i]; } if (count_ > capacity_) { capacity_ = count_; @@ -67,6 +72,12 @@ Blob::Blob(const vector& shape) Reshape(shape); } +template +const int* Blob::gpu_shape() const { + CHECK(shape_data_); + return (const int*)shape_data_->gpu_data(); +} + template const Dtype* Blob::cpu_data() const { CHECK(data_); From 9d8206e0f906069e7c04f08dfddefa1357f3915c Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 4 Mar 2015 19:30:17 -0800 Subject: [PATCH 023/458] Im2col and Convolution layers support N spatial axes --- include/caffe/util/im2col.hpp | 24 ++ include/caffe/vision_layers.hpp | 108 +++++- src/caffe/layers/base_conv_layer.cpp | 241 ++++++++---- src/caffe/layers/conv_layer.cpp | 32 +- src/caffe/layers/conv_layer.cu | 16 +- src/caffe/layers/cudnn_conv_layer.cpp | 46 ++- src/caffe/layers/cudnn_conv_layer.cu | 18 +- src/caffe/layers/deconv_layer.cpp | 32 +- src/caffe/layers/deconv_layer.cu | 16 +- src/caffe/layers/im2col_layer.cpp | 171 +++++--- src/caffe/layers/im2col_layer.cu | 41 +- src/caffe/proto/caffe.proto | 7 + src/caffe/test/test_convolution_layer.cpp | 409 ++++++++++++++++---- src/caffe/test/test_deconvolution_layer.cpp | 159 +++++++- src/caffe/test/test_im2col_kernel.cu | 87 ++++- src/caffe/test/test_im2col_layer.cpp | 30 +- src/caffe/util/im2col.cpp | 116 ++++++ src/caffe/util/im2col.cu | 306 ++++++++++++++- src/caffe/util/upgrade_proto.cpp | 6 +- 19 files changed, 1554 insertions(+), 311 deletions(-) diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index 0051e2fa0..531fd29c5 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -3,24 +3,48 @@ namespace caffe { +template +void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_col); + template void im2col_cpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_col); +template +void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_im); + template void col2im_cpu(const Dtype* data_col, const int channels, const int height, const int width, const int patch_h, const int patch_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_im); +template +void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, + const int col_size, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_col); + template void im2col_gpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_col); +template +void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, + const int im_size, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_im); + template void col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int patch_h, const int patch_w, diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 211e3d904..eae65820c 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -64,46 +64,101 @@ class BaseConvolutionLayer : public Layer { // Compute height_out_ and width_out_ from other parameters. virtual void compute_output_shape() = 0; - int kernel_h_, kernel_w_; - int stride_h_, stride_w_; + /// @brief The spatial dimensions of a filter kernel. + Blob kernel_shape_; + /// @brief The spatial dimensions of the stride. + Blob stride_; + /// @brief The spatial dimensions of the padding. + Blob pad_; + /// @brief The spatial dimensions of the convolution input. + Blob conv_input_shape_; + /// @brief The spatial dimensions of the input. + Blob input_shape_; + /// @brief The spatial dimensions of the col_buffer. + vector col_buffer_shape_; + /// @brief The spatial dimensions of the output. + vector output_shape_; + + int num_spatial_axes_; + int bottom_dim_; + int top_dim_; + + int channel_axis_; int num_; int channels_; - int pad_h_, pad_w_; - int height_, width_; int group_; + int out_spatial_dim_; + int weight_offset_; int num_output_; - int height_out_, width_out_; bool bias_term_; bool is_1x1_; + bool force_nd_im2col_; private: // wrap im2col/col2im so we don't have to remember the (long) argument lists inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) { - im2col_cpu(data, conv_in_channels_, conv_in_height_, conv_in_width_, - kernel_h_, kernel_w_, pad_h_, pad_w_, stride_h_, stride_w_, col_buff); + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_cpu(data, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); + } else { + im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(), + col_buffer_shape_.data(), kernel_shape_.cpu_data(), + pad_.cpu_data(), stride_.cpu_data(), col_buff); + } } inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) { - col2im_cpu(col_buff, conv_in_channels_, conv_in_height_, conv_in_width_, - kernel_h_, kernel_w_, pad_h_, pad_w_, stride_h_, stride_w_, data); + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_cpu(col_buff, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], data); + } else { + col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(), + col_buffer_shape_.data(), kernel_shape_.cpu_data(), + pad_.cpu_data(), stride_.cpu_data(), data); + } } #ifndef CPU_ONLY inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) { - im2col_gpu(data, conv_in_channels_, conv_in_height_, conv_in_width_, - kernel_h_, kernel_w_, pad_h_, pad_w_, stride_h_, stride_w_, col_buff); + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_gpu(data, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); + } else { + im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_, + conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), + kernel_shape_.gpu_data(), pad_.gpu_data(), + stride_.gpu_data(), col_buff); + } } inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) { - col2im_gpu(col_buff, conv_in_channels_, conv_in_height_, conv_in_width_, - kernel_h_, kernel_w_, pad_h_, pad_w_, stride_h_, stride_w_, data); + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_gpu(col_buff, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], data); + } else { + col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_, + conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + data); + } } #endif + int num_kernels_im2col_; + int num_kernels_col2im_; int conv_out_channels_; int conv_in_channels_; int conv_out_spatial_dim_; - int conv_in_height_; - int conv_in_width_; int kernel_dim_; - int weight_offset_; int col_offset_; int output_offset_; @@ -250,7 +305,7 @@ class CuDNNConvolutionLayer : public ConvolutionLayer { cudnnTensorDescriptor_t bias_desc_; cudnnFilterDescriptor_t filter_desc_; vector conv_descs_; - int bottom_offset_, top_offset_, weight_offset_, bias_offset_; + int bottom_offset_, top_offset_, bias_offset_; size_t workspaceSizeInBytes; void *workspace; }; @@ -287,11 +342,22 @@ class Im2colLayer : public Layer { virtual void Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); - int kernel_h_, kernel_w_; - int stride_h_, stride_w_; + /// @brief The spatial dimensions of a filter kernel. + Blob kernel_shape_; + /// @brief The spatial dimensions of the stride. + Blob stride_; + /// @brief The spatial dimensions of the padding. + Blob pad_; + + int num_spatial_axes_; + int bottom_dim_; + int top_dim_; + + int channel_axis_; + int num_; int channels_; - int height_, width_; - int pad_h_, pad_w_; + + bool force_nd_im2col_; }; // Forward declare PoolingLayer and SplitLayer for use in LRNLayer. diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index ccb3adc7e..a5b90a549 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -1,3 +1,4 @@ +#include #include #include "caffe/filler.hpp" @@ -11,50 +12,103 @@ namespace caffe { template void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { - CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, " - << "corresponding to (num, channels, height, width)"; // Configure the kernel size, padding, stride, and inputs. ConvolutionParameter conv_param = this->layer_param_.convolution_param(); - CHECK(!conv_param.has_kernel_size() != - !(conv_param.has_kernel_h() && conv_param.has_kernel_w())) - << "Filter size is kernel_size OR kernel_h and kernel_w; not both"; - CHECK(conv_param.has_kernel_size() || - (conv_param.has_kernel_h() && conv_param.has_kernel_w())) - << "For non-square filters both kernel_h and kernel_w are required."; - CHECK((!conv_param.has_pad() && conv_param.has_pad_h() - && conv_param.has_pad_w()) - || (!conv_param.has_pad_h() && !conv_param.has_pad_w())) - << "pad is pad OR pad_h and pad_w are required."; - CHECK((!conv_param.has_stride() && conv_param.has_stride_h() - && conv_param.has_stride_w()) - || (!conv_param.has_stride_h() && !conv_param.has_stride_w())) - << "Stride is stride OR stride_h and stride_w are required."; - if (conv_param.has_kernel_size()) { - kernel_h_ = kernel_w_ = conv_param.kernel_size(); + force_nd_im2col_ = conv_param.force_nd_im2col(); + channel_axis_ = bottom[0]->CanonicalAxisIndex(conv_param.axis()); + const int first_spatial_axis = channel_axis_ + 1; + const int num_axes = bottom[0]->num_axes(); + num_spatial_axes_ = num_axes - first_spatial_axis; + CHECK_GE(num_spatial_axes_, 0); + // Setup input dimensions (input_shape_). + vector bottom_dim_blob_shape(1, num_spatial_axes_ + 1); + input_shape_.Reshape(bottom_dim_blob_shape); + int* input_shape_data = input_shape_.mutable_cpu_data(); + for (int i = 0; i < num_spatial_axes_ + 1; ++i) { + input_shape_data[i] = bottom[0]->shape(channel_axis_ + i); + } + vector spatial_dim_blob_shape(1, std::max(num_spatial_axes_, 1)); + // Setup filter kernel dimensions (kernel_shape_). + kernel_shape_.Reshape(spatial_dim_blob_shape); + int* kernel_shape_data = kernel_shape_.mutable_cpu_data(); + if (conv_param.has_kernel_h() || conv_param.has_kernel_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "kernel_h & kernel_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.kernel_size_size()) + << "Either kernel_size or kernel_h/w should be specified; not both."; + kernel_shape_data[0] = conv_param.kernel_h(); + kernel_shape_data[1] = conv_param.kernel_w(); } else { - kernel_h_ = conv_param.kernel_h(); - kernel_w_ = conv_param.kernel_w(); + const int num_kernel_dims = conv_param.kernel_size_size(); + CHECK(num_kernel_dims == 1 || num_kernel_dims == num_spatial_axes_) + << "kernel_size must be specified once, or once per spatial dimension " + << "(kernel_size specified " << num_kernel_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + for (int i = 0; i < num_spatial_axes_; ++i) { + kernel_shape_data[i] = + conv_param.kernel_size((num_kernel_dims == 1) ? 0 : i); + } + } + for (int i = 0; i < num_spatial_axes_; ++i) { + CHECK_GT(kernel_shape_data[i], 0) << "Filter dimensions must be nonzero."; } - CHECK_GT(kernel_h_, 0) << "Filter dimensions cannot be zero."; - CHECK_GT(kernel_w_, 0) << "Filter dimensions cannot be zero."; - if (!conv_param.has_pad_h()) { - pad_h_ = pad_w_ = conv_param.pad(); + // Setup stride dimensions (stride_). + stride_.Reshape(spatial_dim_blob_shape); + int* stride_data = stride_.mutable_cpu_data(); + if (conv_param.has_stride_h() || conv_param.has_stride_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "stride_h & stride_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.stride_size()) + << "Either stride or stride_h/w should be specified; not both."; + stride_data[0] = conv_param.stride_h(); + stride_data[1] = conv_param.stride_w(); } else { - pad_h_ = conv_param.pad_h(); - pad_w_ = conv_param.pad_w(); + const int num_stride_dims = conv_param.stride_size(); + CHECK(num_stride_dims == 0 || num_stride_dims == 1 || + num_stride_dims == num_spatial_axes_) + << "stride must be specified once, or once per spatial dimension " + << "(stride specified " << num_stride_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + const int kDefaultStride = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + stride_data[i] = (num_stride_dims == 0) ? kDefaultStride : + conv_param.stride((num_stride_dims == 1) ? 0 : i); + CHECK_GT(stride_data[i], 0) << "Stride dimensions must be nonzero."; + } } - if (!conv_param.has_stride_h()) { - stride_h_ = stride_w_ = conv_param.stride(); + // Setup pad dimensions (pad_). + pad_.Reshape(spatial_dim_blob_shape); + int* pad_data = pad_.mutable_cpu_data(); + if (conv_param.has_pad_h() || conv_param.has_pad_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "pad_h & pad_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.pad_size()) + << "Either pad or pad_h/w should be specified; not both."; + pad_data[0] = conv_param.pad_h(); + pad_data[1] = conv_param.pad_w(); } else { - stride_h_ = conv_param.stride_h(); - stride_w_ = conv_param.stride_w(); + const int num_pad_dims = conv_param.pad_size(); + CHECK(num_pad_dims == 0 || num_pad_dims == 1 || + num_pad_dims == num_spatial_axes_) + << "pad must be specified once, or once per spatial dimension " + << "(pad specified " << num_pad_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + const int kDefaultPad = 0; + for (int i = 0; i < num_spatial_axes_; ++i) { + pad_data[i] = (num_pad_dims == 0) ? kDefaultPad : + conv_param.pad((num_pad_dims == 1) ? 0 : i); + } } // Special case: im2col is the identity for 1x1 convolution with stride 1 // and no padding, so flag for skipping the buffer and transformation. - is_1x1_ = kernel_w_ == 1 && kernel_h_ == 1 - && stride_h_ == 1 && stride_w_ == 1 && pad_h_ == 0 && pad_w_ == 0; + is_1x1_ = true; + for (int i = 0; i < num_spatial_axes_; ++i) { + is_1x1_ &= + kernel_shape_data[i] == 1 && stride_data[i] == 1 && pad_data[i] == 0; + if (!is_1x1_) { break; } + } // Configure output channels and groups. - channels_ = bottom[0]->channels(); + channels_ = bottom[0]->shape(channel_axis_); num_output_ = this->layer_param_.convolution_param().num_output(); CHECK_GT(num_output_, 0); group_ = this->layer_param_.convolution_param().group(); @@ -71,8 +125,29 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, // Handle the parameters: weights and biases. // - blobs_[0] holds the filter weights // - blobs_[1] holds the biases (optional) + vector weight_shape(2); + weight_shape[0] = conv_out_channels_; + weight_shape[1] = conv_in_channels_ / group_; + for (int i = 0; i < num_spatial_axes_; ++i) { + weight_shape.push_back(kernel_shape_data[i]); + } bias_term_ = this->layer_param_.convolution_param().bias_term(); + vector bias_shape(bias_term_, num_output_); if (this->blobs_.size() > 0) { + CHECK_EQ(1 + bias_term_, this->blobs_.size()) + << "Incorrect number of weight blobs."; + if (weight_shape != this->blobs_[0]->shape()) { + Blob weight_shaped_blob(weight_shape); + LOG(FATAL) << "Incorrect weight shape: expected shape " + << weight_shaped_blob.shape_string() << "; instead, shape was " + << this->blobs_[0]->shape_string(); + } + if (bias_term_ && bias_shape != this->blobs_[1]->shape()) { + Blob bias_shaped_blob(bias_shape); + LOG(FATAL) << "Incorrect bias shape: expected shape " + << bias_shaped_blob.shape_string() << "; instead, shape was " + << this->blobs_[1]->shape_string(); + } LOG(INFO) << "Skipping parameter initialization"; } else { if (bias_term_) { @@ -82,20 +157,20 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, } // Initialize and fill the weights: // output channels x input channels per-group x kernel height x kernel width - this->blobs_[0].reset(new Blob( - conv_out_channels_, conv_in_channels_ / group_, kernel_h_, kernel_w_)); + this->blobs_[0].reset(new Blob(weight_shape)); shared_ptr > weight_filler(GetFiller( this->layer_param_.convolution_param().weight_filler())); weight_filler->Fill(this->blobs_[0].get()); // If necessary, initialize and fill the biases. if (bias_term_) { - vector bias_shape(1, num_output_); this->blobs_[1].reset(new Blob(bias_shape)); shared_ptr > bias_filler(GetFiller( this->layer_param_.convolution_param().bias_filler())); bias_filler->Fill(this->blobs_[1].get()); } } + kernel_dim_ = this->blobs_[0]->count(1); + weight_offset_ = conv_out_channels_ * kernel_dim_ / group_; // Propagate gradients to the parameters (as directed by backward pass). this->param_propagate_down_.resize(this->blobs_.size(), true); } @@ -103,52 +178,68 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, template void BaseConvolutionLayer::Reshape(const vector*>& bottom, const vector*>& top) { - CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, " - << "corresponding to (num, channels, height, width)"; - num_ = bottom[0]->num(); - height_ = bottom[0]->height(); - width_ = bottom[0]->width(); - CHECK_EQ(bottom[0]->channels(), channels_) << "Input size incompatible with" - " convolution kernel."; + const int first_spatial_axis = channel_axis_ + 1; + CHECK_EQ(bottom[0]->num_axes(), first_spatial_axis + num_spatial_axes_) + << "bottom num_axes may not change."; + num_ = bottom[0]->count(0, channel_axis_); + CHECK_EQ(bottom[0]->shape(channel_axis_), channels_) + << "Input size incompatible with convolution kernel."; // TODO: generalize to handle inputs of different shapes. for (int bottom_id = 1; bottom_id < bottom.size(); ++bottom_id) { - CHECK_EQ(num_, bottom[bottom_id]->num()) << "Inputs must have same num."; - CHECK_EQ(channels_, bottom[bottom_id]->channels()) - << "Inputs must have same channels."; - CHECK_EQ(height_, bottom[bottom_id]->height()) - << "Inputs must have same height."; - CHECK_EQ(width_, bottom[bottom_id]->width()) - << "Inputs must have same width."; + CHECK(bottom[0]->shape() == bottom[bottom_id]->shape()) + << "All inputs must have the same shape."; } // Shape the tops. compute_output_shape(); + vector top_shape(bottom[0]->shape().begin(), + bottom[0]->shape().begin() + channel_axis_); + top_shape.push_back(num_output_); + for (int i = 0; i < num_spatial_axes_; ++i) { + top_shape.push_back(output_shape_[i]); + } for (int top_id = 0; top_id < top.size(); ++top_id) { - top[top_id]->Reshape(num_, num_output_, height_out_, width_out_); + top[top_id]->Reshape(top_shape); } if (reverse_dimensions()) { - conv_in_height_ = height_out_; - conv_in_width_ = width_out_; - conv_out_spatial_dim_ = height_ * width_; + conv_out_spatial_dim_ = bottom[0]->count(first_spatial_axis); } else { - conv_in_height_ = height_; - conv_in_width_ = width_; - conv_out_spatial_dim_ = height_out_ * width_out_; + conv_out_spatial_dim_ = top[0]->count(first_spatial_axis); } - kernel_dim_ = conv_in_channels_ * kernel_h_ * kernel_w_; - weight_offset_ = conv_out_channels_ * kernel_dim_ / group_ / group_; - col_offset_ = kernel_dim_ * conv_out_spatial_dim_ / group_; + col_offset_ = kernel_dim_ * conv_out_spatial_dim_; output_offset_ = conv_out_channels_ * conv_out_spatial_dim_ / group_; + // Setup input dimensions (conv_input_shape_). + vector bottom_dim_blob_shape(1, num_spatial_axes_ + 1); + conv_input_shape_.Reshape(bottom_dim_blob_shape); + int* conv_input_shape_data = conv_input_shape_.mutable_cpu_data(); + for (int i = 0; i < num_spatial_axes_ + 1; ++i) { + if (reverse_dimensions()) { + conv_input_shape_data[i] = top[0]->shape(channel_axis_ + i); + } else { + conv_input_shape_data[i] = bottom[0]->shape(channel_axis_ + i); + } + } // The im2col result buffer will only hold one image at a time to avoid // overly large memory usage. In the special case of 1x1 convolution // it goes lazily unused to save memory. - if (reverse_dimensions()) { - col_buffer_.Reshape(1, kernel_dim_, height_, width_); - } else { - col_buffer_.Reshape(1, kernel_dim_, height_out_, width_out_); + col_buffer_shape_.clear(); + col_buffer_shape_.push_back(kernel_dim_ * group_); + const int* input_shape_data = input_shape_.cpu_data() + 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + if (reverse_dimensions()) { + col_buffer_shape_.push_back(input_shape_data[i]); + } else { + col_buffer_shape_.push_back(output_shape_[i]); + } } + col_buffer_.Reshape(col_buffer_shape_); + bottom_dim_ = bottom[0]->count(channel_axis_); + top_dim_ = top[0]->count(channel_axis_); + num_kernels_im2col_ = conv_in_channels_ * conv_out_spatial_dim_; + num_kernels_col2im_ = reverse_dimensions() ? top_dim_ : bottom_dim_; // Set up the all ones "bias multiplier" for adding biases by BLAS + out_spatial_dim_ = top[0]->count(first_spatial_axis); if (bias_term_) { - vector bias_multiplier_shape(1, height_out_ * width_out_); + vector bias_multiplier_shape(1, out_spatial_dim_); bias_multiplier_.Reshape(bias_multiplier_shape); caffe_set(bias_multiplier_.count(), Dtype(1), bias_multiplier_.mutable_cpu_data()); @@ -167,7 +258,7 @@ void BaseConvolutionLayer::forward_cpu_gemm(const Dtype* input, } for (int g = 0; g < group_; ++g) { caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, conv_out_channels_ / - group_, conv_out_spatial_dim_, kernel_dim_ / group_, + group_, conv_out_spatial_dim_, kernel_dim_, (Dtype)1., weights + weight_offset_ * g, col_buff + col_offset_ * g, (Dtype)0., output + output_offset_ * g); } @@ -177,7 +268,7 @@ template void BaseConvolutionLayer::forward_cpu_bias(Dtype* output, const Dtype* bias) { caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num_output_, - height_out_ * width_out_, 1, (Dtype)1., bias, bias_multiplier_.cpu_data(), + out_spatial_dim_, 1, (Dtype)1., bias, bias_multiplier_.cpu_data(), (Dtype)1., output); } @@ -189,7 +280,7 @@ void BaseConvolutionLayer::backward_cpu_gemm(const Dtype* output, col_buff = input; } for (int g = 0; g < group_; ++g) { - caffe_cpu_gemm(CblasTrans, CblasNoTrans, kernel_dim_ / group_, + caffe_cpu_gemm(CblasTrans, CblasNoTrans, kernel_dim_, conv_out_spatial_dim_, conv_out_channels_ / group_, (Dtype)1., weights + weight_offset_ * g, output + output_offset_ * g, (Dtype)0., col_buff + col_offset_ * g); @@ -209,7 +300,7 @@ void BaseConvolutionLayer::weight_cpu_gemm(const Dtype* input, } for (int g = 0; g < group_; ++g) { caffe_cpu_gemm(CblasNoTrans, CblasTrans, conv_out_channels_ / group_, - kernel_dim_ / group_, conv_out_spatial_dim_, + kernel_dim_, conv_out_spatial_dim_, (Dtype)1., output + output_offset_ * g, col_buff + col_offset_ * g, (Dtype)1., weights + weight_offset_ * g); } @@ -218,7 +309,7 @@ void BaseConvolutionLayer::weight_cpu_gemm(const Dtype* input, template void BaseConvolutionLayer::backward_cpu_bias(Dtype* bias, const Dtype* input) { - caffe_cpu_gemv(CblasNoTrans, num_output_, height_out_ * width_out_, 1., + caffe_cpu_gemv(CblasNoTrans, num_output_, out_spatial_dim_, 1., input, bias_multiplier_.cpu_data(), 1., bias); } @@ -236,7 +327,7 @@ void BaseConvolutionLayer::forward_gpu_gemm(const Dtype* input, } for (int g = 0; g < group_; ++g) { caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, conv_out_channels_ / - group_, conv_out_spatial_dim_, kernel_dim_ / group_, + group_, conv_out_spatial_dim_, kernel_dim_, (Dtype)1., weights + weight_offset_ * g, col_buff + col_offset_ * g, (Dtype)0., output + output_offset_ * g); } @@ -246,7 +337,7 @@ template void BaseConvolutionLayer::forward_gpu_bias(Dtype* output, const Dtype* bias) { caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num_output_, - height_out_ * width_out_, 1, (Dtype)1., bias, bias_multiplier_.gpu_data(), + out_spatial_dim_, 1, (Dtype)1., bias, bias_multiplier_.gpu_data(), (Dtype)1., output); } @@ -258,7 +349,7 @@ void BaseConvolutionLayer::backward_gpu_gemm(const Dtype* output, col_buff = input; } for (int g = 0; g < group_; ++g) { - caffe_gpu_gemm(CblasTrans, CblasNoTrans, kernel_dim_ / group_, + caffe_gpu_gemm(CblasTrans, CblasNoTrans, kernel_dim_, conv_out_spatial_dim_, conv_out_channels_ / group_, (Dtype)1., weights + weight_offset_ * g, output + output_offset_ * g, (Dtype)0., col_buff + col_offset_ * g); @@ -278,7 +369,7 @@ void BaseConvolutionLayer::weight_gpu_gemm(const Dtype* input, } for (int g = 0; g < group_; ++g) { caffe_gpu_gemm(CblasNoTrans, CblasTrans, conv_out_channels_ / group_, - kernel_dim_ / group_, conv_out_spatial_dim_, + kernel_dim_, conv_out_spatial_dim_, (Dtype)1., output + output_offset_ * g, col_buff + col_offset_ * g, (Dtype)1., weights + weight_offset_ * g); } @@ -287,7 +378,7 @@ void BaseConvolutionLayer::weight_gpu_gemm(const Dtype* input, template void BaseConvolutionLayer::backward_gpu_bias(Dtype* bias, const Dtype* input) { - caffe_gpu_gemv(CblasNoTrans, num_output_, height_out_ * width_out_, 1., + caffe_gpu_gemv(CblasNoTrans, num_output_, out_spatial_dim_, 1., input, bias_multiplier_.gpu_data(), 1., bias); } diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 928ef5ee4..5cf26970a 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -10,10 +10,18 @@ namespace caffe { template void ConvolutionLayer::compute_output_shape() { - this->height_out_ = (this->height_ + 2 * this->pad_h_ - this->kernel_h_) - / this->stride_h_ + 1; - this->width_out_ = (this->width_ + 2 * this->pad_w_ - this->kernel_w_) - / this->stride_w_ + 1; + // input_shape_ + 1 to skip channel axis + const int* input_shape_data = this->input_shape_.cpu_data() + 1; + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int* stride_data = this->stride_.cpu_data(); + const int* pad_data = this->pad_.cpu_data(); + this->output_shape_.clear(); + for (int i = 0; i < this->num_spatial_axes_; ++i) { + const int input_dim = input_shape_data[i]; + const int output_dim = (input_dim + 2 * pad_data[i] - kernel_shape_data[i]) + / stride_data[i] + 1; + this->output_shape_.push_back(output_dim); + } } template @@ -24,11 +32,11 @@ void ConvolutionLayer::Forward_cpu(const vector*>& bottom, const Dtype* bottom_data = bottom[i]->cpu_data(); Dtype* top_data = top[i]->mutable_cpu_data(); for (int n = 0; n < this->num_; ++n) { - this->forward_cpu_gemm(bottom_data + bottom[i]->offset(n), weight, - top_data + top[i]->offset(n)); + this->forward_cpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); if (this->bias_term_) { const Dtype* bias = this->blobs_[1]->cpu_data(); - this->forward_cpu_bias(top_data + top[i]->offset(n), bias); + this->forward_cpu_bias(top_data + n * this->top_dim_, bias); } } } @@ -47,20 +55,20 @@ void ConvolutionLayer::Backward_cpu(const vector*>& top, if (this->bias_term_ && this->param_propagate_down_[1]) { Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); for (int n = 0; n < this->num_; ++n) { - this->backward_cpu_bias(bias_diff, top_diff + top[i]->offset(n)); + this->backward_cpu_bias(bias_diff, top_diff + n * this->top_dim_); } } if (this->param_propagate_down_[0] || propagate_down[i]) { for (int n = 0; n < this->num_; ++n) { // gradient w.r.t. weight. Note that we will accumulate diffs. if (this->param_propagate_down_[0]) { - this->weight_cpu_gemm(bottom_data + bottom[i]->offset(n), - top_diff + top[i]->offset(n), weight_diff); + this->weight_cpu_gemm(bottom_data + n * this->bottom_dim_, + top_diff + n * this->top_dim_, weight_diff); } // gradient w.r.t. bottom data, if necessary. if (propagate_down[i]) { - this->backward_cpu_gemm(top_diff + top[i]->offset(n), weight, - bottom_diff + bottom[i]->offset(n)); + this->backward_cpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_); } } } diff --git a/src/caffe/layers/conv_layer.cu b/src/caffe/layers/conv_layer.cu index b8a98ff7c..b429d2b47 100644 --- a/src/caffe/layers/conv_layer.cu +++ b/src/caffe/layers/conv_layer.cu @@ -16,11 +16,11 @@ void ConvolutionLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[i]->gpu_data(); Dtype* top_data = top[i]->mutable_gpu_data(); for (int n = 0; n < this->num_; ++n) { - this->forward_gpu_gemm(bottom_data + bottom[i]->offset(n), weight, - top_data + top[i]->offset(n)); + this->forward_gpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); if (this->bias_term_) { const Dtype* bias = this->blobs_[1]->gpu_data(); - this->forward_gpu_bias(top_data + top[i]->offset(n), bias); + this->forward_gpu_bias(top_data + n * this->top_dim_, bias); } } } @@ -37,7 +37,7 @@ void ConvolutionLayer::Backward_gpu(const vector*>& top, if (this->bias_term_ && this->param_propagate_down_[1]) { Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); for (int n = 0; n < this->num_; ++n) { - this->backward_gpu_bias(bias_diff, top_diff + top[i]->offset(n)); + this->backward_gpu_bias(bias_diff, top_diff + n * this->top_dim_); } } if (this->param_propagate_down_[0] || propagate_down[i]) { @@ -46,13 +46,13 @@ void ConvolutionLayer::Backward_gpu(const vector*>& top, for (int n = 0; n < this->num_; ++n) { // gradient w.r.t. weight. Note that we will accumulate diffs. if (this->param_propagate_down_[0]) { - this->weight_gpu_gemm(bottom_data + bottom[i]->offset(n), - top_diff + top[i]->offset(n), weight_diff); + this->weight_gpu_gemm(bottom_data + n * this->bottom_dim_, + top_diff + n * this->top_dim_, weight_diff); } // gradient w.r.t. bottom data, if necessary. if (propagate_down[i]) { - this->backward_gpu_gemm(top_diff + top[i]->offset(n), weight, - bottom_diff + bottom[i]->offset(n)); + this->backward_gpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_); } } } diff --git a/src/caffe/layers/cudnn_conv_layer.cpp b/src/caffe/layers/cudnn_conv_layer.cpp index 104d2b9d6..3514fe2ab 100644 --- a/src/caffe/layers/cudnn_conv_layer.cpp +++ b/src/caffe/layers/cudnn_conv_layer.cpp @@ -34,14 +34,15 @@ void CuDNNConvolutionLayer::LayerSetUp( } // Set the indexing parameters. - weight_offset_ = (this->num_output_ / this->group_) - * (this->channels_ / this->group_) * this->kernel_h_ * this->kernel_w_; bias_offset_ = (this->num_output_ / this->group_); // Create filter descriptor. + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int kernel_h = kernel_shape_data[0]; + const int kernel_w = kernel_shape_data[1]; cudnn::createFilterDesc(&filter_desc_, this->num_output_ / this->group_, this->channels_ / this->group_, - this->kernel_h_, this->kernel_w_); + kernel_h, kernel_w); // Create tensor descriptor(s) for data and corresponding convolution(s). for (int i = 0; i < bottom.size(); i++) { @@ -68,29 +69,36 @@ template void CuDNNConvolutionLayer::Reshape( const vector*>& bottom, const vector*>& top) { ConvolutionLayer::Reshape(bottom, top); - bottom_offset_ = (this->channels_ / this->group_) - * this->height_ * this->width_; - top_offset_ = (this->num_output_ / this->group_) - * this->height_out_ * this->width_out_; + CHECK_EQ(2, this->num_spatial_axes_) + << "CuDNNConvolution input must have 2 spatial axes " + << "(e.g., height and width). " + << "Use 'engine: CAFFE' for general ND convolution."; + bottom_offset_ = this->bottom_dim_ / this->group_; + top_offset_ = this->top_dim_ / this->group_; + const int height = bottom[0]->shape(this->channel_axis_ + 1); + const int width = bottom[0]->shape(this->channel_axis_ + 2); + const int height_out = top[0]->shape(this->channel_axis_ + 1); + const int width_out = top[0]->shape(this->channel_axis_ + 2); + const int* pad_data = this->pad_.cpu_data(); + const int pad_h = pad_data[0]; + const int pad_w = pad_data[1]; + const int* stride_data = this->stride_.cpu_data(); + const int stride_h = stride_data[0]; + const int stride_w = stride_data[1]; for (int i = 0; i < bottom.size(); i++) { cudnn::setTensor4dDesc(&bottom_descs_[i], this->num_, - this->channels_ / this->group_, - this->height_, this->width_, - this->channels_ * this->height_ * this->width_, - this->height_ * this->width_, - this->width_, 1); + this->channels_ / this->group_, height, width, + this->channels_ * height * width, + height * width, width, 1); cudnn::setTensor4dDesc(&top_descs_[i], this->num_, - this->num_output_ / this->group_, - this->height_out_, this->width_out_, - this->num_output_ * this->height_out_ * this->width_out_, - this->height_out_ * this->width_out_, - this->width_out_, 1); + this->num_output_ / this->group_, height_out, width_out, + this->num_output_ * this->out_spatial_dim_, + this->out_spatial_dim_, width_out, 1); cudnn::setConvolutionDesc(&conv_descs_[i], bottom_descs_[i], - filter_desc_, this->pad_h_, this->pad_w_, - this->stride_h_, this->stride_w_); + filter_desc_, pad_h, pad_w, stride_h, stride_w); } // Tensor descriptor for bias. diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index b4e802e13..691152021 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -14,15 +14,15 @@ __global__ void sync_conv_groups() { } template void CuDNNConvolutionLayer::Forward_gpu( const vector*>& bottom, const vector*>& top) { + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int kernel_h = kernel_shape_data[0]; + const int kernel_w = kernel_shape_data[1]; + const size_t workspace_limit_bytes = + kernel_h * kernel_w * this->channels_ * sizeof(int) + 1; + const Dtype* weight = this->blobs_[0]->gpu_data(); for (int i = 0; i < bottom.size(); ++i) { const Dtype* bottom_data = bottom[i]->gpu_data(); Dtype* top_data = top[i]->mutable_gpu_data(); - const Dtype* weight = this->blobs_[0]->gpu_data(); - - size_t workspace_limit_bytes = this->kernel_h_ * - this->kernel_w_ * - this->channels_ * - sizeof(int) + 1; // Forward through cuDNN in parallel over groups. for (int g = 0; g < this->group_; g++) { @@ -69,7 +69,7 @@ void CuDNNConvolutionLayer::Forward_gpu( CUDNN_CHECK(cudnnConvolutionForward(handle_[g], cudnn::dataType::one, bottom_descs_[i], bottom_data + bottom_offset_ * g, - filter_desc_, weight + weight_offset_ * g, + filter_desc_, weight + this->weight_offset_ * g, conv_descs_[i], algo, workspace, workspaceSizeInBytes, cudnn::dataType::zero, @@ -128,7 +128,7 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, top_descs_[i], top_diff + top_offset_ * g, conv_descs_[i], cudnn::dataType::one, - filter_desc_, weight_diff + weight_offset_ * g)); + filter_desc_, weight_diff + this->weight_offset_ * g)); } // Gradient w.r.t. bottom data. @@ -139,7 +139,7 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); CUDNN_CHECK(cudnnConvolutionBackwardData(handle_[2*this->group_ + g], cudnn::dataType::one, - filter_desc_, weight + weight_offset_ * g, + filter_desc_, weight + this->weight_offset_ * g, top_descs_[i], top_diff + top_offset_ * g, conv_descs_[i], cudnn::dataType::zero, diff --git a/src/caffe/layers/deconv_layer.cpp b/src/caffe/layers/deconv_layer.cpp index a4612963b..f1d1abf28 100644 --- a/src/caffe/layers/deconv_layer.cpp +++ b/src/caffe/layers/deconv_layer.cpp @@ -10,10 +10,18 @@ namespace caffe { template void DeconvolutionLayer::compute_output_shape() { - this->height_out_ = this->stride_h_ * (this->height_ - 1) + this->kernel_h_ - - 2 * this->pad_h_; - this->width_out_ = this->stride_w_ * (this->width_ - 1) + this->kernel_w_ - - 2 * this->pad_w_; + // input_shape_ + 1 to skip channel axis + const int* input_shape_data = this->input_shape_.cpu_data() + 1; + const int* kernel_shape_data = this->kernel_shape_.cpu_data(); + const int* stride_data = this->stride_.cpu_data(); + const int* pad_data = this->pad_.cpu_data(); + this->output_shape_.clear(); + for (int i = 0; i < this->num_spatial_axes_; ++i) { + const int input_dim = input_shape_data[i]; + const int output_dim = stride_data[i] * (input_dim - 1) + + kernel_shape_data[i] - 2 * pad_data[i]; + this->output_shape_.push_back(output_dim); + } } template @@ -24,11 +32,11 @@ void DeconvolutionLayer::Forward_cpu(const vector*>& bottom, const Dtype* bottom_data = bottom[i]->cpu_data(); Dtype* top_data = top[i]->mutable_cpu_data(); for (int n = 0; n < this->num_; ++n) { - this->backward_cpu_gemm(bottom_data + bottom[i]->offset(n), weight, - top_data + top[i]->offset(n)); + this->backward_cpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); if (this->bias_term_) { const Dtype* bias = this->blobs_[1]->cpu_data(); - this->forward_cpu_bias(top_data + top[i]->offset(n), bias); + this->forward_cpu_bias(top_data + n * this->top_dim_, bias); } } } @@ -47,21 +55,21 @@ void DeconvolutionLayer::Backward_cpu(const vector*>& top, if (this->bias_term_ && this->param_propagate_down_[1]) { Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); for (int n = 0; n < this->num_; ++n) { - this->backward_cpu_bias(bias_diff, top_diff + top[i]->offset(n)); + this->backward_cpu_bias(bias_diff, top_diff + n * this->top_dim_); } } if (this->param_propagate_down_[0] || propagate_down[i]) { for (int n = 0; n < this->num_; ++n) { // Gradient w.r.t. weight. Note that we will accumulate diffs. if (this->param_propagate_down_[0]) { - this->weight_cpu_gemm(top_diff + top[i]->offset(n), - bottom_data + bottom[i]->offset(n), weight_diff); + this->weight_cpu_gemm(top_diff + n * this->top_dim_, + bottom_data + n * this->bottom_dim_, weight_diff); } // Gradient w.r.t. bottom data, if necessary, reusing the column buffer // we might have just computed above. if (propagate_down[i]) { - this->forward_cpu_gemm(top_diff + top[i]->offset(n), weight, - bottom_diff + bottom[i]->offset(n), + this->forward_cpu_gemm(top_diff + n * this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_, this->param_propagate_down_[0]); } } diff --git a/src/caffe/layers/deconv_layer.cu b/src/caffe/layers/deconv_layer.cu index 8a1eed8aa..ea83f56f1 100644 --- a/src/caffe/layers/deconv_layer.cu +++ b/src/caffe/layers/deconv_layer.cu @@ -16,11 +16,11 @@ void DeconvolutionLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[i]->gpu_data(); Dtype* top_data = top[i]->mutable_gpu_data(); for (int n = 0; n < this->num_; ++n) { - this->backward_gpu_gemm(bottom_data + bottom[i]->offset(n), weight, - top_data + top[i]->offset(n)); + this->backward_gpu_gemm(bottom_data + n * this->bottom_dim_, weight, + top_data + n * this->top_dim_); if (this->bias_term_) { const Dtype* bias = this->blobs_[1]->gpu_data(); - this->forward_gpu_bias(top_data + top[i]->offset(n), bias); + this->forward_gpu_bias(top_data + n * this->top_dim_, bias); } } } @@ -39,20 +39,20 @@ void DeconvolutionLayer::Backward_gpu(const vector*>& top, if (this->bias_term_ && this->param_propagate_down_[1]) { Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); for (int n = 0; n < this->num_; ++n) { - this->backward_gpu_bias(bias_diff, top_diff + top[i]->offset(n)); + this->backward_gpu_bias(bias_diff, top_diff + n * this->top_dim_); } } if (this->param_propagate_down_[0] || propagate_down[i]) { for (int n = 0; n < this->num_; ++n) { // gradient w.r.t. weight. Note that we will accumulate diffs. if (this->param_propagate_down_[0]) { - this->weight_gpu_gemm(top_diff + top[i]->offset(n), - bottom_data + bottom[i]->offset(n), weight_diff); + this->weight_gpu_gemm(top_diff + n * this->top_dim_, + bottom_data + n * this->bottom_dim_, weight_diff); } // gradient w.r.t. bottom data, if necessary. if (propagate_down[i]) { - this->forward_gpu_gemm(top_diff + top[i]->offset(n), weight, - bottom_diff + bottom[i]->offset(n), + this->forward_gpu_gemm(top_diff + this->top_dim_, weight, + bottom_diff + n * this->bottom_dim_, this->param_propagate_down_[0]); } } diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index 1c802714e..595c9dbbe 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -11,54 +11,106 @@ template void Im2colLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { ConvolutionParameter conv_param = this->layer_param_.convolution_param(); - CHECK(!conv_param.has_kernel_size() != - !(conv_param.has_kernel_h() && conv_param.has_kernel_w())) - << "Filter size is kernel_size OR kernel_h and kernel_w; not both"; - CHECK(conv_param.has_kernel_size() || - (conv_param.has_kernel_h() && conv_param.has_kernel_w())) - << "For non-square filters both kernel_h and kernel_w are required."; - CHECK((!conv_param.has_pad() && conv_param.has_pad_h() - && conv_param.has_pad_w()) - || (!conv_param.has_pad_h() && !conv_param.has_pad_w())) - << "pad is pad OR pad_h and pad_w are required."; - CHECK((!conv_param.has_stride() && conv_param.has_stride_h() - && conv_param.has_stride_w()) - || (!conv_param.has_stride_h() && !conv_param.has_stride_w())) - << "Stride is stride OR stride_h and stride_w are required."; - if (conv_param.has_kernel_size()) { - kernel_h_ = kernel_w_ = conv_param.kernel_size(); + force_nd_im2col_ = conv_param.force_nd_im2col(); + const int input_num_dims = bottom[0]->shape().size(); + channel_axis_ = bottom[0]->CanonicalAxisIndex(conv_param.axis()); + const int first_spatial_dim = channel_axis_ + 1; + num_spatial_axes_ = input_num_dims - first_spatial_dim; + CHECK_GE(num_spatial_axes_, 1); + vector dim_blob_shape(1, num_spatial_axes_); + // Setup filter kernel dimensions (kernel_shape_). + kernel_shape_.Reshape(dim_blob_shape); + int* kernel_shape_data = kernel_shape_.mutable_cpu_data(); + if (conv_param.has_kernel_h() || conv_param.has_kernel_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "kernel_h & kernel_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.kernel_size_size()) + << "Either kernel_size or kernel_h/w should be specified; not both."; + kernel_shape_data[0] = conv_param.kernel_h(); + kernel_shape_data[1] = conv_param.kernel_w(); } else { - kernel_h_ = conv_param.kernel_h(); - kernel_w_ = conv_param.kernel_w(); + const int num_kernel_dims = conv_param.kernel_size_size(); + CHECK(num_kernel_dims == 1 || num_kernel_dims == num_spatial_axes_) + << "kernel_size must be specified once, or once per spatial dimension " + << "(kernel_size specified " << num_kernel_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + for (int i = 0; i < num_spatial_axes_; ++i) { + kernel_shape_data[i] = + conv_param.kernel_size((num_kernel_dims == 1) ? 0 : i); + } } - CHECK_GT(kernel_h_, 0) << "Filter dimensions cannot be zero."; - CHECK_GT(kernel_w_, 0) << "Filter dimensions cannot be zero."; - if (!conv_param.has_pad_h()) { - pad_h_ = pad_w_ = conv_param.pad(); + for (int i = 0; i < num_spatial_axes_; ++i) { + CHECK_GT(kernel_shape_data[i], 0) << "Filter dimensions must be nonzero."; + } + // Setup stride dimensions (stride_). + stride_.Reshape(dim_blob_shape); + int* stride_data = stride_.mutable_cpu_data(); + if (conv_param.has_stride_h() || conv_param.has_stride_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "stride_h & stride_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.stride_size()) + << "Either stride or stride_h/w should be specified; not both."; + stride_data[0] = conv_param.stride_h(); + stride_data[1] = conv_param.stride_w(); } else { - pad_h_ = conv_param.pad_h(); - pad_w_ = conv_param.pad_w(); + const int num_stride_dims = conv_param.stride_size(); + CHECK(num_stride_dims == 0 || num_stride_dims == 1 || + num_stride_dims == num_spatial_axes_) + << "stride must be specified once, or once per spatial dimension " + << "(stride specified " << num_stride_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + const int kDefaultStride = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + stride_data[i] = (num_stride_dims == 0) ? kDefaultStride : + conv_param.stride((num_stride_dims == 1) ? 0 : i); + CHECK_GT(stride_data[i], 0) << "Stride dimensions must be nonzero."; + } } - if (!conv_param.has_stride_h()) { - stride_h_ = stride_w_ = conv_param.stride(); + // Setup pad dimensions (pad_). + pad_.Reshape(dim_blob_shape); + int* pad_data = pad_.mutable_cpu_data(); + if (conv_param.has_pad_h() || conv_param.has_pad_w()) { + CHECK_EQ(num_spatial_axes_, 2) + << "pad_h & pad_w can only be used for 2D convolution."; + CHECK_EQ(0, conv_param.pad_size()) + << "Either pad or pad_h/w should be specified; not both."; + pad_data[0] = conv_param.pad_h(); + pad_data[1] = conv_param.pad_w(); } else { - stride_h_ = conv_param.stride_h(); - stride_w_ = conv_param.stride_w(); + const int num_pad_dims = conv_param.pad_size(); + CHECK(num_pad_dims == 0 || num_pad_dims == 1 || + num_pad_dims == num_spatial_axes_) + << "pad must be specified once, or once per spatial dimension " + << "(pad specified " << num_pad_dims << " times; " + << num_spatial_axes_ << " spatial dims);"; + const int kDefaultPad = 0; + for (int i = 0; i < num_spatial_axes_; ++i) { + pad_data[i] = (num_pad_dims == 0) ? kDefaultPad : + conv_param.pad((num_pad_dims == 1) ? 0 : i); + } } } template void Im2colLayer::Reshape(const vector*>& bottom, const vector*>& top) { - CHECK_EQ(4, bottom[0]->num_axes()) << "Input must have 4 axes, " - << "corresponding to (num, channels, height, width)"; - channels_ = bottom[0]->channels(); - height_ = bottom[0]->height(); - width_ = bottom[0]->width(); - top[0]->Reshape( - bottom[0]->num(), channels_ * kernel_h_ * kernel_w_, - (height_ + 2 * pad_h_ - kernel_h_) / stride_h_ + 1, - (width_ + 2 * pad_w_ - kernel_w_) / stride_w_ + 1); + vector top_shape = bottom[0]->shape(); + const int* kernel_shape_data = kernel_shape_.cpu_data(); + const int* stride_data = stride_.cpu_data(); + const int* pad_data = pad_.cpu_data(); + for (int i = 0; i < num_spatial_axes_; ++i) { + top_shape[channel_axis_] *= kernel_shape_data[i]; + const int input_dim = bottom[0]->shape(channel_axis_ + i + 1); + const int output_dim = (input_dim + 2 * pad_data[i] - kernel_shape_data[i]) + / stride_data[i] + 1; + top_shape[channel_axis_ + i + 1] = output_dim; + } + top[0]->Reshape(top_shape); + num_ = bottom[0]->count(0, channel_axis_); + bottom_dim_ = bottom[0]->count(channel_axis_); + top_dim_ = top[0]->count(channel_axis_); + + channels_ = bottom[0]->shape(channel_axis_); } template @@ -66,10 +118,27 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, const vector*>& top) { const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = top[0]->mutable_cpu_data(); - for (int n = 0; n < bottom[0]->num(); ++n) { - im2col_cpu(bottom_data + bottom[0]->offset(n), channels_, height_, - width_, kernel_h_, kernel_w_, pad_h_, pad_w_, - stride_h_, stride_w_, top_data + top[0]->offset(n)); + for (int n = 0; n < num_; ++n) { + DCHECK_EQ(bottom[0]->shape().size() - channel_axis_, num_spatial_axes_ + 1); + DCHECK_EQ(top[0]->shape().size() - channel_axis_, num_spatial_axes_ + 1); + DCHECK_EQ(kernel_shape_.count(), num_spatial_axes_); + DCHECK_EQ(pad_.count(), num_spatial_axes_); + DCHECK_EQ(stride_.count(), num_spatial_axes_); + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_cpu(bottom_data + n * bottom_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + top_data + n * top_dim_); + } else { + im2col_nd_cpu(bottom_data + n * bottom_dim_, num_spatial_axes_, + bottom[0]->shape().data() + channel_axis_, + top[0]->shape().data() + channel_axis_, + kernel_shape_.cpu_data(), pad_.cpu_data(), stride_.cpu_data(), + top_data + n * top_dim_); + } } } @@ -78,10 +147,22 @@ void Im2colLayer::Backward_cpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { const Dtype* top_diff = top[0]->cpu_diff(); Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); - for (int n = 0; n < top[0]->num(); ++n) { - col2im_cpu(top_diff + top[0]->offset(n), channels_, height_, width_, - kernel_h_, kernel_w_, pad_h_, pad_w_, - stride_h_, stride_w_, bottom_diff + bottom[0]->offset(n)); + for (int n = 0; n < num_; ++n) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_cpu(top_diff + n * top_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + bottom_diff + n * bottom_dim_); + } else { + col2im_nd_cpu(top_diff + n * top_dim_, num_spatial_axes_, + bottom[0]->shape().data() + channel_axis_, + top[0]->shape().data() + channel_axis_, + kernel_shape_.cpu_data(), pad_.cpu_data(), stride_.cpu_data(), + bottom_diff + n * bottom_dim_); + } } } diff --git a/src/caffe/layers/im2col_layer.cu b/src/caffe/layers/im2col_layer.cu index 9c338b14c..cd507623c 100644 --- a/src/caffe/layers/im2col_layer.cu +++ b/src/caffe/layers/im2col_layer.cu @@ -12,10 +12,23 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); - for (int n = 0; n < bottom[0]->num(); ++n) { - im2col_gpu(bottom_data + bottom[0]->offset(n), channels_, height_, - width_, kernel_h_, kernel_w_, pad_h_, pad_w_, - stride_h_, stride_w_, top_data + top[0]->offset(n)); + const int num_kernels = channels_ * top[0]->count(channel_axis_ + 1); + for (int n = 0; n < num_; ++n) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_gpu(bottom_data + n * bottom_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + top_data + n * top_dim_); + } else { + im2col_nd_gpu(bottom_data + n * bottom_dim_, num_spatial_axes_, + num_kernels, bottom[0]->gpu_shape() + channel_axis_, + top[0]->gpu_shape() + channel_axis_, + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + top_data + n * top_dim_); + } } } @@ -24,10 +37,22 @@ void Im2colLayer::Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); - for (int n = 0; n < top[0]->num(); ++n) { - col2im_gpu(top_diff + top[0]->offset(n), channels_, height_, width_, - kernel_h_, kernel_w_, pad_h_, pad_w_, - stride_h_, stride_w_, bottom_diff + bottom[0]->offset(n)); + for (int n = 0; n < num_; ++n) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_gpu(top_diff + n * top_dim_, channels_, + bottom[0]->shape(channel_axis_ + 1), + bottom[0]->shape(channel_axis_ + 2), + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], + bottom_diff + n * bottom_dim_); + } else { + col2im_nd_gpu(top_diff + n * top_dim_, num_spatial_axes_, bottom_dim_, + bottom[0]->gpu_shape() + channel_axis_, + top[0]->gpu_shape() + channel_axis_, + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + bottom_diff + n * bottom_dim_); + } } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 86683eb45..f52c941b0 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -508,6 +508,13 @@ message ConvolutionParameter { // N independent 3D convolutions, sliding (C/g)-channels // filters across the spatial axes (D, H, W) of the input. optional int32 axis = 16 [default = 1]; + + // Whether to force use of the general ND convolution, even if a specific + // implementation for blobs of the appropriate number of spatial dimensions + // is available. (Currently, there is only a 2D-specific convolution + // implementation; for input blobs with num_axes != 2, this option is + // ignored and the ND implementation will be used.) + optional bool force_nd_im2col = 17 [default = false]; } message DataParameter { diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index 67d41fff8..9df979a2d 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -19,54 +19,87 @@ template void caffe_conv(const Blob* in, ConvolutionParameter* conv_param, const vector > >& weights, Blob* out) { + const bool has_depth = (out->num_axes() == 5); + if (!has_depth) { CHECK_EQ(4, out->num_axes()); } // Kernel size, stride, and pad int kernel_h, kernel_w; - if (conv_param->has_kernel_size()) { - kernel_h = kernel_w = conv_param->kernel_size(); - } else { + if (conv_param->has_kernel_h() || conv_param->has_kernel_w()) { kernel_h = conv_param->kernel_h(); kernel_w = conv_param->kernel_w(); + } else { + kernel_h = kernel_w = conv_param->kernel_size(0); } int pad_h, pad_w; - if (!conv_param->has_pad_h()) { - pad_h = pad_w = conv_param->pad(); - } else { + if (conv_param->has_pad_h() || conv_param->has_pad_w()) { pad_h = conv_param->pad_h(); pad_w = conv_param->pad_w(); + } else { + pad_h = pad_w = conv_param->pad_size() ? conv_param->pad(0) : 0; } int stride_h, stride_w; - if (!conv_param->has_stride_h()) { - stride_h = stride_w = conv_param->stride(); - } else { + if (conv_param->has_stride_h() || conv_param->has_stride_w()) { stride_h = conv_param->stride_h(); stride_w = conv_param->stride_w(); + } else { + stride_h = stride_w = conv_param->stride_size() ? conv_param->stride(0) : 1; + } + int kernel_d, pad_d, stride_d; + if (has_depth) { + kernel_d = kernel_h; + stride_d = stride_h; + pad_d = pad_h; + } else { + kernel_d = stride_d = 1; + pad_d = 0; } // Groups int groups = conv_param->group(); - int o_g = out->channels() / groups; - int k_g = in->channels() / groups; + int o_g = out->shape(1) / groups; + int k_g = in->shape(1) / groups; int o_head, k_head; // Convolution - const Dtype* in_data = in->cpu_data(); - const Dtype* weight_data = weights[0]->cpu_data(); + vector weight_offset(4 + has_depth); + vector in_offset(4 + has_depth); + vector out_offset(4 + has_depth); Dtype* out_data = out->mutable_cpu_data(); - for (int n = 0; n < out->num(); n++) { + for (int n = 0; n < out->shape(0); n++) { for (int g = 0; g < groups; g++) { o_head = o_g * g; k_head = k_g * g; for (int o = 0; o < o_g; o++) { for (int k = 0; k < k_g; k++) { - for (int y = 0; y < out->height(); y++) { - for (int x = 0; x < out->width(); x++) { - for (int p = 0; p < kernel_h; p++) { - for (int q = 0; q < kernel_w; q++) { - int in_y = y * stride_h - pad_h + p; - int in_x = x * stride_w - pad_w + q; - if (in_y >= 0 && in_y < in->height() - && in_x >= 0 && in_x < in->width()) { - out_data[out->offset(n, o + o_head, y, x)] += - in_data[in->offset(n, k + k_head, in_y, in_x)] - * weight_data[weights[0]->offset(o + o_head, k, p, q)]; + for (int z = 0; z < (has_depth ? out->shape(2) : 1); z++) { + for (int y = 0; y < out->shape(2 + has_depth); y++) { + for (int x = 0; x < out->shape(3 + has_depth); x++) { + for (int r = 0; r < kernel_d; r++) { + for (int p = 0; p < kernel_h; p++) { + for (int q = 0; q < kernel_w; q++) { + int in_z = z * stride_d - pad_d + r; + int in_y = y * stride_h - pad_h + p; + int in_x = x * stride_w - pad_w + q; + if (in_z >= 0 && in_z < (has_depth ? in->shape(2) : 1) + && in_y >= 0 && in_y < in->shape(2 + has_depth) + && in_x >= 0 && in_x < in->shape(3 + has_depth)) { + weight_offset[0] = o + o_head; + weight_offset[1] = k; + if (has_depth) { weight_offset[2] = r; } + weight_offset[2 + has_depth] = p; + weight_offset[3 + has_depth] = q; + in_offset[0] = n; + in_offset[1] = k + k_head; + if (has_depth) { in_offset[2] = in_z; } + in_offset[2 + has_depth] = in_y; + in_offset[3 + has_depth] = in_x; + out_offset[0] = n; + out_offset[1] = o + o_head; + if (has_depth) { out_offset[2] = z; } + out_offset[2 + has_depth] = y; + out_offset[3 + has_depth] = x; + out_data[out->offset(out_offset)] += + in->data_at(in_offset) + * weights[0]->data_at(weight_offset); + } + } } } } @@ -79,11 +112,18 @@ void caffe_conv(const Blob* in, ConvolutionParameter* conv_param, // Bias if (conv_param->bias_term()) { const Dtype* bias_data = weights[1]->cpu_data(); - for (int n = 0; n < out->num(); n++) { - for (int o = 0; o < out->channels(); o++) { - for (int y = 0; y < out->height(); y++) { - for (int x = 0; x < out->width(); x++) { - out_data[out->offset(n, o, y, x)] += bias_data[o]; + for (int n = 0; n < out->shape(0); n++) { + for (int o = 0; o < out->shape(1); o++) { + for (int z = 0; z < (has_depth ? out->shape(2) : 1); z++) { + for (int y = 0; y < out->shape(2 + has_depth); y++) { + for (int x = 0; x < out->shape(3 + has_depth); x++) { + out_offset[0] = n; + out_offset[1] = o; + if (has_depth) { out_offset[2] = z; } + out_offset[2 + has_depth] = y; + out_offset[3 + has_depth] = x; + out_data[out->offset(out_offset)] += bias_data[o]; + } } } } @@ -150,8 +190,8 @@ TYPED_TEST(ConvolutionLayerTest, TestSetup) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(4); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); @@ -188,8 +228,8 @@ TYPED_TEST(ConvolutionLayerTest, TestSimpleConvolution) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(4); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("constant"); @@ -217,13 +257,98 @@ TYPED_TEST(ConvolutionLayerTest, TestSimpleConvolution) { } } +TYPED_TEST(ConvolutionLayerTest, Test0DConvolution) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + const int kNumOutput = 3; + convolution_param->set_num_output(kNumOutput); + convolution_param->set_axis(3); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + vector top_shape = this->blob_bottom_->shape(); + top_shape[3] = kNumOutput; + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(top_shape, this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + vector weight_offset(2); + const Blob* weight = layer->blobs()[0].get(); + const Blob* bias = layer->blobs()[1].get(); + const int num = this->blob_top_->count(3); + const int dim = this->blob_top_->shape(3); + const int bottom_dim = this->blob_bottom_->shape(3); + for (int n = 0; n < num; ++n) { + for (int d = 0; d < dim; ++d) { + weight_offset[0] = d; + Dtype value = bias->cpu_data()[d]; + for (int bottom_d = 0; bottom_d < bottom_dim; ++bottom_d) { + weight_offset[1] = bottom_d; + value += weight->data_at(weight_offset) * + this->blob_bottom_->cpu_data()[n * bottom_dim + bottom_d]; + } + EXPECT_NEAR(value, this->blob_top_->cpu_data()[n * dim + d], 1e-4); + } + } +} + +TYPED_TEST(ConvolutionLayerTest, TestSimple3DConvolution) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 5; + bottom_shape[3] = this->blob_bottom_vec_[0]->shape(2); + bottom_shape[4] = this->blob_bottom_vec_[0]->shape(3); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + TYPED_TEST(ConvolutionLayerTest, Test1x1Convolution) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(1); - convolution_param->set_stride(1); + convolution_param->add_kernel_size(1); + convolution_param->add_stride(1); convolution_param->set_num_output(4); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("constant"); @@ -249,8 +374,8 @@ TYPED_TEST(ConvolutionLayerTest, TestSimpleConvolutionGroup) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(3); convolution_param->set_group(3); convolution_param->mutable_weight_filler()->set_type("gaussian"); @@ -288,8 +413,8 @@ TYPED_TEST(ConvolutionLayerTest, TestSobelConvolution) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(1); convolution_param->set_bias_term(false); shared_ptr > layer( @@ -350,14 +475,11 @@ TYPED_TEST(ConvolutionLayerTest, TestSobelConvolution) { convolution_param->set_bias_term(false); layer.reset(new ConvolutionLayer(layer_param)); layer->blobs().resize(1); - layer->blobs()[0].reset(new Blob(1, 3, 1, 3)); + layer->blobs()[0].reset(new Blob(1, 1, 1, 3)); Dtype* weights_2 = layer->blobs()[0]->mutable_cpu_data(); - for (int c = 0; c < 3; ++c) { - int i = c * 3; // 1 x 3 filter - weights_2[i + 0] = -1; - weights_2[i + 1] = 0; - weights_2[i + 2] = 1; - } + weights_2[0] = -1; + weights_2[1] = 0; + weights_2[2] = 1; layer->SetUp(sep_blob_bottom_vec, sep_blob_top_vec); layer->Forward(sep_blob_bottom_vec, sep_blob_top_vec); // Test equivalence of full and separable filters. @@ -368,6 +490,124 @@ TYPED_TEST(ConvolutionLayerTest, TestSobelConvolution) { } } +TYPED_TEST(ConvolutionLayerTest, TestNDAgainst2D) { + typedef typename TypeParam::Dtype Dtype; + const int kernel_h = 11; + const int kernel_w = 13; + vector bottom_shape(4); + bottom_shape[0] = 15; + bottom_shape[1] = 18; + bottom_shape[2] = kernel_h * 2; + bottom_shape[3] = kernel_w * 2; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_num_output(12); + convolution_param->set_bias_term(false); + convolution_param->set_group(6); + convolution_param->set_kernel_h(kernel_h); + convolution_param->set_kernel_w(kernel_w); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + Blob weights; + Blob top_diff; + // Shape and fill weights and top_diff. + bool copy_diff; + bool reshape; + { + ConvolutionLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + top_diff.ReshapeLike(*this->blob_top_); + filler.Fill(&top_diff); + ASSERT_EQ(1, layer.blobs().size()); + copy_diff = false; reshape = true; + weights.CopyFrom(*layer.blobs()[0], copy_diff, reshape); + } + vector propagate_down(1, true); + Blob result_2d; + Blob backward_result_2d; + Blob backward_weight_result_2d; + // Test with 2D im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_2d. + convolution_param->set_force_nd_im2col(false); + ConvolutionLayer layer_2d(layer_param); + layer_2d.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_2d.blobs().size()); + copy_diff = false; reshape = false; + layer_2d.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_2d.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_2d.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_2d. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_2d.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_2d.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_2d.CopyFrom(weights, copy_diff, reshape); + } + Blob result_nd; + Blob backward_result_nd; + Blob backward_weight_result_nd; + // Test with ND im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_nd. + convolution_param->set_force_nd_im2col(true); + ConvolutionLayer layer_nd(layer_param); + layer_nd.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_nd.blobs().size()); + copy_diff = false; reshape = false; + layer_nd.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_nd.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_nd.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_nd. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_nd.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_nd.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_nd.CopyFrom(weights, copy_diff, reshape); + } + ASSERT_EQ(result_nd.count(), result_2d.count()); + for (int i = 0; i < result_2d.count(); ++i) { + EXPECT_EQ(result_2d.cpu_data()[i], result_nd.cpu_data()[i]); + } + ASSERT_EQ(backward_result_nd.count(), backward_result_2d.count()); + for (int i = 0; i < backward_result_2d.count(); ++i) { + EXPECT_EQ(backward_result_2d.cpu_diff()[i], + backward_result_nd.cpu_diff()[i]); + } + ASSERT_EQ(backward_weight_result_nd.count(), + backward_weight_result_2d.count()); + for (int i = 0; i < backward_weight_result_2d.count(); ++i) { + EXPECT_EQ(backward_weight_result_2d.cpu_diff()[i], + backward_weight_result_nd.cpu_diff()[i]); + } +} + TYPED_TEST(ConvolutionLayerTest, TestGradient) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; @@ -375,8 +615,36 @@ TYPED_TEST(ConvolutionLayerTest, TestGradient) { layer_param.mutable_convolution_param(); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ConvolutionLayerTest, TestGradient3D) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 5; + bottom_shape[3] = this->blob_bottom_vec_[0]->shape(2); + bottom_shape[4] = this->blob_bottom_vec_[0]->shape(3); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(2); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("gaussian"); @@ -393,8 +661,8 @@ TYPED_TEST(ConvolutionLayerTest, Test1x1Gradient) { layer_param.mutable_convolution_param(); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); - convolution_param->set_kernel_size(1); - convolution_param->set_stride(1); + convolution_param->add_kernel_size(1); + convolution_param->add_stride(1); convolution_param->set_num_output(2); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("gaussian"); @@ -409,8 +677,8 @@ TYPED_TEST(ConvolutionLayerTest, TestGradientGroup) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(3); convolution_param->set_group(3); convolution_param->mutable_weight_filler()->set_type("gaussian"); @@ -472,8 +740,8 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestSetupCuDNN) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(4); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); @@ -509,8 +777,8 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestSimpleConvolutionCuDNN) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(4); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("constant"); @@ -542,8 +810,8 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestSimpleConvolutionGroupCuDNN) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(3); convolution_param->set_group(3); convolution_param->mutable_weight_filler()->set_type("gaussian"); @@ -581,8 +849,8 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestSobelConvolutionCuDNN) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(1); convolution_param->set_bias_term(false); shared_ptr > layer( @@ -643,14 +911,11 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestSobelConvolutionCuDNN) { convolution_param->set_bias_term(false); layer.reset(new CuDNNConvolutionLayer(layer_param)); layer->blobs().resize(1); - layer->blobs()[0].reset(new Blob(1, 3, 1, 3)); + layer->blobs()[0].reset(new Blob(1, 1, 1, 3)); TypeParam* weights_2 = layer->blobs()[0]->mutable_cpu_data(); - for (int c = 0; c < 3; ++c) { - int i = c * 3; // 1 x 3 filter - weights_2[i + 0] = -1; - weights_2[i + 1] = 0; - weights_2[i + 2] = 1; - } + weights_2[0] = -1; + weights_2[1] = 0; + weights_2[2] = 1; layer->SetUp(sep_blob_bottom_vec, sep_blob_top_vec); layer->Forward(sep_blob_bottom_vec, sep_blob_top_vec); // Test equivalence of full and separable filters. @@ -667,8 +932,8 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestGradientCuDNN) { layer_param.mutable_convolution_param(); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(2); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("gaussian"); @@ -682,8 +947,8 @@ TYPED_TEST(CuDNNConvolutionLayerTest, TestGradientGroupCuDNN) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(3); convolution_param->set_group(3); convolution_param->mutable_weight_filler()->set_type("gaussian"); diff --git a/src/caffe/test/test_deconvolution_layer.cpp b/src/caffe/test/test_deconvolution_layer.cpp index fc63d5efb..770e7b277 100644 --- a/src/caffe/test/test_deconvolution_layer.cpp +++ b/src/caffe/test/test_deconvolution_layer.cpp @@ -58,8 +58,8 @@ TYPED_TEST(DeconvolutionLayerTest, TestSetup) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(4); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); @@ -96,8 +96,8 @@ TYPED_TEST(DeconvolutionLayerTest, TestSimpleDeconvolution) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_num_output(4); convolution_param->mutable_weight_filler()->set_type("constant"); convolution_param->mutable_weight_filler()->set_value(1); @@ -144,8 +144,8 @@ TYPED_TEST(DeconvolutionLayerTest, TestGradient) { layer_param.mutable_convolution_param(); this->blob_bottom_vec_.push_back(this->blob_bottom_2_); this->blob_top_vec_.push_back(this->blob_top_2_); - convolution_param->set_kernel_size(2); - convolution_param->set_stride(1); + convolution_param->add_kernel_size(2); + convolution_param->add_stride(1); convolution_param->set_num_output(1); convolution_param->mutable_weight_filler()->set_type("gaussian"); convolution_param->mutable_bias_filler()->set_type("gaussian"); @@ -155,4 +155,151 @@ TYPED_TEST(DeconvolutionLayerTest, TestGradient) { this->blob_top_vec_); } +TYPED_TEST(DeconvolutionLayerTest, TestNDAgainst2D) { + typedef typename TypeParam::Dtype Dtype; + const int kernel_h = 11; + const int kernel_w = 13; + vector bottom_shape(4); + bottom_shape[0] = 15; + bottom_shape[1] = 12; + bottom_shape[2] = kernel_h * 2; + bottom_shape[3] = kernel_w * 2; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->set_num_output(18); + convolution_param->set_bias_term(false); + convolution_param->set_group(6); + convolution_param->set_kernel_h(kernel_h); + convolution_param->set_kernel_w(kernel_w); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + Blob weights; + Blob top_diff; + // Shape and fill weights and top_diff. + bool copy_diff; + bool reshape; + { + DeconvolutionLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + top_diff.ReshapeLike(*this->blob_top_); + filler.Fill(&top_diff); + ASSERT_EQ(1, layer.blobs().size()); + copy_diff = false; reshape = true; + weights.CopyFrom(*layer.blobs()[0], copy_diff, reshape); + } + vector propagate_down(1, true); + Blob result_2d; + Blob backward_result_2d; + Blob backward_weight_result_2d; + // Test with 2D im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_2d. + convolution_param->set_force_nd_im2col(false); + DeconvolutionLayer layer_2d(layer_param); + layer_2d.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_2d.blobs().size()); + copy_diff = false; reshape = false; + layer_2d.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_2d.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_2d.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_2d. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_2d.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_2d.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_2d.CopyFrom(weights, copy_diff, reshape); + } + Blob result_nd; + Blob backward_result_nd; + Blob backward_weight_result_nd; + // Test with ND im2col + { + caffe_set(this->blob_top_->count(), Dtype(0), + this->blob_top_->mutable_cpu_data()); + caffe_set(this->blob_bottom_->count(), Dtype(0), + this->blob_bottom_->mutable_cpu_diff()); + caffe_set(weights.count(), Dtype(0), weights.mutable_cpu_diff()); + // Do SetUp and Forward; save Forward result in result_nd. + convolution_param->set_force_nd_im2col(true); + DeconvolutionLayer layer_nd(layer_param); + layer_nd.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(1, layer_nd.blobs().size()); + copy_diff = false; reshape = false; + layer_nd.blobs()[0]->CopyFrom(weights, copy_diff, reshape); + layer_nd.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + copy_diff = false; reshape = true; + result_nd.CopyFrom(*this->blob_top_, copy_diff, reshape); + // Copy pre-generated top diff into actual top diff; + // do Backward and save result in backward_result_nd. + ASSERT_EQ(this->blob_top_->shape(), top_diff.shape()); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer_nd.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + copy_diff = true; reshape = true; + backward_result_nd.CopyFrom(*this->blob_bottom_, copy_diff, reshape); + backward_weight_result_nd.CopyFrom(weights, copy_diff, reshape); + } + ASSERT_EQ(result_nd.count(), result_2d.count()); + for (int i = 0; i < result_2d.count(); ++i) { + EXPECT_EQ(result_2d.cpu_data()[i], result_nd.cpu_data()[i]); + } + ASSERT_EQ(backward_result_nd.count(), backward_result_2d.count()); + for (int i = 0; i < backward_result_2d.count(); ++i) { + EXPECT_EQ(backward_result_2d.cpu_diff()[i], + backward_result_nd.cpu_diff()[i]); + } + ASSERT_EQ(backward_weight_result_nd.count(), + backward_weight_result_2d.count()); + for (int i = 0; i < backward_weight_result_2d.count(); ++i) { + EXPECT_EQ(backward_weight_result_2d.cpu_diff()[i], + backward_weight_result_nd.cpu_diff()[i]); + } +} + +TYPED_TEST(DeconvolutionLayerTest, TestGradient3D) { + typedef typename TypeParam::Dtype Dtype; + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 2; + bottom_shape[3] = 3; + bottom_shape[4] = 2; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(2); + convolution_param->add_stride(2); + convolution_param->add_pad(1); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + DeconvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + } // namespace caffe diff --git a/src/caffe/test/test_im2col_kernel.cu b/src/caffe/test/test_im2col_kernel.cu index 0017ac23e..f0b75fcc6 100644 --- a/src/caffe/test/test_im2col_kernel.cu +++ b/src/caffe/test/test_im2col_kernel.cu @@ -22,6 +22,12 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, const int height_col, const int width_col, Dtype* data_col); +template +__global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_col); + extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; template @@ -30,11 +36,18 @@ class Im2colKernelTest : public GPUDeviceTest { Im2colKernelTest() // big so launches > 1024 threads : blob_bottom_(new Blob(5, 500, 10, 10)), + blob_kernel_shape_(new Blob()), + blob_stride_(new Blob()), + blob_pad_(new Blob()), blob_top_(new Blob()), blob_top_cpu_(new Blob()) { FillerParameter filler_param; GaussianFiller filler(filler_param); filler.Fill(this->blob_bottom_); + vector dim_blob_shape(1, 2); + blob_kernel_shape_->Reshape(dim_blob_shape); + blob_stride_->Reshape(dim_blob_shape); + blob_pad_->Reshape(dim_blob_shape); height_ = blob_bottom_->height(); width_ = blob_bottom_->width(); @@ -44,14 +57,26 @@ class Im2colKernelTest : public GPUDeviceTest { kernel_size_ = 3; height_col_ = (height_ + 2 * pad_ - kernel_size_) / stride_ + 1; width_col_ = (width_ + 2 * pad_ - kernel_size_) / stride_ + 1; + + for (int i = 0; i < 2; ++i) { + blob_kernel_shape_->mutable_cpu_data()[i] = kernel_size_; + blob_stride_->mutable_cpu_data()[i] = stride_; + blob_pad_->mutable_cpu_data()[i] = pad_; + } } virtual ~Im2colKernelTest() { - delete blob_bottom_; - delete blob_top_; - delete blob_top_cpu_; + delete blob_bottom_; + delete blob_top_; + delete blob_top_cpu_; + delete blob_kernel_shape_; + delete blob_stride_; + delete blob_pad_; } + Blob* const blob_kernel_shape_; + Blob* const blob_stride_; + Blob* const blob_pad_; Blob* const blob_bottom_; Blob* const blob_top_; Blob* const blob_top_cpu_; @@ -67,7 +92,7 @@ class Im2colKernelTest : public GPUDeviceTest { TYPED_TEST_CASE(Im2colKernelTest, TestDtypes); -TYPED_TEST(Im2colKernelTest, TestGPU) { +TYPED_TEST(Im2colKernelTest, Test2D) { // Reshape the blobs to correct size for im2col output this->blob_top_->Reshape(this->blob_bottom_->num(), this->channels_ * this->kernel_size_ * this->kernel_size_, @@ -122,4 +147,58 @@ TYPED_TEST(Im2colKernelTest, TestGPU) { } } +TYPED_TEST(Im2colKernelTest, TestND) { + // Reshape the blobs to correct size for im2col output + this->blob_top_->Reshape(this->blob_bottom_->num(), + this->channels_ * this->kernel_size_ * this->kernel_size_, + this->height_col_, + this->width_col_); + + this->blob_top_cpu_->ReshapeLike(*this->blob_top_); + + const TypeParam* bottom_data_cpu = this->blob_bottom_->cpu_data(); + TypeParam* top_data_cpu = this->blob_top_cpu_->mutable_cpu_data(); + + // CPU Version + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + im2col_nd_cpu(bottom_data_cpu + this->blob_bottom_->offset(n), 2, + this->blob_bottom_->shape().data() + 1, + this->blob_top_cpu_->shape().data() + 1, + this->blob_kernel_shape_->cpu_data(), + this->blob_pad_->cpu_data(), this->blob_stride_->cpu_data(), + top_data_cpu + this->blob_top_cpu_->offset(n)); + } + + // GPU version + int num_kernels = this->channels_ * this->height_col_ * this->width_col_; + int default_grid_dim = CAFFE_GET_BLOCKS(num_kernels); + const TypeParam* bottom_data_gpu = this->blob_bottom_->gpu_data(); + + // Launch with different grid sizes + for (int grid_div = 2; grid_div <= 8; grid_div++) { + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + const int grid_dim = default_grid_dim / grid_div; + TypeParam* top_data_gpu = this->blob_top_->mutable_gpu_data(); + // NOLINT_NEXT_LINE(whitespace/operators) + im2col_nd_gpu_kernel<<>>( + num_kernels, bottom_data_gpu + this->blob_bottom_->offset(n), + this->blob_bottom_->gpu_shape() + 1, this->blob_top_->gpu_shape() + 1, + this->blob_kernel_shape_->gpu_data(), this->blob_pad_->gpu_data(), + this->blob_stride_->gpu_data(), + top_data_gpu + this->blob_top_->offset(n)); + CUDA_POST_KERNEL_CHECK; + } + + // Compare results against CPU version + for (int i = 0; i < this->blob_top_->count(); ++i) { + TypeParam cpuval = top_data_cpu[i]; + TypeParam gpuval = this->blob_top_->cpu_data()[i]; + EXPECT_EQ(cpuval, gpuval); + if (cpuval != gpuval) { + break; + } + } + } +} + } // namespace caffe diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index f50abe103..293aa2620 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -21,6 +21,7 @@ class Im2colLayerTest : public MultiDeviceTest { : blob_bottom_(new Blob(2, 3, 6, 5)), blob_top_(new Blob()) { // fill the values + Caffe::set_random_seed(1701); FillerParameter filler_param; GaussianFiller filler(filler_param); filler.Fill(this->blob_bottom_); @@ -41,8 +42,8 @@ TYPED_TEST(Im2colLayerTest, TestSetup) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); Im2colLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); EXPECT_EQ(this->blob_top_->num(), 2); @@ -56,8 +57,8 @@ TYPED_TEST(Im2colLayerTest, TestForward) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); Im2colLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); @@ -73,14 +74,27 @@ TYPED_TEST(Im2colLayerTest, TestGradient) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); - convolution_param->set_kernel_size(3); - convolution_param->set_stride(2); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, this->blob_top_vec_); } +TYPED_TEST(Im2colLayerTest, TestGradientForceND) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->set_force_nd_im2col(true); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} TYPED_TEST(Im2colLayerTest, TestRect) { typedef typename TypeParam::Dtype Dtype; @@ -89,7 +103,7 @@ TYPED_TEST(Im2colLayerTest, TestRect) { layer_param.mutable_convolution_param(); convolution_param->set_kernel_h(5); convolution_param->set_kernel_w(3); - convolution_param->set_stride(2); + convolution_param->add_stride(2); Im2colLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); @@ -108,7 +122,7 @@ TYPED_TEST(Im2colLayerTest, TestRectGradient) { layer_param.mutable_convolution_param(); convolution_param->set_kernel_h(5); convolution_param->set_kernel_w(3); - convolution_param->set_stride(2); + convolution_param->add_stride(2); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index c48f31f35..b0a7be50e 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "caffe/util/im2col.hpp" #include "caffe/util/math_functions.hpp" @@ -44,6 +45,98 @@ template void im2col_cpu(const double* data_im, const int channels, const int pad_h, const int pad_w, const int stride_h, const int stride_w, double* data_col); +template +inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, + const int num_spatial_axes, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_output) { + if (!im2col) { + int im_size = im_shape[0]; + for (int i = 0; i < num_spatial_axes; ++i) { + im_size *= im_shape[1 + i]; + } + caffe_set(im_size, Dtype(0), data_output); + } + int kernel_size = 1; + for (int i = 0; i < num_spatial_axes; ++i) { + kernel_size *= kernel_shape[i]; + } + const int channels_col = col_shape[0]; + vector d_offset(num_spatial_axes, 0); + vector d_iter(num_spatial_axes, 0); + for (int c = 0; c < channels_col; ++c) { + // Loop over spatial axes in reverse order to compute a per-axis offset. + int offset = c; + for (int d_i = num_spatial_axes - 1; d_i >= 0; --d_i) { + if (d_i < num_spatial_axes - 1) { + offset /= kernel_shape[d_i + 1]; + } + d_offset[d_i] = offset % kernel_shape[d_i]; + } + for (bool incremented = true; incremented; ) { + // Loop over spatial axes in forward order to compute the indices in the + // image and column, and whether the index lies in the padding. + int index_col = c; + int index_im = c / kernel_size; + bool is_padding = false; + for (int d_i = 0; d_i < num_spatial_axes; ++d_i) { + const int d = d_iter[d_i]; + const int d_pad = d * stride[d_i] - pad[d_i] + d_offset[d_i]; + is_padding |= d_pad < 0 || d_pad >= im_shape[d_i + 1]; + index_col *= col_shape[d_i + 1]; + index_col += d; + index_im *= im_shape[d_i + 1]; + index_im += d_pad; + } + if (im2col) { + if (is_padding) { + data_output[index_col] = 0; + } else { + data_output[index_col] = data_input[index_im]; + } + } else if (!is_padding) { // col2im + data_output[index_im] += data_input[index_col]; + } + // Loop over spatial axes in reverse order to choose an index, + // like counting. + incremented = false; + for (int d_i = num_spatial_axes - 1; d_i >= 0; --d_i) { + const int d_max = col_shape[d_i + 1]; + DCHECK_LT(d_iter[d_i], d_max); + if (d_iter[d_i] == d_max - 1) { + d_iter[d_i] = 0; + } else { // d_iter[d_i] < d_max - 1 + ++d_iter[d_i]; + incremented = true; + break; + } + } + } // while(incremented) { + } // for (int c = 0; c < channels_col; ++c) { +} + +template +void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_col) { + const bool kIm2Col = true; + im2col_nd_core_cpu(data_im, kIm2Col, num_spatial_axes, im_shape, col_shape, + kernel_shape, pad, stride, data_col); +} + +// Explicit instantiation +template void im2col_nd_cpu(const float* data_im, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + float* data_col); +template void im2col_nd_cpu(const double* data_im, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + double* data_col); + template void col2im_cpu(const Dtype* data_col, const int channels, const int height, const int width, const int patch_h, const int patch_w, @@ -80,4 +173,27 @@ template void col2im_cpu(const double* data_col, const int channels, const int pad_h, const int pad_w, const int stride_h, const int stride_w, double* data_im); +template +void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_im) { + const bool kIm2Col = false; + im2col_nd_core_cpu(data_col, kIm2Col, num_spatial_axes, im_shape, col_shape, + kernel_shape, pad, stride, data_im); +} + +// Explicit instantiation +template void col2im_nd_cpu(const float* data_col, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + float* data_im); +template void col2im_nd_cpu(const double* data_col, + const int num_spatial_axes, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + double* data_im); + + } // namespace caffe diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index c90f93eb6..5a478ba62 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -59,7 +59,6 @@ void im2col_gpu(const Dtype* data_im, const int channels, CUDA_POST_KERNEL_CHECK; } - // Explicit instantiation template void im2col_gpu(const float* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, @@ -70,6 +69,156 @@ template void im2col_gpu(const double* data_im, const int channels, const int pad_h, const int pad_w, const int stride_h, const int stride_w, double* data_col); +template +__global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_col) { + int d_temp[num_axes]; // NOLINT(runtime/arrays) + int d_iter[num_axes]; // NOLINT(runtime/arrays) + int i; + CUDA_KERNEL_LOOP(index, n) { + // Initialize channel_in, computed in the loop below, with intermediate + // computations used to compute the spatial indices. + int channel_in = index; + int channel_out = 1; + for (i = num_axes - 1; i >= 0; --i) { + d_temp[i] = channel_in % col_shape[i + 1]; + channel_in /= col_shape[i + 1]; + channel_out *= kernel_shape[i]; + } + channel_out *= channel_in; + int data_col_inc = 1; + for (i = 0; i < num_axes; ++i) { + channel_out *= col_shape[i + 1]; + channel_out += d_temp[i]; + d_temp[i] = d_temp[i] * stride[i] - pad[i]; + channel_in *= im_shape[i + 1]; + channel_in += d_temp[i]; + data_col_inc *= col_shape[i + 1]; + d_iter[i] = 0; + } + Dtype* data_col_ptr = data_col + channel_out; + const Dtype* data_im_ptr = data_im + channel_in; + bool incremented; + do { + bool in_range = true; + for (i = 0; i < num_axes; ++i) { + const int d_iter_im = d_iter[i] + d_temp[i]; + in_range &= d_iter_im >= 0 && d_iter_im < im_shape[i + 1]; + if (!in_range) { break; } + } + if (in_range) { + int data_im_offset = d_iter[0]; + for (i = 1; i < num_axes; ++i) { + data_im_offset *= im_shape[i + 1]; + data_im_offset += d_iter[i]; + } + *data_col_ptr = data_im_ptr[data_im_offset]; + } else { + *data_col_ptr = 0; + } + data_col_ptr += data_col_inc; + incremented = false; + for (i = num_axes - 1; i >= 0; --i) { + const int d_max = kernel_shape[i]; + if (d_iter[i] == d_max - 1) { + d_iter[i] = 0; + } else { // d_iter[i] < d_max - 1 + ++d_iter[i]; + incremented = true; + break; + } + } // for (int i = num_axes - 1; i >= 0; --i) + } while (incremented); // do + } // CUDA_KERNEL_LOOP(index, n) +} + +template +void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, + const int num_kernels, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_col) { + switch (num_spatial_axes) { + case 1: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 2: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 3: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 4: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 5: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 6: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 7: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 8: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 9: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + case 10: + im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + num_kernels, data_im, im_shape, col_shape, + kernel_shape, pad, stride, data_col); + break; + default: + LOG(FATAL) << "im2col_nd_gpu does not support computation with " + << num_spatial_axes << " spatial axes"; + } + CUDA_POST_KERNEL_CHECK; +} + +// Explicit instantiation +template void im2col_nd_gpu(const float* data_im, + const int num_spatial_axes, const int col_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + float* data_col); +template void im2col_nd_gpu(const double* data_im, + const int num_spatial_axes, const int col_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + double* data_col); + template __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, const int height, const int width, const int channels, @@ -141,4 +290,159 @@ template void col2im_gpu(const double* data_col, const int channels, const int pad_h, const int pad_w, const int stride_h, const int stride_w, double* data_im); +template +__global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_im) { + int d_im[num_axes]; // NOLINT(runtime/arrays) + int d_col_iter[num_axes]; // NOLINT(runtime/arrays) + int d_col_start[num_axes]; // NOLINT(runtime/arrays) + int d_col_end[num_axes]; // NOLINT(runtime/arrays) + CUDA_KERNEL_LOOP(index, n) { + // Initialize channel_in, computed in the loop below, with intermediate + // computations used to compute the spatial indices. + int channel_im = index; + // Calculate d_im (image dimensions). + for (int i = num_axes - 1; i >= 0; --i) { + d_im[i] = channel_im % im_shape[i + 1] + pad[i]; + channel_im /= im_shape[i + 1]; + } + // Calculate col start/end indices. + bool done = false; + for (int i = 0; i < num_axes; ++i) { + d_col_start[i] = d_col_iter[i] = + (d_im[i] < kernel_shape[i]) ? + 0 : (d_im[i] - kernel_shape[i]) / stride[i] + 1; + d_col_end[i] = min(d_im[i] / stride[i] + 1, col_shape[i + 1]); + if (d_col_start[i] >= d_col_end[i]) { + // Skip computation if the dimension is 0 at any spatial axis -- + // final val will be 0. + data_im[index] = 0; + done = true; + break; // for (int i = 0; i < num_axes; ++i) + } + } + if (done) { + continue; // CUDA_KERNEL_LOOP(index, n) + } + // Loop over the col to compute the output val. + Dtype val = 0; + bool incremented = true; + do { + // Compute the final offset. + int final_offset = 0; + int kernel_shape_prod = 1; + for (int i = num_axes - 1; i >= 0; --i) { + final_offset += + (d_im[i] - d_col_iter[i] * stride[i]) * kernel_shape_prod; + kernel_shape_prod *= kernel_shape[i]; + } + final_offset += kernel_shape_prod * channel_im; + for (int i = 0; i < num_axes; ++i) { + final_offset *= col_shape[i + 1]; + final_offset += d_col_iter[i]; + } + val += data_col[final_offset]; + incremented = false; + for (int i = num_axes - 1; i >= 0; --i) { + const int d_max = d_col_end[i]; + if (d_col_iter[i] == d_max - 1) { + d_col_iter[i] = d_col_start[i]; + } else { // d_col_iter[i] < d_max - 1 + ++d_col_iter[i]; + incremented = true; + break; // for (int i = num_axes - 1; i >= 0; --i) + } + } // for (int i = num_axes - 1; i >= 0; --i) + } while (incremented); + data_im[index] = val; + } // CUDA_KERNEL_LOOP(index, n) +} + +template +void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, + const int im_size, const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + Dtype* data_im) { + switch (num_spatial_axes) { + case 1: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 2: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 3: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 4: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 5: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 6: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 7: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 8: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 9: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + case 10: + col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + im_size, data_col, im_shape, col_shape, + kernel_shape, pad, stride, data_im); + break; + default: + LOG(FATAL) << "col2im_nd_gpu does not support computation with " + << num_spatial_axes << " spatial axes"; + } + CUDA_POST_KERNEL_CHECK; +} + +// Explicit instantiation +template void col2im_nd_gpu(const float* data_col, + const int num_spatial_axes, const int im_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + float* data_im); +template void col2im_nd_gpu(const double* data_col, + const int num_spatial_axes, const int im_size, + const int* im_shape, const int* col_shape, + const int* kernel_shape, const int* pad, const int* stride, + double* data_im); + } // namespace caffe diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index 92e5cf55f..ac379e50f 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -193,7 +193,7 @@ bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection, } if (v0_layer_param.has_pad()) { if (type == "conv") { - layer_param->mutable_convolution_param()->set_pad(v0_layer_param.pad()); + layer_param->mutable_convolution_param()->add_pad(v0_layer_param.pad()); } else if (type == "pool") { layer_param->mutable_pooling_param()->set_pad(v0_layer_param.pad()); } else { @@ -203,7 +203,7 @@ bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection, } if (v0_layer_param.has_kernelsize()) { if (type == "conv") { - layer_param->mutable_convolution_param()->set_kernel_size( + layer_param->mutable_convolution_param()->add_kernel_size( v0_layer_param.kernelsize()); } else if (type == "pool") { layer_param->mutable_pooling_param()->set_kernel_size( @@ -224,7 +224,7 @@ bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection, } if (v0_layer_param.has_stride()) { if (type == "conv") { - layer_param->mutable_convolution_param()->set_stride( + layer_param->mutable_convolution_param()->add_stride( v0_layer_param.stride()); } else if (type == "pool") { layer_param->mutable_pooling_param()->set_stride( From 328df2450c534119f239ce1d606f8502922c6825 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 19 Sep 2015 13:50:57 -0700 Subject: [PATCH 024/458] clarify im2col + col2im var names - clarify indices by naming *_im for indices in image and *_col for indices in column - mark corresonding im2col + col2im quantities by renaming patch_* -> kernel_* - fix out-of-date names in equivalent col2im loop --- include/caffe/util/im2col.hpp | 4 +- src/caffe/util/im2col.cpp | 72 +++++++++++++++++------------------ src/caffe/util/im2col.cu | 69 ++++++++++++++++----------------- 3 files changed, 73 insertions(+), 72 deletions(-) diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index 531fd29c5..d3eb6ccd6 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -23,7 +23,7 @@ void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, template void col2im_cpu(const Dtype* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_im); @@ -47,7 +47,7 @@ void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, template void col2im_gpu(const Dtype* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_im); diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index b0a7be50e..afeb5e5d9 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -17,19 +17,19 @@ void im2col_cpu(const Dtype* data_im, const int channels, int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; int channels_col = channels * kernel_h * kernel_w; - for (int c = 0; c < channels_col; ++c) { - int w_offset = c % kernel_w; - int h_offset = (c / kernel_w) % kernel_h; - int c_im = c / kernel_h / kernel_w; - for (int h = 0; h < height_col; ++h) { - for (int w = 0; w < width_col; ++w) { - int h_pad = h * stride_h - pad_h + h_offset; - int w_pad = w * stride_w - pad_w + w_offset; - if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) - data_col[(c * height_col + h) * width_col + w] = - data_im[(c_im * height + h_pad) * width + w_pad]; + for (int c_col = 0; c_col < channels_col; ++c_col) { + int w_offset = c_col % kernel_w; + int h_offset = (c_col / kernel_w) % kernel_h; + int c_im = c_col / kernel_h / kernel_w; + for (int h_col = 0; h_col < height_col; ++h_col) { + for (int w_col = 0; w_col < width_col; ++w_col) { + int h_im = h_col * stride_h - pad_h + h_offset; + int w_im = w_col * stride_w - pad_w + w_offset; + if (h_im >= 0 && h_im < height && w_im >= 0 && w_im < width) + data_col[(c_col * height_col + h_col) * width_col + w_col] = + data_im[(c_im * height + h_im) * width + w_im]; else - data_col[(c * height_col + h) * width_col + w] = 0; + data_col[(c_col * height_col + h_im) * width_col + w_im] = 0; } } } @@ -64,9 +64,9 @@ inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, const int channels_col = col_shape[0]; vector d_offset(num_spatial_axes, 0); vector d_iter(num_spatial_axes, 0); - for (int c = 0; c < channels_col; ++c) { + for (int c_col = 0; c_col < channels_col; ++c_col) { // Loop over spatial axes in reverse order to compute a per-axis offset. - int offset = c; + int offset = c_col; for (int d_i = num_spatial_axes - 1; d_i >= 0; --d_i) { if (d_i < num_spatial_axes - 1) { offset /= kernel_shape[d_i + 1]; @@ -76,17 +76,17 @@ inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, for (bool incremented = true; incremented; ) { // Loop over spatial axes in forward order to compute the indices in the // image and column, and whether the index lies in the padding. - int index_col = c; - int index_im = c / kernel_size; + int index_col = c_col; + int index_im = c_col / kernel_size; bool is_padding = false; for (int d_i = 0; d_i < num_spatial_axes; ++d_i) { const int d = d_iter[d_i]; - const int d_pad = d * stride[d_i] - pad[d_i] + d_offset[d_i]; - is_padding |= d_pad < 0 || d_pad >= im_shape[d_i + 1]; + const int d_im = d * stride[d_i] - pad[d_i] + d_offset[d_i]; + is_padding |= d_im < 0 || d_im >= im_shape[d_i + 1]; index_col *= col_shape[d_i + 1]; index_col += d; index_im *= im_shape[d_i + 1]; - index_im += d_pad; + index_im += d_im; } if (im2col) { if (is_padding) { @@ -139,25 +139,25 @@ template void im2col_nd_cpu(const double* data_im, template void col2im_cpu(const Dtype* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_im) { caffe_set(height * width * channels, Dtype(0), data_im); - int height_col = (height + 2 * pad_h - patch_h) / stride_h + 1; - int width_col = (width + 2 * pad_w - patch_w) / stride_w + 1; - int channels_col = channels * patch_h * patch_w; - for (int c = 0; c < channels_col; ++c) { - int w_offset = c % patch_w; - int h_offset = (c / patch_w) % patch_h; - int c_im = c / patch_h / patch_w; - for (int h = 0; h < height_col; ++h) { - for (int w = 0; w < width_col; ++w) { - int h_pad = h * stride_h - pad_h + h_offset; - int w_pad = w * stride_w - pad_w + w_offset; - if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) - data_im[(c_im * height + h_pad) * width + w_pad] += - data_col[(c * height_col + h) * width_col + w]; + int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; + int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + int channels_col = channels * kernel_h * kernel_w; + for (int c_col = 0; c_col < channels_col; ++c_col) { + int w_offset = c_col % kernel_w; + int h_offset = (c_col / kernel_w) % kernel_h; + int c_im = c_col / kernel_h / kernel_w; + for (int h_col = 0; h_col < height_col; ++h_col) { + for (int w_col = 0; w_col < width_col; ++w_col) { + int h_im = h_col * stride_h - pad_h + h_offset; + int w_im = w_col * stride_w - pad_w + w_offset; + if (h_im >= 0 && h_im < height && w_im >= 0 && w_im < width) + data_im[(c_im * height + h_im) * width + w_im] += + data_col[(c_col * height_col + h_col) * width_col + w_col]; } } } @@ -165,11 +165,11 @@ void col2im_cpu(const Dtype* data_col, const int channels, // Explicit instantiation template void col2im_cpu(const float* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, float* data_im); template void col2im_cpu(const double* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, double* data_im); diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 5a478ba62..897e3c92c 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -16,22 +16,23 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, const int height_col, const int width_col, Dtype* data_col) { CUDA_KERNEL_LOOP(index, n) { - int w_out = index % width_col; int h_index = index / width_col; - int h_out = h_index % height_col; - int channel_in = h_index / height_col; - int channel_out = channel_in * kernel_h * kernel_w; - int h_in = h_out * stride_h - pad_h; - int w_in = w_out * stride_w - pad_w; + int h_col = h_index % height_col; + int w_col = index % width_col; + int c_im = h_index / height_col; + int c_col = c_im * kernel_h * kernel_w; + int h_offset = h_col * stride_h - pad_h; + int w_offset = w_col * stride_w - pad_w; Dtype* data_col_ptr = data_col; - data_col_ptr += (channel_out * height_col + h_out) * width_col + w_out; + data_col_ptr += (c_col * height_col + h_col) * width_col + w_col; const Dtype* data_im_ptr = data_im; - data_im_ptr += (channel_in * height + h_in) * width + w_in; + data_im_ptr += (c_im * height + h_offset) * width + w_offset; for (int i = 0; i < kernel_h; ++i) { for (int j = 0; j < kernel_w; ++j) { - int h = h_in + i; - int w = w_in + j; - *data_col_ptr = (h >= 0 && w >= 0 && h < height && w < width) ? + int h_im = h_offset + i; + int w_im = w_offset + j; + *data_col_ptr = + (h_im >= 0 && w_im >= 0 && h_im < height && w_im < width) ? data_im_ptr[i * width + j] : 0; data_col_ptr += height_col * width_col; } @@ -222,35 +223,35 @@ template void im2col_nd_gpu(const double* data_im, template __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, const int height, const int width, const int channels, - const int patch_h, const int patch_w, + const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, const int height_col, const int width_col, Dtype* data_im) { CUDA_KERNEL_LOOP(index, n) { Dtype val = 0; - int w = index % width + pad_w; - int h = (index / width) % height + pad_h; - int c = index / (width * height); + int w_im = index % width + pad_w; + int h_im = (index / width) % height + pad_h; + int c_im = index / (width * height); // compute the start and end of the output - int w_col_start = (w < patch_w) ? 0 : (w - patch_w) / stride_w + 1; - int w_col_end = min(w / stride_w + 1, width_col); - int h_col_start = (h < patch_h) ? 0 : (h - patch_h) / stride_h + 1; - int h_col_end = min(h / stride_h + 1, height_col); + int w_col_start = (w_im < kernel_w) ? 0 : (w_im - kernel_w) / stride_w + 1; + int w_col_end = min(w_im / stride_w + 1, width_col); + int h_col_start = (h_im < kernel_h) ? 0 : (h_im - kernel_h) / stride_h + 1; + int h_col_end = min(h_im / stride_h + 1, height_col); /* for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { // the col location: [c * width * height + h_out, w_out] - int c_col = c * patch_h * patch_w + (h - h_col * stride_h) * ksize - + (w - w_col * stride_w); + int c_col = c_im * kernel_h * kernel_w + + (h_im - h_col * stride_h) * kernel_w + (w_im - w_col * stride_w); val += data_col[(c_col * height_col + h_col) * width_col + w_col]; } } */ // equivalent implementation - int offset = - (c * patch_h * patch_w + h * patch_w + w) * height_col * width_col; - int coeff_h_col = (1 - stride_h * patch_w * height_col) * width_col; + int offset = (c_im * kernel_h * kernel_w + h_im * kernel_w + w_im) + * height_col * width_col; + int coeff_h_col = (1 - stride_h * kernel_w * height_col) * width_col; int coeff_w_col = (1 - stride_w * height_col * width_col); for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { @@ -263,18 +264,18 @@ __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, template void col2im_gpu(const Dtype* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_im) { - int height_col = (height + 2 * pad_h - patch_h) / stride_h + 1; - int width_col = (width + 2 * pad_w - patch_w) / stride_w + 1; + int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; + int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; int num_kernels = channels * height * width; // To avoid involving atomic operations, we will launch one kernel per // bottom dimension, and then in the kernel add up the top dimensions. // NOLINT_NEXT_LINE(whitespace/operators) col2im_gpu_kernel<<>>( - num_kernels, data_col, height, width, channels, patch_h, patch_w, + num_kernels, data_col, height, width, channels, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, height_col, width_col, data_im); CUDA_POST_KERNEL_CHECK; @@ -282,11 +283,11 @@ void col2im_gpu(const Dtype* data_col, const int channels, // Explicit instantiation template void col2im_gpu(const float* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, float* data_im); template void col2im_gpu(const double* data_col, const int channels, - const int height, const int width, const int patch_h, const int patch_w, + const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, double* data_im); @@ -302,11 +303,11 @@ __global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, CUDA_KERNEL_LOOP(index, n) { // Initialize channel_in, computed in the loop below, with intermediate // computations used to compute the spatial indices. - int channel_im = index; + int c_im = index; // Calculate d_im (image dimensions). for (int i = num_axes - 1; i >= 0; --i) { - d_im[i] = channel_im % im_shape[i + 1] + pad[i]; - channel_im /= im_shape[i + 1]; + d_im[i] = c_im % im_shape[i + 1] + pad[i]; + c_im /= im_shape[i + 1]; } // Calculate col start/end indices. bool done = false; @@ -338,7 +339,7 @@ __global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, (d_im[i] - d_col_iter[i] * stride[i]) * kernel_shape_prod; kernel_shape_prod *= kernel_shape[i]; } - final_offset += kernel_shape_prod * channel_im; + final_offset += kernel_shape_prod * c_im; for (int i = 0; i < num_axes; ++i) { final_offset *= col_shape[i + 1]; final_offset += d_col_iter[i]; From ec77358c2d2e05b3aa39221bd3ec093789bd40f6 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 19 Sep 2015 14:00:14 -0700 Subject: [PATCH 025/458] harmonize the im2col_{cpu,gpu} assignment --- src/caffe/util/im2col.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index afeb5e5d9..018ff0cdc 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -25,11 +25,9 @@ void im2col_cpu(const Dtype* data_im, const int channels, for (int w_col = 0; w_col < width_col; ++w_col) { int h_im = h_col * stride_h - pad_h + h_offset; int w_im = w_col * stride_w - pad_w + w_offset; - if (h_im >= 0 && h_im < height && w_im >= 0 && w_im < width) - data_col[(c_col * height_col + h_col) * width_col + w_col] = - data_im[(c_im * height + h_im) * width + w_im]; - else - data_col[(c_col * height_col + h_im) * width_col + w_im] = 0; + data_col[(c_col * height_col + h_col) * width_col + w_col] = + (h_im >= 0 && w_im >= 0 && h_im < height && w_im < width) ? + data_im[(c_im * height + h_im) * width + w_im] : 0; } } } From d292a162b3659685b5f4399b8adf743bdcac49a1 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 19 Sep 2015 14:07:10 -0700 Subject: [PATCH 026/458] mark const im2col + col2im terms --- src/caffe/util/im2col.cpp | 12 ++++++------ src/caffe/util/im2col.cu | 32 ++++++++++++++++++-------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index 018ff0cdc..09da23d49 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -14,9 +14,9 @@ void im2col_cpu(const Dtype* data_im, const int channels, const int pad_h, const int pad_w, const int stride_h, const int stride_w, Dtype* data_col) { - int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; - int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; - int channels_col = channels * kernel_h * kernel_w; + const int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; + const int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + const int channels_col = channels * kernel_h * kernel_w; for (int c_col = 0; c_col < channels_col; ++c_col) { int w_offset = c_col % kernel_w; int h_offset = (c_col / kernel_w) % kernel_h; @@ -142,9 +142,9 @@ void col2im_cpu(const Dtype* data_col, const int channels, const int stride_h, const int stride_w, Dtype* data_im) { caffe_set(height * width * channels, Dtype(0), data_im); - int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; - int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; - int channels_col = channels * kernel_h * kernel_w; + const int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; + const int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + const int channels_col = channels * kernel_h * kernel_w; for (int c_col = 0; c_col < channels_col; ++c_col) { int w_offset = c_col % kernel_w; int h_offset = (c_col / kernel_w) % kernel_h; diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 897e3c92c..451097f8a 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -16,13 +16,13 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, const int height_col, const int width_col, Dtype* data_col) { CUDA_KERNEL_LOOP(index, n) { - int h_index = index / width_col; - int h_col = h_index % height_col; - int w_col = index % width_col; - int c_im = h_index / height_col; - int c_col = c_im * kernel_h * kernel_w; - int h_offset = h_col * stride_h - pad_h; - int w_offset = w_col * stride_w - pad_w; + const int h_index = index / width_col; + const int h_col = h_index % height_col; + const int w_col = index % width_col; + const int c_im = h_index / height_col; + const int c_col = c_im * kernel_h * kernel_w; + const int h_offset = h_col * stride_h - pad_h; + const int w_offset = w_col * stride_w - pad_w; Dtype* data_col_ptr = data_col; data_col_ptr += (c_col * height_col + h_col) * width_col + w_col; const Dtype* data_im_ptr = data_im; @@ -230,14 +230,18 @@ __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, Dtype* data_im) { CUDA_KERNEL_LOOP(index, n) { Dtype val = 0; - int w_im = index % width + pad_w; - int h_im = (index / width) % height + pad_h; - int c_im = index / (width * height); + const int w_im = index % width + pad_w; + const int h_im = (index / width) % height + pad_h; + const int c_im = index / (width * height); // compute the start and end of the output - int w_col_start = (w_im < kernel_w) ? 0 : (w_im - kernel_w) / stride_w + 1; - int w_col_end = min(w_im / stride_w + 1, width_col); - int h_col_start = (h_im < kernel_h) ? 0 : (h_im - kernel_h) / stride_h + 1; - int h_col_end = min(h_im / stride_h + 1, height_col); + const int w_col_start = + (w_im < kernel_w) ? 0 : (w_im - kernel_w) / stride_w + 1; + const int w_col_end = + min(w_im / stride_w + 1, width_col); + const int h_col_start = + (h_im < kernel_h) ? 0 : (h_im - kernel_h) / stride_h + 1; + const int h_col_end = + min(h_im / stride_h + 1, height_col); /* for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { From da75a0e715f3d434c6b4c23d55947e114b332337 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 19 Sep 2015 20:38:18 -0700 Subject: [PATCH 027/458] [build] check xcode command line tools version >= 6 future-proof version check for BLAS libraries on OS X fix #3092 --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a91113366..5fb6394e9 100644 --- a/Makefile +++ b/Makefile @@ -354,8 +354,9 @@ else # OS X packages atlas as the vecLib framework LIBRARIES += cblas # 10.10 has accelerate while 10.9 has veclib - XCODE_CLT_VER := $(shell pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep -o 'version: 6') - ifneq (,$(findstring version: 6,$(XCODE_CLT_VER))) + XCODE_CLT_VER := $(shell pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep 'version' | sed 's/[^0-9]*\([0-9]\).*/\1/') + XCODE_CLT_GEQ_6 := $(shell [ $(XCODE_CLT_VER) -gt 5 ] && echo 1) + ifeq ($(XCODE_CLT_GEQ_6), 1) BLAS_INCLUDE ?= /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ LDFLAGS += -framework Accelerate else From 84eb44e6cf9623e09c354a863e201971270ba25b Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sat, 19 Sep 2015 14:14:03 -0700 Subject: [PATCH 028/458] [tools] add Python script for at-a-glance prototxt summary --- tools/extra/summarize.py | 140 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100755 tools/extra/summarize.py diff --git a/tools/extra/summarize.py b/tools/extra/summarize.py new file mode 100755 index 000000000..7e2d22fd3 --- /dev/null +++ b/tools/extra/summarize.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python + +"""Net summarization tool. + +This tool summarizes the structure of a net in a concise but comprehensive +tabular listing, taking a prototxt file as input. + +Use this tool to check at a glance that the computation you've specified is the +computation you expect. +""" + +from caffe.proto import caffe_pb2 +from google import protobuf +import re +import argparse + +# ANSI codes for coloring blobs (used cyclically) +COLORS = ['92', '93', '94', '95', '97', '96', '42', '43;30', '100', + '444', '103;30', '107;30'] +DISCONNECTED_COLOR = '41' + +def read_net(filename): + net = caffe_pb2.NetParameter() + with open(filename) as f: + protobuf.text_format.Parse(f.read(), net) + return net + +def format_param(param): + out = [] + if len(param.name) > 0: + out.append(param.name) + if param.lr_mult != 1: + out.append('x{}'.format(param.lr_mult)) + if param.decay_mult != 1: + out.append('Dx{}'.format(param.decay_mult)) + return ' '.join(out) + +def printed_len(s): + return len(re.sub(r'\033\[[\d;]+m', '', s)) + +def print_table(table, max_width): + """Print a simple nicely-aligned table. + + table must be a list of (equal-length) lists. Columns are space-separated, + and as narrow as possible, but no wider than max_width. Text may overflow + columns; note that unlike string.format, this will not affect subsequent + columns, if possible.""" + + max_widths = [max_width] * len(table[0]) + column_widths = [max(printed_len(row[j]) + 1 for row in table) + for j in range(len(table[0]))] + column_widths = [min(w, max_w) for w, max_w in zip(column_widths, max_widths)] + + for row in table: + row_str = '' + right_col = 0 + for cell, width in zip(row, column_widths): + right_col += width + row_str += cell + ' ' + row_str += ' ' * max(right_col - printed_len(row_str), 0) + print row_str + +def summarize_net(net): + disconnected_tops = set() + for lr in net.layer: + disconnected_tops |= set(lr.top) + disconnected_tops -= set(lr.bottom) + + table = [] + colors = {} + for lr in net.layer: + tops = [] + for ind, top in enumerate(lr.top): + color = colors.setdefault(top, COLORS[len(colors) % len(COLORS)]) + if top in disconnected_tops: + top = '\033[1;4m' + top + if len(lr.loss_weight) > 0: + top = '{} * {}'.format(lr.loss_weight[ind], top) + tops.append('\033[{}m{}\033[0m'.format(color, top)) + top_str = ', '.join(tops) + + bottoms = [] + for bottom in lr.bottom: + color = colors.get(bottom, DISCONNECTED_COLOR) + bottoms.append('\033[{}m{}\033[0m'.format(color, bottom)) + bottom_str = ', '.join(bottoms) + + if lr.type == 'Python': + type_str = lr.python_param.module + '.' + lr.python_param.layer + else: + type_str = lr.type + + # Summarize conv/pool parameters. + # TODO support rectangular/ND parameters + conv_param = lr.convolution_param + if (lr.type in ['Convolution', 'Deconvolution'] + and len(conv_param.kernel_size) == 1): + arg_str = str(conv_param.kernel_size[0]) + if len(conv_param.stride) > 0 and conv_param.stride[0] != 1: + arg_str += '/' + str(conv_param.stride[0]) + if len(conv_param.pad) > 0 and conv_param.pad[0] != 0: + arg_str += '+' + str(conv_param.pad[0]) + arg_str += ' ' + str(conv_param.num_output) + if conv_param.group != 1: + arg_str += '/' + str(conv_param.group) + elif lr.type == 'Pooling': + arg_str = str(lr.pooling_param.kernel_size) + if lr.pooling_param.stride != 1: + arg_str += '/' + str(lr.pooling_param.stride) + if lr.pooling_param.pad != 0: + arg_str += '+' + str(lr.pooling_param.pad) + else: + arg_str = '' + + if len(lr.param) > 0: + param_strs = map(format_param, lr.param) + if max(map(len, param_strs)) > 0: + param_str = '({})'.format(', '.join(param_strs)) + else: + param_str = '' + else: + param_str = '' + + table.append([lr.name, type_str, param_str, bottom_str, '->', top_str, + arg_str]) + return table + +def main(): + parser = argparse.ArgumentParser(description="Print a concise summary of net computation.") + parser.add_argument('filename', help='net prototxt file to summarize') + parser.add_argument('-w', '--max-width', help='maximum field width', + type=int, default=30) + args = parser.parse_args() + + net = read_net(args.filename) + table = summarize_net(net) + print_table(table, max_width=args.max_width) + +if __name__ == '__main__': + main() From a40c2a08421ebf9a164e198a70752f2d5cb1c93d Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sun, 20 Sep 2015 14:20:28 -0700 Subject: [PATCH 029/458] fix broken DeconvolutionLayer GPU backward caused by typo --- src/caffe/layers/deconv_layer.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/deconv_layer.cu b/src/caffe/layers/deconv_layer.cu index ea83f56f1..5dbdcc314 100644 --- a/src/caffe/layers/deconv_layer.cu +++ b/src/caffe/layers/deconv_layer.cu @@ -51,7 +51,7 @@ void DeconvolutionLayer::Backward_gpu(const vector*>& top, } // gradient w.r.t. bottom data, if necessary. if (propagate_down[i]) { - this->forward_gpu_gemm(top_diff + this->top_dim_, weight, + this->forward_gpu_gemm(top_diff + n * this->top_dim_, weight, bottom_diff + n * this->bottom_dim_, this->param_propagate_down_[0]); } From 6a00ecae67a95cf39e1961aaddc3be1f5a828bb4 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sun, 20 Sep 2015 15:31:59 -0700 Subject: [PATCH 030/458] fix broken conv/deconv reshaping caused by reading bottom shape in LayerSetUp This also eliminates the extra copying of bottom's shape. --- include/caffe/vision_layers.hpp | 7 +++++-- src/caffe/layers/base_conv_layer.cpp | 10 ++-------- src/caffe/layers/conv_layer.cpp | 5 ++--- src/caffe/layers/deconv_layer.cpp | 5 ++--- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index eae65820c..06bc0457e 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -58,6 +58,10 @@ class BaseConvolutionLayer : public Layer { void backward_gpu_bias(Dtype* bias, const Dtype* input); #endif + /// @brief The spatial dimensions of the input. + inline int input_shape(int i) { + return (*bottom_shape_)[channel_axis_ + i]; + } // reverse_dimensions should return true iff we are implementing deconv, so // that conv helpers know which dimensions are which. virtual bool reverse_dimensions() = 0; @@ -72,12 +76,11 @@ class BaseConvolutionLayer : public Layer { Blob pad_; /// @brief The spatial dimensions of the convolution input. Blob conv_input_shape_; - /// @brief The spatial dimensions of the input. - Blob input_shape_; /// @brief The spatial dimensions of the col_buffer. vector col_buffer_shape_; /// @brief The spatial dimensions of the output. vector output_shape_; + const vector* bottom_shape_; int num_spatial_axes_; int bottom_dim_; diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index a5b90a549..c6b475502 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -20,13 +20,7 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, const int num_axes = bottom[0]->num_axes(); num_spatial_axes_ = num_axes - first_spatial_axis; CHECK_GE(num_spatial_axes_, 0); - // Setup input dimensions (input_shape_). vector bottom_dim_blob_shape(1, num_spatial_axes_ + 1); - input_shape_.Reshape(bottom_dim_blob_shape); - int* input_shape_data = input_shape_.mutable_cpu_data(); - for (int i = 0; i < num_spatial_axes_ + 1; ++i) { - input_shape_data[i] = bottom[0]->shape(channel_axis_ + i); - } vector spatial_dim_blob_shape(1, std::max(num_spatial_axes_, 1)); // Setup filter kernel dimensions (kernel_shape_). kernel_shape_.Reshape(spatial_dim_blob_shape); @@ -190,6 +184,7 @@ void BaseConvolutionLayer::Reshape(const vector*>& bottom, << "All inputs must have the same shape."; } // Shape the tops. + bottom_shape_ = &bottom[0]->shape(); compute_output_shape(); vector top_shape(bottom[0]->shape().begin(), bottom[0]->shape().begin() + channel_axis_); @@ -223,10 +218,9 @@ void BaseConvolutionLayer::Reshape(const vector*>& bottom, // it goes lazily unused to save memory. col_buffer_shape_.clear(); col_buffer_shape_.push_back(kernel_dim_ * group_); - const int* input_shape_data = input_shape_.cpu_data() + 1; for (int i = 0; i < num_spatial_axes_; ++i) { if (reverse_dimensions()) { - col_buffer_shape_.push_back(input_shape_data[i]); + col_buffer_shape_.push_back(input_shape(i + 1)); } else { col_buffer_shape_.push_back(output_shape_[i]); } diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 5cf26970a..fb50bb095 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -10,14 +10,13 @@ namespace caffe { template void ConvolutionLayer::compute_output_shape() { - // input_shape_ + 1 to skip channel axis - const int* input_shape_data = this->input_shape_.cpu_data() + 1; const int* kernel_shape_data = this->kernel_shape_.cpu_data(); const int* stride_data = this->stride_.cpu_data(); const int* pad_data = this->pad_.cpu_data(); this->output_shape_.clear(); for (int i = 0; i < this->num_spatial_axes_; ++i) { - const int input_dim = input_shape_data[i]; + // i + 1 to skip channel axis + const int input_dim = this->input_shape(i + 1); const int output_dim = (input_dim + 2 * pad_data[i] - kernel_shape_data[i]) / stride_data[i] + 1; this->output_shape_.push_back(output_dim); diff --git a/src/caffe/layers/deconv_layer.cpp b/src/caffe/layers/deconv_layer.cpp index f1d1abf28..91aabb315 100644 --- a/src/caffe/layers/deconv_layer.cpp +++ b/src/caffe/layers/deconv_layer.cpp @@ -10,14 +10,13 @@ namespace caffe { template void DeconvolutionLayer::compute_output_shape() { - // input_shape_ + 1 to skip channel axis - const int* input_shape_data = this->input_shape_.cpu_data() + 1; const int* kernel_shape_data = this->kernel_shape_.cpu_data(); const int* stride_data = this->stride_.cpu_data(); const int* pad_data = this->pad_.cpu_data(); this->output_shape_.clear(); for (int i = 0; i < this->num_spatial_axes_; ++i) { - const int input_dim = input_shape_data[i]; + // i + 1 to skip channel axis + const int input_dim = this->input_shape(i + 1); const int output_dim = stride_data[i] * (input_dim - 1) + kernel_shape_data[i] - 2 * pad_data[i]; this->output_shape_.push_back(output_dim); From 74e174537418b6a3c0c8708e444edf45ab491e94 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 23 Sep 2015 13:38:29 -0700 Subject: [PATCH 031/458] [test] TestReshape: check small then large checking large then small can mask failure since the smaller shape memory will fit within the larger shape. --- src/caffe/test/test_net.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/caffe/test/test_net.cpp b/src/caffe/test/test_net.cpp index 12998d891..ec01053c1 100644 --- a/src/caffe/test/test_net.cpp +++ b/src/caffe/test/test_net.cpp @@ -2269,8 +2269,10 @@ TYPED_TEST(NetTest, TestReshape) { FillerParameter filler_param; filler_param.set_std(1); GaussianFiller filler(filler_param); - Blob blob1(4, 3, 9, 11); - Blob blob2(2, 3, 12, 10); + // Check smaller shape first as larger first could hide realloc failures. + Blob blob1(2, 3, 12, 10); + Blob blob2(4, 3, 9, 11); + ASSERT_LT(blob1.count(), blob2.count()); filler.Fill(&blob1); filler.Fill(&blob2); From ae77b15495d4c2a83202c49991bfc0885765de03 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 23 Sep 2015 13:40:16 -0700 Subject: [PATCH 032/458] [test] TestReshape: expect instead of check --- src/caffe/test/test_net.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/test/test_net.cpp b/src/caffe/test/test_net.cpp index ec01053c1..16c1d35f3 100644 --- a/src/caffe/test/test_net.cpp +++ b/src/caffe/test/test_net.cpp @@ -2306,7 +2306,7 @@ TYPED_TEST(NetTest, TestReshape) { this->net_->ForwardPrefilled(); this->net_->Backward(); for (int i = 0; i < output1.count(); ++i) { - CHECK_EQ(*(output1.cpu_data() + i), *(output_blob->cpu_data() + i)); + EXPECT_FLOAT_EQ(*(output1.cpu_data() + i), *(output_blob->cpu_data() + i)); } input_blob->Reshape(blob2.num(), blob2.channels(), blob2.height(), @@ -2315,7 +2315,7 @@ TYPED_TEST(NetTest, TestReshape) { this->net_->ForwardPrefilled(); this->net_->Backward(); for (int i = 0; i < output2.count(); ++i) { - CHECK_EQ(*(output2.cpu_data() + i), *(output_blob->cpu_data() + i)); + EXPECT_FLOAT_EQ(*(output2.cpu_data() + i), *(output_blob->cpu_data() + i)); } } From b8c81bd2bfbc5bc2e394395bf2c1f435cb32b2a1 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 23 Sep 2015 13:40:24 -0700 Subject: [PATCH 033/458] [test] TestReshape: check that shapes actually change Check that output spatial shape varies with input shape while the output num matches the input num. --- src/caffe/test/test_net.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/caffe/test/test_net.cpp b/src/caffe/test/test_net.cpp index 16c1d35f3..ab4afba1a 100644 --- a/src/caffe/test/test_net.cpp +++ b/src/caffe/test/test_net.cpp @@ -2262,8 +2262,8 @@ TEST_F(FilterNetTest, TestFilterInOutByExcludeMultiRule) { TYPED_TEST(NetTest, TestReshape) { typedef typename TypeParam::Dtype Dtype; // We set up bottom blobs of two different sizes, switch between - // them, and check that forward and backward both run and the results - // are the same. + // them, check that forward and backward both run and the results + // are the same, and check that the output shapes change. Caffe::set_random_seed(this->seed_); Caffe::set_mode(Caffe::CPU); FillerParameter filler_param; @@ -2317,6 +2317,18 @@ TYPED_TEST(NetTest, TestReshape) { for (int i = 0; i < output2.count(); ++i) { EXPECT_FLOAT_EQ(*(output2.cpu_data() + i), *(output_blob->cpu_data() + i)); } + + EXPECT_EQ(output1.num(), blob1.num()); + EXPECT_EQ(output2.num(), blob2.num()); + bool same_spatial_shape = true; + const int kFirstSpatialAxis = 2; + for (int i = kFirstSpatialAxis; i < output1.num_axes(); ++i) { + if (output1.shape(i) != output2.shape(i)) { + same_spatial_shape = false; + break; + } + } + EXPECT_FALSE(same_spatial_shape); } TYPED_TEST(NetTest, TestSkipPropagateDown) { From 84e390c5a16347c7369f6c92cb62526e42ce73ac Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Thu, 24 Sep 2015 12:35:35 -0700 Subject: [PATCH 034/458] Allow H5T_INTEGER in HDF5 files --- src/caffe/util/hdf5.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/caffe/util/hdf5.cpp b/src/caffe/util/hdf5.cpp index d0d05f70f..7730e76ab 100644 --- a/src/caffe/util/hdf5.cpp +++ b/src/caffe/util/hdf5.cpp @@ -27,7 +27,34 @@ void hdf5_load_nd_dataset_helper( status = H5LTget_dataset_info( file_id, dataset_name_, dims.data(), &class_, NULL); CHECK_GE(status, 0) << "Failed to get dataset info for " << dataset_name_; - CHECK_EQ(class_, H5T_FLOAT) << "Expected float or double data"; + switch (class_) { + case H5T_FLOAT: + LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_FLOAT"; + break; + case H5T_INTEGER: + LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_INTEGER"; + break; + case H5T_TIME: + LOG(FATAL) << "Unsupported datatype class: H5T_TIME"; + case H5T_STRING: + LOG(FATAL) << "Unsupported datatype class: H5T_STRING"; + case H5T_BITFIELD: + LOG(FATAL) << "Unsupported datatype class: H5T_BITFIELD"; + case H5T_OPAQUE: + LOG(FATAL) << "Unsupported datatype class: H5T_OPAQUE"; + case H5T_COMPOUND: + LOG(FATAL) << "Unsupported datatype class: H5T_COMPOUND"; + case H5T_REFERENCE: + LOG(FATAL) << "Unsupported datatype class: H5T_REFERENCE"; + case H5T_ENUM: + LOG(FATAL) << "Unsupported datatype class: H5T_ENUM"; + case H5T_VLEN: + LOG(FATAL) << "Unsupported datatype class: H5T_VLEN"; + case H5T_ARRAY: + LOG(FATAL) << "Unsupported datatype class: H5T_ARRAY"; + default: + LOG(FATAL) << "Datatype class unknown"; + } vector blob_dims(dims.size()); for (int i = 0; i < dims.size(); ++i) { From ebc9963fea7b72f397c446a10a9aeab576979566 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Tue, 25 Aug 2015 18:58:45 -0700 Subject: [PATCH 035/458] Modify HDF5DataLayerTest to test H5T_INTEGER data --- .../test/test_data/generate_sample_data.py | 14 ++++++++------ .../test/test_data/sample_data_2_gzip.h5 | Bin 15446 -> 15446 bytes 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/caffe/test/test_data/generate_sample_data.py b/src/caffe/test/test_data/generate_sample_data.py index 3703b4182..8349dbbc8 100644 --- a/src/caffe/test/test_data/generate_sample_data.py +++ b/src/caffe/test/test_data/generate_sample_data.py @@ -36,23 +36,25 @@ f['label'] = label f['label2'] = label2 -with h5py.File(script_dir + '/sample_data_2_gzip.h5', 'w') as f: +with h5py.File(script_dir + '/sample_data_uint8_gzip.h5', 'w') as f: f.create_dataset( 'data', data=data + total_size, compression='gzip', compression_opts=1 ) f.create_dataset( 'label', data=label, - compression='gzip', compression_opts=1 + compression='gzip', compression_opts=1, + dtype='uint8', ) f.create_dataset( 'label2', data=label2, - compression='gzip', compression_opts=1 + compression='gzip', compression_opts=1, + dtype='uint8', ) with open(script_dir + '/sample_data_list.txt', 'w') as f: - f.write(script_dir + '/sample_data.h5\n') - f.write(script_dir + '/sample_data_2_gzip.h5\n') + f.write('src/caffe/test/test_data/sample_data.h5\n') + f.write('src/caffe/test/test_data/sample_uint8_gzip.h5\n') # Generate GradientBasedSolver solver_data.h5 @@ -76,4 +78,4 @@ f['targets'] = targets with open(script_dir + '/solver_data_list.txt', 'w') as f: - f.write(script_dir + '/solver_data.h5\n') + f.write('src/caffe/test/test_data/solver_data.h5\n') diff --git a/src/caffe/test/test_data/sample_data_2_gzip.h5 b/src/caffe/test/test_data/sample_data_2_gzip.h5 index a138e0367be3d4b4ce4b51dcf0d7895056018883..0cb9ef92241d049b699b65f87e800f97337cae54 100644 GIT binary patch delta 225 zcmcasajjwl4+~4C%-zt<0xUly1qB!w85kG@fEYwGFmOy(l#7r6vxOKqz(ODnNCN|d z$Ha}klMPrT7=H51ueFFg#LWgGis1!kei3Wf$yr%6iSb&3kmDU2qQ`Q_!o GjsXC!dpCsu From 859f93891e4bf47d02899f03f0620fd1f29ca224 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Thu, 24 Sep 2015 13:33:11 -0700 Subject: [PATCH 036/458] Fix generate_sample_data.py - bug from #2978 --- src/caffe/test/test_data/generate_sample_data.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/test/test_data/generate_sample_data.py b/src/caffe/test/test_data/generate_sample_data.py index 8349dbbc8..264507357 100644 --- a/src/caffe/test/test_data/generate_sample_data.py +++ b/src/caffe/test/test_data/generate_sample_data.py @@ -36,7 +36,7 @@ f['label'] = label f['label2'] = label2 -with h5py.File(script_dir + '/sample_data_uint8_gzip.h5', 'w') as f: +with h5py.File(script_dir + '/sample_data_2_gzip.h5', 'w') as f: f.create_dataset( 'data', data=data + total_size, compression='gzip', compression_opts=1 @@ -54,7 +54,7 @@ with open(script_dir + '/sample_data_list.txt', 'w') as f: f.write('src/caffe/test/test_data/sample_data.h5\n') - f.write('src/caffe/test/test_data/sample_uint8_gzip.h5\n') + f.write('src/caffe/test/test_data/sample_data_2_gzip.h5\n') # Generate GradientBasedSolver solver_data.h5 From 200bd40391bc1c072730ea4bd80a6fe42b7a3901 Mon Sep 17 00:00:00 2001 From: Dmytro Mishkin Date: Fri, 25 Sep 2015 10:00:23 +0300 Subject: [PATCH 037/458] Fix parse_log.sh against "prefetch queue empty" messages --- tools/extra/parse_log.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/extra/parse_log.sh b/tools/extra/parse_log.sh index 98ef0a050..9892c8976 100755 --- a/tools/extra/parse_log.sh +++ b/tools/extra/parse_log.sh @@ -14,7 +14,12 @@ echo "Usage parse_log.sh /path/to/your.log" exit fi LOG=`basename $1` -grep -B 1 'Test ' $1 > aux.txt +sed -n '/Iteration .* Testing net/,/Iteration *. loss/p' $1 > aux.txt +sed -i '/Waiting for data/d' aux.txt +sed -i '/prefetch queue empty/d' aux.txt +sed -i '/Iteration .* loss/d' aux.txt +sed -i '/Iteration .* lr/d' aux.txt +sed -i '/Train net/d' aux.txt grep 'Iteration ' aux.txt | sed 's/.*Iteration \([[:digit:]]*\).*/\1/g' > aux0.txt grep 'Test net output #0' aux.txt | awk '{print $11}' > aux1.txt grep 'Test net output #1' aux.txt | awk '{print $11}' > aux2.txt From 6c02c8b7daf123f64b944ede407d0022e98d6e0b Mon Sep 17 00:00:00 2001 From: Tim Meinhardt Date: Tue, 15 Sep 2015 16:55:26 +0200 Subject: [PATCH 038/458] Add argmax_param axis --- include/caffe/common_layers.hpp | 2 ++ src/caffe/layers/argmax_layer.cpp | 22 +++++++++++++++++----- src/caffe/proto/caffe.proto | 5 +++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index 89bab8d6f..491f9edbf 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -68,6 +68,8 @@ class ArgMaxLayer : public Layer { } bool out_max_val_; size_t top_k_; + bool has_axis_; + int axis_; }; /** diff --git a/src/caffe/layers/argmax_layer.cpp b/src/caffe/layers/argmax_layer.cpp index c4040cdca..dad3d08bd 100644 --- a/src/caffe/layers/argmax_layer.cpp +++ b/src/caffe/layers/argmax_layer.cpp @@ -11,11 +11,23 @@ namespace caffe { template void ArgMaxLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { - out_max_val_ = this->layer_param_.argmax_param().out_max_val(); - top_k_ = this->layer_param_.argmax_param().top_k(); - CHECK_GE(top_k_, 1) << " top k must not be less than 1."; - CHECK_LE(top_k_, bottom[0]->count() / bottom[0]->num()) - << "top_k must be less than or equal to the number of classes."; + const ArgMaxParameter& argmax_param = this->layer_param_.argmax_param(); + out_max_val_ = argmax_param.out_max_val(); + top_k_ = argmax_param.top_k(); + has_axis_ = argmax_param.has_axis(); + CHECK_GE(top_k_, 1) << "top k must not be less than 1."; + if (has_axis_) { + axis_ = bottom[0]->CanonicalAxisIndex(argmax_param.axis()); + CHECK_GE(axis_, 0) << "axis must not be less than 0."; + CHECK_LE(axis_, bottom[0]->num_axes()) << + "axis must be less than or equal to the number of axis."; + CHECK_LE(top_k_, bottom[0]->shape(axis_)) + << "top_k must be less than or equal to the dimension of the axis."; + } else { + CHECK_LE(top_k_, bottom[0]->count(1)) + << "top_k must be less than or equal to" + " the dimension of the flattened bottom blob per instance."; + } } template diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index f52c941b0..a8747c12b 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -443,6 +443,11 @@ message ArgMaxParameter { // If true produce pairs (argmax, maxval) optional bool out_max_val = 1 [default = false]; optional uint32 top_k = 2 [default = 1]; + // The axis along which to maximise -- may be negative to index from the + // end (e.g., -1 for the last axis). + // By default ArgMaxLayer maximizes over the flattened trailing dimensions + // for each index of the first / num dimension. + optional int32 axis = 3; } message ConcatParameter { From c77d5e5156f94720c1decd13f7f87fe78df9d4eb Mon Sep 17 00:00:00 2001 From: Tim Meinhardt Date: Tue, 15 Sep 2015 16:56:16 +0200 Subject: [PATCH 039/458] Implement ArgMaxLayer forward_cpu and reshape for axis param --- src/caffe/layers/argmax_layer.cpp | 53 ++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/src/caffe/layers/argmax_layer.cpp b/src/caffe/layers/argmax_layer.cpp index dad3d08bd..18ff5f5a6 100644 --- a/src/caffe/layers/argmax_layer.cpp +++ b/src/caffe/layers/argmax_layer.cpp @@ -33,13 +33,19 @@ void ArgMaxLayer::LayerSetUp(const vector*>& bottom, template void ArgMaxLayer::Reshape(const vector*>& bottom, const vector*>& top) { - if (out_max_val_) { + std::vector shape(4, 1); + shape[0] = bottom[0]->shape(0); + // Produces max_ind + shape[2] = top_k_; + if (has_axis_) { + // Produces max_ind or max_val per axis + shape = bottom[0]->shape(); + shape[axis_] = top_k_; + } else if (out_max_val_) { // Produces max_ind and max_val - top[0]->Reshape(bottom[0]->num(), 2, top_k_, 1); - } else { - // Produces only max_ind - top[0]->Reshape(bottom[0]->num(), 1, top_k_, 1); + shape[1] = 2; } + top[0]->Reshape(shape); } template @@ -47,23 +53,40 @@ void ArgMaxLayer::Forward_cpu(const vector*>& bottom, const vector*>& top) { const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = top[0]->mutable_cpu_data(); - int num = bottom[0]->num(); - int dim = bottom[0]->count() / bottom[0]->num(); + int dim, axis_dist; + if (has_axis_) { + dim = bottom[0]->shape(axis_); + // Distance between values of axis in blob + axis_dist = bottom[0]->count(axis_) / dim; + } else { + dim = bottom[0]->count(1); + axis_dist = 1; + } + int num = bottom[0]->count() / dim; + std::vector > bottom_data_vector(dim); for (int i = 0; i < num; ++i) { - std::vector > bottom_data_vector; for (int j = 0; j < dim; ++j) { - bottom_data_vector.push_back( - std::make_pair(bottom_data[i * dim + j], j)); + bottom_data_vector[j] = std::make_pair( + bottom_data[(i / axis_dist * dim + j) * axis_dist + i % axis_dist], j); } std::partial_sort( bottom_data_vector.begin(), bottom_data_vector.begin() + top_k_, bottom_data_vector.end(), std::greater >()); for (int j = 0; j < top_k_; ++j) { - top_data[top[0]->offset(i, 0, j)] = bottom_data_vector[j].second; - } - if (out_max_val_) { - for (int j = 0; j < top_k_; ++j) { - top_data[top[0]->offset(i, 1, j)] = bottom_data_vector[j].first; + if (out_max_val_) { + if (has_axis_) { + // Produces max_val per axis + top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] = + bottom_data_vector[j].first; + } else { + // Produces max_ind and max_val + top_data[top[0]->offset(i, 0, j)] = bottom_data_vector[j].second; + top_data[top[0]->offset(i, 1, j)] = bottom_data_vector[j].first; + } + } else { + // Produces max_ind per axis + top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] = + bottom_data_vector[j].second; } } } From 9b2d267941411d9727a88ead18e3531bad50d14d Mon Sep 17 00:00:00 2001 From: Tim Meinhardt Date: Tue, 15 Sep 2015 16:56:45 +0200 Subject: [PATCH 040/458] Update ArgMaxLayer documentation for axis param --- include/caffe/common_layers.hpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index 491f9edbf..d1ddaee4f 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -21,7 +21,8 @@ namespace caffe { * * Intended for use after a classification layer to produce a prediction. * If parameter out_max_val is set to true, output is a vector of pairs - * (max_ind, max_val) for each image. + * (max_ind, max_val) for each image. The axis parameter specifies an axis + * along which to maximise. * * NOTE: does not implement Backwards operation. */ @@ -34,7 +35,11 @@ class ArgMaxLayer : public Layer { * - top_k (\b optional uint, default 1). * the number @f$ K @f$ of maximal items to output. * - out_max_val (\b optional bool, default false). - * if set, output a vector of pairs (max_ind, max_val) for each image. + * if set, output a vector of pairs (max_ind, max_val) unless axis is set then + * output max_val along the specified axis. + * - axis (\b optional int). + * if set, maximise along the specified axis else maximise the flattened + * trailing dimensions for each index of the first / num dimension. */ explicit ArgMaxLayer(const LayerParameter& param) : Layer(param) {} @@ -54,7 +59,8 @@ class ArgMaxLayer : public Layer { * the inputs @f$ x @f$ * @param top output Blob vector (length 1) * -# @f$ (N \times 1 \times K \times 1) @f$ or, if out_max_val - * @f$ (N \times 2 \times K \times 1) @f$ + * @f$ (N \times 2 \times K \times 1) @f$ unless axis set than e.g. + * @f$ (N \times K \times H \times W) @f$ if axis == 1 * the computed outputs @f$ * y_n = \arg\max\limits_i x_{ni} * @f$ (for @f$ K = 1 @f$). From a2a5e22d0b7d44a5e577edd53181d4802f057740 Mon Sep 17 00:00:00 2001 From: Tim Meinhardt Date: Tue, 15 Sep 2015 16:57:37 +0200 Subject: [PATCH 041/458] Generalise ArgMaxLayerTest bottom blob shape --- src/caffe/test/test_argmax_layer.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/caffe/test/test_argmax_layer.cpp b/src/caffe/test/test_argmax_layer.cpp index 895c3d372..d3018f90c 100644 --- a/src/caffe/test/test_argmax_layer.cpp +++ b/src/caffe/test/test_argmax_layer.cpp @@ -16,7 +16,7 @@ template class ArgMaxLayerTest : public CPUDeviceTest { protected: ArgMaxLayerTest() - : blob_bottom_(new Blob(10, 20, 1, 1)), + : blob_bottom_(new Blob(10, 10, 20, 20)), blob_top_(new Blob()), top_k_(5) { Caffe::set_random_seed(1701); @@ -112,6 +112,7 @@ TYPED_TEST(ArgMaxLayerTest, TestCPUTopK) { layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); int max_ind; TypeParam max_val; int num = this->blob_bottom_->num(); @@ -121,10 +122,10 @@ TYPED_TEST(ArgMaxLayerTest, TestCPUTopK) { EXPECT_LE(this->blob_top_->data_at(i, 0, 0, 0), dim); for (int j = 0; j < this->top_k_; ++j) { max_ind = this->blob_top_->data_at(i, 0, j, 0); - max_val = this->blob_bottom_->data_at(i, max_ind, 0, 0); + max_val = bottom_data[i * dim + max_ind]; int count = 0; for (int k = 0; k < dim; ++k) { - if (this->blob_bottom_->data_at(i, k, 0, 0) > max_val) { + if (bottom_data[i * dim + k] > max_val) { ++count; } } @@ -142,6 +143,7 @@ TYPED_TEST(ArgMaxLayerTest, TestCPUMaxValTopK) { layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); // Now, check values + const TypeParam* bottom_data = this->blob_bottom_->cpu_data(); int max_ind; TypeParam max_val; int num = this->blob_bottom_->num(); @@ -152,10 +154,10 @@ TYPED_TEST(ArgMaxLayerTest, TestCPUMaxValTopK) { for (int j = 0; j < this->top_k_; ++j) { max_ind = this->blob_top_->data_at(i, 0, j, 0); max_val = this->blob_top_->data_at(i, 1, j, 0); - EXPECT_EQ(this->blob_bottom_->data_at(i, max_ind, 0, 0), max_val); + EXPECT_EQ(bottom_data[i * dim + max_ind], max_val); int count = 0; for (int k = 0; k < dim; ++k) { - if (this->blob_bottom_->data_at(i, k, 0, 0) > max_val) { + if (bottom_data[i * dim + k] > max_val) { ++count; } } From def3d3cc49b908e54f787be377c299e6e6cbf16c Mon Sep 17 00:00:00 2001 From: Tim Meinhardt Date: Tue, 15 Sep 2015 16:57:55 +0200 Subject: [PATCH 042/458] Implement ArgMaxLayerTest for axis param --- src/caffe/layers/argmax_layer.cpp | 28 +++--- src/caffe/test/test_argmax_layer.cpp | 125 +++++++++++++++++++++++++++ 2 files changed, 140 insertions(+), 13 deletions(-) diff --git a/src/caffe/layers/argmax_layer.cpp b/src/caffe/layers/argmax_layer.cpp index 18ff5f5a6..0c0a932da 100644 --- a/src/caffe/layers/argmax_layer.cpp +++ b/src/caffe/layers/argmax_layer.cpp @@ -33,17 +33,19 @@ void ArgMaxLayer::LayerSetUp(const vector*>& bottom, template void ArgMaxLayer::Reshape(const vector*>& bottom, const vector*>& top) { - std::vector shape(4, 1); - shape[0] = bottom[0]->shape(0); - // Produces max_ind - shape[2] = top_k_; + std::vector shape(bottom[0]->num_axes(), 1); if (has_axis_) { // Produces max_ind or max_val per axis shape = bottom[0]->shape(); shape[axis_] = top_k_; - } else if (out_max_val_) { - // Produces max_ind and max_val - shape[1] = 2; + } else { + shape[0] = bottom[0]->shape(0); + // Produces max_ind + shape[2] = top_k_; + if (out_max_val_) { + // Produces max_ind and max_val + shape[1] = 2; + } } top[0]->Reshape(shape); } @@ -76,17 +78,17 @@ void ArgMaxLayer::Forward_cpu(const vector*>& bottom, if (out_max_val_) { if (has_axis_) { // Produces max_val per axis - top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] = - bottom_data_vector[j].first; + top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] + = bottom_data_vector[j].first; } else { // Produces max_ind and max_val - top_data[top[0]->offset(i, 0, j)] = bottom_data_vector[j].second; - top_data[top[0]->offset(i, 1, j)] = bottom_data_vector[j].first; + top_data[2 * i * top_k_ + j] = bottom_data_vector[j].second; + top_data[2 * i * top_k_ + top_k_ + j] = bottom_data_vector[j].first; } } else { // Produces max_ind per axis - top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] = - bottom_data_vector[j].second; + top_data[(i / axis_dist * top_k_ + j) * axis_dist + i % axis_dist] + = bottom_data_vector[j].second; } } } diff --git a/src/caffe/test/test_argmax_layer.cpp b/src/caffe/test/test_argmax_layer.cpp index d3018f90c..bbf190999 100644 --- a/src/caffe/test/test_argmax_layer.cpp +++ b/src/caffe/test/test_argmax_layer.cpp @@ -55,6 +55,43 @@ TYPED_TEST(ArgMaxLayerTest, TestSetupMaxVal) { EXPECT_EQ(this->blob_top_->channels(), 2); } +TYPED_TEST(ArgMaxLayerTest, TestSetupAxis) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(0); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->shape(0), argmax_param->top_k()); + EXPECT_EQ(this->blob_top_->shape(1), this->blob_bottom_->shape(0)); + EXPECT_EQ(this->blob_top_->shape(2), this->blob_bottom_->shape(2)); + EXPECT_EQ(this->blob_top_->shape(3), this->blob_bottom_->shape(3)); +} + +TYPED_TEST(ArgMaxLayerTest, TestSetupAxisNegativeIndexing) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(-2); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->shape(0), this->blob_bottom_->shape(0)); + EXPECT_EQ(this->blob_top_->shape(1), this->blob_bottom_->shape(1)); + EXPECT_EQ(this->blob_top_->shape(2), argmax_param->top_k()); + EXPECT_EQ(this->blob_top_->shape(3), this->blob_bottom_->shape(3)); +} + +TYPED_TEST(ArgMaxLayerTest, TestSetupAxisMaxVal) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(2); + argmax_param->set_out_max_val(true); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_->shape(0), this->blob_bottom_->shape(0)); + EXPECT_EQ(this->blob_top_->shape(1), this->blob_bottom_->shape(1)); + EXPECT_EQ(this->blob_top_->shape(2), argmax_param->top_k()); + EXPECT_EQ(this->blob_top_->shape(3), this->blob_bottom_->shape(3)); +} + TYPED_TEST(ArgMaxLayerTest, TestCPU) { LayerParameter layer_param; ArgMaxLayer layer(layer_param); @@ -166,5 +203,93 @@ TYPED_TEST(ArgMaxLayerTest, TestCPUMaxValTopK) { } } +TYPED_TEST(ArgMaxLayerTest, TestCPUAxis) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(0); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + int max_ind; + TypeParam max_val; + std::vector shape = this->blob_bottom_->shape(); + for (int i = 0; i < shape[1]; ++i) { + for (int j = 0; j < shape[2]; ++j) { + for (int k = 0; k < shape[3]; ++k) { + max_ind = this->blob_top_->data_at(0, i, j, k); + max_val = this->blob_bottom_->data_at(max_ind, i, j, k); + EXPECT_GE(max_ind, 0); + EXPECT_LE(max_ind, shape[0]); + for (int l = 0; l < shape[0]; ++l) { + EXPECT_LE(this->blob_bottom_->data_at(l, i, j, k), max_val); + } + } + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUAxisTopK) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(2); + argmax_param->set_top_k(this->top_k_); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + int max_ind; + TypeParam max_val; + std::vector shape = this->blob_bottom_->shape(); + for (int i = 0; i < shape[0]; ++i) { + for (int j = 0; j < shape[1]; ++j) { + for (int k = 0; k < shape[3]; ++k) { + for (int m = 0; m < this->top_k_; ++m) { + max_ind = this->blob_top_->data_at(i, j, m, k); + max_val = this->blob_bottom_->data_at(i, j, max_ind, k); + EXPECT_GE(max_ind, 0); + EXPECT_LE(max_ind, shape[2]); + int count = 0; + for (int l = 0; l < shape[2]; ++l) { + if (this->blob_bottom_->data_at(i, j, l, k) > max_val) { + ++count; + } + } + EXPECT_EQ(m, count); + } + } + } + } +} + +TYPED_TEST(ArgMaxLayerTest, TestCPUAxisMaxValTopK) { + LayerParameter layer_param; + ArgMaxParameter* argmax_param = layer_param.mutable_argmax_param(); + argmax_param->set_axis(-1); + argmax_param->set_top_k(this->top_k_); + argmax_param->set_out_max_val(true); + ArgMaxLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + TypeParam max_val; + std::vector shape = this->blob_bottom_->shape(); + for (int i = 0; i < shape[0]; ++i) { + for (int j = 0; j < shape[1]; ++j) { + for (int k = 0; k < shape[2]; ++k) { + for (int m = 0; m < this->top_k_; ++m) { + max_val = this->blob_top_->data_at(i, j, k, m); + int count = 0; + for (int l = 0; l < shape[3]; ++l) { + if (this->blob_bottom_->data_at(i, j, k, l) > max_val) { + ++count; + } + } + EXPECT_EQ(m, count); + } + } + } + } +} } // namespace caffe From bd5f15427cc2f008f80378a5948ce379d93ebde6 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Wed, 16 Sep 2015 13:39:23 -0700 Subject: [PATCH 043/458] Add flag on how host memory is allocated Add a bool flag to record whether a host memory is allocated using malloc or cudaMallocHost, and free correspondingly using this flag, instead of depending on Caffe::mode(), which is mutable during runtime. --- include/caffe/syncedmem.hpp | 15 ++++++++++----- src/caffe/syncedmem.cpp | 8 ++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/include/caffe/syncedmem.hpp b/include/caffe/syncedmem.hpp index 62aadef49..3d92a0eaf 100644 --- a/include/caffe/syncedmem.hpp +++ b/include/caffe/syncedmem.hpp @@ -13,20 +13,22 @@ namespace caffe { // The improvement in performance seems negligible in the single GPU case, // but might be more significant for parallel training. Most importantly, // it improved stability for large models on many GPUs. -inline void CaffeMallocHost(void** ptr, size_t size) { +inline void CaffeMallocHost(void** ptr, size_t size, bool* use_cuda) { #ifndef CPU_ONLY if (Caffe::mode() == Caffe::GPU) { CUDA_CHECK(cudaMallocHost(ptr, size)); + *use_cuda = true; return; } #endif *ptr = malloc(size); + *use_cuda = false; CHECK(*ptr) << "host allocation of size " << size << " failed"; } -inline void CaffeFreeHost(void* ptr) { +inline void CaffeFreeHost(void* ptr, bool use_cuda) { #ifndef CPU_ONLY - if (Caffe::mode() == Caffe::GPU) { + if (use_cuda) { CUDA_CHECK(cudaFreeHost(ptr)); return; } @@ -45,10 +47,12 @@ class SyncedMemory { public: SyncedMemory() : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(UNINITIALIZED), - own_cpu_data_(false), own_gpu_data_(false), gpu_device_(-1) {} + own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false), + gpu_device_(-1) {} explicit SyncedMemory(size_t size) : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(size), head_(UNINITIALIZED), - own_cpu_data_(false), own_gpu_data_(false), gpu_device_(-1) {} + own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false), + gpu_device_(-1) {} ~SyncedMemory(); const void* cpu_data(); void set_cpu_data(void* data); @@ -72,6 +76,7 @@ class SyncedMemory { size_t size_; SyncedHead head_; bool own_cpu_data_; + bool cpu_malloc_use_cuda_; bool own_gpu_data_; int gpu_device_; diff --git a/src/caffe/syncedmem.cpp b/src/caffe/syncedmem.cpp index a667a867a..632bf1f12 100644 --- a/src/caffe/syncedmem.cpp +++ b/src/caffe/syncedmem.cpp @@ -8,7 +8,7 @@ namespace caffe { SyncedMemory::~SyncedMemory() { if (cpu_ptr_ && own_cpu_data_) { - CaffeFreeHost(cpu_ptr_); + CaffeFreeHost(cpu_ptr_, cpu_malloc_use_cuda_); } #ifndef CPU_ONLY @@ -27,7 +27,7 @@ SyncedMemory::~SyncedMemory() { inline void SyncedMemory::to_cpu() { switch (head_) { case UNINITIALIZED: - CaffeMallocHost(&cpu_ptr_, size_); + CaffeMallocHost(&cpu_ptr_, size_, &cpu_malloc_use_cuda_); caffe_memset(size_, 0, cpu_ptr_); head_ = HEAD_AT_CPU; own_cpu_data_ = true; @@ -35,7 +35,7 @@ inline void SyncedMemory::to_cpu() { case HEAD_AT_GPU: #ifndef CPU_ONLY if (cpu_ptr_ == NULL) { - CaffeMallocHost(&cpu_ptr_, size_); + CaffeMallocHost(&cpu_ptr_, size_, &cpu_malloc_use_cuda_); own_cpu_data_ = true; } caffe_gpu_memcpy(size_, gpu_ptr_, cpu_ptr_); @@ -86,7 +86,7 @@ const void* SyncedMemory::cpu_data() { void SyncedMemory::set_cpu_data(void* data) { CHECK(data); if (own_cpu_data_) { - CaffeFreeHost(cpu_ptr_); + CaffeFreeHost(cpu_ptr_, cpu_malloc_use_cuda_); } cpu_ptr_ = data; head_ = HEAD_AT_CPU; From aaf4a4557668dfb75c540903ec02ed5821f75835 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 25 Sep 2015 15:43:47 -0700 Subject: [PATCH 044/458] Re-ordering some lines in build files Enforcing a consistent ordering - OpenCV, LevelDB, LMDB This will allow me to add the ALLOW_LMDB_NOLOCK option just after the USE_LMDB option, while keeping the IO dependency options together. --- CMakeLists.txt | 4 ++-- Makefile.config.example | 2 +- cmake/Summary.cmake | 4 ++-- cmake/Templates/caffe_config.h.in | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 37f937fe4..277c3dc49 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,9 +23,9 @@ set(python_version "2" CACHE STRING "Specify which Python version to use") caffe_option(BUILD_matlab "Build Matlab wrapper" OFF IF UNIX OR APPLE) caffe_option(BUILD_docs "Build documentation" ON IF UNIX OR APPLE) caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON) -caffe_option(USE_LMDB "Build with lmdb" ON) -caffe_option(USE_LEVELDB "Build with levelDB" ON) caffe_option(USE_OPENCV "Build with OpenCV support" ON) +caffe_option(USE_LEVELDB "Build with levelDB" ON) +caffe_option(USE_LMDB "Build with lmdb" ON) # ---[ Dependencies include(cmake/Dependencies.cmake) diff --git a/Makefile.config.example b/Makefile.config.example index a20bad2f5..42f86db45 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -8,9 +8,9 @@ # CPU_ONLY := 1 # uncomment to disable IO dependencies and corresponding data layers +# USE_OPENCV := 0 # USE_LEVELDB := 0 # USE_LMDB := 0 -# USE_OPENCV := 0 # To customize your choice of compiler, uncomment and set the following. # N.B. the default for Linux is g++ and the default for OSX is clang++ diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 3d12e81a1..703e22aca 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -114,9 +114,9 @@ function(caffe_print_configuration_summary) caffe_status(" BUILD_matlab : ${BUILD_matlab}") caffe_status(" BUILD_docs : ${BUILD_docs}") caffe_status(" CPU_ONLY : ${CPU_ONLY}") - caffe_status(" USE_LMDB : ${USE_LMDB}") - caffe_status(" USE_LEVELDB : ${USE_LEVELDB}") caffe_status(" USE_OPENCV : ${USE_OPENCV}") + caffe_status(" USE_LEVELDB : ${USE_LEVELDB}") + caffe_status(" USE_LMDB : ${USE_LMDB}") caffe_status("") caffe_status("Dependencies:") caffe_status(" BLAS : " APPLE THEN "Yes (vecLib)" ELSE "Yes (${BLAS})") diff --git a/cmake/Templates/caffe_config.h.in b/cmake/Templates/caffe_config.h.in index 9302022d7..84377493f 100644 --- a/cmake/Templates/caffe_config.h.in +++ b/cmake/Templates/caffe_config.h.in @@ -33,5 +33,5 @@ /* IO libraries */ #cmakedefine USE_OPENCV -#cmakedefine USE_LMDB #cmakedefine USE_LEVELDB +#cmakedefine USE_LMDB From b93afe8378cd66d9bf375a0f492a30f9db77e8ae Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 25 Sep 2015 15:53:54 -0700 Subject: [PATCH 045/458] Add ALLOW_LMDB_NOLOCK build option This option lets you open LMDB files with the MDB_NOLOCK flag. You should not set this flag if you will be reading LMDBs with any possibility of simultaneous read and write. --- CMakeLists.txt | 1 + Makefile | 3 +++ Makefile.config.example | 5 +++++ cmake/ConfigGen.cmake | 3 +++ cmake/Dependencies.cmake | 3 +++ cmake/Summary.cmake | 1 + cmake/Templates/caffe_config.h.in | 1 + src/caffe/util/db_lmdb.cpp | 17 ++++++++++++++++- 8 files changed, 33 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 277c3dc49..f8f75305f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON) caffe_option(USE_OPENCV "Build with OpenCV support" ON) caffe_option(USE_LEVELDB "Build with levelDB" ON) caffe_option(USE_LMDB "Build with lmdb" ON) +caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only if necessary)" OFF) # ---[ Dependencies include(cmake/Dependencies.cmake) diff --git a/Makefile b/Makefile index 5fb6394e9..7cc739313 100644 --- a/Makefile +++ b/Makefile @@ -313,6 +313,9 @@ ifeq ($(USE_LEVELDB), 1) endif ifeq ($(USE_LMDB), 1) COMMON_FLAGS += -DUSE_LMDB +ifeq ($(ALLOW_LMDB_NOLOCK), 1) + COMMON_FLAGS += -DALLOW_LMDB_NOLOCK +endif endif # CPU-only configuration diff --git a/Makefile.config.example b/Makefile.config.example index 42f86db45..bda66ea10 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -12,6 +12,11 @@ # USE_LEVELDB := 0 # USE_LMDB := 0 +# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary) +# You should not set this flag if you will be reading LMDBs with any +# possibility of simultaneous read and write +# ALLOW_LMDB_NOLOCK := 1 + # To customize your choice of compiler, uncomment and set the following. # N.B. the default for Linux is g++ and the default for OSX is clang++ # CUSTOM_CXX := g++ diff --git a/cmake/ConfigGen.cmake b/cmake/ConfigGen.cmake index 8b2599653..056371110 100644 --- a/cmake/ConfigGen.cmake +++ b/cmake/ConfigGen.cmake @@ -62,6 +62,9 @@ function(caffe_generate_export_configs) if(USE_LMDB) list(APPEND Caffe_DEFINITIONS -DUSE_LMDB) + if (ALLOW_LMDB_NOLOCK) + list(APPEND Caffe_DEFINITIONS -DALLOW_LMDB_NOLOCK) + endif() endif() if(USE_LEVELDB) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index d68d7bfba..a77ac6df6 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -34,6 +34,9 @@ if(USE_LMDB) include_directories(SYSTEM ${LMDB_INCLUDE_DIR}) list(APPEND Caffe_LINKER_LIBS ${LMDB_LIBRARIES}) add_definitions(-DUSE_LMDB) + if(ALLOW_LMDB_NOLOCK) + add_definitions(-DALLOW_LMDB_NOLOCK) + endif() endif() # ---[ LevelDB diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 703e22aca..6984f417e 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -117,6 +117,7 @@ function(caffe_print_configuration_summary) caffe_status(" USE_OPENCV : ${USE_OPENCV}") caffe_status(" USE_LEVELDB : ${USE_LEVELDB}") caffe_status(" USE_LMDB : ${USE_LMDB}") + caffe_status(" ALLOW_LMDB_NOLOCK : ${ALLOW_LMDB_NOLOCK}") caffe_status("") caffe_status("Dependencies:") caffe_status(" BLAS : " APPLE THEN "Yes (vecLib)" ELSE "Yes (${BLAS})") diff --git a/cmake/Templates/caffe_config.h.in b/cmake/Templates/caffe_config.h.in index 84377493f..8a31b43ca 100644 --- a/cmake/Templates/caffe_config.h.in +++ b/cmake/Templates/caffe_config.h.in @@ -35,3 +35,4 @@ #cmakedefine USE_OPENCV #cmakedefine USE_LEVELDB #cmakedefine USE_LMDB +#cmakedefine ALLOW_LMDB_NOLOCK diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index 78dd880ac..0bc82b53e 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -19,7 +19,22 @@ void LMDB::Open(const string& source, Mode mode) { if (mode == READ) { flags = MDB_RDONLY | MDB_NOTLS; } - MDB_CHECK(mdb_env_open(mdb_env_, source.c_str(), flags, 0664)); + int rc = mdb_env_open(mdb_env_, source.c_str(), flags, 0664); +#ifndef ALLOW_LMDB_NOLOCK + MDB_CHECK(rc); +#else + if (rc == EACCES) { + LOG(WARNING) << "Permission denied. Trying with MDB_NOLOCK ..."; + // Close and re-open environment handle + mdb_env_close(mdb_env_); + MDB_CHECK(mdb_env_create(&mdb_env_)); + // Try again with MDB_NOLOCK + flags |= MDB_NOLOCK; + MDB_CHECK(mdb_env_open(mdb_env_, source.c_str(), flags, 0664)); + } else { + MDB_CHECK(rc); + } +#endif LOG(INFO) << "Opened lmdb " << source; } From e98b84762fb55daed5092225f71c3b76015aa4a4 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Mon, 28 Sep 2015 15:35:24 -0700 Subject: [PATCH 046/458] Install libs as non-executable files According to the Debian policy manual, "Shared libraries should not be installed executable, since the dynamic linker does not require this and trying to execute a shared library usually results in a core dump." https://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-runtime --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5fb6394e9..fbda44bef 100644 --- a/Makefile +++ b/Makefile @@ -652,7 +652,7 @@ $(DISTRIBUTE_DIR): all py | $(DISTRIBUTE_SUBDIRS) cp $(EXAMPLE_BINS) $(DISTRIBUTE_DIR)/bin # add libraries cp $(STATIC_NAME) $(DISTRIBUTE_DIR)/lib - cp $(DYNAMIC_NAME) $(DISTRIBUTE_DIR)/lib + install -m 644 $(DYNAMIC_NAME) $(DISTRIBUTE_DIR)/lib # add python - it's not the standard way, indeed... cp -r python $(DISTRIBUTE_DIR)/python From 96ba513f54ac7bfc62c40a2481c1556c2f743120 Mon Sep 17 00:00:00 2001 From: Yang Song Date: Tue, 29 Sep 2015 20:07:52 +0800 Subject: [PATCH 047/458] Fix a typo Fix a typo in the message. --- python/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 0e2bc7e66..a22641401 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,5 +1,5 @@ if(NOT HAVE_PYTHON) - message(STATUS "Python interface is disabled or not all required dependecies found. Building without it...") + message(STATUS "Python interface is disabled or not all required dependencies found. Building without it...") return() endif() From 98cc023939641482432d4082db061306a7ab1654 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Thu, 1 Oct 2015 18:20:23 +0200 Subject: [PATCH 048/458] add badge for travis build and license --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index ebec286d5..44b9e62c1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Caffe +[![Build Status](https://travis-ci.org/BVLC/caffe.svg?branch=master)](https://travis-ci.org/BVLC/caffe) +[![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE) + Caffe is a deep learning framework made with expression, speed, and modularity in mind. It is developed by the Berkeley Vision and Learning Center ([BVLC](http://bvlc.eecs.berkeley.edu)) and community contributors. From 552a84aaddeabc074f4a0184b90b7194e7f7a44b Mon Sep 17 00:00:00 2001 From: zoharby Date: Fri, 11 Sep 2015 15:06:28 +0300 Subject: [PATCH 049/458] Add a caffe.io.write_mean function to the MATLAB interface Useful for exporting models from MATLAB (e.g. MatConvNet) to Caffe --- matlab/+caffe/io.m | 8 ++++++++ matlab/+caffe/private/caffe_.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/matlab/+caffe/io.m b/matlab/+caffe/io.m index af8369ddf..4b072fecd 100644 --- a/matlab/+caffe/io.m +++ b/matlab/+caffe/io.m @@ -29,5 +29,13 @@ CHECK_FILE_EXIST(mean_proto_file); mean_data = caffe_('read_mean', mean_proto_file); end + function write_mean(mean_data, mean_proto_file) + % write_mean(mean_data, mean_proto_file) + % write image mean data to binaryproto file + % mean_data should be W x H x C with BGR channels + CHECK(ischar(mean_proto_file), 'mean_proto_file must be a string'); + CHECK(isa(mean_data, 'single'), 'mean_data must be a SINGLE matrix'); + caffe_('write_mean', mean_data, mean_proto_file); + end end end diff --git a/matlab/+caffe/private/caffe_.cpp b/matlab/+caffe/private/caffe_.cpp index 4e0ebc1c0..7883f79eb 100644 --- a/matlab/+caffe/private/caffe_.cpp +++ b/matlab/+caffe/private/caffe_.cpp @@ -478,6 +478,29 @@ static void read_mean(MEX_ARGS) { mxFree(mean_proto_file); } +// Usage: caffe_('write_mean', mean_data, mean_proto_file) +static void write_mean(MEX_ARGS) { + mxCHECK(nrhs == 2 && mxIsSingle(prhs[0]) && mxIsChar(prhs[1]), + "Usage: caffe_('write_mean', mean_data, mean_proto_file)"); + char* mean_proto_file = mxArrayToString(prhs[1]); + int ndims = mxGetNumberOfDimensions(prhs[0]); + mxCHECK(ndims >= 2 && ndims <= 3, "mean_data must have at 2 or 3 dimensions"); + const mwSize *dims = mxGetDimensions(prhs[0]); + int width = dims[0]; + int height = dims[1]; + int channels; + if (ndims == 3) + channels = dims[2]; + else + channels = 1; + Blob data_mean(1, channels, height, width); + mx_mat_to_blob(prhs[0], &data_mean, DATA); + BlobProto blob_proto; + data_mean.ToProto(&blob_proto, false); + WriteProtoToBinaryFile(blob_proto, mean_proto_file); + mxFree(mean_proto_file); +} + /** ----------------------------------------------------------------- ** Available commands. **/ @@ -515,6 +538,7 @@ static handler_registry handlers[] = { { "get_init_key", get_init_key }, { "reset", reset }, { "read_mean", read_mean }, + { "write_mean", write_mean }, // The end. { "END", NULL }, }; From 30dfb864f0e7ad8f39bcdb48200eccc2a0efa7d3 Mon Sep 17 00:00:00 2001 From: Jan Issac Date: Mon, 5 Oct 2015 11:13:26 +0200 Subject: [PATCH 050/458] minor typo fix --- cmake/Cuda.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index ff58d31c1..98aef268c 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -132,7 +132,7 @@ function(caffe_select_nvcc_arch_flags out_variable) endfunction() ################################################################################################ -# Short command for cuda comnpilation +# Short command for cuda compilation # Usage: # caffe_cuda_compile( ) macro(caffe_cuda_compile objlist_variable) From 64f948a6829c53031632d87f78183dd87d5d6f71 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Mon, 5 Oct 2015 14:15:08 -0700 Subject: [PATCH 051/458] SilenceLayer Backward bugfix (fixes #3151) --- src/caffe/layers/silence_layer.cpp | 2 +- src/caffe/layers/silence_layer.cu | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/layers/silence_layer.cpp b/src/caffe/layers/silence_layer.cpp index 4abf9eff4..7e70ab432 100644 --- a/src/caffe/layers/silence_layer.cpp +++ b/src/caffe/layers/silence_layer.cpp @@ -12,7 +12,7 @@ void SilenceLayer::Backward_cpu(const vector*>& top, for (int i = 0; i < bottom.size(); ++i) { if (propagate_down[i]) { caffe_set(bottom[i]->count(), Dtype(0), - bottom[i]->mutable_cpu_data()); + bottom[i]->mutable_cpu_diff()); } } } diff --git a/src/caffe/layers/silence_layer.cu b/src/caffe/layers/silence_layer.cu index 8d044ee73..34faef22b 100644 --- a/src/caffe/layers/silence_layer.cu +++ b/src/caffe/layers/silence_layer.cu @@ -18,7 +18,7 @@ void SilenceLayer::Backward_gpu(const vector*>& top, for (int i = 0; i < bottom.size(); ++i) { if (propagate_down[i]) { caffe_gpu_set(bottom[i]->count(), Dtype(0), - bottom[i]->mutable_gpu_data()); + bottom[i]->mutable_gpu_diff()); } } } From 19d9927d76d6655a3efc090611e59aa2ea0f25a5 Mon Sep 17 00:00:00 2001 From: Gustav Larsson Date: Mon, 5 Oct 2015 21:55:00 -0500 Subject: [PATCH 052/458] Add pycaffe test for solver.snapshot() --- python/caffe/test/test_solver.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python/caffe/test/test_solver.py b/python/caffe/test/test_solver.py index 9cfc10d29..f618fded8 100644 --- a/python/caffe/test/test_solver.py +++ b/python/caffe/test/test_solver.py @@ -16,7 +16,8 @@ def setUp(self): f.write("""net: '""" + net_f + """' test_iter: 10 test_interval: 10 base_lr: 0.01 momentum: 0.9 weight_decay: 0.0005 lr_policy: 'inv' gamma: 0.0001 power: 0.75 - display: 100 max_iter: 100 snapshot_after_train: false""") + display: 100 max_iter: 100 snapshot_after_train: false + snapshot_prefix: "model" """) f.close() self.solver = caffe.SGDSolver(f.name) # also make sure get_solver runs @@ -51,3 +52,11 @@ def test_net_memory(self): total += p.data.sum() + p.diff.sum() for bl in six.itervalues(net.blobs): total += bl.data.sum() + bl.diff.sum() + + def test_snapshot(self): + self.solver.snapshot() + # Check that these files exist and then remove them + files = ['model_iter_0.caffemodel', 'model_iter_0.solverstate'] + for fn in files: + assert os.path.isfile(fn) + os.remove(fn) From 10725393518df14b9b6976686f72fae792c3f393 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Mon, 5 Oct 2015 15:46:54 -0700 Subject: [PATCH 053/458] NetSpec: type-check Function inputs (they must be Top instances) --- python/caffe/net_spec.py | 4 ++++ python/caffe/test/test_net_spec.py | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/python/caffe/net_spec.py b/python/caffe/net_spec.py index 93fc01927..b6520627a 100644 --- a/python/caffe/net_spec.py +++ b/python/caffe/net_spec.py @@ -103,6 +103,10 @@ class Function(object): def __init__(self, type_name, inputs, params): self.type_name = type_name + for index, input in enumerate(inputs): + if not isinstance(input, Top): + raise TypeError('%s input %d is not a Top (type is %s)' % + (type_name, index, type(input))) self.inputs = inputs self.params = params self.ntop = self.params.get('ntop', 1) diff --git a/python/caffe/test/test_net_spec.py b/python/caffe/test/test_net_spec.py index fee3c0aae..ffe71bacb 100644 --- a/python/caffe/test/test_net_spec.py +++ b/python/caffe/test/test_net_spec.py @@ -79,3 +79,11 @@ def test_zero_tops(self): net_proto = silent_net() net = self.load_net(net_proto) self.assertEqual(len(net.forward()), 0) + + def test_type_error(self): + """Test that a TypeError is raised when a Function input isn't a Top.""" + data = L.DummyData(ntop=2) # data is a 2-tuple of Tops + r = r"^Silence input 0 is not a Top \(type is <(type|class) 'tuple'>\)$" + with self.assertRaisesRegexp(TypeError, r): + L.Silence(data, ntop=0) # should raise: data is a tuple, not a Top + L.Silence(*data, ntop=0) # shouldn't raise: each elt of data is a Top From e0615464ddf550ee57c17733ba9c5a0fa71b8edb Mon Sep 17 00:00:00 2001 From: e3 Date: Wed, 7 Oct 2015 11:52:45 -0700 Subject: [PATCH 054/458] fixes BVLC/caffe#3163 --- docs/tutorial/layers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tutorial/layers.md b/docs/tutorial/layers.md index eabc792b7..7362aac29 100644 --- a/docs/tutorial/layers.md +++ b/docs/tutorial/layers.md @@ -39,7 +39,7 @@ In contrast, other layers (with few exceptions) ignore the spatial structure of - `n * c_i * h_i * w_i` * Output - `n * c_o * h_o * w_o`, where `h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1` and `w_o` likewise. -* Sample (as seen in `./examples/imagenet/imagenet_train_val.prototxt`) +* Sample (as seen in `./models/bvlc_reference_caffenet/train_val.prototxt`) layer { name: "conv1" @@ -83,7 +83,7 @@ The `Convolution` layer convolves the input image with a set of learnable filter - `n * c * h_i * w_i` * Output - `n * c * h_o * w_o`, where h_o and w_o are computed in the same way as convolution. -* Sample (as seen in `./examples/imagenet/imagenet_train_val.prototxt`) +* Sample (as seen in `./models/bvlc_reference_caffenet/train_val.prototxt`) layer { name: "pool1" @@ -197,7 +197,7 @@ In general, activation / Neuron layers are element-wise operators, taking one bo * Parameters (`ReLUParameter relu_param`) - Optional - `negative_slope` [default 0]: specifies whether to leak the negative part by multiplying it with the slope value rather than setting it to 0. -* Sample (as seen in `./examples/imagenet/imagenet_train_val.prototxt`) +* Sample (as seen in `./models/bvlc_reference_caffenet/train_val.prototxt`) layer { name: "relu1" From bda1a633ec874e313f5d5dddfc0afc70573847d7 Mon Sep 17 00:00:00 2001 From: Carl Doersch Date: Sun, 23 Aug 2015 20:47:25 -0700 Subject: [PATCH 055/458] BatchReindexLayer to shuffle, subsample, and replicate examples in a batch --- include/caffe/common_layers.hpp | 69 ++++++++++++ src/caffe/layers/batch_reindex_layer.cpp | 79 +++++++++++++ src/caffe/layers/batch_reindex_layer.cu | 107 ++++++++++++++++++ src/caffe/test/test_batch_reindex_layer.cpp | 119 ++++++++++++++++++++ 4 files changed, 374 insertions(+) create mode 100644 src/caffe/layers/batch_reindex_layer.cpp create mode 100644 src/caffe/layers/batch_reindex_layer.cu create mode 100644 src/caffe/test/test_batch_reindex_layer.cpp diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index d2c0ce6d0..5d68e865e 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -70,6 +70,75 @@ class ArgMaxLayer : public Layer { size_t top_k_; }; +/** + * @brief Index into the input blob along its first axis. + * + * This layer can be used to select, reorder, and even replicate examples in a + * batch. The second blob is cast to int and treated as an index into the + * first axis of the first blob. + */ +template +class BatchReindexLayer : public Layer { + public: + explicit BatchReindexLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "BatchReindex"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times ...) @f$ + * the inputs @f$ x_1 @f$ + * -# @f$ (M) @f$ + * the inputs @f$ x_2 @f$ + * @param top output Blob vector (length 1) + * -# @f$ (M \times ...) @f$: + * the reindexed array @f$ + * y = x_1[x_2] + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the reordered input. + * + * @param top output Blob vector (length 1), providing the error gradient + * with respect to the outputs + * -# @f$ (M \times ...) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to concatenated outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2): + * - @f$ \frac{\partial E}{\partial y} @f$ is de-indexed (summing where + * required) back to the input x_1 + * - This layer cannot backprop to x_2, i.e. propagate_down[1] must be + * false. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + private: + struct pair_sort_first { + bool operator()(const std::pair &left, + const std::pair &right) { + return left.first < right.first; + } + }; + void check_batch_reindex(int initial_num, int final_num, + const Dtype* ridx_data); +}; + + /** * @brief Takes at least two Blob%s and concatenates them along either the num * or channel dimension, outputting the result. diff --git a/src/caffe/layers/batch_reindex_layer.cpp b/src/caffe/layers/batch_reindex_layer.cpp new file mode 100644 index 000000000..3bf757c71 --- /dev/null +++ b/src/caffe/layers/batch_reindex_layer.cpp @@ -0,0 +1,79 @@ +#include + +#include "caffe/layer.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void BatchReindexLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_EQ(1, bottom[1]->num_axes()); + vector newshape; + newshape.push_back(bottom[1]->shape(0)); + for (int i = 1; i < bottom[0]->shape().size(); ++i) { + newshape.push_back(bottom[0]->shape()[i]); + } + top[0]->Reshape(newshape); +} + +template +void BatchReindexLayer::check_batch_reindex(int initial_num, + int final_num, + const Dtype* ridx_data) { + for (int i = 0; i < final_num; ++i) { + CHECK_GE(ridx_data[i], 0) + << "Index specified for reindex layer was negative."; + CHECK_LT(ridx_data[i], initial_num) + << "Index specified for reindex layer was greater than batch size."; + } +} + +template +void BatchReindexLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + check_batch_reindex(bottom[0]->shape(0), bottom[1]->count(), + bottom[1]->cpu_data()); + if (top[0]->count() == 0) { + return; + } + int inner_dim = bottom[0]->count() / bottom[0]->shape(0); + const Dtype* in = bottom[0]->cpu_data(); + const Dtype* permut = bottom[1]->cpu_data(); + Dtype* out = top[0]->mutable_cpu_data(); + for (int index = 0; index < top[0]->count(); ++index) { + int n = index / (inner_dim); + int in_n = static_cast(permut[n]); + out[index] = in[in_n * (inner_dim) + index % (inner_dim)]; + } +} + +template +void BatchReindexLayer::Backward_cpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + CHECK(!propagate_down[1]) << "Cannot backprop to index."; + if (!propagate_down[0]) { + return; + } + int inner_dim = bottom[0]->count() / bottom[0]->shape(0); + Dtype* bot_diff = bottom[0]->mutable_cpu_diff(); + const Dtype* permut = bottom[1]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + caffe_set(bottom[0]->count(), Dtype(0), bot_diff); + for (int index = 0; index < top[0]->count(); ++index) { + int n = index / (inner_dim); + int in_n = static_cast(permut[n]); + bot_diff[in_n * (inner_dim) + index % (inner_dim)] += top_diff[index]; + } +} + +#ifdef CPU_ONLY +STUB_GPU(BatchReindexLayer); +#endif + +INSTANTIATE_CLASS(BatchReindexLayer); +REGISTER_LAYER_CLASS(BatchReindex); + +} // namespace caffe diff --git a/src/caffe/layers/batch_reindex_layer.cu b/src/caffe/layers/batch_reindex_layer.cu new file mode 100644 index 000000000..c418cab90 --- /dev/null +++ b/src/caffe/layers/batch_reindex_layer.cu @@ -0,0 +1,107 @@ +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +__global__ void BRForward(const int count, const int inner_dim, const Dtype* in, + const Dtype* permut, Dtype* out) { + CUDA_KERNEL_LOOP(index, count) { + int n = index / (inner_dim); + int in_n = static_cast(permut[n]); + out[index] = in[in_n * (inner_dim) + index % (inner_dim)]; + } +} + +template +void BatchReindexLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + check_batch_reindex(bottom[0]->shape(0), bottom[1]->count(), + bottom[1]->cpu_data()); + if (top[0]->count() == 0) { + return; + } + int threads = top[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + BRForward <<>>( + top[0]->count(), bottom[0]->count() / bottom[0]->shape(0), + bottom[0]->gpu_data(), bottom[1]->gpu_data(), top[0]->mutable_gpu_data()); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void BRBackward(const int count, const int inner_dim, + const Dtype* in, const Dtype* top_indexes, + const Dtype* begins, const Dtype* counts, + Dtype* out) { + CUDA_KERNEL_LOOP(index, count) { + int n = index / (inner_dim); + out[index] = 0; + int lower = static_cast(begins[n]); + int upper = lower + static_cast(counts[n]); + for (int i = lower; i < upper; ++i) { + int in_n = static_cast(top_indexes[i]); + out[index] += in[in_n * (inner_dim) + index % (inner_dim)]; + } + } +} + +template +void BatchReindexLayer::Backward_gpu( + const vector*>& top, const vector& propagate_down, + const vector*>& bottom) { + CHECK(!propagate_down[1]) << "Cannot backprop to index."; + if (!propagate_down[0]) { + return; + } + + vector > mapping; + const Dtype* perm = bottom[1]->cpu_data(); + for (int i = 0; i < bottom[1]->count(); ++i) { + mapping.push_back(pair(static_cast(perm[i]), i)); + } + std::sort(mapping.begin(), mapping.end(), pair_sort_first()); + + // Each element of the bottom diff is potentially the sum of many top diffs. + // However, we'd like each CUDA thread to handle exactly one output. Hence, + // we first pre-compute a list of lists of indices that need to be summed for + // each output. `top_indexes` holds the data of this list of lists. The + // k'th element of `begins` points to the location in `top_indexes` where the + // list for the k'th example begin, and the k'th element of `counts` is the + // length of that list. + vector shape; + shape.push_back(bottom[1]->count()); + Blob top_indexes(shape); + shape[0] = bottom[0]->shape(0); + Blob counts(shape); + Blob begins(shape); + Dtype* t_i_data = top_indexes.mutable_cpu_data(); + Dtype* c_data = counts.mutable_cpu_data(); + Dtype* b_data = begins.mutable_cpu_data(); + caffe_set(begins.count(), Dtype(-1), b_data); + caffe_set(counts.count(), Dtype(0), c_data); + for (int i = 0; i < mapping.size(); ++i) { + t_i_data[i] = mapping[i].second; + if (b_data[mapping[i].first] == -1) { + b_data[mapping[i].first] = i; + } + c_data[mapping[i].first] += 1; + } + + int threads = bottom[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + BRBackward <<>>( + bottom[0]->count(), bottom[0]->count() / bottom[0]->shape(0), + top[0]->gpu_diff(), top_indexes.gpu_data(), begins.gpu_data(), + counts.gpu_data(), bottom[0]->mutable_gpu_diff()); + CUDA_POST_KERNEL_CHECK; +} + +INSTANTIATE_LAYER_GPU_FUNCS(BatchReindexLayer); + +} // namespace caffe diff --git a/src/caffe/test/test_batch_reindex_layer.cpp b/src/caffe/test/test_batch_reindex_layer.cpp new file mode 100644 index 000000000..985db343d --- /dev/null +++ b/src/caffe/test/test_batch_reindex_layer.cpp @@ -0,0 +1,119 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/vision_layers.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class BatchReindexLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + BatchReindexLayerTest() + : blob_bottom_(new Blob()), + blob_bottom_permute_(new Blob()), + blob_top_(new Blob()) { + } + virtual void SetUp() { + Caffe::set_random_seed(1701); + vector sz; + sz.push_back(5); + sz.push_back(4); + sz.push_back(3); + sz.push_back(2); + blob_bottom_->Reshape(sz); + vector permsz; + permsz.push_back(6); + blob_bottom_permute_->Reshape(permsz); + + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + int perm[] = { 4, 0, 4, 0, 1, 2 }; + for (int i = 0; i < blob_bottom_permute_->count(); ++i) { + blob_bottom_permute_->mutable_cpu_data()[i] = perm[i]; + } + + blob_bottom_vec_.push_back(blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_permute_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~BatchReindexLayerTest() { + delete blob_bottom_permute_; + delete blob_bottom_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_permute_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + + void TestForward() { + LayerParameter layer_param; + + vector sz; + sz.push_back(5); + sz.push_back(4); + sz.push_back(3); + sz.push_back(2); + blob_bottom_->Reshape(sz); + for (int i = 0; i < blob_bottom_->count(); ++i) { + blob_bottom_->mutable_cpu_data()[i] = i; + } + + vector permsz; + permsz.push_back(6); + blob_bottom_permute_->Reshape(permsz); + int perm[] = { 4, 0, 4, 0, 1, 2 }; + for (int i = 0; i < blob_bottom_permute_->count(); ++i) { + blob_bottom_permute_->mutable_cpu_data()[i] = perm[i]; + } + BatchReindexLayer layer(layer_param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + EXPECT_EQ(blob_top_->num(), blob_bottom_permute_->num()); + EXPECT_EQ(blob_top_->channels(), blob_bottom_->channels()); + EXPECT_EQ(blob_top_->height(), blob_bottom_->height()); + EXPECT_EQ(blob_top_->width(), blob_bottom_->width()); + + layer.Forward(blob_bottom_vec_, blob_top_vec_); + int channels = blob_top_->channels(); + int height = blob_top_->height(); + int width = blob_top_->width(); + for (int i = 0; i < blob_top_->count(); ++i) { + int n = i / (channels * width * height); + int inner_idx = (i % (channels * width * height)); + EXPECT_EQ( + blob_top_->cpu_data()[i], + blob_bottom_->cpu_data()[perm[n] * channels * width * height + + inner_idx]); + } + } +}; + +TYPED_TEST_CASE(BatchReindexLayerTest, TestDtypesAndDevices); + +TYPED_TEST(BatchReindexLayerTest, TestForward) { + this->TestForward(); +} + +TYPED_TEST(BatchReindexLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BatchReindexLayer layer(layer_param); + GradientChecker checker(1e-4, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + } + +} // namespace caffe From c65ba61bdf273604c3edcd24ba7a80cc3835441a Mon Sep 17 00:00:00 2001 From: sh1r0 Date: Fri, 9 Oct 2015 00:31:05 +0800 Subject: [PATCH 056/458] Remove the 4D constraint of blobproto IO in python --- python/caffe/io.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index 0cad72112..40b7ac1ed 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -21,22 +21,18 @@ def blobproto_to_array(blob, return_diff=False): unless return_diff is True, in which case we will return the diff. """ if return_diff: - return np.array(blob.diff).reshape( - blob.num, blob.channels, blob.height, blob.width) + return np.array(blob.diff).reshape(*blob.shape.dim) else: - return np.array(blob.data).reshape( - blob.num, blob.channels, blob.height, blob.width) + return np.array(blob.data).reshape(*blob.shape.dim) def array_to_blobproto(arr, diff=None): - """Converts a 4-dimensional array to blob proto. If diff is given, also + """Converts a N-dimensional array to blob proto. If diff is given, also convert the diff. You need to make sure that arr and diff have the same shape, and this function does not do sanity check. """ - if arr.ndim != 4: - raise ValueError('Incorrect array shape.') blob = caffe_pb2.BlobProto() - blob.num, blob.channels, blob.height, blob.width = arr.shape + blob.shape.dim.extend(arr.shape) blob.data.extend(arr.astype(float).flat) if diff is not None: blob.diff.extend(diff.astype(float).flat) From ee5191b3e41fddae73653e0d61172360b89526ca Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Thu, 8 Oct 2015 01:26:25 +0900 Subject: [PATCH 057/458] Improve numerical stability of variance computation in MVNLayer --- src/caffe/layers/mvn_layer.cpp | 42 ++++++++++----------------------- src/caffe/layers/mvn_layer.cu | 43 ++++++++++------------------------ 2 files changed, 25 insertions(+), 60 deletions(-) diff --git a/src/caffe/layers/mvn_layer.cpp b/src/caffe/layers/mvn_layer.cpp index 325691b18..61c2141ec 100644 --- a/src/caffe/layers/mvn_layer.cpp +++ b/src/caffe/layers/mvn_layer.cpp @@ -42,29 +42,21 @@ void MVNLayer::Forward_cpu(const vector*>& bottom, int dim = bottom[0]->count() / num; - if (this->layer_param_.mvn_param().normalize_variance()) { - // put the squares of bottom into temp_ - caffe_powx(bottom[0]->count(), bottom_data, Dtype(2), - temp_.mutable_cpu_data()); + // subtract mean + caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, + sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); // EX + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + mean_.cpu_data(), sum_multiplier_.cpu_data(), 0., + temp_.mutable_cpu_data()); + caffe_add(temp_.count(), bottom_data, temp_.cpu_data(), top_data); // X-EX - // computes variance using var(X) = E(X^2) - (EX)^2 - caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, - sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); // EX + if (this->layer_param_.mvn_param().normalize_variance()) { + // compute variance using var(X) = E((X-EX)^2) + caffe_powx(bottom[0]->count(), top_data, Dtype(2), + temp_.mutable_cpu_data()); // (X-EX)^2 caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, temp_.cpu_data(), sum_multiplier_.cpu_data(), 0., - variance_.mutable_cpu_data()); // E(X^2) - caffe_powx(mean_.count(), mean_.cpu_data(), Dtype(2), - temp_.mutable_cpu_data()); // (EX)^2 - caffe_sub(mean_.count(), variance_.cpu_data(), temp_.cpu_data(), - variance_.mutable_cpu_data()); // variance - - // do mean and variance normalization - // subtract mean - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., - mean_.cpu_data(), sum_multiplier_.cpu_data(), 0., - temp_.mutable_cpu_data()); - - caffe_add(temp_.count(), bottom_data, temp_.cpu_data(), top_data); + variance_.mutable_cpu_data()); // E((X-EX)^2) // normalize variance caffe_powx(variance_.count(), variance_.cpu_data(), Dtype(0.5), @@ -77,16 +69,6 @@ void MVNLayer::Forward_cpu(const vector*>& bottom, temp_.mutable_cpu_data()); caffe_div(temp_.count(), top_data, temp_.cpu_data(), top_data); - } else { - caffe_cpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, - sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); // EX - - // subtract mean - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., - mean_.cpu_data(), sum_multiplier_.cpu_data(), 0., - temp_.mutable_cpu_data()); - - caffe_add(temp_.count(), bottom_data, temp_.cpu_data(), top_data); } } diff --git a/src/caffe/layers/mvn_layer.cu b/src/caffe/layers/mvn_layer.cu index d86a2e73f..5cbb112de 100644 --- a/src/caffe/layers/mvn_layer.cu +++ b/src/caffe/layers/mvn_layer.cu @@ -20,29 +20,22 @@ void MVNLayer::Forward_gpu(const vector*>& bottom, int dim = bottom[0]->count() / num; - if (this->layer_param_.mvn_param().normalize_variance()) { - // put the squares of bottom into temp_ - caffe_gpu_powx(bottom[0]->count(), bottom_data, Dtype(2), - temp_.mutable_gpu_data()); + // subtract mean + caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, + sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); // EX + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + mean_.gpu_data(), sum_multiplier_.gpu_data(), 0., + temp_.mutable_gpu_data()); + caffe_gpu_add(temp_.count(), bottom_data, temp_.gpu_data(), + top_data); // X-EX - // computes variance using var(X) = E(X^2) - (EX)^2 - caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, - sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); // EX + if (this->layer_param_.mvn_param().normalize_variance()) { + // compute variance using var(X) = E((X-EX)^2) + caffe_gpu_powx(bottom[0]->count(), top_data, Dtype(2), + temp_.mutable_gpu_data()); // (X-EX)^2 caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, temp_.gpu_data(), sum_multiplier_.gpu_data(), 0., - variance_.mutable_gpu_data()); // E(X^2) - caffe_gpu_powx(mean_.count(), mean_.gpu_data(), Dtype(2), - temp_.mutable_gpu_data()); // (EX)^2 - caffe_gpu_sub(mean_.count(), variance_.gpu_data(), temp_.gpu_data(), - variance_.mutable_gpu_data()); // variance - - // do mean and variance normalization - // subtract mean - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., - mean_.gpu_data(), sum_multiplier_.gpu_data(), 0., - temp_.mutable_gpu_data()); - - caffe_gpu_add(temp_.count(), bottom_data, temp_.gpu_data(), top_data); + variance_.mutable_gpu_data()); // E((X-EX)^2) // normalize variance caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5), @@ -55,16 +48,6 @@ void MVNLayer::Forward_gpu(const vector*>& bottom, temp_.mutable_gpu_data()); caffe_gpu_div(temp_.count(), top_data, temp_.gpu_data(), top_data); - } else { - caffe_gpu_gemv(CblasNoTrans, num, dim, 1. / dim, bottom_data, - sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); // EX - - // subtract mean - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., - mean_.gpu_data(), sum_multiplier_.gpu_data(), 0., - temp_.mutable_gpu_data()); - - caffe_gpu_add(temp_.count(), bottom_data, temp_.gpu_data(), top_data); } } From e5990b3dafa2b95fae7b7bfaac4dcd309a20d151 Mon Sep 17 00:00:00 2001 From: Brian Chu Date: Tue, 13 Oct 2015 03:50:53 -0700 Subject: [PATCH 058/458] In 00-classification example, get correct class label index --- examples/00-classification.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/00-classification.ipynb b/examples/00-classification.ipynb index 46bbb193f..89b7dd34f 100644 --- a/examples/00-classification.ipynb +++ b/examples/00-classification.ipynb @@ -119,7 +119,7 @@ "source": [ "net.blobs['data'].data[...] = transformer.preprocess('data', caffe.io.load_image(caffe_root + 'examples/images/cat.jpg'))\n", "out = net.forward()\n", - "print(\"Predicted class is #{}.\".format(out['prob'].argmax()))" + "print(\"Predicted class is #{}.\".format(out['prob'][0].argmax()))" ] }, { From ec94055a6c5f0f86b88f98f1659cc9f317df2e3e Mon Sep 17 00:00:00 2001 From: Alessandro Giusti Date: Tue, 13 Oct 2015 14:30:45 +0200 Subject: [PATCH 059/458] Update store2hdf5.m Fixed a bug in two assertions (the condition input argument must be a scalar logical) --- matlab/hdf5creation/store2hdf5.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/matlab/hdf5creation/store2hdf5.m b/matlab/hdf5creation/store2hdf5.m index 0a0016dca..4e8c81d9d 100644 --- a/matlab/hdf5creation/store2hdf5.m +++ b/matlab/hdf5creation/store2hdf5.m @@ -39,8 +39,8 @@ info=h5info(filename); prev_dat_sz=info.Datasets(1).Dataspace.Size; prev_lab_sz=info.Datasets(2).Dataspace.Size; - assert(prev_dat_sz(1:end-1)==dat_dims(1:end-1), 'Data dimensions must match existing dimensions in dataset'); - assert(prev_lab_sz(1:end-1)==lab_dims(1:end-1), 'Label dimensions must match existing dimensions in dataset'); + assert(all(prev_dat_sz(1:end-1)==dat_dims(1:end-1)), 'Data dimensions must match existing dimensions in dataset'); + assert(all(prev_lab_sz(1:end-1)==lab_dims(1:end-1)), 'Label dimensions must match existing dimensions in dataset'); startloc.dat=[ones(1,length(dat_dims)-1), prev_dat_sz(end)+1]; startloc.lab=[ones(1,length(lab_dims)-1), prev_lab_sz(end)+1]; end From a8839dbcb3b16f8f5d3f8d17209a3c8c0142a51b Mon Sep 17 00:00:00 2001 From: Akash A Date: Tue, 13 Oct 2015 17:53:35 +0100 Subject: [PATCH 060/458] Add pyyaml as a requirement In getting the [web demo](http://caffe.berkeleyvision.org/gathered/examples/web_demo.html) started I get an `ImportError: No module named yaml` error when running `./scripts/download_model_binary.py models/bvlc_reference_caffenet`. --- examples/web_demo/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/web_demo/requirements.txt b/examples/web_demo/requirements.txt index 8fb1d2ccb..43e1b98cc 100644 --- a/examples/web_demo/requirements.txt +++ b/examples/web_demo/requirements.txt @@ -4,3 +4,4 @@ tornado numpy pandas pillow +pyyaml From ca4c6fb4e2106bbd3d6a2c09c34567558edde891 Mon Sep 17 00:00:00 2001 From: Brian Chu Date: Tue, 13 Oct 2015 13:24:42 -0700 Subject: [PATCH 061/458] Set CaffeNet train_val test mirroring to false --- models/bvlc_reference_caffenet/train_val.prototxt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/bvlc_reference_caffenet/train_val.prototxt b/models/bvlc_reference_caffenet/train_val.prototxt index c79472e09..e3e427968 100644 --- a/models/bvlc_reference_caffenet/train_val.prototxt +++ b/models/bvlc_reference_caffenet/train_val.prototxt @@ -45,7 +45,7 @@ layer { # mean_value: 104 # mean_value: 117 # mean_value: 123 -# mirror: true +# mirror: false # } data_param { source: "examples/imagenet/ilsvrc12_val_lmdb" From e0c34cedde6e0d12d420a51cea7a98df50069559 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 14 Oct 2015 12:00:14 +0900 Subject: [PATCH 062/458] Fixed drawing problems with repeated convolution --- python/caffe/draw.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index a002b60b5..f8bf5722a 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -82,11 +82,11 @@ def get_layer_label(layer, rankdir): separator, layer.type, separator, - layer.convolution_param.kernel_size, + layer.convolution_param.kernel_size[0] if len(layer.convolution_param.kernel_size._values) else 1, separator, - layer.convolution_param.stride, + layer.convolution_param.stride[0] if len(layer.convolution_param.stride._values) else 1, separator, - layer.convolution_param.pad) + layer.convolution_param.pad[0] if len(layer.convolution_param.pad._values) else 0) elif layer.type == 'Pooling': pooling_types_dict = get_pooling_types_dict() node_label = '"%s%s(%s %s)%skernel size: %d%sstride: %d%spad: %d"' %\ From 75e859a522fdbf78a2ea58393500af6103bcce56 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Thu, 15 Oct 2015 11:03:09 -0700 Subject: [PATCH 063/458] Allow old-style shape in blobproto_to_array Fixes #3199 Bug introduced in #3170 --- python/caffe/io.py | 11 ++++++++-- python/caffe/test/test_io.py | 41 ++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 python/caffe/test/test_io.py diff --git a/python/caffe/io.py b/python/caffe/io.py index 40b7ac1ed..11c84260f 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -20,11 +20,18 @@ def blobproto_to_array(blob, return_diff=False): Convert a blob proto to an array. In default, we will just return the data, unless return_diff is True, in which case we will return the diff. """ + # Read the data into an array if return_diff: - return np.array(blob.diff).reshape(*blob.shape.dim) + data = np.array(blob.diff) else: - return np.array(blob.data).reshape(*blob.shape.dim) + data = np.array(blob.data) + # Reshape the array + if blob.HasField('num') or blob.HasField('channels') or blob.HasField('height') or blob.HasField('width'): + # Use legacy 4D shape + return data.reshape(blob.num, blob.channels, blob.height, blob.width) + else: + return data.reshape(blob.shape.dim) def array_to_blobproto(arr, diff=None): """Converts a N-dimensional array to blob proto. If diff is given, also diff --git a/python/caffe/test/test_io.py b/python/caffe/test/test_io.py new file mode 100644 index 000000000..8c86ef75f --- /dev/null +++ b/python/caffe/test/test_io.py @@ -0,0 +1,41 @@ +import numpy as np +import unittest + +import caffe + +class TestBlobProtoToArray(unittest.TestCase): + + def test_old_format(self): + data = np.zeros((10,10)) + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + shape = (1,1,10,10) + blob.num, blob.channels, blob.height, blob.width = shape + + arr = caffe.io.blobproto_to_array(blob) + self.assertEqual(arr.shape, shape) + + def test_new_format(self): + data = np.zeros((10,10)) + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + blob.shape.dim.extend(list(data.shape)) + + arr = caffe.io.blobproto_to_array(blob) + self.assertEqual(arr.shape, data.shape) + + def test_no_shape(self): + data = np.zeros((10,10)) + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + + with self.assertRaises(ValueError): + caffe.io.blobproto_to_array(blob) + + def test_scalar(self): + data = np.ones((1)) * 123 + blob = caffe.proto.caffe_pb2.BlobProto() + blob.data.extend(list(data.flatten())) + + arr = caffe.io.blobproto_to_array(blob) + self.assertEqual(arr, 123) From ecac7ff6286642420eb5db723c382e74bf82c9d7 Mon Sep 17 00:00:00 2001 From: Simon Layton Date: Wed, 8 Jul 2015 15:35:55 -0400 Subject: [PATCH 064/458] Initial cuDNN v3 support --- include/caffe/vision_layers.hpp | 74 +++++++++- src/caffe/layer_factory.cpp | 43 +++++- src/caffe/layers/cudnn_conv_layer.cpp | 138 +++++++++++++++++- src/caffe/layers/cudnn_conv_layer.cu | 58 ++------ src/caffe/layers/cudnn_lcn_layer.cpp | 77 ++++++++++ src/caffe/layers/cudnn_lcn_layer.cu | 50 +++++++ src/caffe/layers/cudnn_lrn_layer.cpp | 57 ++++++++ src/caffe/layers/cudnn_lrn_layer.cu | 48 +++++++ src/caffe/layers/lrn_layer.cpp | 1 - src/caffe/proto/caffe.proto | 6 + src/caffe/test/test_lrn_layer.cpp | 196 ++++++++++++++++++++++++++ 11 files changed, 692 insertions(+), 56 deletions(-) create mode 100644 src/caffe/layers/cudnn_lcn_layer.cpp create mode 100644 src/caffe/layers/cudnn_lcn_layer.cu create mode 100644 src/caffe/layers/cudnn_lrn_layer.cpp create mode 100644 src/caffe/layers/cudnn_lrn_layer.cu diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 06bc0457e..237b05d6f 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -304,13 +304,24 @@ class CuDNNConvolutionLayer : public ConvolutionLayer { bool handles_setup_; cudnnHandle_t* handle_; cudaStream_t* stream_; + + // algorithms for forward and backwards convolutions + cudnnConvolutionFwdAlgo_t *fwd_algo_; + cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_; + cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_; + vector bottom_descs_, top_descs_; cudnnTensorDescriptor_t bias_desc_; cudnnFilterDescriptor_t filter_desc_; vector conv_descs_; int bottom_offset_, top_offset_, bias_offset_; - size_t workspaceSizeInBytes; - void *workspace; + + size_t *workspace_fwd_sizes_; + size_t *workspace_bwd_data_sizes_; + size_t *workspace_bwd_filter_sizes_; + size_t workspaceSizeInBytes; // size of underlying storage + void *workspaceData; // underlying storage + void **workspace; // aliases into workspaceData }; #endif @@ -442,6 +453,65 @@ class LRNLayer : public Layer { vector*> product_bottom_vec_; }; +#ifdef USE_CUDNN + +template +class CuDNNLRNLayer : public LRNLayer { + public: + explicit CuDNNLRNLayer(const LayerParameter& param) + : LRNLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNLRNLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnLRNDescriptor_t norm_desc_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + + int size_; + Dtype alpha_, beta_, k_; +}; + +template +class CuDNNLCNLayer : public LRNLayer { + public: + explicit CuDNNLCNLayer(const LayerParameter& param) + : LRNLayer(param), handles_setup_(false), tempDataSize(0), + tempData1(NULL), tempData2(NULL) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNLCNLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnLRNDescriptor_t norm_desc_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + + int size_, pre_pad_; + Dtype alpha_, beta_, k_; + + size_t tempDataSize; + void *tempData1, *tempData2; +}; + +#endif /** * @brief Pools the input image by taking the max, average, etc. within regions. diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 926c7d8ff..417ffe986 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -54,10 +54,8 @@ shared_ptr > GetPoolingLayer(const LayerParameter& param) { return shared_ptr >(new PoolingLayer(param)); #ifdef USE_CUDNN } else if (engine == PoolingParameter_Engine_CUDNN) { - PoolingParameter p_param = param.pooling_param(); - if (p_param.pad() || p_param.pad_h() || p_param.pad_w() || - param.top_size() > 1) { - LOG(INFO) << "CUDNN does not support padding or multiple tops. " + if (param.top_size() > 1) { + LOG(INFO) << "cuDNN does not support multiple tops. " << "Using Caffe's own pooling layer."; return shared_ptr >(new PoolingLayer(param)); } @@ -70,6 +68,43 @@ shared_ptr > GetPoolingLayer(const LayerParameter& param) { REGISTER_LAYER_CREATOR(Pooling, GetPoolingLayer); +// Get LRN layer according to engine +template +shared_ptr > GetLRNLayer(const LayerParameter& param) { + LRNParameter_Engine engine = param.lrn_param().engine(); + + if (engine == LRNParameter_Engine_DEFAULT) { +#ifdef USE_CUDNN + engine = LRNParameter_Engine_CUDNN; +#else + engine = LRNParameter_Engine_CAFFE; +#endif + } + + if (engine == LRNParameter_Engine_CAFFE) { + return shared_ptr >(new LRNLayer(param)); +#ifdef USE_CUDNN + } else if (engine == LRNParameter_Engine_CUDNN) { + LRNParameter lrn_param = param.lrn_param(); + + if (lrn_param.norm_region() ==LRNParameter_NormRegion_WITHIN_CHANNEL) { + return shared_ptr >(new CuDNNLCNLayer(param)); + } else { + // local size is too big to be handled through cuDNN + if (param.lrn_param().local_size() > CUDNN_LRN_MAX_N) { + return shared_ptr >(new LRNLayer(param)); + } else { + return shared_ptr >(new CuDNNLRNLayer(param)); + } + } +#endif + } else { + LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + } +} + +REGISTER_LAYER_CREATOR(LRN, GetLRNLayer); + // Get relu layer according to engine. template shared_ptr > GetReLULayer(const LayerParameter& param) { diff --git a/src/caffe/layers/cudnn_conv_layer.cpp b/src/caffe/layers/cudnn_conv_layer.cpp index 3514fe2ab..d7b1e0d65 100644 --- a/src/caffe/layers/cudnn_conv_layer.cpp +++ b/src/caffe/layers/cudnn_conv_layer.cpp @@ -1,4 +1,5 @@ #ifdef USE_CUDNN +#include #include #include "caffe/filler.hpp" @@ -24,13 +25,38 @@ void CuDNNConvolutionLayer::LayerSetUp( // Initialize CUDA streams and cuDNN. stream_ = new cudaStream_t[this->group_ * CUDNN_STREAMS_PER_GROUP]; handle_ = new cudnnHandle_t[this->group_ * CUDNN_STREAMS_PER_GROUP]; + + // Initialize algorithm arrays + fwd_algo_ = new cudnnConvolutionFwdAlgo_t[bottom.size()]; + bwd_filter_algo_= new cudnnConvolutionBwdFilterAlgo_t[bottom.size()]; + bwd_data_algo_ = new cudnnConvolutionBwdDataAlgo_t[bottom.size()]; + + // initialize size arrays + workspace_fwd_sizes_ = new size_t[bottom.size()]; + workspace_bwd_filter_sizes_ = new size_t[bottom.size()]; + workspace_bwd_data_sizes_ = new size_t[bottom.size()]; + + // workspace data workspaceSizeInBytes = 0; - workspace = NULL; + workspaceData = NULL; + workspace = new void*[this->group_ * CUDNN_STREAMS_PER_GROUP]; + + for (size_t i = 0; i < bottom.size(); ++i) { + // initialize all to default algorithms + fwd_algo_[i] = (cudnnConvolutionFwdAlgo_t)0; + bwd_filter_algo_[i] = (cudnnConvolutionBwdFilterAlgo_t)0; + bwd_data_algo_[i] = (cudnnConvolutionBwdDataAlgo_t)0; + // default algorithms don't require workspace + workspace_fwd_sizes_[i] = 0; + workspace_bwd_data_sizes_[i] = 0; + workspace_bwd_filter_sizes_[i] = 0; + } for (int g = 0; g < this->group_ * CUDNN_STREAMS_PER_GROUP; g++) { CUDA_CHECK(cudaStreamCreate(&stream_[g])); CUDNN_CHECK(cudnnCreate(&handle_[g])); CUDNN_CHECK(cudnnSetStream(handle_[g], stream_[g])); + workspace[g] = NULL; } // Set the indexing parameters. @@ -86,6 +112,10 @@ void CuDNNConvolutionLayer::Reshape( const int stride_h = stride_data[0]; const int stride_w = stride_data[1]; + // Specify workspace limit for kernels directly until we have a + // planning strategy and a rewrite of Caffe's GPU memory mangagement + size_t workspace_limit_bytes = 8*1024*1024; + for (int i = 0; i < bottom.size(); i++) { cudnn::setTensor4dDesc(&bottom_descs_[i], this->num_, @@ -98,7 +128,104 @@ void CuDNNConvolutionLayer::Reshape( this->num_output_ * this->out_spatial_dim_, this->out_spatial_dim_, width_out, 1); cudnn::setConvolutionDesc(&conv_descs_[i], bottom_descs_[i], - filter_desc_, pad_h, pad_w, stride_h, stride_w); + filter_desc_, pad_h, pad_w, + stride_h, stride_w); + + // choose forward and backward algorithms + workspace(s) + CUDNN_CHECK(cudnnGetConvolutionForwardAlgorithm(handle_[0], + bottom_descs_[i], + filter_desc_, + conv_descs_[i], + top_descs_[i], + CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, + workspace_limit_bytes, + &fwd_algo_[i])); + + CUDNN_CHECK(cudnnGetConvolutionForwardWorkspaceSize(handle_[0], + bottom_descs_[i], + filter_desc_, + conv_descs_[i], + top_descs_[i], + fwd_algo_[i], + &(workspace_fwd_sizes_[i]))); + + // choose backward algorithm for filter + CUDNN_CHECK(cudnnGetConvolutionBackwardFilterAlgorithm(handle_[0], + bottom_descs_[i], top_descs_[i], conv_descs_[i], filter_desc_, + CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT, + workspace_limit_bytes, &bwd_filter_algo_[i]) ); + + // get workspace for backwards filter algorithm + CUDNN_CHECK(cudnnGetConvolutionBackwardFilterWorkspaceSize(handle_[0], + bottom_descs_[i], top_descs_[i], conv_descs_[i], filter_desc_, + bwd_filter_algo_[i], &workspace_bwd_filter_sizes_[i])); + + // choose backward algo for data + CUDNN_CHECK(cudnnGetConvolutionBackwardDataAlgorithm(handle_[0], + filter_desc_, top_descs_[i], conv_descs_[i], bottom_descs_[i], + CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT, + workspace_limit_bytes, &bwd_data_algo_[i])); + + // get workspace size + CUDNN_CHECK(cudnnGetConvolutionBackwardDataWorkspaceSize(handle_[0], + filter_desc_, top_descs_[i], conv_descs_[i], bottom_descs_[i], + bwd_data_algo_[i], &workspace_bwd_data_sizes_[i]) ); + } + + // reduce over all workspace sizes to get a maximum to allocate / reallocate + size_t total_workspace_fwd = 0; + size_t total_workspace_bwd_data = 0; + size_t total_workspace_bwd_filter = 0; + + for (size_t i = 0; i < bottom.size(); i++) { + total_workspace_fwd = std::max(total_workspace_fwd, + workspace_fwd_sizes_[i]); + total_workspace_bwd_data = std::max(total_workspace_bwd_data, + workspace_bwd_data_sizes_[i]); + total_workspace_bwd_filter = std::max(total_workspace_bwd_filter, + workspace_bwd_filter_sizes_[i]); + } + // get max over all operations + size_t max_workspace = std::max(total_workspace_fwd, + total_workspace_bwd_data); + max_workspace = std::max(max_workspace, total_workspace_bwd_filter); + // ensure all groups have enough workspace + size_t total_max_workspace = max_workspace * + (this->group_ * CUDNN_STREAMS_PER_GROUP); + + // this is the total amount of storage needed over all groups + streams + if (total_max_workspace > workspaceSizeInBytes) { + LOG(INFO) << "Reallocating workspace storage: " << total_max_workspace; + workspaceSizeInBytes = total_max_workspace; + + // free the existing workspace and allocate a new (larger) one + cudaFree(this->workspaceData); + + cudaError_t err = cudaMalloc(&(this->workspaceData), workspaceSizeInBytes); + if (err != cudaSuccess) { + // force zero memory path + for (int i = 0; i < bottom.size(); i++) { + workspace_fwd_sizes_[i] = 0; + workspace_bwd_filter_sizes_[i] = 0; + workspace_bwd_data_sizes_[i] = 0; + fwd_algo_[i] = CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM; + bwd_filter_algo_[i] = CUDNN_CONVOLUTION_BWD_FILTER_ALGO_0; + bwd_data_algo_[i] = CUDNN_CONVOLUTION_BWD_DATA_ALGO_0; + } + + // NULL out all workspace pointers + for (int g = 0; g < (this->group_ * CUDNN_STREAMS_PER_GROUP); g++) { + workspace[g] = NULL; + } + // NULL out underlying data + workspaceData = NULL; + workspaceSizeInBytes = 0; + } + + // if we succeed in the allocation, set pointer aliases for workspaces + for (int g = 0; g < (this->group_ * CUDNN_STREAMS_PER_GROUP); g++) { + workspace[g] = reinterpret_cast(workspaceData) + g*max_workspace; + } } // Tensor descriptor for bias. @@ -128,8 +255,15 @@ CuDNNConvolutionLayer::~CuDNNConvolutionLayer() { cudnnDestroy(handle_[g]); } + cudaFree(workspaceData); delete [] stream_; delete [] handle_; + delete [] fwd_algo_; + delete [] bwd_filter_algo_; + delete [] bwd_data_algo_; + delete [] workspace_fwd_sizes_; + delete [] workspace_bwd_data_sizes_; + delete [] workspace_bwd_filter_sizes_; } INSTANTIATE_CLASS(CuDNNConvolutionLayer); diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index 691152021..e88e4dd32 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -14,11 +14,6 @@ __global__ void sync_conv_groups() { } template void CuDNNConvolutionLayer::Forward_gpu( const vector*>& bottom, const vector*>& top) { - const int* kernel_shape_data = this->kernel_shape_.cpu_data(); - const int kernel_h = kernel_shape_data[0]; - const int kernel_w = kernel_shape_data[1]; - const size_t workspace_limit_bytes = - kernel_h * kernel_w * this->channels_ * sizeof(int) + 1; const Dtype* weight = this->blobs_[0]->gpu_data(); for (int i = 0; i < bottom.size(); ++i) { const Dtype* bottom_data = bottom[i]->gpu_data(); @@ -26,52 +21,13 @@ void CuDNNConvolutionLayer::Forward_gpu( // Forward through cuDNN in parallel over groups. for (int g = 0; g < this->group_; g++) { - cudnnConvolutionFwdAlgo_t algo; - - // pick the convolution algorithm - // TODO(shelhamer) this should be done during reshape - // TODO(shelhamer) the choice of automatic or manual algorithm picking - // should be exposed in proto - CUDNN_CHECK(cudnnGetConvolutionForwardAlgorithm(handle_[g], - bottom_descs_[i], - filter_desc_, - conv_descs_[i], - top_descs_[i], - CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, - workspace_limit_bytes, // memoryLimitInBytes, - &algo)); - - // get minimum size of the workspace needed for the desired algorithm - size_t workspaceSizeInBytes_temp = 0; - - CUDNN_CHECK(cudnnGetConvolutionForwardWorkspaceSize(handle_[g], - bottom_descs_[i], - filter_desc_, - conv_descs_[i], - top_descs_[i], - algo, - &workspaceSizeInBytes_temp)); - - if (workspaceSizeInBytes_temp > workspaceSizeInBytes) { - workspaceSizeInBytes = workspaceSizeInBytes_temp; - // free the existing workspace and allocate a new (larger) one - cudaFree(this->workspace); - cudaError_t err = cudaMalloc(&(this->workspace), workspaceSizeInBytes); - if (err != cudaSuccess) { - // force zero memory path - algo = CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM; - workspace = NULL; - workspaceSizeInBytes = 0; - } - } - // Filters. CUDNN_CHECK(cudnnConvolutionForward(handle_[g], cudnn::dataType::one, bottom_descs_[i], bottom_data + bottom_offset_ * g, filter_desc_, weight + this->weight_offset_ * g, conv_descs_[i], - algo, workspace, workspaceSizeInBytes, + fwd_algo_[i], workspace[g], workspace_fwd_sizes_[i], cudnn::dataType::zero, top_descs_[i], top_data + top_offset_ * g)); @@ -101,10 +57,12 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, if (this->param_propagate_down_[0]) { weight = this->blobs_[0]->gpu_data(); weight_diff = this->blobs_[0]->mutable_gpu_diff(); + caffe_gpu_set(this->blobs_[0]->count(), Dtype(0), weight_diff); } Dtype* bias_diff = NULL; if (this->bias_term_ && this->param_propagate_down_[1]) { bias_diff = this->blobs_[1]->mutable_gpu_diff(); + caffe_gpu_set(this->blobs_[1]->count(), Dtype(0), bias_diff); } for (int i = 0; i < top.size(); ++i) { const Dtype* top_diff = top[i]->gpu_diff(); @@ -122,11 +80,14 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, // Gradient w.r.t. weights. if (this->param_propagate_down_[0]) { const Dtype* bottom_data = bottom[i]->gpu_data(); - CUDNN_CHECK(cudnnConvolutionBackwardFilter(handle_[1*this->group_ + g], + CUDNN_CHECK(cudnnConvolutionBackwardFilter_v3( + handle_[1*this->group_ + g], cudnn::dataType::one, bottom_descs_[i], bottom_data + bottom_offset_ * g, top_descs_[i], top_diff + top_offset_ * g, conv_descs_[i], + bwd_filter_algo_[i], workspace[1*this->group_ + g], + workspace_bwd_filter_sizes_[i], cudnn::dataType::one, filter_desc_, weight_diff + this->weight_offset_ * g)); } @@ -137,11 +98,14 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, weight = this->blobs_[0]->gpu_data(); } Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); - CUDNN_CHECK(cudnnConvolutionBackwardData(handle_[2*this->group_ + g], + CUDNN_CHECK(cudnnConvolutionBackwardData_v3( + handle_[2*this->group_ + g], cudnn::dataType::one, filter_desc_, weight + this->weight_offset_ * g, top_descs_[i], top_diff + top_offset_ * g, conv_descs_[i], + bwd_data_algo_[i], workspace[2*this->group_ + g], + workspace_bwd_data_sizes_[i], cudnn::dataType::zero, bottom_descs_[i], bottom_diff + bottom_offset_ * g)); } diff --git a/src/caffe/layers/cudnn_lcn_layer.cpp b/src/caffe/layers/cudnn_lcn_layer.cpp new file mode 100644 index 000000000..866d810b9 --- /dev/null +++ b/src/caffe/layers/cudnn_lcn_layer.cpp @@ -0,0 +1,77 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void CuDNNLCNLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + LRNLayer::LayerSetUp(bottom, top); + + CUDNN_CHECK(cudnnCreate(&handle_)); + CUDNN_CHECK(cudnnCreateLRNDescriptor(&norm_desc_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + + // create a LRN handle + handles_setup_ = true; + + size_ = this->layer_param().lrn_param().local_size(); + pre_pad_ = (size_ - 1) / 2; + alpha_ = this->layer_param().lrn_param().alpha(); + beta_ = this->layer_param().lrn_param().beta(); + k_ = this->layer_param().lrn_param().k(); +} + +template +void CuDNNLCNLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + LRNLayer::Reshape(bottom, top); + cudnn::setTensor4dDesc(&bottom_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + cudnn::setTensor4dDesc(&top_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + CUDNN_CHECK(cudnnSetLRNDescriptor(norm_desc_, size_, alpha_, beta_, k_)); + + // allocate / reallocate tempData buffers + size_t totalSizeInBytes = sizeof(Dtype)*bottom[0]->num()* \ + this->channels_*this->height_*this->width_; + + if (totalSizeInBytes > tempDataSize) { + tempDataSize = totalSizeInBytes; + + cudaFree(tempData1); + cudaFree(tempData2); + + // allocate new buffers + CUDA_CHECK(cudaMalloc(&tempData1, totalSizeInBytes)); + CUDA_CHECK(cudaMalloc(&tempData2, totalSizeInBytes)); + } +} + +template +CuDNNLCNLayer::~CuDNNLCNLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(bottom_desc_); + cudnnDestroyTensorDescriptor(top_desc_); + + // destroy LRN handle + cudnnDestroy(handle_); + + // free temp buffers + cudaFree(tempData1); + cudaFree(tempData2); +} + +INSTANTIATE_CLASS(CuDNNLCNLayer); + +} // namespace caffe +#endif diff --git a/src/caffe/layers/cudnn_lcn_layer.cu b/src/caffe/layers/cudnn_lcn_layer.cu new file mode 100644 index 000000000..c07ade720 --- /dev/null +++ b/src/caffe/layers/cudnn_lcn_layer.cu @@ -0,0 +1,50 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void CuDNNLCNLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + + CUDNN_CHECK(cudnnDivisiveNormalizationForward( + handle_, norm_desc_, CUDNN_DIVNORM_PRECOMPUTED_MEANS, + cudnn::dataType::one, + bottom_desc_, bottom_data, + NULL, // srcMeansData + this->tempData1, this->tempData2, + cudnn::dataType::zero, + top_desc_, top_data) ); +} + +template +void CuDNNLCNLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + CUDNN_CHECK(cudnnDivisiveNormalizationBackward( + handle_, norm_desc_, CUDNN_DIVNORM_PRECOMPUTED_MEANS, + cudnn::dataType::one, + bottom_desc_, bottom_data, + NULL, top_diff, // NULL - srcMeansData + this->tempData1, this->tempData2, + cudnn::dataType::zero, + bottom_desc_, bottom_diff, + NULL) ); +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNLCNLayer); + +} // namespace caffe +#endif diff --git a/src/caffe/layers/cudnn_lrn_layer.cpp b/src/caffe/layers/cudnn_lrn_layer.cpp new file mode 100644 index 000000000..6e9921490 --- /dev/null +++ b/src/caffe/layers/cudnn_lrn_layer.cpp @@ -0,0 +1,57 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void CuDNNLRNLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + LRNLayer::LayerSetUp(bottom, top); + + CUDNN_CHECK(cudnnCreate(&handle_)); + CUDNN_CHECK(cudnnCreateLRNDescriptor(&norm_desc_)); + cudnn::createTensor4dDesc(&bottom_desc_); + cudnn::createTensor4dDesc(&top_desc_); + + // create a LRN handle + handles_setup_ = true; + + size_ = this->layer_param().lrn_param().local_size(); + alpha_ = this->layer_param().lrn_param().alpha(); + beta_ = this->layer_param().lrn_param().beta(); + k_ = this->layer_param().lrn_param().k(); +} + +template +void CuDNNLRNLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + LRNLayer::Reshape(bottom, top); + cudnn::setTensor4dDesc(&bottom_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + cudnn::setTensor4dDesc(&top_desc_, bottom[0]->num(), + this->channels_, this->height_, this->width_); + CUDNN_CHECK(cudnnSetLRNDescriptor(norm_desc_, size_, alpha_, beta_, k_)); +} + +template +CuDNNLRNLayer::~CuDNNLRNLayer() { + // Check that handles have been setup before destroying. + if (!handles_setup_) { return; } + + cudnnDestroyTensorDescriptor(bottom_desc_); + cudnnDestroyTensorDescriptor(top_desc_); + + // destroy LRN handle + cudnnDestroy(handle_); +} + +INSTANTIATE_CLASS(CuDNNLRNLayer); + +} // namespace caffe +#endif diff --git a/src/caffe/layers/cudnn_lrn_layer.cu b/src/caffe/layers/cudnn_lrn_layer.cu new file mode 100644 index 000000000..f99230330 --- /dev/null +++ b/src/caffe/layers/cudnn_lrn_layer.cu @@ -0,0 +1,48 @@ +#ifdef USE_CUDNN +#include + +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/util/math_functions.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void CuDNNLRNLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + + CUDNN_CHECK(cudnnLRNCrossChannelForward( + handle_, norm_desc_, CUDNN_LRN_CROSS_CHANNEL_DIM1, + cudnn::dataType::one, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + top_desc_, top_data) ); +} + +template +void CuDNNLRNLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + + CUDNN_CHECK(cudnnLRNCrossChannelBackward( + handle_, norm_desc_, CUDNN_LRN_CROSS_CHANNEL_DIM1, + cudnn::dataType::one, + top_desc_, top_data, + top_desc_, top_diff, + bottom_desc_, bottom_data, + cudnn::dataType::zero, + bottom_desc_, bottom_diff) ); +} + +INSTANTIATE_LAYER_GPU_FUNCS(CuDNNLRNLayer); + +}; // namespace caffe + +#endif diff --git a/src/caffe/layers/lrn_layer.cpp b/src/caffe/layers/lrn_layer.cpp index 36c1ace4c..d18a04ef5 100644 --- a/src/caffe/layers/lrn_layer.cpp +++ b/src/caffe/layers/lrn_layer.cpp @@ -254,6 +254,5 @@ STUB_GPU_BACKWARD(LRNLayer, CrossChannelBackward); #endif INSTANTIATE_CLASS(LRNLayer); -REGISTER_LAYER_CLASS(LRN); } // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index f52c941b0..af01b4721 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -721,6 +721,12 @@ message LRNParameter { } optional NormRegion norm_region = 4 [default = ACROSS_CHANNELS]; optional float k = 5 [default = 1.]; + enum Engine { + DEFAULT = 0; + CAFFE = 1; + CUDNN = 2; + } + optional Engine engine = 6 [default = DEFAULT]; } message MemoryDataParameter { diff --git a/src/caffe/test/test_lrn_layer.cpp b/src/caffe/test/test_lrn_layer.cpp index c4e2f8ea7..78cf2d9df 100644 --- a/src/caffe/test/test_lrn_layer.cpp +++ b/src/caffe/test/test_lrn_layer.cpp @@ -246,5 +246,201 @@ TYPED_TEST(LRNLayerTest, TestGradientWithinChannel) { this->blob_top_vec_); } +#ifdef USE_CUDNN +template +class CuDNNLRNLayerTest : public GPUDeviceTest { + protected: + CuDNNLRNLayerTest() + : epsilon_(Dtype(1e-5)), + blob_bottom_(new Blob()), + blob_top_(new Blob()) {} + virtual void SetUp() { + Caffe::set_random_seed(1701); + blob_bottom_->Reshape(2, 7, 3, 3); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~CuDNNLRNLayerTest() { delete blob_bottom_; delete blob_top_; } + void ReferenceLRNForward(const Blob& blob_bottom, + const LayerParameter& layer_param, Blob* blob_top); + + Dtype epsilon_; + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +template +void CuDNNLRNLayerTest::ReferenceLRNForward( + const Blob& blob_bottom, const LayerParameter& layer_param, + Blob* blob_top) { + typedef TypeParam Dtype; + blob_top->Reshape(blob_bottom.num(), blob_bottom.channels(), + blob_bottom.height(), blob_bottom.width()); + Dtype* top_data = blob_top->mutable_cpu_data(); + LRNParameter lrn_param = layer_param.lrn_param(); + Dtype alpha = lrn_param.alpha(); + Dtype beta = lrn_param.beta(); + int size = lrn_param.local_size(); + switch (lrn_param.norm_region()) { + case LRNParameter_NormRegion_ACROSS_CHANNELS: + for (int n = 0; n < blob_bottom.num(); ++n) { + for (int c = 0; c < blob_bottom.channels(); ++c) { + for (int h = 0; h < blob_bottom.height(); ++h) { + for (int w = 0; w < blob_bottom.width(); ++w) { + int c_start = c - (size - 1) / 2; + int c_end = min(c_start + size, blob_bottom.channels()); + c_start = max(c_start, 0); + Dtype scale = 1.; + for (int i = c_start; i < c_end; ++i) { + Dtype value = blob_bottom.data_at(n, i, h, w); + scale += value * value * alpha / size; + } + *(top_data + blob_top->offset(n, c, h, w)) = + blob_bottom.data_at(n, c, h, w) / pow(scale, beta); + } + } + } + } + break; + case LRNParameter_NormRegion_WITHIN_CHANNEL: + for (int n = 0; n < blob_bottom.num(); ++n) { + for (int c = 0; c < blob_bottom.channels(); ++c) { + for (int h = 0; h < blob_bottom.height(); ++h) { + int h_start = h - (size - 1) / 2; + int h_end = min(h_start + size, blob_bottom.height()); + h_start = max(h_start, 0); + for (int w = 0; w < blob_bottom.width(); ++w) { + Dtype scale = 1.; + int w_start = w - (size - 1) / 2; + int w_end = min(w_start + size, blob_bottom.width()); + w_start = max(w_start, 0); + for (int nh = h_start; nh < h_end; ++nh) { + for (int nw = w_start; nw < w_end; ++nw) { + Dtype value = blob_bottom.data_at(n, c, nh, nw); + scale += value * value * alpha / (size * size); + } + } + *(top_data + blob_top->offset(n, c, h, w)) = + blob_bottom.data_at(n, c, h, w) / pow(scale, beta); + } + } + } + } + break; + default: + LOG(FATAL) << "Unknown normalization region."; + } +} + +TYPED_TEST_CASE(CuDNNLRNLayerTest, TestDtypes); + +TYPED_TEST(CuDNNLRNLayerTest, TestForwardAcrossChannelsCuDNN) { + // typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CuDNNLRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(CuDNNLRNLayerTest, TestForwardAcrossChannelsLargeRegionCuDNN) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_local_size(15); + CuDNNLRNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(CuDNNLRNLayerTest, TestGradientAcrossChannelsCuDNN) { + typedef TypeParam Dtype; + LayerParameter layer_param; + CuDNNLRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNLRNLayerTest, TestForwardWithinChannel) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + CuDNNLCNLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + Blob top_reference; + this->ReferenceLRNForward(*(this->blob_bottom_), layer_param, + &top_reference); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(this->blob_top_->cpu_data()[i], top_reference.cpu_data()[i], + this->epsilon_); + } +} + +TYPED_TEST(CuDNNLRNLayerTest, TestGradientWithinChannel) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_norm_region( + LRNParameter_NormRegion_WITHIN_CHANNEL); + layer_param.mutable_lrn_param()->set_local_size(3); + CuDNNLCNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CuDNNLRNLayerTest, TestGradientAcrossChannelsLargeRegionCuDNN) { + typedef TypeParam Dtype; + LayerParameter layer_param; + layer_param.mutable_lrn_param()->set_local_size(15); + CuDNNLRNLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->count(); ++i) { + this->blob_top_->mutable_cpu_diff()[i] = 1.; + } + vector propagate_down(this->blob_bottom_vec_.size(), true); + layer.Backward(this->blob_top_vec_, propagate_down, + this->blob_bottom_vec_); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +#endif } // namespace caffe From 1e75fb922f968a92071232c7e6b3332475141d47 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 16 Oct 2015 16:33:06 -0700 Subject: [PATCH 065/458] rearrange upgrade helpers order from general helpers to specific upgrades in chronological order. --- include/caffe/util/upgrade_proto.hpp | 18 ++-- src/caffe/util/upgrade_proto.cpp | 122 +++++++++++++-------------- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/include/caffe/util/upgrade_proto.hpp b/include/caffe/util/upgrade_proto.hpp index c1f21a0d4..6a1418434 100644 --- a/include/caffe/util/upgrade_proto.hpp +++ b/include/caffe/util/upgrade_proto.hpp @@ -10,6 +10,15 @@ namespace caffe { // Return true iff the net is not the current version. bool NetNeedsUpgrade(const NetParameter& net_param); +// Check for deprecations and upgrade the NetParameter as needed. +bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param); + +// Read parameters from a file into a NetParameter proto message. +void ReadNetParamsFromTextFileOrDie(const string& param_file, + NetParameter* param); +void ReadNetParamsFromBinaryFileOrDie(const string& param_file, + NetParameter* param); + // Return true iff any layer contains parameters specified using // deprecated V0LayerParameter. bool NetNeedsV0ToV1Upgrade(const NetParameter& net_param); @@ -50,15 +59,6 @@ bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param, const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type); -// Check for deprecations and upgrade the NetParameter as needed. -bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param); - -// Read parameters from a file into a NetParameter proto message. -void ReadNetParamsFromTextFileOrDie(const string& param_file, - NetParameter* param); -void ReadNetParamsFromBinaryFileOrDie(const string& param_file, - NetParameter* param); - } // namespace caffe #endif // CAFFE_UTIL_UPGRADE_PROTO_H_ diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index ac379e50f..6eae9fec0 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -16,6 +16,67 @@ bool NetNeedsUpgrade(const NetParameter& net_param) { return NetNeedsV0ToV1Upgrade(net_param) || NetNeedsV1ToV2Upgrade(net_param); } +bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { + bool success = true; + if (NetNeedsV0ToV1Upgrade(*param)) { + // NetParameter was specified using the old style (V0LayerParameter); try to + // upgrade it. + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "V0LayerParameter: " << param_file; + NetParameter original_param(*param); + if (!UpgradeV0Net(original_param, param)) { + success = false; + LOG(ERROR) << "Warning: had one or more problems upgrading " + << "V0NetParameter to NetParameter (see above); continuing anyway."; + } else { + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "V0LayerParameter"; + } + LOG(WARNING) << "Note that future Caffe releases will not support " + << "V0NetParameter; use ./build/tools/upgrade_net_proto_text for " + << "prototxt and ./build/tools/upgrade_net_proto_binary for model " + << "weights upgrade this and any other net protos to the new format."; + } + // NetParameter uses old style data transformation fields; try to upgrade it. + if (NetNeedsDataUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "transformation parameters: " << param_file; + UpgradeNetDataTransformation(param); + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "data transformation parameters."; + LOG(WARNING) << "Note that future Caffe releases will only support " + << "transform_param messages for transformation fields."; + } + if (NetNeedsV1ToV2Upgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "V1LayerParameter: " << param_file; + NetParameter original_param(*param); + if (!UpgradeV1Net(original_param, param)) { + success = false; + LOG(ERROR) << "Warning: had one or more problems upgrading " + << "V1LayerParameter (see above); continuing anyway."; + } else { + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "V1LayerParameter"; + } + } + return success; +} + +void ReadNetParamsFromTextFileOrDie(const string& param_file, + NetParameter* param) { + CHECK(ReadProtoFromTextFile(param_file, param)) + << "Failed to parse NetParameter file: " << param_file; + UpgradeNetAsNeeded(param_file, param); +} + +void ReadNetParamsFromBinaryFileOrDie(const string& param_file, + NetParameter* param) { + CHECK(ReadProtoFromBinaryFile(param_file, param)) + << "Failed to parse NetParameter file: " << param_file; + UpgradeNetAsNeeded(param_file, param); +} + bool NetNeedsV0ToV1Upgrade(const NetParameter& net_param) { for (int i = 0; i < net_param.layers_size(); ++i) { if (net_param.layers(i).has_layer()) { @@ -583,53 +644,6 @@ void UpgradeNetDataTransformation(NetParameter* net_param) { } } -bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { - bool success = true; - if (NetNeedsV0ToV1Upgrade(*param)) { - // NetParameter was specified using the old style (V0LayerParameter); try to - // upgrade it. - LOG(INFO) << "Attempting to upgrade input file specified using deprecated " - << "V0LayerParameter: " << param_file; - NetParameter original_param(*param); - if (!UpgradeV0Net(original_param, param)) { - success = false; - LOG(ERROR) << "Warning: had one or more problems upgrading " - << "V0NetParameter to NetParameter (see above); continuing anyway."; - } else { - LOG(INFO) << "Successfully upgraded file specified using deprecated " - << "V0LayerParameter"; - } - LOG(WARNING) << "Note that future Caffe releases will not support " - << "V0NetParameter; use ./build/tools/upgrade_net_proto_text for " - << "prototxt and ./build/tools/upgrade_net_proto_binary for model " - << "weights upgrade this and any other net protos to the new format."; - } - // NetParameter uses old style data transformation fields; try to upgrade it. - if (NetNeedsDataUpgrade(*param)) { - LOG(INFO) << "Attempting to upgrade input file specified using deprecated " - << "transformation parameters: " << param_file; - UpgradeNetDataTransformation(param); - LOG(INFO) << "Successfully upgraded file specified using deprecated " - << "data transformation parameters."; - LOG(WARNING) << "Note that future Caffe releases will only support " - << "transform_param messages for transformation fields."; - } - if (NetNeedsV1ToV2Upgrade(*param)) { - LOG(INFO) << "Attempting to upgrade input file specified using deprecated " - << "V1LayerParameter: " << param_file; - NetParameter original_param(*param); - if (!UpgradeV1Net(original_param, param)) { - success = false; - LOG(ERROR) << "Warning: had one or more problems upgrading " - << "V1LayerParameter (see above); continuing anyway."; - } else { - LOG(INFO) << "Successfully upgraded file specified using deprecated " - << "V1LayerParameter"; - } - } - return success; -} - bool UpgradeV1Net(const NetParameter& v1_net_param, NetParameter* net_param) { bool is_fully_compatible = true; if (v1_net_param.layer_size() > 0) { @@ -923,18 +937,4 @@ const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) { } } -void ReadNetParamsFromTextFileOrDie(const string& param_file, - NetParameter* param) { - CHECK(ReadProtoFromTextFile(param_file, param)) - << "Failed to parse NetParameter file: " << param_file; - UpgradeNetAsNeeded(param_file, param); -} - -void ReadNetParamsFromBinaryFileOrDie(const string& param_file, - NetParameter* param) { - CHECK(ReadProtoFromBinaryFile(param_file, param)) - << "Failed to parse NetParameter file: " << param_file; - UpgradeNetAsNeeded(param_file, param); -} - } // namespace caffe From e5a74b282efb2293a05d91635a5b26837adc2aa3 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Fri, 16 Oct 2015 21:19:59 -0700 Subject: [PATCH 066/458] Test reading and writing mean proto in matlab --- matlab/+caffe/+test/test_io.m | 18 ++++++++++++++++++ matlab/+caffe/run_tests.m | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 matlab/+caffe/+test/test_io.m diff --git a/matlab/+caffe/+test/test_io.m b/matlab/+caffe/+test/test_io.m new file mode 100644 index 000000000..2c34bd1e9 --- /dev/null +++ b/matlab/+caffe/+test/test_io.m @@ -0,0 +1,18 @@ +classdef test_io < matlab.unittest.TestCase + methods (Test) + function test_read_write_mean(self) + % randomly generate mean data + width = 200; + height = 300; + channels = 3; + mean_data_write = 255 * rand(width, height, channels, 'single'); + % write mean data to binary proto + mean_proto_file = tempname(); + caffe.io.write_mean(mean_data_write, mean_proto_file); + % read mean data from saved binary proto and test whether they are equal + mean_data_read = caffe.io.read_mean(mean_proto_file); + self.verifyEqual(mean_data_write, mean_data_read) + delete(mean_proto_file); + end + end +end diff --git a/matlab/+caffe/run_tests.m b/matlab/+caffe/run_tests.m index 93896855a..6dbf6b231 100644 --- a/matlab/+caffe/run_tests.m +++ b/matlab/+caffe/run_tests.m @@ -11,7 +11,8 @@ % put all test cases here results = [... run(caffe.test.test_net) ... - run(caffe.test.test_solver) ]; + run(caffe.test.test_solver) ... + run(caffe.test.test_io) ]; % reset caffe after testing caffe.reset_all(); From b822a702d19d4fbebbc91198a991f91c34e60650 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Thu, 24 Sep 2015 17:11:07 -0700 Subject: [PATCH 067/458] Split solver code into one file per solver class --- include/caffe/sgd_solvers.hpp | 142 +++ include/caffe/solver.hpp | 158 +--- python/caffe/_caffe.cpp | 1 + src/caffe/solver.cpp | 811 ------------------ src/caffe/solver_factory.cpp | 32 + src/caffe/solvers/adadelta_solver.cpp | 155 ++++ src/caffe/solvers/adagrad_solver.cpp | 88 ++ src/caffe/solvers/adam_solver.cpp | 112 +++ src/caffe/solvers/nesterov_solver.cpp | 70 ++ src/caffe/solvers/rmsprop_solver.cpp | 84 ++ src/caffe/solvers/sgd_solver.cpp | 347 ++++++++ src/caffe/test/test_gradient_based_solver.cpp | 2 +- src/caffe/test/test_solver.cpp | 1 + 13 files changed, 1038 insertions(+), 965 deletions(-) create mode 100644 include/caffe/sgd_solvers.hpp create mode 100644 src/caffe/solver_factory.cpp create mode 100644 src/caffe/solvers/adadelta_solver.cpp create mode 100644 src/caffe/solvers/adagrad_solver.cpp create mode 100644 src/caffe/solvers/adam_solver.cpp create mode 100644 src/caffe/solvers/nesterov_solver.cpp create mode 100644 src/caffe/solvers/rmsprop_solver.cpp create mode 100644 src/caffe/solvers/sgd_solver.cpp diff --git a/include/caffe/sgd_solvers.hpp b/include/caffe/sgd_solvers.hpp new file mode 100644 index 000000000..6bf1d70c7 --- /dev/null +++ b/include/caffe/sgd_solvers.hpp @@ -0,0 +1,142 @@ +#ifndef CAFFE_SGD_SOLVERS_HPP_ +#define CAFFE_SGD_SOLVERS_HPP_ + +#include +#include + +#include "caffe/solver.hpp" + +namespace caffe { + +/** + * @brief Optimizes the parameters of a Net using + * stochastic gradient descent (SGD) with momentum. + */ +template +class SGDSolver : public Solver { + public: + explicit SGDSolver(const SolverParameter& param) + : Solver(param) { PreSolve(); } + explicit SGDSolver(const string& param_file) + : Solver(param_file) { PreSolve(); } + + const vector > >& history() { return history_; } + + protected: + void PreSolve(); + Dtype GetLearningRate(); + virtual void ApplyUpdate(); + virtual void Normalize(int param_id); + virtual void Regularize(int param_id); + virtual void ComputeUpdateValue(int param_id, Dtype rate); + virtual void ClipGradients(); + virtual void SnapshotSolverState(const string& model_filename); + virtual void SnapshotSolverStateToBinaryProto(const string& model_filename); + virtual void SnapshotSolverStateToHDF5(const string& model_filename); + virtual void RestoreSolverStateFromHDF5(const string& state_file); + virtual void RestoreSolverStateFromBinaryProto(const string& state_file); + // history maintains the historical momentum data. + // update maintains update related data and is not needed in snapshots. + // temp maintains other information that might be needed in computation + // of gradients/updates and is not needed in snapshots + vector > > history_, update_, temp_; + + DISABLE_COPY_AND_ASSIGN(SGDSolver); +}; + +template +class NesterovSolver : public SGDSolver { + public: + explicit NesterovSolver(const SolverParameter& param) + : SGDSolver(param) {} + explicit NesterovSolver(const string& param_file) + : SGDSolver(param_file) {} + + protected: + virtual void ComputeUpdateValue(int param_id, Dtype rate); + + DISABLE_COPY_AND_ASSIGN(NesterovSolver); +}; + +template +class AdaGradSolver : public SGDSolver { + public: + explicit AdaGradSolver(const SolverParameter& param) + : SGDSolver(param) { constructor_sanity_check(); } + explicit AdaGradSolver(const string& param_file) + : SGDSolver(param_file) { constructor_sanity_check(); } + + protected: + virtual void ComputeUpdateValue(int param_id, Dtype rate); + void constructor_sanity_check() { + CHECK_EQ(0, this->param_.momentum()) + << "Momentum cannot be used with AdaGrad."; + } + + DISABLE_COPY_AND_ASSIGN(AdaGradSolver); +}; + + +template +class RMSPropSolver : public SGDSolver { + public: + explicit RMSPropSolver(const SolverParameter& param) + : SGDSolver(param) { constructor_sanity_check(); } + explicit RMSPropSolver(const string& param_file) + : SGDSolver(param_file) { constructor_sanity_check(); } + + protected: + virtual void ComputeUpdateValue(int param_id, Dtype rate); + void constructor_sanity_check() { + CHECK_EQ(0, this->param_.momentum()) + << "Momentum cannot be used with RMSProp."; + CHECK_GE(this->param_.rms_decay(), 0) + << "rms_decay should lie between 0 and 1."; + CHECK_LT(this->param_.rms_decay(), 1) + << "rms_decay should lie between 0 and 1."; + } + + DISABLE_COPY_AND_ASSIGN(RMSPropSolver); +}; + +template +class AdaDeltaSolver : public SGDSolver { + public: + explicit AdaDeltaSolver(const SolverParameter& param) + : SGDSolver(param) { AdaDeltaPreSolve(); } + explicit AdaDeltaSolver(const string& param_file) + : SGDSolver(param_file) { AdaDeltaPreSolve(); } + + protected: + void AdaDeltaPreSolve(); + virtual void ComputeUpdateValue(int param_id, Dtype rate); + + DISABLE_COPY_AND_ASSIGN(AdaDeltaSolver); +}; + +/** + * @brief AdamSolver, an algorithm for first-order gradient-based optimization + * of stochastic objective functions, based on adaptive estimates of + * lower-order moments. Described in [1]. + * + * [1] D. P. Kingma and J. L. Ba, "ADAM: A Method for Stochastic Optimization." + * arXiv preprint arXiv:1412.6980v8 (2014). + */ +template +class AdamSolver : public SGDSolver { + public: + explicit AdamSolver(const SolverParameter& param) + : SGDSolver(param) { AdamPreSolve();} + explicit AdamSolver(const string& param_file) + : SGDSolver(param_file) { AdamPreSolve(); } + + protected: + void AdamPreSolve(); + virtual void ComputeUpdateValue(int param_id, Dtype rate); + + DISABLE_COPY_AND_ASSIGN(AdamSolver); +}; + +} // namespace caffe + +#endif // CAFFE_SGD_SOLVERS_HPP_ diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index 2ecf539ba..a045ccf25 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -1,5 +1,5 @@ -#ifndef CAFFE_OPTIMIZATION_SOLVER_HPP_ -#define CAFFE_OPTIMIZATION_SOLVER_HPP_ +#ifndef CAFFE_SOLVER_HPP_ +#define CAFFE_SOLVER_HPP_ #include #include #include @@ -148,158 +148,10 @@ class WorkerSolver : public Solver { } }; -/** - * @brief Optimizes the parameters of a Net using - * stochastic gradient descent (SGD) with momentum. - */ -template -class SGDSolver : public Solver { - public: - explicit SGDSolver(const SolverParameter& param) - : Solver(param) { PreSolve(); } - explicit SGDSolver(const string& param_file) - : Solver(param_file) { PreSolve(); } - - const vector > >& history() { return history_; } - - protected: - void PreSolve(); - Dtype GetLearningRate(); - virtual void ApplyUpdate(); - virtual void Normalize(int param_id); - virtual void Regularize(int param_id); - virtual void ComputeUpdateValue(int param_id, Dtype rate); - virtual void ClipGradients(); - virtual void SnapshotSolverState(const string& model_filename); - virtual void SnapshotSolverStateToBinaryProto(const string& model_filename); - virtual void SnapshotSolverStateToHDF5(const string& model_filename); - virtual void RestoreSolverStateFromHDF5(const string& state_file); - virtual void RestoreSolverStateFromBinaryProto(const string& state_file); - // history maintains the historical momentum data. - // update maintains update related data and is not needed in snapshots. - // temp maintains other information that might be needed in computation - // of gradients/updates and is not needed in snapshots - vector > > history_, update_, temp_; - - DISABLE_COPY_AND_ASSIGN(SGDSolver); -}; - +// The solver factory function template -class NesterovSolver : public SGDSolver { - public: - explicit NesterovSolver(const SolverParameter& param) - : SGDSolver(param) {} - explicit NesterovSolver(const string& param_file) - : SGDSolver(param_file) {} - - protected: - virtual void ComputeUpdateValue(int param_id, Dtype rate); - - DISABLE_COPY_AND_ASSIGN(NesterovSolver); -}; - -template -class AdaGradSolver : public SGDSolver { - public: - explicit AdaGradSolver(const SolverParameter& param) - : SGDSolver(param) { constructor_sanity_check(); } - explicit AdaGradSolver(const string& param_file) - : SGDSolver(param_file) { constructor_sanity_check(); } - - protected: - virtual void ComputeUpdateValue(int param_id, Dtype rate); - void constructor_sanity_check() { - CHECK_EQ(0, this->param_.momentum()) - << "Momentum cannot be used with AdaGrad."; - } - - DISABLE_COPY_AND_ASSIGN(AdaGradSolver); -}; - - -template -class RMSPropSolver : public SGDSolver { - public: - explicit RMSPropSolver(const SolverParameter& param) - : SGDSolver(param) { constructor_sanity_check(); } - explicit RMSPropSolver(const string& param_file) - : SGDSolver(param_file) { constructor_sanity_check(); } - - protected: - virtual void ComputeUpdateValue(int param_id, Dtype rate); - void constructor_sanity_check() { - CHECK_EQ(0, this->param_.momentum()) - << "Momentum cannot be used with RMSProp."; - CHECK_GE(this->param_.rms_decay(), 0) - << "rms_decay should lie between 0 and 1."; - CHECK_LT(this->param_.rms_decay(), 1) - << "rms_decay should lie between 0 and 1."; - } - - DISABLE_COPY_AND_ASSIGN(RMSPropSolver); -}; - -template -class AdaDeltaSolver : public SGDSolver { - public: - explicit AdaDeltaSolver(const SolverParameter& param) - : SGDSolver(param) { AdaDeltaPreSolve(); } - explicit AdaDeltaSolver(const string& param_file) - : SGDSolver(param_file) { AdaDeltaPreSolve(); } - - protected: - void AdaDeltaPreSolve(); - virtual void ComputeUpdateValue(int param_id, Dtype rate); - - DISABLE_COPY_AND_ASSIGN(AdaDeltaSolver); -}; - -/** - * @brief AdamSolver, an algorithm for first-order gradient-based optimization - * of stochastic objective functions, based on adaptive estimates of - * lower-order moments. Described in [1]. - * - * [1] D. P. Kingma and J. L. Ba, "ADAM: A Method for Stochastic Optimization." - * arXiv preprint arXiv:1412.6980v8 (2014). - */ -template -class AdamSolver : public SGDSolver { - public: - explicit AdamSolver(const SolverParameter& param) - : SGDSolver(param) { AdamPreSolve();} - explicit AdamSolver(const string& param_file) - : SGDSolver(param_file) { AdamPreSolve(); } - - protected: - void AdamPreSolve(); - virtual void ComputeUpdateValue(int param_id, Dtype rate); - - DISABLE_COPY_AND_ASSIGN(AdamSolver); -}; - -template -Solver* GetSolver(const SolverParameter& param) { - SolverParameter_SolverType type = param.solver_type(); - - switch (type) { - case SolverParameter_SolverType_SGD: - return new SGDSolver(param); - case SolverParameter_SolverType_NESTEROV: - return new NesterovSolver(param); - case SolverParameter_SolverType_ADAGRAD: - return new AdaGradSolver(param); - case SolverParameter_SolverType_RMSPROP: - return new RMSPropSolver(param); - case SolverParameter_SolverType_ADADELTA: - return new AdaDeltaSolver(param); - case SolverParameter_SolverType_ADAM: - return new AdamSolver(param); - default: - LOG(FATAL) << "Unknown SolverType: " << type; - } - return (Solver*) NULL; -} +Solver* GetSolver(const SolverParameter& param); } // namespace caffe -#endif // CAFFE_OPTIMIZATION_SOLVER_HPP_ +#endif // CAFFE_SOLVER_HPP_ diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index ccd5776ac..0e38dee70 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -16,6 +16,7 @@ #include "caffe/caffe.hpp" #include "caffe/python_layer.hpp" +#include "caffe/sgd_solvers.hpp" // Temporary solution for numpy < 1.7 versions: old macro, no promises. // You're strongly advised to upgrade to >= 1.7. diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 12c13dd83..016a02888 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -1,18 +1,11 @@ #include -#include #include #include -#include "hdf5.h" -#include "hdf5_hl.h" - -#include "caffe/net.hpp" -#include "caffe/proto/caffe.pb.h" #include "caffe/solver.hpp" #include "caffe/util/hdf5.hpp" #include "caffe/util/io.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/util/upgrade_proto.hpp" namespace caffe { @@ -492,810 +485,6 @@ void Solver::Restore(const char* state_file) { } } -// Return the current learning rate. The currently implemented learning rate -// policies are as follows: -// - fixed: always return base_lr. -// - step: return base_lr * gamma ^ (floor(iter / step)) -// - exp: return base_lr * gamma ^ iter -// - inv: return base_lr * (1 + gamma * iter) ^ (- power) -// - multistep: similar to step but it allows non uniform steps defined by -// stepvalue -// - poly: the effective learning rate follows a polynomial decay, to be -// zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power) -// - sigmoid: the effective learning rate follows a sigmod decay -// return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))) -// -// where base_lr, max_iter, gamma, step, stepvalue and power are defined -// in the solver parameter protocol buffer, and iter is the current iteration. -template -Dtype SGDSolver::GetLearningRate() { - Dtype rate; - const string& lr_policy = this->param_.lr_policy(); - if (lr_policy == "fixed") { - rate = this->param_.base_lr(); - } else if (lr_policy == "step") { - this->current_step_ = this->iter_ / this->param_.stepsize(); - rate = this->param_.base_lr() * - pow(this->param_.gamma(), this->current_step_); - } else if (lr_policy == "exp") { - rate = this->param_.base_lr() * pow(this->param_.gamma(), this->iter_); - } else if (lr_policy == "inv") { - rate = this->param_.base_lr() * - pow(Dtype(1) + this->param_.gamma() * this->iter_, - - this->param_.power()); - } else if (lr_policy == "multistep") { - if (this->current_step_ < this->param_.stepvalue_size() && - this->iter_ >= this->param_.stepvalue(this->current_step_)) { - this->current_step_++; - LOG(INFO) << "MultiStep Status: Iteration " << - this->iter_ << ", step = " << this->current_step_; - } - rate = this->param_.base_lr() * - pow(this->param_.gamma(), this->current_step_); - } else if (lr_policy == "poly") { - rate = this->param_.base_lr() * pow(Dtype(1.) - - (Dtype(this->iter_) / Dtype(this->param_.max_iter())), - this->param_.power()); - } else if (lr_policy == "sigmoid") { - rate = this->param_.base_lr() * (Dtype(1.) / - (Dtype(1.) + exp(-this->param_.gamma() * (Dtype(this->iter_) - - Dtype(this->param_.stepsize()))))); - } else { - LOG(FATAL) << "Unknown learning rate policy: " << lr_policy; - } - return rate; -} - -template -void SGDSolver::PreSolve() { - // Initialize the history - const vector*>& net_params = this->net_->learnable_params(); - history_.clear(); - update_.clear(); - temp_.clear(); - for (int i = 0; i < net_params.size(); ++i) { - const vector& shape = net_params[i]->shape(); - history_.push_back(shared_ptr >(new Blob(shape))); - update_.push_back(shared_ptr >(new Blob(shape))); - temp_.push_back(shared_ptr >(new Blob(shape))); - } -} - -template -void SGDSolver::ClipGradients() { - const Dtype clip_gradients = this->param_.clip_gradients(); - if (clip_gradients < 0) { return; } - const vector*>& net_params = this->net_->learnable_params(); - Dtype sumsq_diff = 0; - for (int i = 0; i < net_params.size(); ++i) { - sumsq_diff += net_params[i]->sumsq_diff(); - } - const Dtype l2norm_diff = std::sqrt(sumsq_diff); - if (l2norm_diff > clip_gradients) { - Dtype scale_factor = clip_gradients / l2norm_diff; - LOG(INFO) << "Gradient clipping: scaling down gradients (L2 norm " - << l2norm_diff << " > " << clip_gradients << ") " - << "by scale factor " << scale_factor; - for (int i = 0; i < net_params.size(); ++i) { - net_params[i]->scale_diff(scale_factor); - } - } -} - -template -void SGDSolver::ApplyUpdate() { - CHECK(Caffe::root_solver()); - Dtype rate = GetLearningRate(); - if (this->param_.display() && this->iter_ % this->param_.display() == 0) { - LOG(INFO) << "Iteration " << this->iter_ << ", lr = " << rate; - } - ClipGradients(); - for (int param_id = 0; param_id < this->net_->learnable_params().size(); - ++param_id) { - Normalize(param_id); - Regularize(param_id); - ComputeUpdateValue(param_id, rate); - } - this->net_->Update(); -} - -template -void SGDSolver::Normalize(int param_id) { - if (this->param_.iter_size() == 1) { return; } - // Scale gradient to counterbalance accumulation. - const vector*>& net_params = this->net_->learnable_params(); - const Dtype accum_normalization = Dtype(1.) / this->param_.iter_size(); - switch (Caffe::mode()) { - case Caffe::CPU: { - caffe_scal(net_params[param_id]->count(), accum_normalization, - net_params[param_id]->mutable_cpu_diff()); - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - caffe_gpu_scal(net_params[param_id]->count(), accum_normalization, - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void SGDSolver::Regularize(int param_id) { - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_weight_decay = - this->net_->params_weight_decay(); - Dtype weight_decay = this->param_.weight_decay(); - string regularization_type = this->param_.regularization_type(); - Dtype local_decay = weight_decay * net_params_weight_decay[param_id]; - switch (Caffe::mode()) { - case Caffe::CPU: { - if (local_decay) { - if (regularization_type == "L2") { - // add weight decay - caffe_axpy(net_params[param_id]->count(), - local_decay, - net_params[param_id]->cpu_data(), - net_params[param_id]->mutable_cpu_diff()); - } else if (regularization_type == "L1") { - caffe_cpu_sign(net_params[param_id]->count(), - net_params[param_id]->cpu_data(), - temp_[param_id]->mutable_cpu_data()); - caffe_axpy(net_params[param_id]->count(), - local_decay, - temp_[param_id]->cpu_data(), - net_params[param_id]->mutable_cpu_diff()); - } else { - LOG(FATAL) << "Unknown regularization type: " << regularization_type; - } - } - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - if (local_decay) { - if (regularization_type == "L2") { - // add weight decay - caffe_gpu_axpy(net_params[param_id]->count(), - local_decay, - net_params[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); - } else if (regularization_type == "L1") { - caffe_gpu_sign(net_params[param_id]->count(), - net_params[param_id]->gpu_data(), - temp_[param_id]->mutable_gpu_data()); - caffe_gpu_axpy(net_params[param_id]->count(), - local_decay, - temp_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); - } else { - LOG(FATAL) << "Unknown regularization type: " << regularization_type; - } - } -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void SGDSolver::ComputeUpdateValue(int param_id, Dtype rate) { - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_lr = this->net_->params_lr(); - Dtype momentum = this->param_.momentum(); - Dtype local_rate = rate * net_params_lr[param_id]; - // Compute the update to history, then copy it to the parameter diff. - switch (Caffe::mode()) { - case Caffe::CPU: { - caffe_cpu_axpby(net_params[param_id]->count(), local_rate, - net_params[param_id]->cpu_diff(), momentum, - history_[param_id]->mutable_cpu_data()); - caffe_copy(net_params[param_id]->count(), - history_[param_id]->cpu_data(), - net_params[param_id]->mutable_cpu_diff()); - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - net_params[param_id]->gpu_diff(), momentum, - history_[param_id]->mutable_gpu_data()); - caffe_copy(net_params[param_id]->count(), - history_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void SGDSolver::SnapshotSolverState(const string& model_filename) { - switch (this->param_.snapshot_format()) { - case caffe::SolverParameter_SnapshotFormat_BINARYPROTO: - SnapshotSolverStateToBinaryProto(model_filename); - break; - case caffe::SolverParameter_SnapshotFormat_HDF5: - SnapshotSolverStateToHDF5(model_filename); - break; - default: - LOG(FATAL) << "Unsupported snapshot format."; - } -} - -template -void SGDSolver::SnapshotSolverStateToBinaryProto( - const string& model_filename) { - SolverState state; - state.set_iter(this->iter_); - state.set_learned_net(model_filename); - state.set_current_step(this->current_step_); - state.clear_history(); - for (int i = 0; i < history_.size(); ++i) { - // Add history - BlobProto* history_blob = state.add_history(); - history_[i]->ToProto(history_blob); - } - string snapshot_filename = Solver::SnapshotFilename(".solverstate"); - LOG(INFO) - << "Snapshotting solver state to binary proto file " << snapshot_filename; - WriteProtoToBinaryFile(state, snapshot_filename.c_str()); -} - -template -void SGDSolver::SnapshotSolverStateToHDF5( - const string& model_filename) { - string snapshot_filename = - Solver::SnapshotFilename(".solverstate.h5"); - LOG(INFO) << "Snapshotting solver state to HDF5 file " << snapshot_filename; - hid_t file_hid = H5Fcreate(snapshot_filename.c_str(), H5F_ACC_TRUNC, - H5P_DEFAULT, H5P_DEFAULT); - CHECK_GE(file_hid, 0) - << "Couldn't open " << snapshot_filename << " to save solver state."; - hdf5_save_int(file_hid, "iter", this->iter_); - hdf5_save_string(file_hid, "learned_net", model_filename); - hdf5_save_int(file_hid, "current_step", this->current_step_); - hid_t history_hid = H5Gcreate2(file_hid, "history", H5P_DEFAULT, H5P_DEFAULT, - H5P_DEFAULT); - CHECK_GE(history_hid, 0) - << "Error saving solver state to " << snapshot_filename << "."; - for (int i = 0; i < history_.size(); ++i) { - ostringstream oss; - oss << i; - hdf5_save_nd_dataset(history_hid, oss.str(), *history_[i]); - } - H5Gclose(history_hid); - H5Fclose(file_hid); -} - -template -void SGDSolver::RestoreSolverStateFromBinaryProto( - const string& state_file) { - SolverState state; - ReadProtoFromBinaryFile(state_file, &state); - this->iter_ = state.iter(); - if (state.has_learned_net()) { - NetParameter net_param; - ReadNetParamsFromBinaryFileOrDie(state.learned_net().c_str(), &net_param); - this->net_->CopyTrainedLayersFrom(net_param); - } - this->current_step_ = state.current_step(); - CHECK_EQ(state.history_size(), history_.size()) - << "Incorrect length of history blobs."; - LOG(INFO) << "SGDSolver: restoring history"; - for (int i = 0; i < history_.size(); ++i) { - history_[i]->FromProto(state.history(i)); - } -} - -template -void SGDSolver::RestoreSolverStateFromHDF5(const string& state_file) { - hid_t file_hid = H5Fopen(state_file.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT); - CHECK_GE(file_hid, 0) << "Couldn't open solver state file " << state_file; - this->iter_ = hdf5_load_int(file_hid, "iter"); - if (H5LTfind_dataset(file_hid, "learned_net")) { - string learned_net = hdf5_load_string(file_hid, "learned_net"); - this->net_->CopyTrainedLayersFrom(learned_net); - } - this->current_step_ = hdf5_load_int(file_hid, "current_step"); - hid_t history_hid = H5Gopen2(file_hid, "history", H5P_DEFAULT); - CHECK_GE(history_hid, 0) << "Error reading history from " << state_file; - int state_history_size = hdf5_get_num_links(history_hid); - CHECK_EQ(state_history_size, history_.size()) - << "Incorrect length of history blobs."; - for (int i = 0; i < history_.size(); ++i) { - ostringstream oss; - oss << i; - hdf5_load_nd_dataset(history_hid, oss.str().c_str(), 0, - kMaxBlobAxes, history_[i].get()); - } - H5Gclose(history_hid); - H5Fclose(file_hid); -} - -template -void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { - CHECK(Caffe::root_solver()); - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_lr = this->net_->params_lr(); - Dtype momentum = this->param_.momentum(); - Dtype local_rate = rate * net_params_lr[param_id]; - switch (Caffe::mode()) { - case Caffe::CPU: { - // save history momentum for stepping back - caffe_copy(net_params[param_id]->count(), - this->history_[param_id]->cpu_data(), - this->update_[param_id]->mutable_cpu_data()); - - // update history - caffe_cpu_axpby(net_params[param_id]->count(), local_rate, - net_params[param_id]->cpu_diff(), momentum, - this->history_[param_id]->mutable_cpu_data()); - - // compute update: step back then over step - caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) + momentum, - this->history_[param_id]->cpu_data(), -momentum, - this->update_[param_id]->mutable_cpu_data()); - - // copy - caffe_copy(net_params[param_id]->count(), - this->update_[param_id]->cpu_data(), - net_params[param_id]->mutable_cpu_diff()); - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - // save history momentum for stepping back - caffe_copy(net_params[param_id]->count(), - this->history_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - // update history - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - net_params[param_id]->gpu_diff(), momentum, - this->history_[param_id]->mutable_gpu_data()); - - // compute update: step back then over step - caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) + momentum, - this->history_[param_id]->gpu_data(), -momentum, - this->update_[param_id]->mutable_gpu_data()); - - // copy - caffe_copy(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { - CHECK(Caffe::root_solver()); - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_lr = this->net_->params_lr(); - Dtype delta = this->param_.delta(); - Dtype local_rate = rate * net_params_lr[param_id]; - switch (Caffe::mode()) { - case Caffe::CPU: { - // compute square of gradient in update - caffe_powx(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), Dtype(2), - this->update_[param_id]->mutable_cpu_data()); - - // update history - caffe_add(net_params[param_id]->count(), - this->update_[param_id]->cpu_data(), - this->history_[param_id]->cpu_data(), - this->history_[param_id]->mutable_cpu_data()); - - // prepare update - caffe_powx(net_params[param_id]->count(), - this->history_[param_id]->cpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_cpu_data()); - - caffe_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_cpu_data()); - - caffe_div(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), - this->update_[param_id]->cpu_data(), - this->update_[param_id]->mutable_cpu_data()); - - // scale and copy - caffe_cpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->cpu_data(), Dtype(0), - net_params[param_id]->mutable_cpu_diff()); - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - // compute square of gradient in update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history - caffe_gpu_add(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), - this->history_[param_id]->gpu_data(), - this->history_[param_id]->mutable_gpu_data()); - - // prepare update - caffe_gpu_powx(net_params[param_id]->count(), - this->history_[param_id]->gpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_div(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), - this->update_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - // scale and copy - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->gpu_data(), Dtype(0), - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_lr = this->net_->params_lr(); - - // get the learning rate - Dtype delta = this->param_.delta(); - Dtype rms_decay = this->param_.rms_decay(); - Dtype local_rate = rate * net_params_lr[param_id]; - - switch (Caffe::mode()) { - case Caffe::CPU: - // compute square of gradient in update - caffe_powx(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), Dtype(2), - this->update_[param_id]->mutable_cpu_data()); - - // update history - caffe_cpu_axpby(net_params[param_id] -> count(), - Dtype(1-rms_decay), this->update_[param_id]->cpu_data(), - rms_decay, this->history_[param_id]-> mutable_cpu_data()); - - // prepare update - caffe_powx(net_params[param_id]->count(), - this->history_[param_id]->cpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_cpu_data()); - - caffe_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_cpu_data()); - - caffe_div(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), this->update_[param_id]->cpu_data(), - this->update_[param_id]->mutable_cpu_data()); - - // scale and copy - caffe_cpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->cpu_data(), Dtype(0), - net_params[param_id]->mutable_cpu_diff()); - break; - case Caffe::GPU: -#ifndef CPU_ONLY - // compute square of gradient in update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history - caffe_gpu_axpby(net_params[param_id] -> count(), - Dtype(1-rms_decay), this->update_[param_id]->gpu_data(), - rms_decay, this->history_[param_id]-> mutable_gpu_data()); - - // prepare update - caffe_gpu_powx(net_params[param_id]->count(), - this->history_[param_id]->gpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_div(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), this->update_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->gpu_data(), Dtype(0), - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void AdaDeltaSolver::AdaDeltaPreSolve() { - // Add the extra history entries for AdaDelta after those from - // SGDSolver::PreSolve - const vector*>& net_params = this->net_->learnable_params(); - for (int i = 0; i < net_params.size(); ++i) { - const vector& shape = net_params[i]->shape(); - this->history_.push_back( - shared_ptr >(new Blob(shape))); - } -} - -template -void AdaDeltaSolver::ComputeUpdateValue(int param_id, Dtype rate) { - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_lr = this->net_->params_lr(); - Dtype delta = this->param_.delta(); - Dtype momentum = this->param_.momentum(); - Dtype local_rate = rate * net_params_lr[param_id]; - size_t update_history_offset = net_params.size(); - switch (Caffe::mode()) { - case Caffe::CPU: { - // compute square of gradient in update - caffe_powx(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), Dtype(2), - this->update_[param_id]->mutable_cpu_data()); - - // update history of gradients - caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, - this->update_[param_id]->cpu_data(), momentum, - this->history_[param_id]->mutable_cpu_data()); - - // add delta to history to guard against dividing by zero later - caffe_set(net_params[param_id]->count(), delta, - this->temp_[param_id]->mutable_cpu_data()); - - caffe_add(net_params[param_id]->count(), - this->temp_[param_id]->cpu_data(), - this->history_[update_history_offset + param_id]->cpu_data(), - this->update_[param_id]->mutable_cpu_data()); - - caffe_add(net_params[param_id]->count(), - this->temp_[param_id]->cpu_data(), - this->history_[param_id]->cpu_data(), - this->temp_[param_id]->mutable_cpu_data()); - - // divide history of updates by history of gradients - caffe_div(net_params[param_id]->count(), - this->update_[param_id]->cpu_data(), - this->temp_[param_id]->cpu_data(), - this->update_[param_id]->mutable_cpu_data()); - - // jointly compute the RMS of both for update and gradient history - caffe_powx(net_params[param_id]->count(), - this->update_[param_id]->cpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_cpu_data()); - - // compute the update - caffe_mul(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), - this->update_[param_id]->cpu_data(), - net_params[param_id]->mutable_cpu_diff()); - - // compute square of update - caffe_powx(net_params[param_id]->count(), - net_params[param_id]->cpu_diff(), Dtype(2), - this->update_[param_id]->mutable_cpu_data()); - - // update history of updates - caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, - this->update_[param_id]->cpu_data(), momentum, - this->history_[update_history_offset + param_id]->mutable_cpu_data()); - - // apply learning rate - caffe_cpu_scale(net_params[param_id]->count(), local_rate, - net_params[param_id]->cpu_diff(), - net_params[param_id]->mutable_cpu_diff()); - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - // compute square of gradient in update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history of gradients - caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, - this->update_[param_id]->gpu_data(), momentum, - this->history_[param_id]->mutable_gpu_data()); - - // add delta to history to guard against dividing by zero later - caffe_gpu_set(net_params[param_id]->count(), delta, - this->temp_[param_id]->mutable_gpu_data()); - - caffe_gpu_add(net_params[param_id]->count(), - this->temp_[param_id]->gpu_data(), - this->history_[update_history_offset + param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_add(net_params[param_id]->count(), - this->temp_[param_id]->gpu_data(), - this->history_[param_id]->gpu_data(), - this->temp_[param_id]->mutable_gpu_data()); - - // divide history of updates by history of gradients - caffe_gpu_div(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), - this->temp_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - // jointly compute the RMS of both for update and gradient history - caffe_gpu_powx(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_gpu_data()); - - // compute the update and copy to net_diff - caffe_gpu_mul(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), - this->update_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); - - // compute square of update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history of updates - caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, - this->update_[param_id]->gpu_data(), momentum, - this->history_[update_history_offset + param_id]->mutable_gpu_data()); - - // apply learning rate - caffe_gpu_scale(net_params[param_id]->count(), local_rate, - net_params[param_id]->gpu_diff(), - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - -template -void AdamSolver::AdamPreSolve() { - // Add the extra history entries for Adam after those from - // SGDSolver::PreSolve - const vector*>& net_params = this->net_->learnable_params(); - for (int i = 0; i < net_params.size(); ++i) { - const vector& shape = net_params[i]->shape(); - this->history_.push_back( - shared_ptr >(new Blob(shape))); - } -} - -template -void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { - const vector*>& net_params = this->net_->learnable_params(); - const vector& net_params_lr = this->net_->params_lr(); - Dtype local_rate = rate * net_params_lr[param_id]; - const Dtype beta1 = this->param_.momentum(); - const Dtype beta2 = this->param_.momentum2(); - - // we create aliases for convenience - size_t update_history_offset = net_params.size(); - Blob* val_m = this->history_[param_id].get(); - Blob* val_v = this->history_[param_id + update_history_offset].get(); - Blob* val_t = this->temp_[param_id].get(); - - const int t = this->iter_ + 1; - const Dtype correction = std::sqrt(Dtype(1) - pow(beta2, t)) / - (Dtype(1.) - pow(beta1, t)); - const int N = net_params[param_id]->count(); - const Dtype eps_hat = this->param_.delta(); - - switch (Caffe::mode()) { - case Caffe::CPU: { - // update m <- \beta_1 m_{t-1} + (1-\beta_1)g_t - caffe_cpu_axpby(N, Dtype(1)-beta1, - net_params[param_id]->cpu_diff(), beta1, - val_m->mutable_cpu_data()); - - // update v <- \beta_2 m_{t-1} + (1-\beta_2)g_t^2 - caffe_mul(N, - net_params[param_id]->cpu_diff(), - net_params[param_id]->cpu_diff(), - val_t->mutable_cpu_data()); - caffe_cpu_axpby(N, Dtype(1)-beta2, - val_t->cpu_data(), beta2, - val_v->mutable_cpu_data()); - - // set update - caffe_powx(N, - val_v->cpu_data(), Dtype(0.5), - val_t->mutable_cpu_data()); - caffe_add_scalar(N, eps_hat, val_t->mutable_cpu_data()); - caffe_div(N, - val_m->cpu_data(), - val_t->cpu_data(), - val_t->mutable_cpu_data()); - - caffe_cpu_scale(N, local_rate*correction, - val_t->cpu_data(), - net_params[param_id]->mutable_cpu_diff()); - break; - } - case Caffe::GPU: { -#ifndef CPU_ONLY - // update m <- \beta_1 m_{t-1} + (1-\beta_1)g_t - caffe_gpu_axpby(N, Dtype(1)-beta1, - net_params[param_id]->gpu_diff(), beta1, - val_m->mutable_gpu_data()); - - // update v <- \beta_2 m_{t-1} + (1-\beta_2)g_t^2 - caffe_gpu_mul(N, - net_params[param_id]->gpu_diff(), - net_params[param_id]->gpu_diff(), - val_t->mutable_gpu_data()); - caffe_gpu_axpby(N, Dtype(1)-beta2, - val_t->gpu_data(), beta2, - val_v->mutable_gpu_data()); - - // set update - caffe_gpu_powx(N, - val_v->gpu_data(), Dtype(0.5), - val_t->mutable_gpu_data()); - caffe_gpu_add_scalar(N, eps_hat, - val_t->mutable_gpu_data()); - caffe_gpu_div(N, - val_m->gpu_data(), - val_t->gpu_data(), - val_t->mutable_gpu_data()); - - caffe_gpu_scale(N, local_rate*correction, - val_t->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); -#else - NO_GPU; -#endif - break; - } - default: - LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); - } -} - INSTANTIATE_CLASS(Solver); -INSTANTIATE_CLASS(SGDSolver); -INSTANTIATE_CLASS(NesterovSolver); -INSTANTIATE_CLASS(AdaGradSolver); -INSTANTIATE_CLASS(RMSPropSolver); -INSTANTIATE_CLASS(AdaDeltaSolver); -INSTANTIATE_CLASS(AdamSolver); } // namespace caffe diff --git a/src/caffe/solver_factory.cpp b/src/caffe/solver_factory.cpp new file mode 100644 index 000000000..f78fab287 --- /dev/null +++ b/src/caffe/solver_factory.cpp @@ -0,0 +1,32 @@ +#include "caffe/solver.hpp" +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +Solver* GetSolver(const SolverParameter& param) { + SolverParameter_SolverType type = param.solver_type(); + + switch (type) { + case SolverParameter_SolverType_SGD: + return new SGDSolver(param); + case SolverParameter_SolverType_NESTEROV: + return new NesterovSolver(param); + case SolverParameter_SolverType_ADAGRAD: + return new AdaGradSolver(param); + case SolverParameter_SolverType_RMSPROP: + return new RMSPropSolver(param); + case SolverParameter_SolverType_ADADELTA: + return new AdaDeltaSolver(param); + case SolverParameter_SolverType_ADAM: + return new AdamSolver(param); + default: + LOG(FATAL) << "Unknown SolverType: " << type; + } + return (Solver*) NULL; +} + +template Solver* GetSolver(const SolverParameter& param); +template Solver* GetSolver(const SolverParameter& param); + +} // namespace caffe diff --git a/src/caffe/solvers/adadelta_solver.cpp b/src/caffe/solvers/adadelta_solver.cpp new file mode 100644 index 000000000..45cd4eb29 --- /dev/null +++ b/src/caffe/solvers/adadelta_solver.cpp @@ -0,0 +1,155 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void AdaDeltaSolver::AdaDeltaPreSolve() { + // Add the extra history entries for AdaDelta after those from + // SGDSolver::PreSolve + const vector*>& net_params = this->net_->learnable_params(); + for (int i = 0; i < net_params.size(); ++i) { + const vector& shape = net_params[i]->shape(); + this->history_.push_back( + shared_ptr >(new Blob(shape))); + } +} + +template +void AdaDeltaSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype delta = this->param_.delta(); + Dtype momentum = this->param_.momentum(); + Dtype local_rate = rate * net_params_lr[param_id]; + size_t update_history_offset = net_params.size(); + switch (Caffe::mode()) { + case Caffe::CPU: { + // compute square of gradient in update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history of gradients + caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, + this->update_[param_id]->cpu_data(), momentum, + this->history_[param_id]->mutable_cpu_data()); + + // add delta to history to guard against dividing by zero later + caffe_set(net_params[param_id]->count(), delta, + this->temp_[param_id]->mutable_cpu_data()); + + caffe_add(net_params[param_id]->count(), + this->temp_[param_id]->cpu_data(), + this->history_[update_history_offset + param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + caffe_add(net_params[param_id]->count(), + this->temp_[param_id]->cpu_data(), + this->history_[param_id]->cpu_data(), + this->temp_[param_id]->mutable_cpu_data()); + + // divide history of updates by history of gradients + caffe_div(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), + this->temp_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // jointly compute the RMS of both for update and gradient history + caffe_powx(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); + + // compute the update + caffe_mul(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), + this->update_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + + // compute square of update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history of updates + caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, + this->update_[param_id]->cpu_data(), momentum, + this->history_[update_history_offset + param_id]->mutable_cpu_data()); + + // apply learning rate + caffe_cpu_scale(net_params[param_id]->count(), local_rate, + net_params[param_id]->cpu_diff(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + // compute square of gradient in update + caffe_gpu_powx(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), Dtype(2), + this->update_[param_id]->mutable_gpu_data()); + + // update history of gradients + caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, + this->update_[param_id]->gpu_data(), momentum, + this->history_[param_id]->mutable_gpu_data()); + + // add delta to history to guard against dividing by zero later + caffe_gpu_set(net_params[param_id]->count(), delta, + this->temp_[param_id]->mutable_gpu_data()); + + caffe_gpu_add(net_params[param_id]->count(), + this->temp_[param_id]->gpu_data(), + this->history_[update_history_offset + param_id]->gpu_data(), + this->update_[param_id]->mutable_gpu_data()); + + caffe_gpu_add(net_params[param_id]->count(), + this->temp_[param_id]->gpu_data(), + this->history_[param_id]->gpu_data(), + this->temp_[param_id]->mutable_gpu_data()); + + // divide history of updates by history of gradients + caffe_gpu_div(net_params[param_id]->count(), + this->update_[param_id]->gpu_data(), + this->temp_[param_id]->gpu_data(), + this->update_[param_id]->mutable_gpu_data()); + + // jointly compute the RMS of both for update and gradient history + caffe_gpu_powx(net_params[param_id]->count(), + this->update_[param_id]->gpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_gpu_data()); + + // compute the update and copy to net_diff + caffe_gpu_mul(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), + this->update_[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); + + // compute square of update + caffe_gpu_powx(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), Dtype(2), + this->update_[param_id]->mutable_gpu_data()); + + // update history of updates + caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, + this->update_[param_id]->gpu_data(), momentum, + this->history_[update_history_offset + param_id]->mutable_gpu_data()); + + // apply learning rate + caffe_gpu_scale(net_params[param_id]->count(), local_rate, + net_params[param_id]->gpu_diff(), + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(AdaDeltaSolver); + +} // namespace caffe diff --git a/src/caffe/solvers/adagrad_solver.cpp b/src/caffe/solvers/adagrad_solver.cpp new file mode 100644 index 000000000..627d816a4 --- /dev/null +++ b/src/caffe/solvers/adagrad_solver.cpp @@ -0,0 +1,88 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { + CHECK(Caffe::root_solver()); + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype delta = this->param_.delta(); + Dtype local_rate = rate * net_params_lr[param_id]; + switch (Caffe::mode()) { + case Caffe::CPU: { + // compute square of gradient in update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history + caffe_add(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), + this->history_[param_id]->cpu_data(), + this->history_[param_id]->mutable_cpu_data()); + + // prepare update + caffe_powx(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); + + caffe_add_scalar(net_params[param_id]->count(), + delta, this->update_[param_id]->mutable_cpu_data()); + + caffe_div(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), + this->update_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // scale and copy + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + this->update_[param_id]->cpu_data(), Dtype(0), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + // compute square of gradient in update + caffe_gpu_powx(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), Dtype(2), + this->update_[param_id]->mutable_gpu_data()); + + // update history + caffe_gpu_add(net_params[param_id]->count(), + this->update_[param_id]->gpu_data(), + this->history_[param_id]->gpu_data(), + this->history_[param_id]->mutable_gpu_data()); + + // prepare update + caffe_gpu_powx(net_params[param_id]->count(), + this->history_[param_id]->gpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_gpu_data()); + + caffe_gpu_add_scalar(net_params[param_id]->count(), + delta, this->update_[param_id]->mutable_gpu_data()); + + caffe_gpu_div(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), + this->update_[param_id]->gpu_data(), + this->update_[param_id]->mutable_gpu_data()); + + // scale and copy + caffe_gpu_axpby(net_params[param_id]->count(), local_rate, + this->update_[param_id]->gpu_data(), Dtype(0), + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(AdaGradSolver); + +} // namespace caffe diff --git a/src/caffe/solvers/adam_solver.cpp b/src/caffe/solvers/adam_solver.cpp new file mode 100644 index 000000000..8c334f665 --- /dev/null +++ b/src/caffe/solvers/adam_solver.cpp @@ -0,0 +1,112 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void AdamSolver::AdamPreSolve() { + // Add the extra history entries for Adam after those from + // SGDSolver::PreSolve + const vector*>& net_params = this->net_->learnable_params(); + for (int i = 0; i < net_params.size(); ++i) { + const vector& shape = net_params[i]->shape(); + this->history_.push_back( + shared_ptr >(new Blob(shape))); + } +} + +template +void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype local_rate = rate * net_params_lr[param_id]; + const Dtype beta1 = this->param_.momentum(); + const Dtype beta2 = this->param_.momentum2(); + + // we create aliases for convenience + size_t update_history_offset = net_params.size(); + Blob* val_m = this->history_[param_id].get(); + Blob* val_v = this->history_[param_id + update_history_offset].get(); + Blob* val_t = this->temp_[param_id].get(); + + const int t = this->iter_ + 1; + const Dtype correction = std::sqrt(Dtype(1) - pow(beta2, t)) / + (Dtype(1.) - pow(beta1, t)); + const int N = net_params[param_id]->count(); + const Dtype eps_hat = this->param_.delta(); + + switch (Caffe::mode()) { + case Caffe::CPU: { + // update m <- \beta_1 m_{t-1} + (1-\beta_1)g_t + caffe_cpu_axpby(N, Dtype(1)-beta1, + net_params[param_id]->cpu_diff(), beta1, + val_m->mutable_cpu_data()); + + // update v <- \beta_2 m_{t-1} + (1-\beta_2)g_t^2 + caffe_mul(N, + net_params[param_id]->cpu_diff(), + net_params[param_id]->cpu_diff(), + val_t->mutable_cpu_data()); + caffe_cpu_axpby(N, Dtype(1)-beta2, + val_t->cpu_data(), beta2, + val_v->mutable_cpu_data()); + + // set update + caffe_powx(N, + val_v->cpu_data(), Dtype(0.5), + val_t->mutable_cpu_data()); + caffe_add_scalar(N, eps_hat, val_t->mutable_cpu_data()); + caffe_div(N, + val_m->cpu_data(), + val_t->cpu_data(), + val_t->mutable_cpu_data()); + + caffe_cpu_scale(N, local_rate*correction, + val_t->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + // update m <- \beta_1 m_{t-1} + (1-\beta_1)g_t + caffe_gpu_axpby(N, Dtype(1)-beta1, + net_params[param_id]->gpu_diff(), beta1, + val_m->mutable_gpu_data()); + + // update v <- \beta_2 m_{t-1} + (1-\beta_2)g_t^2 + caffe_gpu_mul(N, + net_params[param_id]->gpu_diff(), + net_params[param_id]->gpu_diff(), + val_t->mutable_gpu_data()); + caffe_gpu_axpby(N, Dtype(1)-beta2, + val_t->gpu_data(), beta2, + val_v->mutable_gpu_data()); + + // set update + caffe_gpu_powx(N, + val_v->gpu_data(), Dtype(0.5), + val_t->mutable_gpu_data()); + caffe_gpu_add_scalar(N, eps_hat, + val_t->mutable_gpu_data()); + caffe_gpu_div(N, + val_m->gpu_data(), + val_t->gpu_data(), + val_t->mutable_gpu_data()); + + caffe_gpu_scale(N, local_rate*correction, + val_t->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(AdamSolver); + +} // namespace caffe diff --git a/src/caffe/solvers/nesterov_solver.cpp b/src/caffe/solvers/nesterov_solver.cpp new file mode 100644 index 000000000..8135ee2c6 --- /dev/null +++ b/src/caffe/solvers/nesterov_solver.cpp @@ -0,0 +1,70 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { + CHECK(Caffe::root_solver()); + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype momentum = this->param_.momentum(); + Dtype local_rate = rate * net_params_lr[param_id]; + switch (Caffe::mode()) { + case Caffe::CPU: { + // save history momentum for stepping back + caffe_copy(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // update history + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + net_params[param_id]->cpu_diff(), momentum, + this->history_[param_id]->mutable_cpu_data()); + + // compute update: step back then over step + caffe_cpu_axpby(net_params[param_id]->count(), Dtype(1) + momentum, + this->history_[param_id]->cpu_data(), -momentum, + this->update_[param_id]->mutable_cpu_data()); + + // copy + caffe_copy(net_params[param_id]->count(), + this->update_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + // save history momentum for stepping back + caffe_copy(net_params[param_id]->count(), + this->history_[param_id]->gpu_data(), + this->update_[param_id]->mutable_gpu_data()); + + // update history + caffe_gpu_axpby(net_params[param_id]->count(), local_rate, + net_params[param_id]->gpu_diff(), momentum, + this->history_[param_id]->mutable_gpu_data()); + + // compute update: step back then over step + caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) + momentum, + this->history_[param_id]->gpu_data(), -momentum, + this->update_[param_id]->mutable_gpu_data()); + + // copy + caffe_copy(net_params[param_id]->count(), + this->update_[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(NesterovSolver); + +} // namespace caffe diff --git a/src/caffe/solvers/rmsprop_solver.cpp b/src/caffe/solvers/rmsprop_solver.cpp new file mode 100644 index 000000000..96d1b3dda --- /dev/null +++ b/src/caffe/solvers/rmsprop_solver.cpp @@ -0,0 +1,84 @@ +#include + +#include "caffe/sgd_solvers.hpp" + +namespace caffe { + +template +void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + + // get the learning rate + Dtype delta = this->param_.delta(); + Dtype rms_decay = this->param_.rms_decay(); + Dtype local_rate = rate * net_params_lr[param_id]; + + switch (Caffe::mode()) { + case Caffe::CPU: + // compute square of gradient in update + caffe_powx(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), Dtype(2), + this->update_[param_id]->mutable_cpu_data()); + + // update history + caffe_cpu_axpby(net_params[param_id] -> count(), + Dtype(1-rms_decay), this->update_[param_id]->cpu_data(), + rms_decay, this->history_[param_id]-> mutable_cpu_data()); + + // prepare update + caffe_powx(net_params[param_id]->count(), + this->history_[param_id]->cpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_cpu_data()); + + caffe_add_scalar(net_params[param_id]->count(), + delta, this->update_[param_id]->mutable_cpu_data()); + + caffe_div(net_params[param_id]->count(), + net_params[param_id]->cpu_diff(), this->update_[param_id]->cpu_data(), + this->update_[param_id]->mutable_cpu_data()); + + // scale and copy + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + this->update_[param_id]->cpu_data(), Dtype(0), + net_params[param_id]->mutable_cpu_diff()); + break; + case Caffe::GPU: +#ifndef CPU_ONLY + // compute square of gradient in update + caffe_gpu_powx(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), Dtype(2), + this->update_[param_id]->mutable_gpu_data()); + + // update history + caffe_gpu_axpby(net_params[param_id] -> count(), + Dtype(1-rms_decay), this->update_[param_id]->gpu_data(), + rms_decay, this->history_[param_id]-> mutable_gpu_data()); + + // prepare update + caffe_gpu_powx(net_params[param_id]->count(), + this->history_[param_id]->gpu_data(), Dtype(0.5), + this->update_[param_id]->mutable_gpu_data()); + + caffe_gpu_add_scalar(net_params[param_id]->count(), + delta, this->update_[param_id]->mutable_gpu_data()); + + caffe_gpu_div(net_params[param_id]->count(), + net_params[param_id]->gpu_diff(), this->update_[param_id]->gpu_data(), + this->update_[param_id]->mutable_gpu_data()); + + caffe_gpu_axpby(net_params[param_id]->count(), local_rate, + this->update_[param_id]->gpu_data(), Dtype(0), + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +INSTANTIATE_CLASS(RMSPropSolver); + +} // namespace caffe diff --git a/src/caffe/solvers/sgd_solver.cpp b/src/caffe/solvers/sgd_solver.cpp new file mode 100644 index 000000000..89ef5ec45 --- /dev/null +++ b/src/caffe/solvers/sgd_solver.cpp @@ -0,0 +1,347 @@ +#include +#include + +#include "caffe/sgd_solvers.hpp" +#include "caffe/util/hdf5.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +namespace caffe { + +// Return the current learning rate. The currently implemented learning rate +// policies are as follows: +// - fixed: always return base_lr. +// - step: return base_lr * gamma ^ (floor(iter / step)) +// - exp: return base_lr * gamma ^ iter +// - inv: return base_lr * (1 + gamma * iter) ^ (- power) +// - multistep: similar to step but it allows non uniform steps defined by +// stepvalue +// - poly: the effective learning rate follows a polynomial decay, to be +// zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power) +// - sigmoid: the effective learning rate follows a sigmod decay +// return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))) +// +// where base_lr, max_iter, gamma, step, stepvalue and power are defined +// in the solver parameter protocol buffer, and iter is the current iteration. +template +Dtype SGDSolver::GetLearningRate() { + Dtype rate; + const string& lr_policy = this->param_.lr_policy(); + if (lr_policy == "fixed") { + rate = this->param_.base_lr(); + } else if (lr_policy == "step") { + this->current_step_ = this->iter_ / this->param_.stepsize(); + rate = this->param_.base_lr() * + pow(this->param_.gamma(), this->current_step_); + } else if (lr_policy == "exp") { + rate = this->param_.base_lr() * pow(this->param_.gamma(), this->iter_); + } else if (lr_policy == "inv") { + rate = this->param_.base_lr() * + pow(Dtype(1) + this->param_.gamma() * this->iter_, + - this->param_.power()); + } else if (lr_policy == "multistep") { + if (this->current_step_ < this->param_.stepvalue_size() && + this->iter_ >= this->param_.stepvalue(this->current_step_)) { + this->current_step_++; + LOG(INFO) << "MultiStep Status: Iteration " << + this->iter_ << ", step = " << this->current_step_; + } + rate = this->param_.base_lr() * + pow(this->param_.gamma(), this->current_step_); + } else if (lr_policy == "poly") { + rate = this->param_.base_lr() * pow(Dtype(1.) - + (Dtype(this->iter_) / Dtype(this->param_.max_iter())), + this->param_.power()); + } else if (lr_policy == "sigmoid") { + rate = this->param_.base_lr() * (Dtype(1.) / + (Dtype(1.) + exp(-this->param_.gamma() * (Dtype(this->iter_) - + Dtype(this->param_.stepsize()))))); + } else { + LOG(FATAL) << "Unknown learning rate policy: " << lr_policy; + } + return rate; +} + +template +void SGDSolver::PreSolve() { + // Initialize the history + const vector*>& net_params = this->net_->learnable_params(); + history_.clear(); + update_.clear(); + temp_.clear(); + for (int i = 0; i < net_params.size(); ++i) { + const vector& shape = net_params[i]->shape(); + history_.push_back(shared_ptr >(new Blob(shape))); + update_.push_back(shared_ptr >(new Blob(shape))); + temp_.push_back(shared_ptr >(new Blob(shape))); + } +} + +template +void SGDSolver::ClipGradients() { + const Dtype clip_gradients = this->param_.clip_gradients(); + if (clip_gradients < 0) { return; } + const vector*>& net_params = this->net_->learnable_params(); + Dtype sumsq_diff = 0; + for (int i = 0; i < net_params.size(); ++i) { + sumsq_diff += net_params[i]->sumsq_diff(); + } + const Dtype l2norm_diff = std::sqrt(sumsq_diff); + if (l2norm_diff > clip_gradients) { + Dtype scale_factor = clip_gradients / l2norm_diff; + LOG(INFO) << "Gradient clipping: scaling down gradients (L2 norm " + << l2norm_diff << " > " << clip_gradients << ") " + << "by scale factor " << scale_factor; + for (int i = 0; i < net_params.size(); ++i) { + net_params[i]->scale_diff(scale_factor); + } + } +} + +template +void SGDSolver::ApplyUpdate() { + CHECK(Caffe::root_solver()); + Dtype rate = GetLearningRate(); + if (this->param_.display() && this->iter_ % this->param_.display() == 0) { + LOG(INFO) << "Iteration " << this->iter_ << ", lr = " << rate; + } + ClipGradients(); + for (int param_id = 0; param_id < this->net_->learnable_params().size(); + ++param_id) { + Normalize(param_id); + Regularize(param_id); + ComputeUpdateValue(param_id, rate); + } + this->net_->Update(); +} + +template +void SGDSolver::Normalize(int param_id) { + if (this->param_.iter_size() == 1) { return; } + // Scale gradient to counterbalance accumulation. + const vector*>& net_params = this->net_->learnable_params(); + const Dtype accum_normalization = Dtype(1.) / this->param_.iter_size(); + switch (Caffe::mode()) { + case Caffe::CPU: { + caffe_scal(net_params[param_id]->count(), accum_normalization, + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + caffe_gpu_scal(net_params[param_id]->count(), accum_normalization, + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +template +void SGDSolver::Regularize(int param_id) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_weight_decay = + this->net_->params_weight_decay(); + Dtype weight_decay = this->param_.weight_decay(); + string regularization_type = this->param_.regularization_type(); + Dtype local_decay = weight_decay * net_params_weight_decay[param_id]; + switch (Caffe::mode()) { + case Caffe::CPU: { + if (local_decay) { + if (regularization_type == "L2") { + // add weight decay + caffe_axpy(net_params[param_id]->count(), + local_decay, + net_params[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + } else if (regularization_type == "L1") { + caffe_cpu_sign(net_params[param_id]->count(), + net_params[param_id]->cpu_data(), + temp_[param_id]->mutable_cpu_data()); + caffe_axpy(net_params[param_id]->count(), + local_decay, + temp_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + } else { + LOG(FATAL) << "Unknown regularization type: " << regularization_type; + } + } + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + if (local_decay) { + if (regularization_type == "L2") { + // add weight decay + caffe_gpu_axpy(net_params[param_id]->count(), + local_decay, + net_params[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); + } else if (regularization_type == "L1") { + caffe_gpu_sign(net_params[param_id]->count(), + net_params[param_id]->gpu_data(), + temp_[param_id]->mutable_gpu_data()); + caffe_gpu_axpy(net_params[param_id]->count(), + local_decay, + temp_[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); + } else { + LOG(FATAL) << "Unknown regularization type: " << regularization_type; + } + } +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +template +void SGDSolver::ComputeUpdateValue(int param_id, Dtype rate) { + const vector*>& net_params = this->net_->learnable_params(); + const vector& net_params_lr = this->net_->params_lr(); + Dtype momentum = this->param_.momentum(); + Dtype local_rate = rate * net_params_lr[param_id]; + // Compute the update to history, then copy it to the parameter diff. + switch (Caffe::mode()) { + case Caffe::CPU: { + caffe_cpu_axpby(net_params[param_id]->count(), local_rate, + net_params[param_id]->cpu_diff(), momentum, + history_[param_id]->mutable_cpu_data()); + caffe_copy(net_params[param_id]->count(), + history_[param_id]->cpu_data(), + net_params[param_id]->mutable_cpu_diff()); + break; + } + case Caffe::GPU: { +#ifndef CPU_ONLY + caffe_gpu_axpby(net_params[param_id]->count(), local_rate, + net_params[param_id]->gpu_diff(), momentum, + history_[param_id]->mutable_gpu_data()); + caffe_copy(net_params[param_id]->count(), + history_[param_id]->gpu_data(), + net_params[param_id]->mutable_gpu_diff()); +#else + NO_GPU; +#endif + break; + } + default: + LOG(FATAL) << "Unknown caffe mode: " << Caffe::mode(); + } +} + +template +void SGDSolver::SnapshotSolverState(const string& model_filename) { + switch (this->param_.snapshot_format()) { + case caffe::SolverParameter_SnapshotFormat_BINARYPROTO: + SnapshotSolverStateToBinaryProto(model_filename); + break; + case caffe::SolverParameter_SnapshotFormat_HDF5: + SnapshotSolverStateToHDF5(model_filename); + break; + default: + LOG(FATAL) << "Unsupported snapshot format."; + } +} + +template +void SGDSolver::SnapshotSolverStateToBinaryProto( + const string& model_filename) { + SolverState state; + state.set_iter(this->iter_); + state.set_learned_net(model_filename); + state.set_current_step(this->current_step_); + state.clear_history(); + for (int i = 0; i < history_.size(); ++i) { + // Add history + BlobProto* history_blob = state.add_history(); + history_[i]->ToProto(history_blob); + } + string snapshot_filename = Solver::SnapshotFilename(".solverstate"); + LOG(INFO) + << "Snapshotting solver state to binary proto file " << snapshot_filename; + WriteProtoToBinaryFile(state, snapshot_filename.c_str()); +} + +template +void SGDSolver::SnapshotSolverStateToHDF5( + const string& model_filename) { + string snapshot_filename = + Solver::SnapshotFilename(".solverstate.h5"); + LOG(INFO) << "Snapshotting solver state to HDF5 file " << snapshot_filename; + hid_t file_hid = H5Fcreate(snapshot_filename.c_str(), H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT); + CHECK_GE(file_hid, 0) + << "Couldn't open " << snapshot_filename << " to save solver state."; + hdf5_save_int(file_hid, "iter", this->iter_); + hdf5_save_string(file_hid, "learned_net", model_filename); + hdf5_save_int(file_hid, "current_step", this->current_step_); + hid_t history_hid = H5Gcreate2(file_hid, "history", H5P_DEFAULT, H5P_DEFAULT, + H5P_DEFAULT); + CHECK_GE(history_hid, 0) + << "Error saving solver state to " << snapshot_filename << "."; + for (int i = 0; i < history_.size(); ++i) { + ostringstream oss; + oss << i; + hdf5_save_nd_dataset(history_hid, oss.str(), *history_[i]); + } + H5Gclose(history_hid); + H5Fclose(file_hid); +} + +template +void SGDSolver::RestoreSolverStateFromBinaryProto( + const string& state_file) { + SolverState state; + ReadProtoFromBinaryFile(state_file, &state); + this->iter_ = state.iter(); + if (state.has_learned_net()) { + NetParameter net_param; + ReadNetParamsFromBinaryFileOrDie(state.learned_net().c_str(), &net_param); + this->net_->CopyTrainedLayersFrom(net_param); + } + this->current_step_ = state.current_step(); + CHECK_EQ(state.history_size(), history_.size()) + << "Incorrect length of history blobs."; + LOG(INFO) << "SGDSolver: restoring history"; + for (int i = 0; i < history_.size(); ++i) { + history_[i]->FromProto(state.history(i)); + } +} + +template +void SGDSolver::RestoreSolverStateFromHDF5(const string& state_file) { + hid_t file_hid = H5Fopen(state_file.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT); + CHECK_GE(file_hid, 0) << "Couldn't open solver state file " << state_file; + this->iter_ = hdf5_load_int(file_hid, "iter"); + if (H5LTfind_dataset(file_hid, "learned_net")) { + string learned_net = hdf5_load_string(file_hid, "learned_net"); + this->net_->CopyTrainedLayersFrom(learned_net); + } + this->current_step_ = hdf5_load_int(file_hid, "current_step"); + hid_t history_hid = H5Gopen2(file_hid, "history", H5P_DEFAULT); + CHECK_GE(history_hid, 0) << "Error reading history from " << state_file; + int state_history_size = hdf5_get_num_links(history_hid); + CHECK_EQ(state_history_size, history_.size()) + << "Incorrect length of history blobs."; + for (int i = 0; i < history_.size(); ++i) { + ostringstream oss; + oss << i; + hdf5_load_nd_dataset(history_hid, oss.str().c_str(), 0, + kMaxBlobAxes, history_[i].get()); + } + H5Gclose(history_hid); + H5Fclose(file_hid); +} + +INSTANTIATE_CLASS(SGDSolver); + +} // namespace caffe diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 7ad7467f8..1767ad3f6 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -10,7 +10,7 @@ #include "caffe/common.hpp" #include "caffe/parallel.hpp" #include "caffe/proto/caffe.pb.h" -#include "caffe/solver.hpp" +#include "caffe/sgd_solvers.hpp" #include "caffe/util/io.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_solver.cpp b/src/caffe/test/test_solver.cpp index ceabc9cdd..b18164268 100644 --- a/src/caffe/test/test_solver.cpp +++ b/src/caffe/test/test_solver.cpp @@ -7,6 +7,7 @@ #include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" +#include "caffe/sgd_solvers.hpp" #include "caffe/solver.hpp" #include "caffe/test/test_caffe_main.hpp" From 0eea815ad6fa3313888b6229499a237820258deb Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Thu, 24 Sep 2015 19:40:45 -0700 Subject: [PATCH 068/458] Change solver type to string and provide solver registry --- include/caffe/caffe.hpp | 1 + include/caffe/sgd_solvers.hpp | 6 + include/caffe/solver.hpp | 9 +- include/caffe/solver_factory.hpp | 137 ++++++++++++++++++ src/caffe/proto/caffe.proto | 27 ++-- src/caffe/solver_factory.cpp | 32 ---- src/caffe/solvers/adadelta_solver.cpp | 1 + src/caffe/solvers/adagrad_solver.cpp | 1 + src/caffe/solvers/adam_solver.cpp | 1 + src/caffe/solvers/nesterov_solver.cpp | 1 + src/caffe/solvers/rmsprop_solver.cpp | 1 + src/caffe/solvers/sgd_solver.cpp | 1 + src/caffe/test/test_gradient_based_solver.cpp | 54 ++----- src/caffe/test/test_solver_factory.cpp | 50 +++++++ tools/caffe.cpp | 2 +- 15 files changed, 233 insertions(+), 91 deletions(-) create mode 100644 include/caffe/solver_factory.hpp delete mode 100644 src/caffe/solver_factory.cpp create mode 100644 src/caffe/test/test_solver_factory.cpp diff --git a/include/caffe/caffe.hpp b/include/caffe/caffe.hpp index 68a5e1d1d..bd772830b 100644 --- a/include/caffe/caffe.hpp +++ b/include/caffe/caffe.hpp @@ -13,6 +13,7 @@ #include "caffe/parallel.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/solver.hpp" +#include "caffe/solver_factory.hpp" #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/vision_layers.hpp" diff --git a/include/caffe/sgd_solvers.hpp b/include/caffe/sgd_solvers.hpp index 6bf1d70c7..1fc52d871 100644 --- a/include/caffe/sgd_solvers.hpp +++ b/include/caffe/sgd_solvers.hpp @@ -19,6 +19,7 @@ class SGDSolver : public Solver { : Solver(param) { PreSolve(); } explicit SGDSolver(const string& param_file) : Solver(param_file) { PreSolve(); } + virtual inline const char* type() const { return "SGD"; } const vector > >& history() { return history_; } @@ -51,6 +52,7 @@ class NesterovSolver : public SGDSolver { : SGDSolver(param) {} explicit NesterovSolver(const string& param_file) : SGDSolver(param_file) {} + virtual inline const char* type() const { return "Nesterov"; } protected: virtual void ComputeUpdateValue(int param_id, Dtype rate); @@ -65,6 +67,7 @@ class AdaGradSolver : public SGDSolver { : SGDSolver(param) { constructor_sanity_check(); } explicit AdaGradSolver(const string& param_file) : SGDSolver(param_file) { constructor_sanity_check(); } + virtual inline const char* type() const { return "AdaGrad"; } protected: virtual void ComputeUpdateValue(int param_id, Dtype rate); @@ -84,6 +87,7 @@ class RMSPropSolver : public SGDSolver { : SGDSolver(param) { constructor_sanity_check(); } explicit RMSPropSolver(const string& param_file) : SGDSolver(param_file) { constructor_sanity_check(); } + virtual inline const char* type() const { return "RMSProp"; } protected: virtual void ComputeUpdateValue(int param_id, Dtype rate); @@ -106,6 +110,7 @@ class AdaDeltaSolver : public SGDSolver { : SGDSolver(param) { AdaDeltaPreSolve(); } explicit AdaDeltaSolver(const string& param_file) : SGDSolver(param_file) { AdaDeltaPreSolve(); } + virtual inline const char* type() const { return "AdaDelta"; } protected: void AdaDeltaPreSolve(); @@ -129,6 +134,7 @@ class AdamSolver : public SGDSolver { : SGDSolver(param) { AdamPreSolve();} explicit AdamSolver(const string& param_file) : SGDSolver(param_file) { AdamPreSolve(); } + virtual inline const char* type() const { return "Adam"; } protected: void AdamPreSolve(); diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index a045ccf25..298a68f37 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -5,6 +5,7 @@ #include #include "caffe/net.hpp" +#include "caffe/solver_factory.hpp" namespace caffe { @@ -83,6 +84,10 @@ class Solver { } void CheckSnapshotWritePermissions(); + /** + * @brief Returns the solver type. + */ + virtual inline const char* type() const { return ""; } protected: // Make and apply the update value for the current iteration. @@ -148,10 +153,6 @@ class WorkerSolver : public Solver { } }; -// The solver factory function -template -Solver* GetSolver(const SolverParameter& param); - } // namespace caffe #endif // CAFFE_SOLVER_HPP_ diff --git a/include/caffe/solver_factory.hpp b/include/caffe/solver_factory.hpp new file mode 100644 index 000000000..cfff721af --- /dev/null +++ b/include/caffe/solver_factory.hpp @@ -0,0 +1,137 @@ +/** + * @brief A solver factory that allows one to register solvers, similar to + * layer factory. During runtime, registered solvers could be called by passing + * a SolverParameter protobuffer to the CreateSolver function: + * + * SolverRegistry::CreateSolver(param); + * + * There are two ways to register a solver. Assuming that we have a solver like: + * + * template + * class MyAwesomeSolver : public Solver { + * // your implementations + * }; + * + * and its type is its C++ class name, but without the "Solver" at the end + * ("MyAwesomeSolver" -> "MyAwesome"). + * + * If the solver is going to be created simply by its constructor, in your c++ + * file, add the following line: + * + * REGISTER_SOLVER_CLASS(MyAwesome); + * + * Or, if the solver is going to be created by another creator function, in the + * format of: + * + * template + * Solver GetMyAwesomeSolver(const SolverParameter& param) { + * // your implementation + * } + * + * then you can register the creator function instead, like + * + * REGISTER_SOLVER_CREATOR(MyAwesome, GetMyAwesomeSolver) + * + * Note that each solver type should only be registered once. + */ + +#ifndef CAFFE_SOLVER_FACTORY_H_ +#define CAFFE_SOLVER_FACTORY_H_ + +#include +#include +#include + +#include "caffe/common.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template +class Solver; + +template +class SolverRegistry { + public: + typedef Solver* (*Creator)(const SolverParameter&); + typedef std::map CreatorRegistry; + + static CreatorRegistry& Registry() { + static CreatorRegistry* g_registry_ = new CreatorRegistry(); + return *g_registry_; + } + + // Adds a creator. + static void AddCreator(const string& type, Creator creator) { + CreatorRegistry& registry = Registry(); + CHECK_EQ(registry.count(type), 0) + << "Solver type " << type << " already registered."; + registry[type] = creator; + } + + // Get a solver using a SolverParameter. + static Solver* CreateSolver(const SolverParameter& param) { + const string& type = param.type(); + CreatorRegistry& registry = Registry(); + CHECK_EQ(registry.count(type), 1) << "Unknown solver type: " << type + << " (known types: " << SolverTypeListString() << ")"; + return registry[type](param); + } + + static vector SolverTypeList() { + CreatorRegistry& registry = Registry(); + vector solver_types; + for (typename CreatorRegistry::iterator iter = registry.begin(); + iter != registry.end(); ++iter) { + solver_types.push_back(iter->first); + } + return solver_types; + } + + private: + // Solver registry should never be instantiated - everything is done with its + // static variables. + SolverRegistry() {} + + static string SolverTypeListString() { + vector solver_types = SolverTypeList(); + string solver_types_str; + for (vector::iterator iter = solver_types.begin(); + iter != solver_types.end(); ++iter) { + if (iter != solver_types.begin()) { + solver_types_str += ", "; + } + solver_types_str += *iter; + } + return solver_types_str; + } +}; + + +template +class SolverRegisterer { + public: + SolverRegisterer(const string& type, + Solver* (*creator)(const SolverParameter&)) { + // LOG(INFO) << "Registering solver type: " << type; + SolverRegistry::AddCreator(type, creator); + } +}; + + +#define REGISTER_SOLVER_CREATOR(type, creator) \ + static SolverRegisterer g_creator_f_##type(#type, creator); \ + static SolverRegisterer g_creator_d_##type(#type, creator) \ + +#define REGISTER_SOLVER_CLASS(type) \ + template \ + Solver* Creator_##type##Solver( \ + const SolverParameter& param) \ + { \ + return new type##Solver(param); \ + } \ + REGISTER_SOLVER_CREATOR(type, Creator_##type##Solver) + +} // namespace caffe + +#endif // CAFFE_SOLVER_FACTORY_H_ diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 4794991f9..76c869c12 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -98,7 +98,7 @@ message NetParameter { // NOTE // Update the next available ID when you add a new SolverParameter field. // -// SolverParameter next available ID: 40 (last added: momentum2) +// SolverParameter next available ID: 41 (last added: type) message SolverParameter { ////////////////////////////////////////////////////////////////////////////// // Specifying the train and test networks @@ -209,16 +209,9 @@ message SolverParameter { // (and by default) initialize using a seed derived from the system clock. optional int64 random_seed = 20 [default = -1]; - // Solver type - enum SolverType { - SGD = 0; - NESTEROV = 1; - ADAGRAD = 2; - RMSPROP = 3; - ADADELTA = 4; - ADAM = 5; - } - optional SolverType solver_type = 30 [default = SGD]; + // type of the solver + optional string type = 40 [default = "SGD"]; + // numerical stability for RMSProp, AdaGrad and AdaDelta and Adam optional float delta = 31 [default = 1e-8]; // parameters for the Adam solver @@ -234,6 +227,18 @@ message SolverParameter { // If false, don't save a snapshot after training finishes. optional bool snapshot_after_train = 28 [default = true]; + + // DEPRECATED: old solver enum types, use string instead + enum SolverType { + SGD = 0; + NESTEROV = 1; + ADAGRAD = 2; + RMSPROP = 3; + ADADELTA = 4; + ADAM = 5; + } + // DEPRECATED: use type instead of solver_type + optional SolverType solver_type = 30 [default = SGD]; } // A message that stores the solver snapshots diff --git a/src/caffe/solver_factory.cpp b/src/caffe/solver_factory.cpp deleted file mode 100644 index f78fab287..000000000 --- a/src/caffe/solver_factory.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "caffe/solver.hpp" -#include "caffe/sgd_solvers.hpp" - -namespace caffe { - -template -Solver* GetSolver(const SolverParameter& param) { - SolverParameter_SolverType type = param.solver_type(); - - switch (type) { - case SolverParameter_SolverType_SGD: - return new SGDSolver(param); - case SolverParameter_SolverType_NESTEROV: - return new NesterovSolver(param); - case SolverParameter_SolverType_ADAGRAD: - return new AdaGradSolver(param); - case SolverParameter_SolverType_RMSPROP: - return new RMSPropSolver(param); - case SolverParameter_SolverType_ADADELTA: - return new AdaDeltaSolver(param); - case SolverParameter_SolverType_ADAM: - return new AdamSolver(param); - default: - LOG(FATAL) << "Unknown SolverType: " << type; - } - return (Solver*) NULL; -} - -template Solver* GetSolver(const SolverParameter& param); -template Solver* GetSolver(const SolverParameter& param); - -} // namespace caffe diff --git a/src/caffe/solvers/adadelta_solver.cpp b/src/caffe/solvers/adadelta_solver.cpp index 45cd4eb29..a37899ebb 100644 --- a/src/caffe/solvers/adadelta_solver.cpp +++ b/src/caffe/solvers/adadelta_solver.cpp @@ -151,5 +151,6 @@ void AdaDeltaSolver::ComputeUpdateValue(int param_id, Dtype rate) { } INSTANTIATE_CLASS(AdaDeltaSolver); +REGISTER_SOLVER_CLASS(AdaDelta); } // namespace caffe diff --git a/src/caffe/solvers/adagrad_solver.cpp b/src/caffe/solvers/adagrad_solver.cpp index 627d816a4..5e4063260 100644 --- a/src/caffe/solvers/adagrad_solver.cpp +++ b/src/caffe/solvers/adagrad_solver.cpp @@ -84,5 +84,6 @@ void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { } INSTANTIATE_CLASS(AdaGradSolver); +REGISTER_SOLVER_CLASS(AdaGrad); } // namespace caffe diff --git a/src/caffe/solvers/adam_solver.cpp b/src/caffe/solvers/adam_solver.cpp index 8c334f665..cb0fbfe2f 100644 --- a/src/caffe/solvers/adam_solver.cpp +++ b/src/caffe/solvers/adam_solver.cpp @@ -108,5 +108,6 @@ void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { } INSTANTIATE_CLASS(AdamSolver); +REGISTER_SOLVER_CLASS(Adam); } // namespace caffe diff --git a/src/caffe/solvers/nesterov_solver.cpp b/src/caffe/solvers/nesterov_solver.cpp index 8135ee2c6..34bf01ebf 100644 --- a/src/caffe/solvers/nesterov_solver.cpp +++ b/src/caffe/solvers/nesterov_solver.cpp @@ -66,5 +66,6 @@ void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { } INSTANTIATE_CLASS(NesterovSolver); +REGISTER_SOLVER_CLASS(Nesterov); } // namespace caffe diff --git a/src/caffe/solvers/rmsprop_solver.cpp b/src/caffe/solvers/rmsprop_solver.cpp index 96d1b3dda..c62476760 100644 --- a/src/caffe/solvers/rmsprop_solver.cpp +++ b/src/caffe/solvers/rmsprop_solver.cpp @@ -80,5 +80,6 @@ void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { } INSTANTIATE_CLASS(RMSPropSolver); +REGISTER_SOLVER_CLASS(RMSProp); } // namespace caffe diff --git a/src/caffe/solvers/sgd_solver.cpp b/src/caffe/solvers/sgd_solver.cpp index 89ef5ec45..32bf19b17 100644 --- a/src/caffe/solvers/sgd_solver.cpp +++ b/src/caffe/solvers/sgd_solver.cpp @@ -343,5 +343,6 @@ void SGDSolver::RestoreSolverStateFromHDF5(const string& state_file) { } INSTANTIATE_CLASS(SGDSolver); +REGISTER_SOLVER_CLASS(SGD); } // namespace caffe diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 1767ad3f6..84c6747f6 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -47,7 +47,6 @@ class GradientBasedSolverTest : public MultiDeviceTest { // Test data: check out generate_sample_data.py in the same directory. string* input_file_; - virtual SolverParameter_SolverType solver_type() = 0; virtual void InitSolver(const SolverParameter& param) = 0; virtual void InitSolverFromProtoString(const string& proto) { @@ -290,8 +289,8 @@ class GradientBasedSolverTest : public MultiDeviceTest { ((i == D) ? bias.cpu_data()[0] : weights.cpu_data()[i]); // Finally, compute update. const vector > >& history = solver_->history(); - if (solver_type() != SolverParameter_SolverType_ADADELTA - && solver_type() != SolverParameter_SolverType_ADAM) { + if (solver_->type() != string("AdaDelta") + && solver_->type() != string("Adam")) { ASSERT_EQ(2, history.size()); // 1 blob for weights, 1 for bias } else { ASSERT_EQ(4, history.size()); // additional blobs for update history @@ -300,26 +299,19 @@ class GradientBasedSolverTest : public MultiDeviceTest { const Dtype history_value = (i == D) ? history[1]->cpu_data()[0] : history[0]->cpu_data()[i]; const Dtype temp = momentum * history_value; - switch (solver_type()) { - case SolverParameter_SolverType_SGD: + if (solver_->type() == string("SGD")) { update_value += temp; - break; - case SolverParameter_SolverType_NESTEROV: + } else if (solver_->type() == string("Nesterov")) { update_value += temp; // step back then over-step update_value = (1 + momentum) * update_value - temp; - break; - case SolverParameter_SolverType_ADAGRAD: + } else if (solver_->type() == string("AdaGrad")) { update_value /= std::sqrt(history_value + grad * grad) + delta_; - break; - case SolverParameter_SolverType_RMSPROP: { + } else if (solver_->type() == string("RMSProp")) { const Dtype rms_decay = 0.95; update_value /= std::sqrt(rms_decay*history_value + grad * grad * (1 - rms_decay)) + delta_; - } - break; - case SolverParameter_SolverType_ADADELTA: - { + } else if (solver_->type() == string("AdaDelta")) { const Dtype update_history_value = (i == D) ? history[1 + num_param_blobs]->cpu_data()[0] : history[0 + num_param_blobs]->cpu_data()[i]; @@ -330,9 +322,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { // not actually needed, just here for illustrative purposes // const Dtype weighted_update_average = // momentum * update_history_value + (1 - momentum) * (update_value); - break; - } - case SolverParameter_SolverType_ADAM: { + } else if (solver_->type() == string("Adam")) { const Dtype momentum2 = 0.999; const Dtype m = history_value; const Dtype v = (i == D) ? @@ -344,10 +334,8 @@ class GradientBasedSolverTest : public MultiDeviceTest { std::sqrt(Dtype(1) - pow(momentum2, num_iters)) / (Dtype(1.) - pow(momentum, num_iters)); update_value = alpha_t * val_m / (std::sqrt(val_v) + delta_); - break; - } - default: - LOG(FATAL) << "Unknown solver type: " << solver_type(); + } else { + LOG(FATAL) << "Unknown solver type: " << solver_->type(); } if (i == D) { updated_bias.mutable_cpu_diff()[0] = update_value; @@ -392,7 +380,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { EXPECT_NEAR(expected_updated_bias, solver_updated_bias, error_margin); // Check the solver's history -- should contain the previous update value. - if (solver_type() == SolverParameter_SolverType_SGD) { + if (solver_->type() == string("SGD")) { const vector > >& history = solver_->history(); ASSERT_EQ(2, history.size()); for (int i = 0; i < D; ++i) { @@ -581,10 +569,6 @@ class SGDSolverTest : public GradientBasedSolverTest { virtual void InitSolver(const SolverParameter& param) { this->solver_.reset(new SGDSolver(param)); } - - virtual SolverParameter_SolverType solver_type() { - return SolverParameter_SolverType_SGD; - } }; TYPED_TEST_CASE(SGDSolverTest, TestDtypesAndDevices); @@ -721,9 +705,6 @@ class AdaGradSolverTest : public GradientBasedSolverTest { virtual void InitSolver(const SolverParameter& param) { this->solver_.reset(new AdaGradSolver(param)); } - virtual SolverParameter_SolverType solver_type() { - return SolverParameter_SolverType_ADAGRAD; - } }; TYPED_TEST_CASE(AdaGradSolverTest, TestDtypesAndDevices); @@ -824,9 +805,6 @@ class NesterovSolverTest : public GradientBasedSolverTest { virtual void InitSolver(const SolverParameter& param) { this->solver_.reset(new NesterovSolver(param)); } - virtual SolverParameter_SolverType solver_type() { - return SolverParameter_SolverType_NESTEROV; - } }; TYPED_TEST_CASE(NesterovSolverTest, TestDtypesAndDevices); @@ -960,10 +938,6 @@ class AdaDeltaSolverTest : public GradientBasedSolverTest { virtual void InitSolver(const SolverParameter& param) { this->solver_.reset(new AdaDeltaSolver(param)); } - - virtual SolverParameter_SolverType solver_type() { - return SolverParameter_SolverType_ADADELTA; - } }; TYPED_TEST_CASE(AdaDeltaSolverTest, TestDtypesAndDevices); @@ -1098,9 +1072,6 @@ class AdamSolverTest : public GradientBasedSolverTest { new_param.set_momentum2(momentum2); this->solver_.reset(new AdamSolver(new_param)); } - virtual SolverParameter_SolverType solver_type() { - return SolverParameter_SolverType_ADAM; - } }; TYPED_TEST_CASE(AdamSolverTest, TestDtypesAndDevices); @@ -1201,9 +1172,6 @@ class RMSPropSolverTest : public GradientBasedSolverTest { new_param.set_rms_decay(rms_decay); this->solver_.reset(new RMSPropSolver(new_param)); } - virtual SolverParameter_SolverType solver_type() { - return SolverParameter_SolverType_RMSPROP; - } }; TYPED_TEST_CASE(RMSPropSolverTest, TestDtypesAndDevices); diff --git a/src/caffe/test/test_solver_factory.cpp b/src/caffe/test/test_solver_factory.cpp new file mode 100644 index 000000000..eef5290fe --- /dev/null +++ b/src/caffe/test/test_solver_factory.cpp @@ -0,0 +1,50 @@ +#include +#include + +#include "boost/scoped_ptr.hpp" +#include "google/protobuf/text_format.h" +#include "gtest/gtest.h" + +#include "caffe/common.hpp" +#include "caffe/solver.hpp" +#include "caffe/solver_factory.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +template +class SolverFactoryTest : public MultiDeviceTest { + protected: + SolverParameter simple_solver_param() { + const string solver_proto = + "train_net_param { " + " layer { " + " name: 'data' type: 'DummyData' top: 'data' " + " dummy_data_param { shape { dim: 1 } } " + " } " + "} "; + SolverParameter solver_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + solver_proto, &solver_param)); + return solver_param; + } +}; + +TYPED_TEST_CASE(SolverFactoryTest, TestDtypesAndDevices); + +TYPED_TEST(SolverFactoryTest, TestCreateSolver) { + typedef typename TypeParam::Dtype Dtype; + typename SolverRegistry::CreatorRegistry& registry = + SolverRegistry::Registry(); + shared_ptr > solver; + SolverParameter solver_param = this->simple_solver_param(); + for (typename SolverRegistry::CreatorRegistry::iterator iter = + registry.begin(); iter != registry.end(); ++iter) { + solver_param.set_type(iter->first); + solver.reset(SolverRegistry::CreateSolver(solver_param)); + EXPECT_EQ(iter->first, solver->type()); + } +} + +} // namespace caffe diff --git a/tools/caffe.cpp b/tools/caffe.cpp index e3f684b5a..1cb6ad895 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -194,7 +194,7 @@ int train() { GetRequestedAction(FLAGS_sighup_effect)); shared_ptr > - solver(caffe::GetSolver(solver_param)); + solver(caffe::SolverRegistry::CreateSolver(solver_param)); solver->SetActionFunction(signal_handler.GetActionFunction()); From c1f7fe1cffa4388886b735f49cd915fad905fca4 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Sat, 26 Sep 2015 11:47:02 -0700 Subject: [PATCH 069/458] Add automatic upgrade for solver type --- include/caffe/caffe.hpp | 1 + include/caffe/util/upgrade_proto.hpp | 12 +++++ matlab/+caffe/private/caffe_.cpp | 5 +- python/caffe/_caffe.cpp | 4 +- src/caffe/solver.cpp | 2 +- src/caffe/test/test_upgrade_proto.cpp | 61 ++++++++++++++++++++++ src/caffe/util/upgrade_proto.cpp | 74 +++++++++++++++++++++++++++ tools/caffe.cpp | 2 +- tools/upgrade_solver_proto_text.cpp | 50 ++++++++++++++++++ 9 files changed, 206 insertions(+), 5 deletions(-) create mode 100644 tools/upgrade_solver_proto_text.cpp diff --git a/include/caffe/caffe.hpp b/include/caffe/caffe.hpp index bd772830b..a339efba5 100644 --- a/include/caffe/caffe.hpp +++ b/include/caffe/caffe.hpp @@ -16,6 +16,7 @@ #include "caffe/solver_factory.hpp" #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" #include "caffe/vision_layers.hpp" #endif // CAFFE_CAFFE_HPP_ diff --git a/include/caffe/util/upgrade_proto.hpp b/include/caffe/util/upgrade_proto.hpp index 6a1418434..c94bb3caa 100644 --- a/include/caffe/util/upgrade_proto.hpp +++ b/include/caffe/util/upgrade_proto.hpp @@ -59,6 +59,18 @@ bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param, const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type); +// Return true iff the solver contains any old solver_type specified as enums +bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param); + +bool UpgradeSolverType(SolverParameter* solver_param); + +// Check for deprecations and upgrade the SolverParameter as needed. +bool UpgradeSolverAsNeeded(const string& param_file, SolverParameter* param); + +// Read parameters from a file into a SolverParameter proto message. +void ReadSolverParamsFromTextFileOrDie(const string& param_file, + SolverParameter* param); + } // namespace caffe #endif // CAFFE_UTIL_UPGRADE_PROTO_H_ diff --git a/matlab/+caffe/private/caffe_.cpp b/matlab/+caffe/private/caffe_.cpp index 7883f79eb..1641e14b5 100644 --- a/matlab/+caffe/private/caffe_.cpp +++ b/matlab/+caffe/private/caffe_.cpp @@ -188,7 +188,10 @@ static void get_solver(MEX_ARGS) { "Usage: caffe_('get_solver', solver_file)"); char* solver_file = mxArrayToString(prhs[0]); mxCHECK_FILE_EXIST(solver_file); - shared_ptr > solver(new caffe::SGDSolver(solver_file)); + SolverParameter solver_param; + ReadSolverParamsFromTextFileOrDie(solver_file, &solver_param); + shared_ptr > solver( + SolverRegistry::CreateSolver(solver_param)); solvers_.push_back(solver); plhs[0] = ptr_to_handle >(solver.get()); mxFree(solver_file); diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 0e38dee70..8687dd872 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -134,8 +134,8 @@ void Net_SetInputArrays(Net* net, bp::object data_obj, Solver* GetSolverFromFile(const string& filename) { SolverParameter param; - ReadProtoFromTextFileOrDie(filename, ¶m); - return GetSolver(param); + ReadSolverParamsFromTextFileOrDie(filename, ¶m); + return SolverRegistry::CreateSolver(param); } struct NdarrayConverterGenerator { diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 016a02888..d3bc7361d 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -36,7 +36,7 @@ Solver::Solver(const string& param_file, const Solver* root_solver) : net_(), callbacks_(), root_solver_(root_solver), requested_early_exit_(false) { SolverParameter param; - ReadProtoFromTextFileOrDie(param_file, ¶m); + ReadSolverParamsFromTextFileOrDie(param_file, ¶m); Init(param); } diff --git a/src/caffe/test/test_upgrade_proto.cpp b/src/caffe/test/test_upgrade_proto.cpp index ee05b151e..df9aeb624 100644 --- a/src/caffe/test/test_upgrade_proto.cpp +++ b/src/caffe/test/test_upgrade_proto.cpp @@ -2928,4 +2928,65 @@ TEST_F(NetUpgradeTest, TestUpgradeV1LayerType) { } } #endif // USE_OPENCV + +class SolverTypeUpgradeTest : public ::testing::Test { + protected: + void RunSolverTypeUpgradeTest( + const string& input_param_string, const string& output_param_string) { + // Test upgrading old solver_type field (enum) to new type field (string) + SolverParameter input_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + input_param_string, &input_param)); + SolverParameter expected_output_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + output_param_string, &expected_output_param)); + SolverParameter actual_output_param = input_param; + UpgradeSolverType(&actual_output_param); + EXPECT_EQ(expected_output_param.DebugString(), + actual_output_param.DebugString()); + } +}; + +TEST_F(SolverTypeUpgradeTest, TestSimple) { + const char* old_type_vec[6] = { "SGD", "ADAGRAD", "NESTEROV", "RMSPROP", + "ADADELTA", "ADAM" }; + const char* new_type_vec[6] = { "SGD", "AdaGrad", "Nesterov", "RMSProp", + "AdaDelta", "Adam" }; + for (int i = 0; i < 6; ++i) { + const string& input_proto = + "net: 'examples/mnist/lenet_train_test.prototxt' " + "test_iter: 100 " + "test_interval: 500 " + "base_lr: 0.01 " + "momentum: 0.0 " + "weight_decay: 0.0005 " + "lr_policy: 'inv' " + "gamma: 0.0001 " + "power: 0.75 " + "display: 100 " + "max_iter: 10000 " + "snapshot: 5000 " + "snapshot_prefix: 'examples/mnist/lenet_rmsprop' " + "solver_mode: GPU " + "solver_type: " + std::string(old_type_vec[i]) + " "; + const string& expected_output_proto = + "net: 'examples/mnist/lenet_train_test.prototxt' " + "test_iter: 100 " + "test_interval: 500 " + "base_lr: 0.01 " + "momentum: 0.0 " + "weight_decay: 0.0005 " + "lr_policy: 'inv' " + "gamma: 0.0001 " + "power: 0.75 " + "display: 100 " + "max_iter: 10000 " + "snapshot: 5000 " + "snapshot_prefix: 'examples/mnist/lenet_rmsprop' " + "solver_mode: GPU " + "type: '" + std::string(new_type_vec[i]) + "' "; + this->RunSolverTypeUpgradeTest(input_proto, expected_output_proto); + } +} + } // NOLINT(readability/fn_size) // namespace caffe diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index 6eae9fec0..ff3f8ffc4 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -937,4 +937,78 @@ const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) { } } +// Return true iff the solver contains any old solver_type specified as enums +bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param) { + if (solver_param.has_solver_type()) { + return true; + } + return false; +} + +bool UpgradeSolverType(SolverParameter* solver_param) { + CHECK(!solver_param->has_solver_type() || !solver_param->has_type()) + << "Failed to upgrade solver: old solver_type field (enum) and new type " + << "field (string) cannot be both specified in solver proto text."; + if (solver_param->has_solver_type()) { + string type; + switch (solver_param->solver_type()) { + case SolverParameter_SolverType_SGD: + type = "SGD"; + break; + case SolverParameter_SolverType_NESTEROV: + type = "Nesterov"; + break; + case SolverParameter_SolverType_ADAGRAD: + type = "AdaGrad"; + break; + case SolverParameter_SolverType_RMSPROP: + type = "RMSProp"; + break; + case SolverParameter_SolverType_ADADELTA: + type = "AdaDelta"; + break; + case SolverParameter_SolverType_ADAM: + type = "Adam"; + break; + default: + LOG(FATAL) << "Unknown SolverParameter solver_type: " << type; + } + solver_param->set_type(type); + solver_param->clear_solver_type(); + } else { + LOG(ERROR) << "Warning: solver type already up to date. "; + return false; + } + return true; +} + +// Check for deprecations and upgrade the SolverParameter as needed. +bool UpgradeSolverAsNeeded(const string& param_file, SolverParameter* param) { + bool success = true; + // Try to upgrade old style solver_type enum fields into new string type + if (SolverNeedsTypeUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "'solver_type' field (enum)': " << param_file; + if (!UpgradeSolverType(param)) { + success = false; + LOG(ERROR) << "Warning: had one or more problems upgrading " + << "SolverType (see above)."; + } else { + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "'solver_type' field (enum) to 'type' field (string)."; + LOG(WARNING) << "Note that future Caffe releases will only support " + << "'type' field (string) for a solver's type."; + } + } + return success; +} + +// Read parameters from a file into a SolverParameter proto message. +void ReadSolverParamsFromTextFileOrDie(const string& param_file, + SolverParameter* param) { + CHECK(ReadProtoFromTextFile(param_file, param)) + << "Failed to parse SolverParameter file: " << param_file; + UpgradeSolverAsNeeded(param_file, param); +} + } // namespace caffe diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 1cb6ad895..305cfc363 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -157,7 +157,7 @@ int train() { "but not both."; caffe::SolverParameter solver_param; - caffe::ReadProtoFromTextFileOrDie(FLAGS_solver, &solver_param); + caffe::ReadSolverParamsFromTextFileOrDie(FLAGS_solver, &solver_param); // If the gpus flag is not provided, allow the mode and device to be set // in the solver prototxt. diff --git a/tools/upgrade_solver_proto_text.cpp b/tools/upgrade_solver_proto_text.cpp new file mode 100644 index 000000000..7130232ae --- /dev/null +++ b/tools/upgrade_solver_proto_text.cpp @@ -0,0 +1,50 @@ +// This is a script to upgrade old solver prototxts to the new format. +// Usage: +// upgrade_solver_proto_text old_solver_proto_file_in solver_proto_file_out + +#include +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include + +#include "caffe/caffe.hpp" +#include "caffe/util/io.hpp" +#include "caffe/util/upgrade_proto.hpp" + +using std::ofstream; + +using namespace caffe; // NOLINT(build/namespaces) + +int main(int argc, char** argv) { + ::google::InitGoogleLogging(argv[0]); + if (argc != 3) { + LOG(ERROR) << "Usage: upgrade_solver_proto_text " + << "old_solver_proto_file_in solver_proto_file_out"; + return 1; + } + + SolverParameter solver_param; + string input_filename(argv[1]); + if (!ReadProtoFromTextFile(input_filename, &solver_param)) { + LOG(ERROR) << "Failed to parse input text file as SolverParameter: " + << input_filename; + return 2; + } + bool need_upgrade = SolverNeedsTypeUpgrade(solver_param); + bool success = true; + if (need_upgrade) { + success = UpgradeSolverAsNeeded(input_filename, &solver_param); + if (!success) { + LOG(ERROR) << "Encountered error(s) while upgrading prototxt; " + << "see details above."; + } + } else { + LOG(ERROR) << "File already in latest proto format: " << input_filename; + } + + // Save new format prototxt. + WriteProtoToTextFile(solver_param, argv[2]); + + LOG(ERROR) << "Wrote upgraded SolverParameter text proto to " << argv[2]; + return !success; +} From 9563537e86363fac2768200f5748000ec6b3a911 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Sat, 26 Sep 2015 11:47:32 -0700 Subject: [PATCH 070/458] Update examples and docs --- docs/tutorial/solver.md | 28 +++++++++---------- examples/mnist/lenet_adadelta_solver.prototxt | 2 +- examples/mnist/lenet_solver_adam.prototxt | 2 +- examples/mnist/lenet_solver_rmsprop.prototxt | 2 +- ...mnist_autoencoder_solver_adadelta.prototxt | 2 +- .../mnist_autoencoder_solver_adagrad.prototxt | 2 +- ...mnist_autoencoder_solver_nesterov.prototxt | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/tutorial/solver.md b/docs/tutorial/solver.md index b150f6487..b719f715a 100644 --- a/docs/tutorial/solver.md +++ b/docs/tutorial/solver.md @@ -8,12 +8,12 @@ The responsibilities of learning are divided between the Solver for overseeing t The Caffe solvers are: -- Stochastic Gradient Descent (`SGD`), -- AdaDelta (`ADADELTA`), -- Adaptive Gradient (`ADAGRAD`), -- Adam (`ADAM`), -- Nesterov's Accelerated Gradient (`NESTEROV`) and -- RMSprop (`RMSPROP`) +- Stochastic Gradient Descent (`type: "SGD"`), +- AdaDelta (`type: "AdaDelta"`), +- Adaptive Gradient (`type: "AdaGrad"`), +- Adam (`type: "Adam"`), +- Nesterov's Accelerated Gradient (`type: "Nesterov"`) and +- RMSprop (`type: "RMSProp"`) The solver @@ -51,7 +51,7 @@ The parameter update $$\Delta W$$ is formed by the solver from the error gradien ### SGD -**Stochastic gradient descent** (`solver_type: SGD`) updates the weights $$ W $$ by a linear combination of the negative gradient $$ \nabla L(W) $$ and the previous weight update $$ V_t $$. +**Stochastic gradient descent** (`type: "SGD"`) updates the weights $$ W $$ by a linear combination of the negative gradient $$ \nabla L(W) $$ and the previous weight update $$ V_t $$. The **learning rate** $$ \alpha $$ is the weight of the negative gradient. The **momentum** $$ \mu $$ is the weight of the previous update. @@ -113,7 +113,7 @@ If learning diverges (e.g., you start to see very large or `NaN` or `inf` loss v ### AdaDelta -The **AdaDelta** (`solver_type: ADADELTA`) method (M. Zeiler [1]) is a "robust learning rate method". It is a gradient-based optimization method (like SGD). The update formulas are +The **AdaDelta** (`type: "AdaDelta"`) method (M. Zeiler [1]) is a "robust learning rate method". It is a gradient-based optimization method (like SGD). The update formulas are $$ \begin{align} @@ -125,7 +125,7 @@ E[g^2]_t &= \delta{E[g^2]_{t-1} } + (1-\delta)g_{t}^2 \end{align} $$ -and +and $$ (W_{t+1})_i = @@ -139,7 +139,7 @@ $$ ### AdaGrad -The **adaptive gradient** (`solver_type: ADAGRAD`) method (Duchi et al. [1]) is a gradient-based optimization method (like SGD) that attempts to "find needles in haystacks in the form of very predictive but rarely seen features," in Duchi et al.'s words. +The **adaptive gradient** (`type: "AdaGrad"`) method (Duchi et al. [1]) is a gradient-based optimization method (like SGD) that attempts to "find needles in haystacks in the form of very predictive but rarely seen features," in Duchi et al.'s words. Given the update information from all previous iterations $$ \left( \nabla L(W) \right)_{t'} $$ for $$ t' \in \{1, 2, ..., t\} $$, the update formulas proposed by [1] are as follows, specified for each component $$i$$ of the weights $$W$$: @@ -159,7 +159,7 @@ Note that in practice, for weights $$ W \in \mathcal{R}^d $$, AdaGrad implementa ### Adam -The **Adam** (`solver_type: ADAM`), proposed in Kingma et al. [1], is a gradient-based optimization method (like SGD). This includes an "adaptive moment estimation" ($$m_t, v_t$$) and can be regarded as a generalization of AdaGrad. The update formulas are +The **Adam** (`type: "Adam"`), proposed in Kingma et al. [1], is a gradient-based optimization method (like SGD). This includes an "adaptive moment estimation" ($$m_t, v_t$$) and can be regarded as a generalization of AdaGrad. The update formulas are $$ (m_t)_i = \beta_1 (m_{t-1})_i + (1-\beta_1)(\nabla L(W_t))_i,\\ @@ -181,7 +181,7 @@ Kingma et al. [1] proposed to use $$\beta_1 = 0.9, \beta_2 = 0.999, \varepsilon ### NAG -**Nesterov's accelerated gradient** (`solver_type: NESTEROV`) was proposed by Nesterov [1] as an "optimal" method of convex optimization, achieving a convergence rate of $$ \mathcal{O}(1/t^2) $$ rather than the $$ \mathcal{O}(1/t) $$. +**Nesterov's accelerated gradient** (`type: "Nesterov"`) was proposed by Nesterov [1] as an "optimal" method of convex optimization, achieving a convergence rate of $$ \mathcal{O}(1/t^2) $$ rather than the $$ \mathcal{O}(1/t) $$. Though the required assumptions to achieve the $$ \mathcal{O}(1/t^2) $$ convergence typically will not hold for deep networks trained with Caffe (e.g., due to non-smoothness and non-convexity), in practice NAG can be a very effective method for optimizing certain types of deep learning architectures, as demonstrated for deep MNIST autoencoders by Sutskever et al. [2]. The weight update formulas look very similar to the SGD updates given above: @@ -206,10 +206,10 @@ What distinguishes the method from SGD is the weight setting $$ W $$ on which we ### RMSprop -The **RMSprop** (`solver_type: RMSPROP`), suggested by Tieleman in a Coursera course lecture, is a gradient-based optimization method (like SGD). The update formulas are +The **RMSprop** (`type: "RMSProp"`), suggested by Tieleman in a Coursera course lecture, is a gradient-based optimization method (like SGD). The update formulas are $$ -(v_t)_i = +(v_t)_i = \begin{cases} (v_{t-1})_i + \delta, &(\nabla L(W_t))_i(\nabla L(W_{t-1}))_i > 0\\ (v_{t-1})_i \cdot (1-\delta), & \text{else} diff --git a/examples/mnist/lenet_adadelta_solver.prototxt b/examples/mnist/lenet_adadelta_solver.prototxt index 776d1e061..16176c0ff 100644 --- a/examples/mnist/lenet_adadelta_solver.prototxt +++ b/examples/mnist/lenet_adadelta_solver.prototxt @@ -20,5 +20,5 @@ snapshot: 5000 snapshot_prefix: "examples/mnist/lenet_adadelta" # solver mode: CPU or GPU solver_mode: GPU -solver_type: ADADELTA +type: "AdaDelta" delta: 1e-6 diff --git a/examples/mnist/lenet_solver_adam.prototxt b/examples/mnist/lenet_solver_adam.prototxt index d22c5718f..4b5336b1a 100644 --- a/examples/mnist/lenet_solver_adam.prototxt +++ b/examples/mnist/lenet_solver_adam.prototxt @@ -22,5 +22,5 @@ max_iter: 10000 snapshot: 5000 snapshot_prefix: "examples/mnist/lenet" # solver mode: CPU or GPU -solver_type: ADAM +type: "Adam" solver_mode: GPU diff --git a/examples/mnist/lenet_solver_rmsprop.prototxt b/examples/mnist/lenet_solver_rmsprop.prototxt index 74dadc510..924b72d30 100644 --- a/examples/mnist/lenet_solver_rmsprop.prototxt +++ b/examples/mnist/lenet_solver_rmsprop.prototxt @@ -23,5 +23,5 @@ snapshot: 5000 snapshot_prefix: "examples/mnist/lenet_rmsprop" # solver mode: CPU or GPU solver_mode: GPU -solver_type: RMSPROP +type: "RMSProp" rms_decay: 0.98 diff --git a/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt b/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt index 065647df3..26c4084a3 100644 --- a/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt +++ b/examples/mnist/mnist_autoencoder_solver_adadelta.prototxt @@ -16,4 +16,4 @@ snapshot: 10000 snapshot_prefix: "examples/mnist/mnist_autoencoder_adadelta_train" # solver mode: CPU or GPU solver_mode: GPU -solver_type: ADADELTA +type: "AdaDelta" diff --git a/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt b/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt index cc0ed9e31..065cdb20d 100644 --- a/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt +++ b/examples/mnist/mnist_autoencoder_solver_adagrad.prototxt @@ -14,4 +14,4 @@ snapshot: 10000 snapshot_prefix: "examples/mnist/mnist_autoencoder_adagrad_train" # solver mode: CPU or GPU solver_mode: GPU -solver_type: ADAGRAD +type: "AdaGrad" diff --git a/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt b/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt index 2a59fd45c..c95e3fe7e 100644 --- a/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt +++ b/examples/mnist/mnist_autoencoder_solver_nesterov.prototxt @@ -17,4 +17,4 @@ snapshot_prefix: "examples/mnist/mnist_autoencoder_nesterov_train" momentum: 0.95 # solver mode: CPU or GPU solver_mode: GPU -solver_type: NESTEROV +type: "Nesterov" From 6f8370a1f3917b525e60896586cac41bb829ac2b Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 16 Oct 2015 17:32:27 -0700 Subject: [PATCH 071/458] clean up logging for Net init - condense conditions by `LOG_IF` - only log memory use once after all tops --- src/caffe/net.cpp | 182 +++++++++++++++++++--------------------------- 1 file changed, 76 insertions(+), 106 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index ebb8b5d28..1ad93e6af 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -46,10 +46,9 @@ void Net::Init(const NetParameter& in_param) { // the current NetState. NetParameter filtered_param; FilterNet(in_param, &filtered_param); - if (Caffe::root_solver()) { - LOG(INFO) << "Initializing net from parameters: " << std::endl - << filtered_param.DebugString(); - } + LOG_IF(INFO, Caffe::root_solver()) + << "Initializing net from parameters: " << std::endl + << filtered_param.DebugString(); // Create a copy of filtered_param with splits added where necessary. NetParameter param; InsertSplits(filtered_param, ¶m); @@ -73,8 +72,6 @@ void Net::Init(const NetParameter& in_param) { const int layer_id = -1; // inputs have fake layer ID -1 AppendTop(param, layer_id, input_id, &available_blobs, &blob_name_to_idx); } - DLOG_IF(INFO, Caffe::root_solver()) - << "Memory required for data: " << memory_used_ * sizeof(Dtype); // For each layer, set up its input and output bottom_vecs_.resize(param.layer_size()); top_vecs_.resize(param.layer_size()); @@ -106,9 +103,8 @@ void Net::Init(const NetParameter& in_param) { layers_.push_back(LayerRegistry::CreateLayer(layer_param)); } layer_names_.push_back(layer_param.name()); - if (Caffe::root_solver()) { - LOG(INFO) << "Creating Layer " << layer_param.name(); - } + LOG_IF(INFO, Caffe::root_solver()) + << "Creating Layer " << layer_param.name(); bool need_backward = false; // Figure out this layer's input and output @@ -151,29 +147,23 @@ void Net::Init(const NetParameter& in_param) { } else { layers_[layer_id]->SetUp(bottom_vecs_[layer_id], top_vecs_[layer_id]); } - if (Caffe::root_solver()) { - LOG(INFO) << "Setting up " << layer_names_[layer_id]; - } + LOG_IF(INFO, Caffe::root_solver()) + << "Setting up " << layer_names_[layer_id]; for (int top_id = 0; top_id < top_vecs_[layer_id].size(); ++top_id) { if (blob_loss_weights_.size() <= top_id_vecs_[layer_id][top_id]) { blob_loss_weights_.resize(top_id_vecs_[layer_id][top_id] + 1, Dtype(0)); } blob_loss_weights_[top_id_vecs_[layer_id][top_id]] = layer->loss(top_id); - if (Caffe::root_solver()) { - LOG(INFO) << "Top shape: " - << top_vecs_[layer_id][top_id]->shape_string(); - } + LOG_IF(INFO, Caffe::root_solver()) + << "Top shape: " << top_vecs_[layer_id][top_id]->shape_string(); if (layer->loss(top_id)) { - if (Caffe::root_solver()) { - LOG(INFO) << " with loss weight " << layer->loss(top_id); - } + LOG_IF(INFO, Caffe::root_solver()) + << " with loss weight " << layer->loss(top_id); } memory_used_ += top_vecs_[layer_id][top_id]->count(); } - if (Caffe::root_solver()) { - DLOG(INFO) << "Memory required for data: " - << memory_used_ * sizeof(Dtype); - } + LOG_IF(INFO, Caffe::root_solver()) + << "Memory required for data: " << memory_used_ * sizeof(Dtype); const int param_size = layer_param.param_size(); const int num_param_blobs = layers_[layer_id]->blobs().size(); CHECK_LE(param_size, num_param_blobs) @@ -231,14 +221,12 @@ void Net::Init(const NetParameter& in_param) { } } if (!layer_contributes_loss) { layer_need_backward_[layer_id] = false; } - if (layer_need_backward_[layer_id]) { - if (Caffe::root_solver()) { + if (Caffe::root_solver()) { + if (layer_need_backward_[layer_id]) { LOG(INFO) << layer_names_[layer_id] << " needs backward computation."; - } - } else { - if (Caffe::root_solver()) { + } else { LOG(INFO) << layer_names_[layer_id] - << " does not need backward computation."; + << " does not need backward computation."; } } for (int bottom_id = 0; bottom_id < bottom_vecs_[layer_id].size(); @@ -279,9 +267,8 @@ void Net::Init(const NetParameter& in_param) { // In the end, all remaining blobs are considered output blobs. for (set::iterator it = available_blobs.begin(); it != available_blobs.end(); ++it) { - if (Caffe::root_solver()) { - LOG(INFO) << "This network produces output " << *it; - } + LOG_IF(INFO, Caffe::root_solver()) + << "This network produces output " << *it; net_output_blobs_.push_back(blobs_[blob_name_to_idx[*it]].get()); net_output_blob_indices_.push_back(blob_name_to_idx[*it]); } @@ -293,10 +280,7 @@ void Net::Init(const NetParameter& in_param) { } ShareWeights(); debug_info_ = param.debug_info(); - if (Caffe::root_solver()) { - LOG(INFO) << "Network initialization done."; - LOG(INFO) << "Memory required for data: " << memory_used_ * sizeof(Dtype); - } + LOG_IF(INFO, Caffe::root_solver()) << "Network initialization done."; } template @@ -335,33 +319,30 @@ bool Net::StateMeetsRule(const NetState& state, // Check whether the rule is broken due to phase. if (rule.has_phase()) { if (rule.phase() != state.phase()) { - if (Caffe::root_solver()) { - LOG(INFO) << "The NetState phase (" << state.phase() - << ") differed from the phase (" << rule.phase() - << ") specified by a rule in layer " << layer_name; - } + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState phase (" << state.phase() + << ") differed from the phase (" << rule.phase() + << ") specified by a rule in layer " << layer_name; return false; } } // Check whether the rule is broken due to min level. if (rule.has_min_level()) { if (state.level() < rule.min_level()) { - if (Caffe::root_solver()) { - LOG(INFO) << "The NetState level (" << state.level() - << ") is above the min_level (" << rule.min_level() - << ") specified by a rule in layer " << layer_name; - } + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState level (" << state.level() + << ") is above the min_level (" << rule.min_level() + << ") specified by a rule in layer " << layer_name; return false; } } // Check whether the rule is broken due to max level. if (rule.has_max_level()) { if (state.level() > rule.max_level()) { - if (Caffe::root_solver()) { - LOG(INFO) << "The NetState level (" << state.level() - << ") is above the max_level (" << rule.max_level() - << ") specified by a rule in layer " << layer_name; - } + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState level (" << state.level() + << ") is above the max_level (" << rule.max_level() + << ") specified by a rule in layer " << layer_name; return false; } } @@ -374,10 +355,9 @@ bool Net::StateMeetsRule(const NetState& state, if (rule.stage(i) == state.stage(j)) { has_stage = true; } } if (!has_stage) { - if (Caffe::root_solver()) { - LOG(INFO) << "The NetState did not contain stage '" << rule.stage(i) - << "' specified by a rule in layer " << layer_name; - } + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState did not contain stage '" << rule.stage(i) + << "' specified by a rule in layer " << layer_name; return false; } } @@ -390,10 +370,9 @@ bool Net::StateMeetsRule(const NetState& state, if (rule.not_stage(i) == state.stage(j)) { has_stage = true; } } if (has_stage) { - if (Caffe::root_solver()) { - LOG(INFO) << "The NetState contained a not_stage '" << rule.not_stage(i) - << "' specified by a rule in layer " << layer_name; - } + LOG_IF(INFO, Caffe::root_solver()) + << "The NetState contained a not_stage '" << rule.not_stage(i) + << "' specified by a rule in layer " << layer_name; return false; } } @@ -415,9 +394,8 @@ void Net::AppendTop(const NetParameter& param, const int layer_id, if (blob_name_to_idx && layer_param && layer_param->bottom_size() > top_id && blob_name == layer_param->bottom(top_id)) { // In-place computation - if (Caffe::root_solver()) { - LOG(INFO) << layer_param->name() << " -> " << blob_name << " (in-place)"; - } + LOG_IF(INFO, Caffe::root_solver()) + << layer_param->name() << " -> " << blob_name << " (in-place)"; top_vecs_[layer_id].push_back(blobs_[(*blob_name_to_idx)[blob_name]].get()); top_id_vecs_[layer_id].push_back((*blob_name_to_idx)[blob_name]); } else if (blob_name_to_idx && @@ -473,9 +451,8 @@ int Net::AppendBottom(const NetParameter& param, const int layer_id, << layer_param.name() << "', bottom index " << bottom_id << ")"; } const int blob_id = (*blob_name_to_idx)[blob_name]; - if (Caffe::root_solver()) { - LOG(INFO) << layer_names_[layer_id] << " <- " << blob_name; - } + LOG_IF(INFO, Caffe::root_solver()) + << layer_names_[layer_id] << " <- " << blob_name; bottom_vecs_[layer_id].push_back(blobs_[blob_id].get()); bottom_id_vecs_[layer_id].push_back(blob_id); available_blobs->erase(blob_name); @@ -672,10 +649,9 @@ void Net::InputDebugInfo(const int input_id) { const Blob& blob = *net_input_blobs_[input_id]; const string& blob_name = blob_names_[net_input_blob_indices_[input_id]]; const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); - if (Caffe::root_solver()) { - LOG(INFO) << " [Forward] " - << "Input " << blob_name << " data: " << data_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Forward] " + << "Input " << blob_name << " data: " << data_abs_val_mean; } template @@ -684,12 +660,11 @@ void Net::ForwardDebugInfo(const int layer_id) { const Blob& blob = *top_vecs_[layer_id][top_id]; const string& blob_name = blob_names_[top_id_vecs_[layer_id][top_id]]; const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); - if (Caffe::root_solver()) { - LOG(INFO) << " [Forward] " - << "Layer " << layer_names_[layer_id] - << ", top blob " << blob_name - << " data: " << data_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Forward] " + << "Layer " << layer_names_[layer_id] + << ", top blob " << blob_name + << " data: " << data_abs_val_mean; } for (int param_id = 0; param_id < layers_[layer_id]->blobs().size(); ++param_id) { @@ -697,12 +672,11 @@ void Net::ForwardDebugInfo(const int layer_id) { const int net_param_id = param_id_vecs_[layer_id][param_id]; const string& blob_name = param_display_names_[net_param_id]; const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); - if (Caffe::root_solver()) { - LOG(INFO) << " [Forward] " - << "Layer " << layer_names_[layer_id] - << ", param blob " << blob_name - << " data: " << data_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Forward] " + << "Layer " << layer_names_[layer_id] + << ", param blob " << blob_name + << " data: " << data_abs_val_mean; } } @@ -714,24 +688,22 @@ void Net::BackwardDebugInfo(const int layer_id) { const Blob& blob = *bottom_vec[bottom_id]; const string& blob_name = blob_names_[bottom_id_vecs_[layer_id][bottom_id]]; const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); - if (Caffe::root_solver()) { - LOG(INFO) << " [Backward] " - << "Layer " << layer_names_[layer_id] - << ", bottom blob " << blob_name - << " diff: " << diff_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Backward] " + << "Layer " << layer_names_[layer_id] + << ", bottom blob " << blob_name + << " diff: " << diff_abs_val_mean; } for (int param_id = 0; param_id < layers_[layer_id]->blobs().size(); ++param_id) { if (!layers_[layer_id]->param_propagate_down(param_id)) { continue; } const Blob& blob = *layers_[layer_id]->blobs()[param_id]; const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); - if (Caffe::root_solver()) { - LOG(INFO) << " [Backward] " - << "Layer " << layer_names_[layer_id] - << ", param blob " << param_id - << " diff: " << diff_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Backward] " + << "Layer " << layer_names_[layer_id] + << ", param blob " << param_id + << " diff: " << diff_abs_val_mean; } } @@ -744,22 +716,20 @@ void Net::UpdateDebugInfo(const int param_id) { const Dtype diff_abs_val_mean = blob.asum_diff() / blob.count(); if (param_owner < 0) { const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); - if (Caffe::root_solver()) { - LOG(INFO) << " [Update] Layer " << layer_name - << ", param " << param_display_name - << " data: " << data_abs_val_mean - << "; diff: " << diff_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Update] Layer " << layer_name + << ", param " << param_display_name + << " data: " << data_abs_val_mean + << "; diff: " << diff_abs_val_mean; } else { const string& owner_layer_name = layer_names_[param_layer_indices_[param_owner].first]; - if (Caffe::root_solver()) { - LOG(INFO) << " [Update] Layer " << layer_name - << ", param blob " << param_display_name - << " (owned by layer " << owner_layer_name << ", " << "param " - << param_display_names_[param_owners_[param_id]] << ")" - << " diff: " << diff_abs_val_mean; - } + LOG_IF(INFO, Caffe::root_solver()) + << " [Update] Layer " << layer_name + << ", param blob " << param_display_name + << " (owned by layer " << owner_layer_name << ", " << "param " + << param_display_names_[param_owners_[param_id]] << ")" + << " diff: " << diff_abs_val_mean; } } From 4c93b3dc555891ae0ad75092b6c0f77508740ecf Mon Sep 17 00:00:00 2001 From: Mausoom Sarkar Date: Tue, 13 Oct 2015 18:35:32 +0530 Subject: [PATCH 072/458] Moved the loop inside PReLUParamBackward to do the reduction inside the kernel Now PReLU backward is taking the same time as forward Code cleanup Removed unnecessary code Fixed indent merge if(channed_shared_) --- src/caffe/layers/prelu_layer.cu | 44 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/caffe/layers/prelu_layer.cu b/src/caffe/layers/prelu_layer.cu index e1f20048f..1225334f3 100644 --- a/src/caffe/layers/prelu_layer.cu +++ b/src/caffe/layers/prelu_layer.cu @@ -31,10 +31,15 @@ __global__ void PReLUBackward(const int n, const int channels, const int dim, // CUDA kernel for element-wise parameter backward template -__global__ void PReLUParamBackward(const int n, const Dtype* in_diff, +__global__ void PReLUParamBackward(const int n, + const int rows, const int rowPitch, const Dtype* in_diff, const Dtype* in_data, Dtype* out_diff) { CUDA_KERNEL_LOOP(index, n) { out_diff[index] = in_diff[index] * in_data[index] * (in_data[index] <= 0); + for ( int k = 1; k < rows; k++ ) { + out_diff[index] += in_diff[index + k*rowPitch] + * in_data[index + k*rowPitch] * (in_data[index + k*rowPitch] <= 0); + } } } @@ -82,29 +87,24 @@ void PReLULayer::Backward_gpu(const vector*>& top, if (this->param_propagate_down_[0]) { Dtype* slope_diff = this->blobs_[0]->mutable_gpu_diff(); int cdim = channels * dim; - Dtype dsum = 0.; - for (int n = 0; n < bottom[0]->num(); ++n) { - // compute element-wise diff - // NOLINT_NEXT_LINE(whitespace/operators) - PReLUParamBackward<<>>( - cdim, top_diff + top[0]->offset(n), - bottom_data + bottom[0]->offset(n), - backward_buff_.mutable_gpu_diff()); - CUDA_POST_KERNEL_CHECK; - if (channel_shared_) { - Dtype d; - caffe_gpu_dot(channels * dim, backward_buff_.gpu_diff(), - multiplier_.gpu_data(), &d); - dsum += d; - } else { - caffe_gpu_gemv(CblasNoTrans, channels, dim, 1., - backward_buff_.gpu_diff(), multiplier_.gpu_data(), 1., - slope_diff); - } - } + + // compute element-wise diff + // NOLINT_NEXT_LINE(whitespace/operators) + PReLUParamBackward<<>>( + cdim, bottom[0]->num(), top[0]->offset(1), top_diff , + bottom_data , + backward_buff_.mutable_gpu_diff()); + CUDA_POST_KERNEL_CHECK; if (channel_shared_) { + Dtype dsum; + caffe_gpu_dot(channels * dim, backward_buff_.gpu_diff(), + multiplier_.gpu_data(), &dsum); caffe_gpu_add_scalar(this->blobs_[0]->count(), Dtype(dsum), slope_diff); + } else { + caffe_gpu_gemv(CblasNoTrans, channels, dim, 1., + backward_buff_.gpu_diff(), multiplier_.gpu_data(), 1., + slope_diff); } } // Propagate to bottom From a7d84f3c7e2db7f400c933349edcd4bcf46903b8 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Mon, 19 Oct 2015 18:19:38 +0800 Subject: [PATCH 073/458] Qualify messages issued by CMake when CUDA is unavailable --- cmake/Dependencies.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index d68d7bfba..2005b9927 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -55,9 +55,9 @@ endif() include(cmake/Cuda.cmake) if(NOT HAVE_CUDA) if(CPU_ONLY) - message("-- CUDA is disabled. Building without it...") + message(STATUS "-- CUDA is disabled. Building without it...") else() - message("-- CUDA is not detected by cmake. Building without it...") + message(WARNING "-- CUDA is not detected by cmake. Building without it...") endif() # TODO: remove this not cross platform define in future. Use caffe_config.h instead. From 52429c77cb84b06bf7564f5df619f9f489fe5f72 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 19 Oct 2015 11:36:38 -0700 Subject: [PATCH 074/458] installation questions -> caffe-users --- INSTALL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 42fcf027e..05c714dbd 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -3,5 +3,5 @@ See http://caffe.berkeleyvision.org/installation.html for the latest installation instructions. -Check the issue tracker in case you need help: -https://github.com/BVLC/caffe/issues +Check the users group in case you need help: +https://groups.google.com/forum/#!forum/caffe-users From 2aabba4f8e33a1d0d474a17fff445e9d12201be4 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 19 Oct 2015 11:39:29 -0700 Subject: [PATCH 075/458] [docs] cuDNN v3 compatible --- docs/installation.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 89a8c71c7..cce7ec358 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -30,13 +30,14 @@ Optional dependencies: * [OpenCV](http://opencv.org/) >= 2.4 including 3.0 * IO libraries: `lmdb`, `leveldb` (note: leveldb requires `snappy`) +* cuDNN for GPU acceleration (v3) Pycaffe and Matcaffe interfaces have their own natural needs. * For Python Caffe: `Python 2.7` or `Python 3.3+`, `numpy (>= 1.7)`, boost-provided `boost.python` * For MATLAB Caffe: MATLAB with the `mex` compiler. -**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. For now cuDNN v1 is integrated but see [PR #1731](https://github.com/BVLC/caffe/pull/1731) for v2. +**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v3; older versions are supported in older Caffe. **CPU-only Caffe**: for cold-brewed CPU-only Caffe uncomment the `CPU_ONLY := 1` flag in `Makefile.config` to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment. From 33a8ba64145e308aefefd5997d06ad53038c4f21 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 16 Oct 2015 17:13:24 -0700 Subject: [PATCH 076/458] [test] drop bogus OpenCV guard for layer type --- src/caffe/test/test_upgrade_proto.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/caffe/test/test_upgrade_proto.cpp b/src/caffe/test/test_upgrade_proto.cpp index df9aeb624..23deddd45 100644 --- a/src/caffe/test/test_upgrade_proto.cpp +++ b/src/caffe/test/test_upgrade_proto.cpp @@ -2892,7 +2892,6 @@ TEST_F(NetUpgradeTest, TestImageNet) { this->RunV1UpgradeTest(expected_v1_proto, expected_v2_proto); } // NOLINT(readability/fn_size) -#ifdef USE_OPENCV TEST_F(NetUpgradeTest, TestUpgradeV1LayerType) { LayerParameter layer_param; shared_ptr > layer; @@ -2927,7 +2926,6 @@ TEST_F(NetUpgradeTest, TestUpgradeV1LayerType) { EXPECT_EQ(v2_layer_type, layer->type()); } } -#endif // USE_OPENCV class SolverTypeUpgradeTest : public ::testing::Test { protected: From 1caaf38370a6dd1bd7bc91fe3b5242ae63be6a22 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Mon, 19 Oct 2015 18:13:57 +0800 Subject: [PATCH 077/458] Endorse CMP0046, CMP0054 Set policies to NEW to silence warnings in CMake 3.02 and later. --- CMakeLists.txt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 37f937fe4..82742dafc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,10 @@ cmake_minimum_required(VERSION 2.8.7) +if(POLICY CMP0046) + cmake_policy(SET CMP0046 NEW) +endif() +if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() # ---[ Caffe project project(Caffe C CXX) @@ -66,8 +72,10 @@ add_subdirectory(docs) add_custom_target(lint COMMAND ${CMAKE_COMMAND} -P ${PROJECT_SOURCE_DIR}/cmake/lint.cmake) # ---[ pytest target -add_custom_target(pytest COMMAND python${python_version} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python ) -add_dependencies(pytest pycaffe) +if(BUILD_python) + add_custom_target(pytest COMMAND python${python_version} -m unittest discover -s caffe/test WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/python ) + add_dependencies(pytest pycaffe) +endif() # ---[ Configuration summary caffe_print_configuration_summary() From 93212e61aa9382762954a01c62f9f0a96d9ff00d Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Sun, 18 Oct 2015 16:52:19 +0900 Subject: [PATCH 078/458] Move HDF5 defines to data_layers header --- include/caffe/data_layers.hpp | 3 +++ include/caffe/neuron_layers.hpp | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/caffe/data_layers.hpp b/include/caffe/data_layers.hpp index 90fd0d199..aa0ab7df3 100644 --- a/include/caffe/data_layers.hpp +++ b/include/caffe/data_layers.hpp @@ -17,6 +17,9 @@ #include "caffe/util/blocking_queue.hpp" #include "caffe/util/db.hpp" +#define HDF5_DATA_DATASET_NAME "data" +#define HDF5_DATA_LABEL_NAME "label" + namespace caffe { /** diff --git a/include/caffe/neuron_layers.hpp b/include/caffe/neuron_layers.hpp index c2e0774aa..4fa330ec7 100644 --- a/include/caffe/neuron_layers.hpp +++ b/include/caffe/neuron_layers.hpp @@ -10,9 +10,6 @@ #include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" -#define HDF5_DATA_DATASET_NAME "data" -#define HDF5_DATA_LABEL_NAME "label" - namespace caffe { /** From 80d045263f26c41a1e886906a30d649a5c812038 Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Mon, 19 Oct 2015 00:58:55 +0900 Subject: [PATCH 079/458] Clean redundant/unnecessary headers --- include/caffe/blob.hpp | 1 - include/caffe/common_layers.hpp | 5 ----- include/caffe/filler.hpp | 1 - include/caffe/layer.hpp | 2 +- include/caffe/loss_layers.hpp | 1 - include/caffe/syncedmem.hpp | 1 - include/caffe/util/blocking_queue.hpp | 2 -- include/caffe/util/io.hpp | 1 - src/caffe/layers/absval_layer.cpp | 1 - src/caffe/layers/absval_layer.cu | 3 +-- src/caffe/layers/accuracy_layer.cpp | 5 +---- src/caffe/layers/argmax_layer.cpp | 3 +-- src/caffe/layers/base_conv_layer.cpp | 1 - src/caffe/layers/base_data_layer.cpp | 3 --- src/caffe/layers/batch_reindex_layer.cpp | 3 +-- src/caffe/layers/batch_reindex_layer.cu | 3 +-- src/caffe/layers/bnll_layer.cpp | 3 +-- src/caffe/layers/bnll_layer.cu | 3 +-- src/caffe/layers/concat_layer.cpp | 3 +-- src/caffe/layers/concat_layer.cu | 3 +-- src/caffe/layers/contrastive_loss_layer.cpp | 2 -- src/caffe/layers/contrastive_loss_layer.cu | 4 +--- src/caffe/layers/conv_layer.cpp | 4 ---- src/caffe/layers/conv_layer.cu | 4 ---- src/caffe/layers/cudnn_conv_layer.cpp | 4 ---- src/caffe/layers/cudnn_conv_layer.cu | 4 ---- src/caffe/layers/cudnn_lcn_layer.cpp | 4 ---- src/caffe/layers/cudnn_lcn_layer.cu | 4 ---- src/caffe/layers/cudnn_lrn_layer.cpp | 4 ---- src/caffe/layers/cudnn_lrn_layer.cu | 4 ---- src/caffe/layers/cudnn_pooling_layer.cpp | 4 ---- src/caffe/layers/cudnn_pooling_layer.cu | 4 ---- src/caffe/layers/cudnn_relu_layer.cpp | 2 -- src/caffe/layers/cudnn_relu_layer.cu | 2 -- src/caffe/layers/cudnn_sigmoid_layer.cpp | 2 -- src/caffe/layers/cudnn_sigmoid_layer.cu | 2 -- src/caffe/layers/cudnn_softmax_layer.cpp | 4 ---- src/caffe/layers/cudnn_softmax_layer.cu | 4 ---- src/caffe/layers/cudnn_tanh_layer.cpp | 4 +--- src/caffe/layers/cudnn_tanh_layer.cu | 4 +--- src/caffe/layers/data_layer.cpp | 4 ---- src/caffe/layers/deconv_layer.cpp | 4 ---- src/caffe/layers/deconv_layer.cu | 4 ---- src/caffe/layers/dropout_layer.cpp | 5 +---- src/caffe/layers/dropout_layer.cu | 7 +------ src/caffe/layers/dummy_data_layer.cpp | 3 +-- src/caffe/layers/eltwise_layer.cpp | 3 +-- src/caffe/layers/eltwise_layer.cu | 3 +-- src/caffe/layers/embed_layer.cpp | 3 --- src/caffe/layers/embed_layer.cu | 3 --- src/caffe/layers/euclidean_loss_layer.cpp | 4 +--- src/caffe/layers/euclidean_loss_layer.cu | 4 +--- src/caffe/layers/exp_layer.cpp | 4 +--- src/caffe/layers/exp_layer.cu | 4 +--- src/caffe/layers/filter_layer.cpp | 4 +--- src/caffe/layers/filter_layer.cu | 3 +-- src/caffe/layers/flatten_layer.cpp | 4 +--- src/caffe/layers/hdf5_data_layer.cpp | 1 - src/caffe/layers/hdf5_data_layer.cu | 3 --- src/caffe/layers/hdf5_output_layer.cpp | 5 +---- src/caffe/layers/hdf5_output_layer.cu | 5 +---- src/caffe/layers/hinge_loss_layer.cpp | 6 +----- src/caffe/layers/im2col_layer.cpp | 2 -- src/caffe/layers/im2col_layer.cu | 2 -- src/caffe/layers/image_data_layer.cpp | 1 - src/caffe/layers/infogain_loss_layer.cpp | 5 +---- src/caffe/layers/inner_product_layer.cpp | 5 +---- src/caffe/layers/inner_product_layer.cu | 5 +---- src/caffe/layers/log_layer.cpp | 2 -- src/caffe/layers/log_layer.cu | 2 -- src/caffe/layers/loss_layer.cpp | 8 +------- src/caffe/layers/lrn_layer.cpp | 1 - src/caffe/layers/lrn_layer.cu | 1 - src/caffe/layers/memory_data_layer.cpp | 2 -- src/caffe/layers/multinomial_logistic_loss_layer.cpp | 5 +---- src/caffe/layers/mvn_layer.cpp | 2 -- src/caffe/layers/mvn_layer.cu | 2 -- src/caffe/layers/neuron_layer.cpp | 3 +-- src/caffe/layers/pooling_layer.cpp | 3 --- src/caffe/layers/pooling_layer.cu | 1 - src/caffe/layers/power_layer.cpp | 4 +--- src/caffe/layers/power_layer.cu | 4 +--- src/caffe/layers/prelu_layer.cpp | 3 +-- src/caffe/layers/prelu_layer.cu | 3 +-- src/caffe/layers/reduction_layer.cpp | 5 +---- src/caffe/layers/reduction_layer.cu | 4 +--- src/caffe/layers/relu_layer.cpp | 3 +-- src/caffe/layers/relu_layer.cu | 3 +-- src/caffe/layers/reshape_layer.cpp | 1 - src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp | 5 +---- src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu | 5 +---- src/caffe/layers/sigmoid_layer.cpp | 4 +--- src/caffe/layers/sigmoid_layer.cu | 4 +--- src/caffe/layers/silence_layer.cpp | 1 - src/caffe/layers/silence_layer.cu | 1 - src/caffe/layers/slice_layer.cpp | 3 +-- src/caffe/layers/slice_layer.cu | 3 +-- src/caffe/layers/softmax_layer.cpp | 3 +-- src/caffe/layers/softmax_layer.cu | 3 +-- src/caffe/layers/softmax_loss_layer.cpp | 4 +--- src/caffe/layers/softmax_loss_layer.cu | 3 +-- src/caffe/layers/split_layer.cpp | 3 +-- src/caffe/layers/split_layer.cu | 3 +-- src/caffe/layers/spp_layer.cpp | 5 ----- src/caffe/layers/tanh_layer.cpp | 4 +--- src/caffe/layers/tanh_layer.cu | 4 +--- src/caffe/layers/threshold_layer.cpp | 3 +-- src/caffe/layers/threshold_layer.cu | 4 +--- src/caffe/layers/tile_layer.cpp | 1 - src/caffe/layers/tile_layer.cu | 1 - src/caffe/layers/window_data_layer.cpp | 2 -- src/caffe/parallel.cpp | 1 - src/caffe/syncedmem.cpp | 2 -- src/caffe/test/test_accuracy_layer.cpp | 4 +--- src/caffe/test/test_argmax_layer.cpp | 2 +- src/caffe/test/test_batch_reindex_layer.cpp | 3 +-- src/caffe/test/test_blob.cpp | 1 - src/caffe/test/test_common.cpp | 2 -- src/caffe/test/test_concat_layer.cpp | 3 +-- src/caffe/test/test_contrastive_loss_layer.cpp | 4 +--- src/caffe/test/test_convolution_layer.cpp | 1 - src/caffe/test/test_deconvolution_layer.cpp | 1 - src/caffe/test/test_eltwise_layer.cpp | 2 +- src/caffe/test/test_embed_layer.cpp | 3 +-- src/caffe/test/test_euclidean_loss_layer.cpp | 4 +--- src/caffe/test/test_filler.cpp | 2 -- src/caffe/test/test_filter_layer.cpp | 4 +--- src/caffe/test/test_flatten_layer.cpp | 3 +-- src/caffe/test/test_hdf5_output_layer.cpp | 2 +- src/caffe/test/test_hdf5data_layer.cpp | 3 +-- src/caffe/test/test_hinge_loss_layer.cpp | 4 +--- src/caffe/test/test_im2col_kernel.cu | 1 - src/caffe/test/test_im2col_layer.cpp | 1 - src/caffe/test/test_image_data_layer.cpp | 2 +- src/caffe/test/test_infogain_loss_layer.cpp | 3 --- src/caffe/test/test_inner_product_layer.cpp | 3 +-- src/caffe/test/test_lrn_layer.cpp | 1 - src/caffe/test/test_math_functions.cpp | 2 -- src/caffe/test/test_maxpool_dropout_layers.cpp | 1 - src/caffe/test/test_multinomial_logistic_loss_layer.cpp | 5 +---- src/caffe/test/test_mvn_layer.cpp | 2 -- src/caffe/test/test_neuron_layer.cpp | 4 ++-- src/caffe/test/test_pooling_layer.cpp | 1 - src/caffe/test/test_power_layer.cpp | 2 +- src/caffe/test/test_random_number_generator.cpp | 1 - src/caffe/test/test_reduction_layer.cpp | 3 +-- src/caffe/test/test_reshape_layer.cpp | 1 - src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp | 4 +--- src/caffe/test/test_slice_layer.cpp | 3 +-- src/caffe/test/test_softmax_layer.cpp | 3 +-- src/caffe/test/test_softmax_with_loss_layer.cpp | 4 +--- src/caffe/test/test_split_layer.cpp | 3 +-- src/caffe/test/test_spp_layer.cpp | 2 -- src/caffe/test/test_stochastic_pooling.cpp | 1 - src/caffe/test/test_syncedmem.cpp | 1 - src/caffe/test/test_tanh_layer.cpp | 2 +- src/caffe/test/test_threshold_layer.cpp | 2 +- src/caffe/test/test_tile_layer.cpp | 3 +-- src/caffe/test/test_upgrade_proto.cpp | 1 - src/caffe/test/test_util_blas.cpp | 2 -- src/caffe/util/im2col.cpp | 3 --- src/caffe/util/im2col.cu | 3 --- src/caffe/util/math_functions.cu | 2 -- 163 files changed, 86 insertions(+), 392 deletions(-) diff --git a/include/caffe/blob.hpp b/include/caffe/blob.hpp index fea5117ef..af360ac24 100644 --- a/include/caffe/blob.hpp +++ b/include/caffe/blob.hpp @@ -8,7 +8,6 @@ #include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/syncedmem.hpp" -#include "caffe/util/math_functions.hpp" const int kMaxBlobAxes = 32; diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index 21a27d759..95358d4cd 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -1,16 +1,11 @@ #ifndef CAFFE_COMMON_LAYERS_HPP_ #define CAFFE_COMMON_LAYERS_HPP_ -#include #include #include #include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/data_layers.hpp" #include "caffe/layer.hpp" -#include "caffe/loss_layers.hpp" -#include "caffe/neuron_layers.hpp" #include "caffe/proto/caffe.pb.h" namespace caffe { diff --git a/include/caffe/filler.hpp b/include/caffe/filler.hpp index 888f4a4ba..dad9ad46b 100644 --- a/include/caffe/filler.hpp +++ b/include/caffe/filler.hpp @@ -8,7 +8,6 @@ #include #include "caffe/blob.hpp" -#include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/syncedmem.hpp" #include "caffe/util/math_functions.hpp" diff --git a/include/caffe/layer.hpp b/include/caffe/layer.hpp index a0d1d4ecc..10f353f94 100644 --- a/include/caffe/layer.hpp +++ b/include/caffe/layer.hpp @@ -9,7 +9,7 @@ #include "caffe/common.hpp" #include "caffe/layer_factory.hpp" #include "caffe/proto/caffe.pb.h" -#include "caffe/util/device_alternate.hpp" +#include "caffe/util/math_functions.hpp" /** Forward declare boost::thread instead of including boost/thread.hpp diff --git a/include/caffe/loss_layers.hpp b/include/caffe/loss_layers.hpp index 8d41af34e..d08ad9b68 100644 --- a/include/caffe/loss_layers.hpp +++ b/include/caffe/loss_layers.hpp @@ -6,7 +6,6 @@ #include #include "caffe/blob.hpp" -#include "caffe/common.hpp" #include "caffe/layer.hpp" #include "caffe/neuron_layers.hpp" #include "caffe/proto/caffe.pb.h" diff --git a/include/caffe/syncedmem.hpp b/include/caffe/syncedmem.hpp index 3d92a0eaf..38ee46640 100644 --- a/include/caffe/syncedmem.hpp +++ b/include/caffe/syncedmem.hpp @@ -4,7 +4,6 @@ #include #include "caffe/common.hpp" -#include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/include/caffe/util/blocking_queue.hpp b/include/caffe/util/blocking_queue.hpp index 955e12cc5..d3de2e59b 100644 --- a/include/caffe/util/blocking_queue.hpp +++ b/include/caffe/util/blocking_queue.hpp @@ -4,8 +4,6 @@ #include #include -#include "caffe/common.hpp" - namespace caffe { template diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index 6070b4c7f..d6cfa442f 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -6,7 +6,6 @@ #include "google/protobuf/message.h" -#include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" diff --git a/src/caffe/layers/absval_layer.cpp b/src/caffe/layers/absval_layer.cpp index 5ce28c9e2..7e5523526 100644 --- a/src/caffe/layers/absval_layer.cpp +++ b/src/caffe/layers/absval_layer.cpp @@ -1,6 +1,5 @@ #include -#include "caffe/layer.hpp" #include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/absval_layer.cu b/src/caffe/layers/absval_layer.cu index bb310e1af..b5a6c25a8 100644 --- a/src/caffe/layers/absval_layer.cu +++ b/src/caffe/layers/absval_layer.cu @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/accuracy_layer.cpp b/src/caffe/layers/accuracy_layer.cpp index e2d8d9f8a..ae2df1f1b 100644 --- a/src/caffe/layers/accuracy_layer.cpp +++ b/src/caffe/layers/accuracy_layer.cpp @@ -1,12 +1,9 @@ -#include #include #include #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/argmax_layer.cpp b/src/caffe/layers/argmax_layer.cpp index 0c0a932da..44df8d4e2 100644 --- a/src/caffe/layers/argmax_layer.cpp +++ b/src/caffe/layers/argmax_layer.cpp @@ -3,8 +3,7 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/common_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index c6b475502..316cb0fdf 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -2,7 +2,6 @@ #include #include "caffe/filler.hpp" -#include "caffe/layer.hpp" #include "caffe/util/im2col.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/base_data_layer.cpp b/src/caffe/layers/base_data_layer.cpp index b90bd4e0c..d77f91c91 100644 --- a/src/caffe/layers/base_data_layer.cpp +++ b/src/caffe/layers/base_data_layer.cpp @@ -1,10 +1,7 @@ #include -#include #include #include "caffe/data_layers.hpp" -#include "caffe/net.hpp" -#include "caffe/util/io.hpp" namespace caffe { diff --git a/src/caffe/layers/batch_reindex_layer.cpp b/src/caffe/layers/batch_reindex_layer.cpp index 3bf757c71..3d3ce32c9 100644 --- a/src/caffe/layers/batch_reindex_layer.cpp +++ b/src/caffe/layers/batch_reindex_layer.cpp @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/batch_reindex_layer.cu b/src/caffe/layers/batch_reindex_layer.cu index c418cab90..0b5ccf099 100644 --- a/src/caffe/layers/batch_reindex_layer.cu +++ b/src/caffe/layers/batch_reindex_layer.cu @@ -2,9 +2,8 @@ #include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/bnll_layer.cpp b/src/caffe/layers/bnll_layer.cpp index 9ba0ea9a7..1e422a546 100644 --- a/src/caffe/layers/bnll_layer.cpp +++ b/src/caffe/layers/bnll_layer.cpp @@ -1,8 +1,7 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/bnll_layer.cu b/src/caffe/layers/bnll_layer.cu index d963d0687..3e328ef70 100644 --- a/src/caffe/layers/bnll_layer.cu +++ b/src/caffe/layers/bnll_layer.cu @@ -1,8 +1,7 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/concat_layer.cpp b/src/caffe/layers/concat_layer.cpp index 86b500de8..14cbfb11f 100644 --- a/src/caffe/layers/concat_layer.cpp +++ b/src/caffe/layers/concat_layer.cpp @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/concat_layer.cu b/src/caffe/layers/concat_layer.cu index 617701e26..e1e9449e4 100644 --- a/src/caffe/layers/concat_layer.cu +++ b/src/caffe/layers/concat_layer.cu @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/contrastive_loss_layer.cpp b/src/caffe/layers/contrastive_loss_layer.cpp index 25e167819..74002087e 100644 --- a/src/caffe/layers/contrastive_loss_layer.cpp +++ b/src/caffe/layers/contrastive_loss_layer.cpp @@ -1,9 +1,7 @@ #include #include -#include "caffe/layer.hpp" #include "caffe/loss_layers.hpp" -#include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/contrastive_loss_layer.cu b/src/caffe/layers/contrastive_loss_layer.cu index 931239316..ee2784077 100644 --- a/src/caffe/layers/contrastive_loss_layer.cu +++ b/src/caffe/layers/contrastive_loss_layer.cu @@ -1,10 +1,8 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index fb50bb095..efd69d45e 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -1,9 +1,5 @@ #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/conv_layer.cu b/src/caffe/layers/conv_layer.cu index b429d2b47..a534b3560 100644 --- a/src/caffe/layers/conv_layer.cu +++ b/src/caffe/layers/conv_layer.cu @@ -1,9 +1,5 @@ #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_conv_layer.cpp b/src/caffe/layers/cudnn_conv_layer.cpp index d7b1e0d65..8b61249a4 100644 --- a/src/caffe/layers/cudnn_conv_layer.cpp +++ b/src/caffe/layers/cudnn_conv_layer.cpp @@ -2,10 +2,6 @@ #include #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index e88e4dd32..63b6ab9c3 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lcn_layer.cpp b/src/caffe/layers/cudnn_lcn_layer.cpp index 866d810b9..4c700786e 100644 --- a/src/caffe/layers/cudnn_lcn_layer.cpp +++ b/src/caffe/layers/cudnn_lcn_layer.cpp @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lcn_layer.cu b/src/caffe/layers/cudnn_lcn_layer.cu index c07ade720..e79c74589 100644 --- a/src/caffe/layers/cudnn_lcn_layer.cu +++ b/src/caffe/layers/cudnn_lcn_layer.cu @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lrn_layer.cpp b/src/caffe/layers/cudnn_lrn_layer.cpp index 6e9921490..a03db3bdd 100644 --- a/src/caffe/layers/cudnn_lrn_layer.cpp +++ b/src/caffe/layers/cudnn_lrn_layer.cpp @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lrn_layer.cu b/src/caffe/layers/cudnn_lrn_layer.cu index f99230330..327e44b4d 100644 --- a/src/caffe/layers/cudnn_lrn_layer.cu +++ b/src/caffe/layers/cudnn_lrn_layer.cu @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_pooling_layer.cpp b/src/caffe/layers/cudnn_pooling_layer.cpp index c92c4e477..5f995d45e 100644 --- a/src/caffe/layers/cudnn_pooling_layer.cpp +++ b/src/caffe/layers/cudnn_pooling_layer.cpp @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_pooling_layer.cu b/src/caffe/layers/cudnn_pooling_layer.cu index a952b855a..9aa39ed88 100644 --- a/src/caffe/layers/cudnn_pooling_layer.cu +++ b/src/caffe/layers/cudnn_pooling_layer.cu @@ -1,10 +1,6 @@ #ifdef USE_CUDNN #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_relu_layer.cpp b/src/caffe/layers/cudnn_relu_layer.cpp index 759d83984..e6b6d5a97 100644 --- a/src/caffe/layers/cudnn_relu_layer.cpp +++ b/src/caffe/layers/cudnn_relu_layer.cpp @@ -1,8 +1,6 @@ #ifdef USE_CUDNN -#include #include -#include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_relu_layer.cu b/src/caffe/layers/cudnn_relu_layer.cu index 21d14857d..2a53a49b9 100644 --- a/src/caffe/layers/cudnn_relu_layer.cu +++ b/src/caffe/layers/cudnn_relu_layer.cu @@ -1,8 +1,6 @@ #ifdef USE_CUDNN -#include #include -#include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_sigmoid_layer.cpp b/src/caffe/layers/cudnn_sigmoid_layer.cpp index 32637873d..4b489fa5b 100644 --- a/src/caffe/layers/cudnn_sigmoid_layer.cpp +++ b/src/caffe/layers/cudnn_sigmoid_layer.cpp @@ -1,8 +1,6 @@ #ifdef USE_CUDNN -#include #include -#include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_sigmoid_layer.cu b/src/caffe/layers/cudnn_sigmoid_layer.cu index 7a06cf721..9de5c742c 100644 --- a/src/caffe/layers/cudnn_sigmoid_layer.cu +++ b/src/caffe/layers/cudnn_sigmoid_layer.cu @@ -1,8 +1,6 @@ #ifdef USE_CUDNN -#include #include -#include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_softmax_layer.cpp b/src/caffe/layers/cudnn_softmax_layer.cpp index 77a3225ad..f5cd04505 100644 --- a/src/caffe/layers/cudnn_softmax_layer.cpp +++ b/src/caffe/layers/cudnn_softmax_layer.cpp @@ -1,12 +1,8 @@ #ifdef USE_CUDNN -#include -#include #include #include "thrust/device_vector.h" -#include "caffe/layer.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_softmax_layer.cu b/src/caffe/layers/cudnn_softmax_layer.cu index a9e2fcefa..c270202f0 100644 --- a/src/caffe/layers/cudnn_softmax_layer.cu +++ b/src/caffe/layers/cudnn_softmax_layer.cu @@ -1,12 +1,8 @@ #ifdef USE_CUDNN -#include -#include #include #include "thrust/device_vector.h" -#include "caffe/layer.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_tanh_layer.cpp b/src/caffe/layers/cudnn_tanh_layer.cpp index 376faad32..462968180 100644 --- a/src/caffe/layers/cudnn_tanh_layer.cpp +++ b/src/caffe/layers/cudnn_tanh_layer.cpp @@ -1,9 +1,7 @@ #ifdef USE_CUDNN -#include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_tanh_layer.cu b/src/caffe/layers/cudnn_tanh_layer.cu index d287f6fee..84f784b37 100644 --- a/src/caffe/layers/cudnn_tanh_layer.cu +++ b/src/caffe/layers/cudnn_tanh_layer.cu @@ -1,9 +1,7 @@ #ifdef USE_CUDNN -#include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index 71f8cb099..49ac858ef 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -3,15 +3,11 @@ #endif // USE_OPENCV #include -#include #include -#include "caffe/common.hpp" #include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/benchmark.hpp" -#include "caffe/util/io.hpp" namespace caffe { diff --git a/src/caffe/layers/deconv_layer.cpp b/src/caffe/layers/deconv_layer.cpp index 91aabb315..5038b6389 100644 --- a/src/caffe/layers/deconv_layer.cpp +++ b/src/caffe/layers/deconv_layer.cpp @@ -1,9 +1,5 @@ #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/deconv_layer.cu b/src/caffe/layers/deconv_layer.cu index 5dbdcc314..0e8e2edea 100644 --- a/src/caffe/layers/deconv_layer.cu +++ b/src/caffe/layers/deconv_layer.cu @@ -1,9 +1,5 @@ #include -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/dropout_layer.cpp b/src/caffe/layers/dropout_layer.cpp index ec1256fd2..eb7a8a9a2 100644 --- a/src/caffe/layers/dropout_layer.cpp +++ b/src/caffe/layers/dropout_layer.cpp @@ -2,11 +2,8 @@ #include -#include "caffe/common.hpp" -#include "caffe/layer.hpp" -#include "caffe/syncedmem.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/dropout_layer.cu b/src/caffe/layers/dropout_layer.cu index f9ea04f4a..028fc026d 100644 --- a/src/caffe/layers/dropout_layer.cu +++ b/src/caffe/layers/dropout_layer.cu @@ -1,12 +1,7 @@ -#include -#include #include -#include "caffe/common.hpp" -#include "caffe/layer.hpp" -#include "caffe/syncedmem.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/dummy_data_layer.cpp b/src/caffe/layers/dummy_data_layer.cpp index 6b0d61746..ab0478c86 100644 --- a/src/caffe/layers/dummy_data_layer.cpp +++ b/src/caffe/layers/dummy_data_layer.cpp @@ -1,8 +1,7 @@ #include +#include "caffe/data_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/eltwise_layer.cpp b/src/caffe/layers/eltwise_layer.cpp index a80700736..7924fbeec 100644 --- a/src/caffe/layers/eltwise_layer.cpp +++ b/src/caffe/layers/eltwise_layer.cpp @@ -1,9 +1,8 @@ #include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/eltwise_layer.cu b/src/caffe/layers/eltwise_layer.cu index 2247870d9..014042098 100644 --- a/src/caffe/layers/eltwise_layer.cu +++ b/src/caffe/layers/eltwise_layer.cu @@ -1,9 +1,8 @@ #include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/embed_layer.cpp b/src/caffe/layers/embed_layer.cpp index be6b2cd27..52704a06d 100644 --- a/src/caffe/layers/embed_layer.cpp +++ b/src/caffe/layers/embed_layer.cpp @@ -1,10 +1,7 @@ #include -#include "caffe/blob.hpp" -#include "caffe/common.hpp" #include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/embed_layer.cu b/src/caffe/layers/embed_layer.cu index 62a4db813..cd4b40f58 100644 --- a/src/caffe/layers/embed_layer.cu +++ b/src/caffe/layers/embed_layer.cu @@ -1,10 +1,7 @@ #include -#include "caffe/blob.hpp" -#include "caffe/common.hpp" #include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/layer.hpp" #include "caffe/util/gpu_util.cuh" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/euclidean_loss_layer.cpp b/src/caffe/layers/euclidean_loss_layer.cpp index 80efa31b2..7338953d3 100644 --- a/src/caffe/layers/euclidean_loss_layer.cpp +++ b/src/caffe/layers/euclidean_loss_layer.cpp @@ -1,9 +1,7 @@ #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/euclidean_loss_layer.cu b/src/caffe/layers/euclidean_loss_layer.cu index 5b1de3ad2..1aa79bd54 100644 --- a/src/caffe/layers/euclidean_loss_layer.cu +++ b/src/caffe/layers/euclidean_loss_layer.cu @@ -1,9 +1,7 @@ #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/exp_layer.cpp b/src/caffe/layers/exp_layer.cpp index c7e7c60cf..f85692d6c 100644 --- a/src/caffe/layers/exp_layer.cpp +++ b/src/caffe/layers/exp_layer.cpp @@ -1,9 +1,7 @@ -#include #include -#include "caffe/layer.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/exp_layer.cu b/src/caffe/layers/exp_layer.cu index 2d75d8dd6..9e24bbeec 100644 --- a/src/caffe/layers/exp_layer.cu +++ b/src/caffe/layers/exp_layer.cu @@ -1,9 +1,7 @@ -#include #include -#include "caffe/layer.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/filter_layer.cpp b/src/caffe/layers/filter_layer.cpp index be1db32db..e8b62a5d5 100644 --- a/src/caffe/layers/filter_layer.cpp +++ b/src/caffe/layers/filter_layer.cpp @@ -1,9 +1,7 @@ -#include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/filter_layer.cu b/src/caffe/layers/filter_layer.cu index cf929eeea..746e91c9e 100644 --- a/src/caffe/layers/filter_layer.cu +++ b/src/caffe/layers/filter_layer.cu @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/flatten_layer.cpp b/src/caffe/layers/flatten_layer.cpp index f7e5c9c21..d831fb5c6 100644 --- a/src/caffe/layers/flatten_layer.cpp +++ b/src/caffe/layers/flatten_layer.cpp @@ -1,8 +1,6 @@ #include -#include "caffe/layer.hpp" -#include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/common_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 8ced51039..c765fa02c 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -15,7 +15,6 @@ #include "stdint.h" #include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/hdf5.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index 5e3e4ced1..6ac499c6f 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -4,15 +4,12 @@ TODO: */ #include -#include #include #include "hdf5.h" #include "hdf5_hl.h" #include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_output_layer.cpp b/src/caffe/layers/hdf5_output_layer.cpp index 56788c21e..dbde65da1 100644 --- a/src/caffe/layers/hdf5_output_layer.cpp +++ b/src/caffe/layers/hdf5_output_layer.cpp @@ -3,11 +3,8 @@ #include "hdf5.h" #include "hdf5_hl.h" -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/layer.hpp" +#include "caffe/data_layers.hpp" #include "caffe/util/hdf5.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_output_layer.cu b/src/caffe/layers/hdf5_output_layer.cu index eb6d0e470..ca8f26165 100644 --- a/src/caffe/layers/hdf5_output_layer.cu +++ b/src/caffe/layers/hdf5_output_layer.cu @@ -3,10 +3,7 @@ #include "hdf5.h" #include "hdf5_hl.h" -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/data_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/hinge_loss_layer.cpp b/src/caffe/layers/hinge_loss_layer.cpp index a2fb2a183..a88c87752 100644 --- a/src/caffe/layers/hinge_loss_layer.cpp +++ b/src/caffe/layers/hinge_loss_layer.cpp @@ -1,12 +1,8 @@ #include -#include -#include #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index 595c9dbbe..f3b0f7101 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -1,7 +1,5 @@ #include -#include "caffe/common.hpp" -#include "caffe/layer.hpp" #include "caffe/util/im2col.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/im2col_layer.cu b/src/caffe/layers/im2col_layer.cu index cd507623c..4633628b4 100644 --- a/src/caffe/layers/im2col_layer.cu +++ b/src/caffe/layers/im2col_layer.cu @@ -1,7 +1,5 @@ #include -#include "caffe/common.hpp" -#include "caffe/layer.hpp" #include "caffe/util/im2col.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/image_data_layer.cpp b/src/caffe/layers/image_data_layer.cpp index 3d2190f8b..9a7df5a78 100644 --- a/src/caffe/layers/image_data_layer.cpp +++ b/src/caffe/layers/image_data_layer.cpp @@ -8,7 +8,6 @@ #include #include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/infogain_loss_layer.cpp b/src/caffe/layers/infogain_loss_layer.cpp index a1e0b40de..88bd8aaf5 100644 --- a/src/caffe/layers/infogain_loss_layer.cpp +++ b/src/caffe/layers/infogain_loss_layer.cpp @@ -1,12 +1,9 @@ #include -#include #include #include -#include "caffe/layer.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/io.hpp" -#include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/inner_product_layer.cpp b/src/caffe/layers/inner_product_layer.cpp index 83c3235eb..274744eaa 100644 --- a/src/caffe/layers/inner_product_layer.cpp +++ b/src/caffe/layers/inner_product_layer.cpp @@ -1,11 +1,8 @@ #include -#include "caffe/blob.hpp" -#include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/inner_product_layer.cu b/src/caffe/layers/inner_product_layer.cu index c0ebd2c47..e91e94fc9 100644 --- a/src/caffe/layers/inner_product_layer.cu +++ b/src/caffe/layers/inner_product_layer.cu @@ -1,11 +1,8 @@ #include -#include "caffe/blob.hpp" -#include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/log_layer.cpp b/src/caffe/layers/log_layer.cpp index 55a227f62..a1876b9da 100644 --- a/src/caffe/layers/log_layer.cpp +++ b/src/caffe/layers/log_layer.cpp @@ -1,7 +1,5 @@ -#include #include -#include "caffe/layer.hpp" #include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/log_layer.cu b/src/caffe/layers/log_layer.cu index 847c86cd1..055b713be 100644 --- a/src/caffe/layers/log_layer.cu +++ b/src/caffe/layers/log_layer.cu @@ -1,7 +1,5 @@ -#include #include -#include "caffe/layer.hpp" #include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/loss_layer.cpp b/src/caffe/layers/loss_layer.cpp index 3496a5c2a..c10466dbd 100644 --- a/src/caffe/layers/loss_layer.cpp +++ b/src/caffe/layers/loss_layer.cpp @@ -1,12 +1,6 @@ -#include -#include -#include #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" -#include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/lrn_layer.cpp b/src/caffe/layers/lrn_layer.cpp index d18a04ef5..cc561811e 100644 --- a/src/caffe/layers/lrn_layer.cpp +++ b/src/caffe/layers/lrn_layer.cpp @@ -1,6 +1,5 @@ #include -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/lrn_layer.cu b/src/caffe/layers/lrn_layer.cu index 001b3c34a..4523d4109 100644 --- a/src/caffe/layers/lrn_layer.cu +++ b/src/caffe/layers/lrn_layer.cu @@ -1,6 +1,5 @@ #include -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/memory_data_layer.cpp b/src/caffe/layers/memory_data_layer.cpp index 2370aa04d..13a3d9f61 100644 --- a/src/caffe/layers/memory_data_layer.cpp +++ b/src/caffe/layers/memory_data_layer.cpp @@ -5,8 +5,6 @@ #include #include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" namespace caffe { diff --git a/src/caffe/layers/multinomial_logistic_loss_layer.cpp b/src/caffe/layers/multinomial_logistic_loss_layer.cpp index 4267a594a..597459238 100644 --- a/src/caffe/layers/multinomial_logistic_loss_layer.cpp +++ b/src/caffe/layers/multinomial_logistic_loss_layer.cpp @@ -1,12 +1,9 @@ #include -#include #include #include -#include "caffe/layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/mvn_layer.cpp b/src/caffe/layers/mvn_layer.cpp index 61c2141ec..0e7301442 100644 --- a/src/caffe/layers/mvn_layer.cpp +++ b/src/caffe/layers/mvn_layer.cpp @@ -1,8 +1,6 @@ -#include #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/mvn_layer.cu b/src/caffe/layers/mvn_layer.cu index 5cbb112de..b7e3b3ceb 100644 --- a/src/caffe/layers/mvn_layer.cu +++ b/src/caffe/layers/mvn_layer.cu @@ -1,8 +1,6 @@ -#include #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/neuron_layer.cpp b/src/caffe/layers/neuron_layer.cpp index ba67b4387..1dcb2c064 100644 --- a/src/caffe/layers/neuron_layer.cpp +++ b/src/caffe/layers/neuron_layer.cpp @@ -1,7 +1,6 @@ #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/pooling_layer.cpp b/src/caffe/layers/pooling_layer.cpp index c8d414994..3a7de42c9 100644 --- a/src/caffe/layers/pooling_layer.cpp +++ b/src/caffe/layers/pooling_layer.cpp @@ -2,9 +2,6 @@ #include #include -#include "caffe/common.hpp" -#include "caffe/layer.hpp" -#include "caffe/syncedmem.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/pooling_layer.cu b/src/caffe/layers/pooling_layer.cu index ca4b13f7c..5e94ce2bc 100644 --- a/src/caffe/layers/pooling_layer.cu +++ b/src/caffe/layers/pooling_layer.cu @@ -2,7 +2,6 @@ #include #include -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" diff --git a/src/caffe/layers/power_layer.cpp b/src/caffe/layers/power_layer.cpp index 4fe34c49f..6304fadd4 100644 --- a/src/caffe/layers/power_layer.cpp +++ b/src/caffe/layers/power_layer.cpp @@ -1,9 +1,7 @@ -#include #include -#include "caffe/layer.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/power_layer.cu b/src/caffe/layers/power_layer.cu index 90d944059..680faad4b 100644 --- a/src/caffe/layers/power_layer.cu +++ b/src/caffe/layers/power_layer.cu @@ -1,9 +1,7 @@ -#include #include -#include "caffe/layer.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/prelu_layer.cpp b/src/caffe/layers/prelu_layer.cpp index 818317555..b5a294e1c 100644 --- a/src/caffe/layers/prelu_layer.cpp +++ b/src/caffe/layers/prelu_layer.cpp @@ -2,8 +2,7 @@ #include #include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/prelu_layer.cu b/src/caffe/layers/prelu_layer.cu index 1225334f3..992cd885a 100644 --- a/src/caffe/layers/prelu_layer.cu +++ b/src/caffe/layers/prelu_layer.cu @@ -1,8 +1,7 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/reduction_layer.cpp b/src/caffe/layers/reduction_layer.cpp index 8ae6329eb..6b7925e37 100644 --- a/src/caffe/layers/reduction_layer.cpp +++ b/src/caffe/layers/reduction_layer.cpp @@ -1,10 +1,7 @@ -#include -#include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/reduction_layer.cu b/src/caffe/layers/reduction_layer.cu index 2dbd3bc9f..a9a8c8d96 100644 --- a/src/caffe/layers/reduction_layer.cu +++ b/src/caffe/layers/reduction_layer.cu @@ -1,9 +1,7 @@ -#include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/relu_layer.cpp b/src/caffe/layers/relu_layer.cpp index cc00319a5..93d090263 100644 --- a/src/caffe/layers/relu_layer.cpp +++ b/src/caffe/layers/relu_layer.cpp @@ -1,8 +1,7 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/relu_layer.cu b/src/caffe/layers/relu_layer.cu index b8924c855..c18ab61f2 100644 --- a/src/caffe/layers/relu_layer.cu +++ b/src/caffe/layers/relu_layer.cu @@ -1,8 +1,7 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/reshape_layer.cpp b/src/caffe/layers/reshape_layer.cpp index ffe970f26..8659049b5 100644 --- a/src/caffe/layers/reshape_layer.cpp +++ b/src/caffe/layers/reshape_layer.cpp @@ -1,7 +1,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp index cc236fe1e..985886378 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp @@ -1,10 +1,7 @@ -#include -#include #include -#include "caffe/layer.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu index 547fa80c7..48dbec41b 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu @@ -1,10 +1,7 @@ -#include -#include #include -#include "caffe/layer.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_layer.cpp b/src/caffe/layers/sigmoid_layer.cpp index 48c384905..d4a3f8773 100644 --- a/src/caffe/layers/sigmoid_layer.cpp +++ b/src/caffe/layers/sigmoid_layer.cpp @@ -1,9 +1,7 @@ -#include #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_layer.cu b/src/caffe/layers/sigmoid_layer.cu index e1af0657e..5730636ef 100644 --- a/src/caffe/layers/sigmoid_layer.cu +++ b/src/caffe/layers/sigmoid_layer.cu @@ -1,9 +1,7 @@ -#include #include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/silence_layer.cpp b/src/caffe/layers/silence_layer.cpp index 7e70ab432..3974f5d4e 100644 --- a/src/caffe/layers/silence_layer.cpp +++ b/src/caffe/layers/silence_layer.cpp @@ -1,7 +1,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/silence_layer.cu b/src/caffe/layers/silence_layer.cu index 34faef22b..c49ecb233 100644 --- a/src/caffe/layers/silence_layer.cu +++ b/src/caffe/layers/silence_layer.cu @@ -1,7 +1,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/slice_layer.cpp b/src/caffe/layers/slice_layer.cpp index 0a059ae88..f368a249a 100644 --- a/src/caffe/layers/slice_layer.cpp +++ b/src/caffe/layers/slice_layer.cpp @@ -1,9 +1,8 @@ #include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/slice_layer.cu b/src/caffe/layers/slice_layer.cu index e8dc6cd98..d555f7d0d 100644 --- a/src/caffe/layers/slice_layer.cu +++ b/src/caffe/layers/slice_layer.cu @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_layer.cpp b/src/caffe/layers/softmax_layer.cpp index 04712c9e6..8ae7d49cf 100644 --- a/src/caffe/layers/softmax_layer.cpp +++ b/src/caffe/layers/softmax_layer.cpp @@ -1,9 +1,8 @@ #include #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_layer.cu b/src/caffe/layers/softmax_layer.cu index 1f9c3a412..a620fcc86 100644 --- a/src/caffe/layers/softmax_layer.cu +++ b/src/caffe/layers/softmax_layer.cu @@ -4,9 +4,8 @@ #include "thrust/device_vector.h" -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_loss_layer.cpp b/src/caffe/layers/softmax_loss_layer.cpp index ba312f67f..dee50ac63 100644 --- a/src/caffe/layers/softmax_loss_layer.cpp +++ b/src/caffe/layers/softmax_loss_layer.cpp @@ -2,10 +2,8 @@ #include #include -#include "caffe/layer.hpp" -#include "caffe/layer_factory.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_loss_layer.cu b/src/caffe/layers/softmax_loss_layer.cu index 7e0f3da45..42e91fa9e 100644 --- a/src/caffe/layers/softmax_loss_layer.cu +++ b/src/caffe/layers/softmax_loss_layer.cu @@ -2,9 +2,8 @@ #include #include -#include "caffe/layer.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/split_layer.cpp b/src/caffe/layers/split_layer.cpp index 272cb59cd..5333e578f 100644 --- a/src/caffe/layers/split_layer.cpp +++ b/src/caffe/layers/split_layer.cpp @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/split_layer.cu b/src/caffe/layers/split_layer.cu index a4f5df264..73d04c98f 100644 --- a/src/caffe/layers/split_layer.cu +++ b/src/caffe/layers/split_layer.cu @@ -1,8 +1,7 @@ #include -#include "caffe/layer.hpp" +#include "caffe/common_layers.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/spp_layer.cpp b/src/caffe/layers/spp_layer.cpp index d76229104..2ef4ac7ab 100644 --- a/src/caffe/layers/spp_layer.cpp +++ b/src/caffe/layers/spp_layer.cpp @@ -1,11 +1,6 @@ #include -#include #include -#include "caffe/common.hpp" -#include "caffe/layer.hpp" -#include "caffe/syncedmem.hpp" -#include "caffe/util/math_functions.hpp" #include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/tanh_layer.cpp b/src/caffe/layers/tanh_layer.cpp index ee5ed773c..9d1cac761 100644 --- a/src/caffe/layers/tanh_layer.cpp +++ b/src/caffe/layers/tanh_layer.cpp @@ -1,11 +1,9 @@ // TanH neuron activation function layer. // Adapted from ReLU layer code written by Yangqing Jia -#include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/tanh_layer.cu b/src/caffe/layers/tanh_layer.cu index ccd6e63ee..d87bccece 100644 --- a/src/caffe/layers/tanh_layer.cu +++ b/src/caffe/layers/tanh_layer.cu @@ -1,11 +1,9 @@ // TanH neuron activation function layer. // Adapted from ReLU layer code written by Yangqing Jia -#include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/threshold_layer.cpp b/src/caffe/layers/threshold_layer.cpp index 2365e7b9c..d65147368 100644 --- a/src/caffe/layers/threshold_layer.cpp +++ b/src/caffe/layers/threshold_layer.cpp @@ -1,7 +1,6 @@ #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/threshold_layer.cu b/src/caffe/layers/threshold_layer.cu index bfa7f1594..1cd62d994 100644 --- a/src/caffe/layers/threshold_layer.cu +++ b/src/caffe/layers/threshold_layer.cu @@ -1,8 +1,6 @@ -#include #include -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/tile_layer.cpp b/src/caffe/layers/tile_layer.cpp index f55008cc5..581546c4f 100644 --- a/src/caffe/layers/tile_layer.cpp +++ b/src/caffe/layers/tile_layer.cpp @@ -1,7 +1,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/tile_layer.cu b/src/caffe/layers/tile_layer.cu index 7fd3bc47d..fdf960901 100644 --- a/src/caffe/layers/tile_layer.cu +++ b/src/caffe/layers/tile_layer.cu @@ -1,7 +1,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/window_data_layer.cpp b/src/caffe/layers/window_data_layer.cpp index f8db61c92..3f937bc9d 100644 --- a/src/caffe/layers/window_data_layer.cpp +++ b/src/caffe/layers/window_data_layer.cpp @@ -12,9 +12,7 @@ #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" -#include "caffe/common.hpp" #include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/parallel.cpp b/src/caffe/parallel.cpp index a6d154e16..9abc92b61 100644 --- a/src/caffe/parallel.cpp +++ b/src/caffe/parallel.cpp @@ -7,7 +7,6 @@ #include #include -#include #include #include #include diff --git a/src/caffe/syncedmem.cpp b/src/caffe/syncedmem.cpp index 632bf1f12..ec4665ecd 100644 --- a/src/caffe/syncedmem.cpp +++ b/src/caffe/syncedmem.cpp @@ -1,5 +1,3 @@ -#include - #include "caffe/common.hpp" #include "caffe/syncedmem.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/test/test_accuracy_layer.cpp b/src/caffe/test/test_accuracy_layer.cpp index ef0e57a37..5960a6667 100644 --- a/src/caffe/test/test_accuracy_layer.cpp +++ b/src/caffe/test/test_accuracy_layer.cpp @@ -1,6 +1,4 @@ #include -#include -#include #include #include "gtest/gtest.h" @@ -8,8 +6,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/util/rng.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_argmax_layer.cpp b/src/caffe/test/test_argmax_layer.cpp index bbf190999..f3f2094ed 100644 --- a/src/caffe/test/test_argmax_layer.cpp +++ b/src/caffe/test/test_argmax_layer.cpp @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_batch_reindex_layer.cpp b/src/caffe/test/test_batch_reindex_layer.cpp index 985db343d..17e47f050 100644 --- a/src/caffe/test/test_batch_reindex_layer.cpp +++ b/src/caffe/test/test_batch_reindex_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_blob.cpp b/src/caffe/test/test_blob.cpp index 7da6423b6..a9d7d519e 100644 --- a/src/caffe/test/test_blob.cpp +++ b/src/caffe/test/test_blob.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_common.cpp b/src/caffe/test/test_common.cpp index b3a61b0fd..58ae5c60a 100644 --- a/src/caffe/test/test_common.cpp +++ b/src/caffe/test/test_common.cpp @@ -1,5 +1,3 @@ -#include - #include "gtest/gtest.h" #include "caffe/common.hpp" diff --git a/src/caffe/test/test_concat_layer.cpp b/src/caffe/test/test_concat_layer.cpp index ccd97eb1d..8ba51f4f7 100644 --- a/src/caffe/test/test_concat_layer.cpp +++ b/src/caffe/test/test_concat_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_contrastive_loss_layer.cpp b/src/caffe/test/test_contrastive_loss_layer.cpp index 1e9447cbc..592997e45 100644 --- a/src/caffe/test/test_contrastive_loss_layer.cpp +++ b/src/caffe/test/test_contrastive_loss_layer.cpp @@ -1,7 +1,5 @@ #include #include -#include -#include #include #include "gtest/gtest.h" @@ -9,7 +7,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index 9df979a2d..b47473571 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_deconvolution_layer.cpp b/src/caffe/test/test_deconvolution_layer.cpp index 770e7b277..b473dbb9c 100644 --- a/src/caffe/test/test_deconvolution_layer.cpp +++ b/src/caffe/test/test_deconvolution_layer.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_eltwise_layer.cpp b/src/caffe/test/test_eltwise_layer.cpp index 8031f6e90..3b56c5cae 100644 --- a/src/caffe/test/test_eltwise_layer.cpp +++ b/src/caffe/test/test_eltwise_layer.cpp @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_embed_layer.cpp b/src/caffe/test/test_embed_layer.cpp index 7a4fb9800..0f4caf157 100644 --- a/src/caffe/test/test_embed_layer.cpp +++ b/src/caffe/test/test_embed_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_euclidean_loss_layer.cpp b/src/caffe/test/test_euclidean_loss_layer.cpp index 1949742bb..9dc14de41 100644 --- a/src/caffe/test/test_euclidean_loss_layer.cpp +++ b/src/caffe/test/test_euclidean_loss_layer.cpp @@ -1,6 +1,4 @@ #include -#include -#include #include #include "gtest/gtest.h" @@ -8,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_filler.cpp b/src/caffe/test/test_filler.cpp index 728b8dc5f..26e9b217e 100644 --- a/src/caffe/test/test_filler.cpp +++ b/src/caffe/test/test_filler.cpp @@ -1,5 +1,3 @@ -#include - #include "gtest/gtest.h" #include "caffe/filler.hpp" diff --git a/src/caffe/test/test_filter_layer.cpp b/src/caffe/test/test_filter_layer.cpp index c641b6ef6..a2d0c2936 100644 --- a/src/caffe/test/test_filter_layer.cpp +++ b/src/caffe/test/test_filter_layer.cpp @@ -1,13 +1,11 @@ -#include -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_flatten_layer.cpp b/src/caffe/test/test_flatten_layer.cpp index 7b6757cba..5d1caac2a 100644 --- a/src/caffe/test/test_flatten_layer.cpp +++ b/src/caffe/test/test_flatten_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_hdf5_output_layer.cpp b/src/caffe/test/test_hdf5_output_layer.cpp index b56277b53..adc27df4a 100644 --- a/src/caffe/test/test_hdf5_output_layer.cpp +++ b/src/caffe/test/test_hdf5_output_layer.cpp @@ -5,10 +5,10 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/data_layers.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/hdf5.hpp" #include "caffe/util/io.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index c9b027f88..7169e7bfc 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -5,9 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/filler.hpp" +#include "caffe/data_layers.hpp" #include "caffe/proto/caffe.pb.h" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_hinge_loss_layer.cpp b/src/caffe/test/test_hinge_loss_layer.cpp index b6a990229..dfdd01d02 100644 --- a/src/caffe/test/test_hinge_loss_layer.cpp +++ b/src/caffe/test/test_hinge_loss_layer.cpp @@ -1,6 +1,4 @@ #include -#include -#include #include #include "gtest/gtest.h" @@ -8,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_im2col_kernel.cu b/src/caffe/test/test_im2col_kernel.cu index f0b75fcc6..bafcacf78 100644 --- a/src/caffe/test/test_im2col_kernel.cu +++ b/src/caffe/test/test_im2col_kernel.cu @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index 293aa2620..ec055b201 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_image_data_layer.cpp b/src/caffe/test/test_image_data_layer.cpp index 481fcef7b..776902451 100644 --- a/src/caffe/test/test_image_data_layer.cpp +++ b/src/caffe/test/test_image_data_layer.cpp @@ -7,10 +7,10 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/data_layers.hpp" #include "caffe/filler.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/io.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_infogain_loss_layer.cpp b/src/caffe/test/test_infogain_loss_layer.cpp index 7ec2f8073..b2a6754fd 100644 --- a/src/caffe/test/test_infogain_loss_layer.cpp +++ b/src/caffe/test/test_infogain_loss_layer.cpp @@ -1,6 +1,3 @@ -#include -#include -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_inner_product_layer.cpp b/src/caffe/test/test_inner_product_layer.cpp index fbf0c8512..1ad2c97e7 100644 --- a/src/caffe/test/test_inner_product_layer.cpp +++ b/src/caffe/test/test_inner_product_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_lrn_layer.cpp b/src/caffe/test/test_lrn_layer.cpp index 78cf2d9df..bd1c4fe88 100644 --- a/src/caffe/test/test_lrn_layer.cpp +++ b/src/caffe/test/test_lrn_layer.cpp @@ -1,5 +1,4 @@ #include -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_math_functions.cpp b/src/caffe/test/test_math_functions.cpp index a095b544e..fbee3f9c3 100644 --- a/src/caffe/test/test_math_functions.cpp +++ b/src/caffe/test/test_math_functions.cpp @@ -1,8 +1,6 @@ #include // for uint32_t & uint64_t #include -#include #include // for std::fabs -#include // for rand_r #include "gtest/gtest.h" diff --git a/src/caffe/test/test_maxpool_dropout_layers.cpp b/src/caffe/test/test_maxpool_dropout_layers.cpp index 611d97908..8fc944f32 100644 --- a/src/caffe/test/test_maxpool_dropout_layers.cpp +++ b/src/caffe/test/test_maxpool_dropout_layers.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp index b2db984fe..0404aa25a 100644 --- a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp +++ b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp @@ -1,6 +1,3 @@ -#include -#include -#include #include #include "gtest/gtest.h" @@ -8,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_mvn_layer.cpp b/src/caffe/test/test_mvn_layer.cpp index be23d86e9..e9a7d54ce 100644 --- a/src/caffe/test/test_mvn_layer.cpp +++ b/src/caffe/test/test_mvn_layer.cpp @@ -1,5 +1,3 @@ -#include -#include #include #include "caffe/blob.hpp" diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index c6e4d27b9..b333fdee8 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -1,5 +1,4 @@ #include -#include #include #include "google/protobuf/text_format.h" @@ -7,8 +6,9 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_pooling_layer.cpp b/src/caffe/test/test_pooling_layer.cpp index 69f2d5c11..9e986e665 100644 --- a/src/caffe/test/test_pooling_layer.cpp +++ b/src/caffe/test/test_pooling_layer.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_power_layer.cpp b/src/caffe/test/test_power_layer.cpp index 76c9e857f..1041ddd4e 100644 --- a/src/caffe/test/test_power_layer.cpp +++ b/src/caffe/test/test_power_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_random_number_generator.cpp b/src/caffe/test/test_random_number_generator.cpp index 98424c06b..833b0047b 100644 --- a/src/caffe/test/test_random_number_generator.cpp +++ b/src/caffe/test/test_random_number_generator.cpp @@ -1,5 +1,4 @@ #include -#include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_reduction_layer.cpp b/src/caffe/test/test_reduction_layer.cpp index f568a1808..a8d437271 100644 --- a/src/caffe/test/test_reduction_layer.cpp +++ b/src/caffe/test/test_reduction_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_reshape_layer.cpp b/src/caffe/test/test_reshape_layer.cpp index 9d08ec60d..e0f4ba428 100644 --- a/src/caffe/test/test_reshape_layer.cpp +++ b/src/caffe/test/test_reshape_layer.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp index e5737e43f..b4f831c8f 100644 --- a/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp @@ -1,6 +1,4 @@ #include -#include -#include #include #include "gtest/gtest.h" @@ -8,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_slice_layer.cpp b/src/caffe/test/test_slice_layer.cpp index 2d2d0fdc0..45fbcffda 100644 --- a/src/caffe/test/test_slice_layer.cpp +++ b/src/caffe/test/test_slice_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_softmax_layer.cpp b/src/caffe/test/test_softmax_layer.cpp index 996da4b8f..4b01f5cfb 100644 --- a/src/caffe/test/test_softmax_layer.cpp +++ b/src/caffe/test/test_softmax_layer.cpp @@ -1,13 +1,12 @@ #include -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_softmax_with_loss_layer.cpp b/src/caffe/test/test_softmax_with_loss_layer.cpp index 1498d5c5c..0ae4cd681 100644 --- a/src/caffe/test/test_softmax_with_loss_layer.cpp +++ b/src/caffe/test/test_softmax_with_loss_layer.cpp @@ -1,6 +1,4 @@ #include -#include -#include #include #include "boost/scoped_ptr.hpp" @@ -9,7 +7,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/loss_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_split_layer.cpp b/src/caffe/test/test_split_layer.cpp index be5204bfc..e27e355c7 100644 --- a/src/caffe/test/test_split_layer.cpp +++ b/src/caffe/test/test_split_layer.cpp @@ -1,4 +1,3 @@ -#include #include #include @@ -7,10 +6,10 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/insert_splits.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_spp_layer.cpp b/src/caffe/test/test_spp_layer.cpp index b2585f1a5..1b48a842d 100644 --- a/src/caffe/test/test_spp_layer.cpp +++ b/src/caffe/test/test_spp_layer.cpp @@ -1,5 +1,3 @@ -#include -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_stochastic_pooling.cpp b/src/caffe/test/test_stochastic_pooling.cpp index f84464c32..5a412bd4e 100644 --- a/src/caffe/test/test_stochastic_pooling.cpp +++ b/src/caffe/test/test_stochastic_pooling.cpp @@ -1,5 +1,4 @@ #include -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_syncedmem.cpp b/src/caffe/test/test_syncedmem.cpp index b946233d0..16dfb5823 100644 --- a/src/caffe/test/test_syncedmem.cpp +++ b/src/caffe/test/test_syncedmem.cpp @@ -1,4 +1,3 @@ -#include #include #include "gtest/gtest.h" diff --git a/src/caffe/test/test_tanh_layer.cpp b/src/caffe/test/test_tanh_layer.cpp index 5dc92832f..f31579cac 100644 --- a/src/caffe/test/test_tanh_layer.cpp +++ b/src/caffe/test/test_tanh_layer.cpp @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_threshold_layer.cpp b/src/caffe/test/test_threshold_layer.cpp index 05ce82120..903a9bc81 100644 --- a/src/caffe/test/test_threshold_layer.cpp +++ b/src/caffe/test/test_threshold_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/neuron_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_tile_layer.cpp b/src/caffe/test/test_tile_layer.cpp index 540aac3c2..5c459604a 100644 --- a/src/caffe/test/test_tile_layer.cpp +++ b/src/caffe/test/test_tile_layer.cpp @@ -1,12 +1,11 @@ -#include #include #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_upgrade_proto.cpp b/src/caffe/test/test_upgrade_proto.cpp index 23deddd45..9dcc2aa55 100644 --- a/src/caffe/test/test_upgrade_proto.cpp +++ b/src/caffe/test/test_upgrade_proto.cpp @@ -1,4 +1,3 @@ -#include #include #include diff --git a/src/caffe/test/test_util_blas.cpp b/src/caffe/test/test_util_blas.cpp index 8770f3099..9ee8818ff 100644 --- a/src/caffe/test/test_util_blas.cpp +++ b/src/caffe/test/test_util_blas.cpp @@ -1,7 +1,5 @@ #ifndef CPU_ONLY // CPU-GPU test -#include - #include "gtest/gtest.h" #include "caffe/blob.hpp" diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index 09da23d49..27e5b7c09 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -1,6 +1,3 @@ -#include -#include -#include #include #include "caffe/util/im2col.hpp" diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 451097f8a..49354ab7a 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -1,7 +1,4 @@ #include -#include -#include -#include #include "caffe/common.hpp" #include "caffe/util/im2col.hpp" diff --git a/src/caffe/util/math_functions.cu b/src/caffe/util/math_functions.cu index 2631a0740..e4d0c4b04 100644 --- a/src/caffe/util/math_functions.cu +++ b/src/caffe/util/math_functions.cu @@ -4,8 +4,6 @@ #include #include -#include -#include #include "caffe/common.hpp" #include "caffe/util/math_functions.hpp" From 2f05b03371e5936a478c7ad2946d0cd7c013920c Mon Sep 17 00:00:00 2001 From: Dmytro Mishkin Date: Wed, 25 Feb 2015 17:00:22 +0200 Subject: [PATCH 080/458] Added batch normalization layer with test and examples --- .../cifar10_full_sigmoid_solver.prototxt | 28 ++ .../cifar10_full_sigmoid_solver_bn.prototxt | 28 ++ .../cifar10_full_sigmoid_train_test.prototxt | 212 +++++++++++ ...ifar10_full_sigmoid_train_test_bn.prototxt | 284 ++++++++++++++ examples/cifar10/train_full_sigmoid.sh | 7 + examples/cifar10/train_full_sigmoid_bn.sh | 7 + include/caffe/common_layers.hpp | 50 ++- src/caffe/layers/batch_norm_layer.cpp | 351 ++++++++++++++++++ src/caffe/layers/batch_norm_layer.cu | 228 ++++++++++++ src/caffe/test/test_batch_norm_layer.cpp | 90 +++++ 10 files changed, 1284 insertions(+), 1 deletion(-) create mode 100644 examples/cifar10/cifar10_full_sigmoid_solver.prototxt create mode 100644 examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt create mode 100644 examples/cifar10/cifar10_full_sigmoid_train_test.prototxt create mode 100644 examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt create mode 100755 examples/cifar10/train_full_sigmoid.sh create mode 100755 examples/cifar10/train_full_sigmoid_bn.sh create mode 100644 src/caffe/layers/batch_norm_layer.cpp create mode 100644 src/caffe/layers/batch_norm_layer.cu create mode 100644 src/caffe/test/test_batch_norm_layer.cpp diff --git a/examples/cifar10/cifar10_full_sigmoid_solver.prototxt b/examples/cifar10/cifar10_full_sigmoid_solver.prototxt new file mode 100644 index 000000000..7dd3ecb9d --- /dev/null +++ b/examples/cifar10/cifar10_full_sigmoid_solver.prototxt @@ -0,0 +1,28 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_sigmoid_train_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 10 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +#weight_decay: 0.004 +# The learning rate policy +lr_policy: "step" +gamma: 1 +stepsize: 5000 +# Display every 200 iterations +display: 100 +# The maximum number of iterations +max_iter: 60000 +# snapshot intermediate results +snapshot: 10000 +snapshot_prefix: "examples/cifar10_full_sigmoid" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt b/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt new file mode 100644 index 000000000..a57b280fd --- /dev/null +++ b/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt @@ -0,0 +1,28 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The train/test net protocol buffer definition +net: "examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 10 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +#weight_decay: 0.004 +# The learning rate policy +lr_policy: "step" +gamma: 1 +stepsize: 5000 +# Display every 200 iterations +display: 100 +# The maximum number of iterations +max_iter: 60000 +# snapshot intermediate results +snapshot: 10000 +snapshot_prefix: "examples/cifar10_full_sigmoid_bn" +# solver mode: CPU or GPU +solver_mode: GPU diff --git a/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt b/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt new file mode 100644 index 000000000..6f5bf26bf --- /dev/null +++ b/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt @@ -0,0 +1,212 @@ +name: "CIFAR10_full" +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_train_lmdb" + batch_size: 111 + backend: LMDB + } +} +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_test_lmdb" + batch_size: 1000 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} + + + +layer { + name: "Sigmoid1" + type: "Sigmoid" + bottom: "pool1" + top: "Sigmoid1" +} + +layer { + name: "conv2" + type: "Convolution" + bottom: "Sigmoid1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} + + +layer { + name: "Sigmoid2" + type: "Sigmoid" + bottom: "conv2" + top: "Sigmoid2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "Sigmoid2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + param { + lr_mult: 1 + } + param { + lr_mult: 1 + } + +} + +layer { + name: "Sigmoid3" + type: "Sigmoid" + bottom: "conv3" + top: "Sigmoid3" +} + +layer { + name: "pool3" + type: "Pooling" + bottom: "Sigmoid3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + decay_mult: 250 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip1" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip1" + bottom: "label" + top: "loss" +} diff --git a/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt b/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt new file mode 100644 index 000000000..85c2dffe3 --- /dev/null +++ b/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt @@ -0,0 +1,284 @@ +name: "CIFAR10_full" +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TRAIN + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_train_lmdb" + batch_size: 111 + backend: LMDB + } +} +layer { + name: "cifar" + type: "Data" + top: "data" + top: "label" + include { + phase: TEST + } + transform_param { + mean_file: "examples/cifar10/mean.binaryproto" + } + data_param { + source: "examples/cifar10/cifar10_test_lmdb" + batch_size: 1000 + backend: LMDB + } +} +layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "bn1" + type: "BatchNorm" + bottom: "pool1" + top: "bn1" + bn_param { + scale_filler { + type: "constant" + value: 1 + } + shift_filler { + type: "constant" + value: 0.001 + } + } + param { + lr_mult: 1.00001 + decay_mult: 0 + } + param { + lr_mult: 1.00001 + decay_mult: 0 + } +} + +layer { + name: "Sigmoid1" + type: "Sigmoid" + bottom: "bn1" + top: "Sigmoid1" +} + +layer { + name: "conv2" + type: "Convolution" + bottom: "Sigmoid1" + top: "conv2" + param { + lr_mult: 1 + } + param { + lr_mult: 2 + } + convolution_param { + num_output: 32 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} + + + +layer { + name: "bn2" + type: "BatchNorm" + bottom: "conv2" + top: "bn2" + bn_param { + scale_filler { + type: "constant" + value: 1 + } + shift_filler { + type: "constant" + value: 0.001 + } + } + param { + lr_mult: 1.00001 + decay_mult: 0 + } + param { + lr_mult: 1.00001 + decay_mult: 0 + } +} +layer { + name: "Sigmoid2" + type: "Sigmoid" + bottom: "bn2" + top: "Sigmoid2" +} +layer { + name: "pool2" + type: "Pooling" + bottom: "Sigmoid2" + top: "pool2" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} +layer { + name: "conv3" + type: "Convolution" + bottom: "pool2" + top: "conv3" + convolution_param { + num_output: 64 + pad: 2 + kernel_size: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + param { + lr_mult: 1 + } + param { + lr_mult: 1 + } + +} + + +layer { + name: "bn3" + type: "BatchNorm" + bottom: "conv3" + top: "bn3" + bn_param { + scale_filler { + type: "constant" + value: 1 + } + shift_filler { + type: "constant" + value: 0.001 + } + } + param { + lr_mult: 1.00001 + decay_mult: 0 + } + param { + lr_mult: 1.00001 + decay_mult: 0 + } +} +layer { + name: "Sigmoid3" + type: "Sigmoid" + bottom: "bn3" + top: "Sigmoid3" +} +layer { + name: "pool3" + type: "Pooling" + bottom: "Sigmoid3" + top: "pool3" + pooling_param { + pool: AVE + kernel_size: 3 + stride: 2 + } +} + +layer { + name: "ip1" + type: "InnerProduct" + bottom: "pool3" + top: "ip1" + param { + lr_mult: 1 + decay_mult: 250 + } + param { + lr_mult: 0.2 + decay_mult: 0 + } + inner_product_param { + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } +} +layer { + name: "accuracy" + type: "Accuracy" + bottom: "ip1" + bottom: "label" + top: "accuracy" + include { + phase: TEST + } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip1" + bottom: "label" + top: "loss" +} diff --git a/examples/cifar10/train_full_sigmoid.sh b/examples/cifar10/train_full_sigmoid.sh new file mode 100755 index 000000000..9cff06d3e --- /dev/null +++ b/examples/cifar10/train_full_sigmoid.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +TOOLS=./build/tools + +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_sigmoid_solver.prototxt + diff --git a/examples/cifar10/train_full_sigmoid_bn.sh b/examples/cifar10/train_full_sigmoid_bn.sh new file mode 100755 index 000000000..011387c99 --- /dev/null +++ b/examples/cifar10/train_full_sigmoid_bn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env sh + +TOOLS=./build/tools + +$TOOLS/caffe train \ + --solver=examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt + diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index 21a27d759..09605db9a 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -78,6 +78,55 @@ class ArgMaxLayer : public Layer { int axis_; }; +/** +* @brief Batch Normalization per-channel with scale & shift linear transform. +* +*/ +template +class BatchNormLayer : public Layer { + public: + explicit BatchNormLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "BN"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + // spatial mean & variance + Blob spatial_mean_, spatial_variance_; + // batch mean & variance + Blob batch_mean_, batch_variance_; + // buffer blob + Blob buffer_blob_; + + Blob x_norm_; + // x_sum_multiplier is used to carry out sum using BLAS + Blob spatial_sum_multiplier_, batch_sum_multiplier_; + + // dimension + int N_; + int C_; + int H_; + int W_; + // eps + Dtype var_eps_; +}; + /** * @brief Index into the input blob along its first axis. * @@ -146,7 +195,6 @@ class BatchReindexLayer : public Layer { const Dtype* ridx_data); }; - /** * @brief Takes at least two Blob%s and concatenates them along either the num * or channel dimension, outputting the result. diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp new file mode 100644 index 000000000..8dea34932 --- /dev/null +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -0,0 +1,351 @@ +#include +#include + +#include "caffe/common_layers.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + template + void BatchNormLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + + x_norm_.Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + + // Figure out the dimensions + N_ = bottom[0]->num(); + C_ = bottom[0]->channels(); + H_ = bottom[0]->height(); + W_ = bottom[0]->width(); + + // mean + spatial_mean_.Reshape(N_, C_, 1, 1); + batch_mean_.Reshape(1, C_, 1, 1); + // variance + spatial_variance_.Reshape(N_, C_, 1, 1); + batch_variance_.Reshape(1, C_, 1, 1); + // buffer blod + buffer_blob_.Reshape(N_, C_, H_, W_); + + // fill spatial multiplier + spatial_sum_multiplier_.Reshape(1, 1, H_, W_); + Dtype* spatial_multipl_data = spatial_sum_multiplier_.mutable_cpu_data(); + caffe_set(spatial_sum_multiplier_.count(), Dtype(1), + spatial_multipl_data); + caffe_set(spatial_sum_multiplier_.count(), Dtype(0), + spatial_sum_multiplier_.mutable_cpu_diff()); + // fill batch multiplier + batch_sum_multiplier_.Reshape(N_, 1, 1, 1); + Dtype* batch_multiplier_data = batch_sum_multiplier_.mutable_cpu_data(); + caffe_set(batch_sum_multiplier_.count(), Dtype(1), + batch_multiplier_data); + caffe_set(batch_sum_multiplier_.count(), Dtype(0), + batch_sum_multiplier_.mutable_cpu_diff()); + this->param_propagate_down_.resize(this->blobs_.size(), true); + } + template + void BatchNormLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; + + top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + + x_norm_.Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + // Figure out the dimensions + N_ = bottom[0]->num(); + C_ = bottom[0]->channels(); + H_ = bottom[0]->height(); + W_ = bottom[0]->width(); + var_eps_ = 1e-9; + + // mean + spatial_mean_.Reshape(N_, C_, 1, 1); + batch_mean_.Reshape(1, C_, 1, 1); + // variance + spatial_variance_.Reshape(N_, C_, 1, 1); + batch_variance_.Reshape(1, C_, 1, 1); + // buffer blod + buffer_blob_.Reshape(N_, C_, H_, W_); + + // fill spatial multiplier + spatial_sum_multiplier_.Reshape(1, 1, H_, W_); + Dtype* spatial_multipl_data = spatial_sum_multiplier_.mutable_cpu_data(); + caffe_set(spatial_sum_multiplier_.count(), Dtype(1), + spatial_multipl_data); + caffe_set(spatial_sum_multiplier_.count(), Dtype(0), + spatial_sum_multiplier_.mutable_cpu_diff()); + + // fill batch multiplier + batch_sum_multiplier_.Reshape(N_, 1, 1, 1); + Dtype* batch_multiplier_data = batch_sum_multiplier_.mutable_cpu_data(); + caffe_set(batch_sum_multiplier_.count(), Dtype(1), + batch_multiplier_data); + caffe_set(batch_sum_multiplier_.count(), Dtype(0), + batch_sum_multiplier_.mutable_cpu_diff()); + + // Check if we need to set up the weights + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(2); + + // fill scale with scale_filler + this->blobs_[0].reset(new Blob(1, C_, 1, 1)); + caffe_set(this->blobs_[0]->count(), Dtype(1), + this->blobs_[0]->mutable_cpu_data()); + + // fill shift with shift_filler + this->blobs_[1].reset(new Blob(1, C_, 1, 1)); + caffe_set(this->blobs_[1]->count(), Dtype(0), + this->blobs_[1]->mutable_cpu_data()); + } // parameter initialization + this->param_propagate_down_.resize(this->blobs_.size(), true); + } + + template + void BatchNormLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const Dtype* const_top_data = top[0]->cpu_data(); + + const Dtype* scale_data = this->blobs_[0]->cpu_data(); + const Dtype* shift_data = this->blobs_[1]->cpu_data(); + + // put the squares of bottom into buffer_blob_ + caffe_powx(bottom[0]->count(), bottom_data, Dtype(2), + buffer_blob_.mutable_cpu_data()); + + // computes variance using var(X) = E(X^2) - (EX)^2 + // EX across spatial + caffe_cpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, + Dtype(1. / (H_ * W_)), bottom_data, + spatial_sum_multiplier_.cpu_data(), Dtype(0), + spatial_mean_.mutable_cpu_data()); + // EX across batch + caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), + spatial_mean_.cpu_data(), + batch_sum_multiplier_.cpu_data(), Dtype(0), + batch_mean_.mutable_cpu_data()); + + // E(X^2) across spatial + caffe_cpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, + Dtype(1. / (H_ * W_)), buffer_blob_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + spatial_variance_.mutable_cpu_data()); + // E(X^2) across batch + caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), + spatial_variance_.cpu_data(), + batch_sum_multiplier_.cpu_data(), Dtype(0), + batch_variance_.mutable_cpu_data()); + + caffe_powx(batch_mean_.count(), batch_mean_.cpu_data(), Dtype(2), + buffer_blob_.mutable_cpu_data()); // (EX)^2 + caffe_sub(batch_mean_.count(), batch_variance_.cpu_data(), + buffer_blob_.cpu_data(), + batch_variance_.mutable_cpu_data()); // variance + + // do mean and variance normalization + // subtract mean + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, + C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), + batch_mean_.cpu_data(), Dtype(0), + spatial_mean_.mutable_cpu_data()); + + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(-1), + spatial_mean_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + buffer_blob_.mutable_cpu_data()); + + caffe_add(buffer_blob_.count(), bottom_data, + buffer_blob_.cpu_data(), top_data); + + // normalize variance + caffe_add_scalar(batch_variance_.count(), var_eps_, + batch_variance_.mutable_cpu_data()); + caffe_powx(batch_variance_.count(), + batch_variance_.cpu_data(), Dtype(0.5), + batch_variance_.mutable_cpu_data()); + + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, + C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), + batch_variance_.cpu_data(), Dtype(0), + spatial_variance_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_ * C_, H_ * W_, 1, Dtype(1), + spatial_variance_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + buffer_blob_.mutable_cpu_data()); + + caffe_div(buffer_blob_.count(), const_top_data, + buffer_blob_.cpu_data(), top_data); + + // Saving x_norm + caffe_copy(buffer_blob_.count(), const_top_data, + x_norm_.mutable_cpu_data()); + // scale + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), scale_data, Dtype(0), + spatial_variance_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_variance_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + buffer_blob_.mutable_cpu_data()); + caffe_mul(buffer_blob_.count(), top_data, + buffer_blob_.cpu_data(), top_data); + + // shift + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), shift_data, Dtype(0), + spatial_mean_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_ * C_, H_ * W_, 1, Dtype(1), + spatial_mean_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + buffer_blob_.mutable_cpu_data()); + caffe_add(buffer_blob_.count(), const_top_data, + buffer_blob_.cpu_data(), top_data); + } + + template + void BatchNormLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + + Dtype* scale_diff = this->blobs_[0]->mutable_cpu_diff(); + Dtype* shift_diff = this->blobs_[1]->mutable_cpu_diff(); + const Dtype* scale_data = this->blobs_[0]->cpu_data(); + +// Propagate layer to parameters + // gradient w.r.t. scale + caffe_mul(buffer_blob_.count(), x_norm_.cpu_data(), + top_diff, buffer_blob_.mutable_cpu_data()); + // EX across spatial + caffe_cpu_gemv(CblasNoTrans, N_ * C_, + H_ * W_, Dtype(1), buffer_blob_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + spatial_variance_.mutable_cpu_diff()); + // EX across batch + caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_variance_.cpu_diff(), + batch_sum_multiplier_.cpu_data(), Dtype(0), scale_diff); + + // gradient w.r.t. shift + // EX across spatial + caffe_cpu_gemv(CblasNoTrans, N_ * C_, + H_ * W_, Dtype(1), top_diff, + spatial_sum_multiplier_.cpu_data(), + Dtype(0), spatial_mean_.mutable_cpu_diff()); + // EX across batch + caffe_cpu_gemv(CblasTrans, N_, C_, + Dtype(1), spatial_mean_.cpu_diff(), + batch_sum_multiplier_.cpu_data(), + Dtype(0), shift_diff); + +// Propagate down + + // put scale * top_diff to buffer_blob_ + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), scale_data, Dtype(0), + spatial_variance_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_variance_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + buffer_blob_.mutable_cpu_data()); + caffe_mul(buffer_blob_.count(), top_diff, buffer_blob_.cpu_data(), + buffer_blob_.mutable_cpu_data()); + + // use new top diff for computation + caffe_mul(buffer_blob_.count(), x_norm_.cpu_data(), + buffer_blob_.cpu_data(), bottom_diff); + // EX across spatial + caffe_cpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, + Dtype(1), bottom_diff, + spatial_sum_multiplier_.cpu_data(), Dtype(0), + spatial_mean_.mutable_cpu_data()); + // EX across batch + caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_mean_.cpu_data(), + batch_sum_multiplier_.cpu_data(), Dtype(0), + batch_mean_.mutable_cpu_data()); + + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_, C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), + batch_mean_.cpu_data(), Dtype(0), + spatial_mean_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_mean_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + bottom_diff); + + caffe_mul(buffer_blob_.count(), + x_norm_.cpu_data(), bottom_diff, bottom_diff); + + // EX across spatial + caffe_cpu_gemv(CblasNoTrans, N_ * C_, + H_ * W_, Dtype(1), buffer_blob_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + spatial_mean_.mutable_cpu_data()); + // EX across batch + caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_mean_.cpu_data(), + batch_sum_multiplier_.cpu_data(), Dtype(0), + batch_mean_.mutable_cpu_data()); + + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_, C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), + batch_mean_.cpu_data(), Dtype(0), + spatial_mean_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_ * C_, H_ * W_, 1, Dtype(1), + spatial_mean_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(1), bottom_diff); + + caffe_cpu_axpby(buffer_blob_.count(), Dtype(1), + buffer_blob_.cpu_data(), Dtype(-1. / (N_ * H_ * W_)), + bottom_diff); + + // put the squares of bottom into buffer_blob_ +// caffe_powx(buffer_blob_.count(), bottom_data, Dtype(2), +// buffer_blob_.mutable_cpu_data()); + + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_, C_, 1, Dtype(1), + batch_sum_multiplier_.cpu_data(), + batch_variance_.cpu_data(), Dtype(0), + spatial_variance_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + N_ * C_, H_ * W_, 1, Dtype(1), + spatial_variance_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), Dtype(0), + buffer_blob_.mutable_cpu_data()); + + caffe_div(buffer_blob_.count(), bottom_diff, + buffer_blob_.cpu_data(), bottom_diff); + } +#ifdef CPU_ONLY +STUB_GPU(BatchNormLayer); +#endif + + INSTANTIATE_CLASS(BatchNormLayer); + REGISTER_LAYER_CLASS(BatchNorm); +} // namespace caffe + diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu new file mode 100644 index 000000000..e87f8c62f --- /dev/null +++ b/src/caffe/layers/batch_norm_layer.cu @@ -0,0 +1,228 @@ +#include +#include + +#include "caffe/common_layers.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + template + void BatchNormLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* const_top_data = top[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + Dtype* spatial_mean_data = spatial_mean_.mutable_gpu_data(); + Dtype* buffer_data = buffer_blob_.mutable_gpu_data(); + const Dtype* const_buffer_data = buffer_blob_.gpu_data(); + + + // put the squares of bottom into buffer_blob_ + caffe_gpu_powx(bottom[0]->count(), bottom_data, Dtype(2), + buffer_blob_.mutable_gpu_data()); + + // computes variance using var(X) = E(X^2) - (EX)^2 + // EX across spatial + caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, + Dtype(1. / (H_ * W_)), + bottom_data, spatial_sum_multiplier_.gpu_data(), + Dtype(0), spatial_mean_data); + // EX across batch + caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), + spatial_mean_.gpu_data(), + batch_sum_multiplier_.gpu_data(), Dtype(0), + batch_mean_.mutable_gpu_data()); + + // E(X^2) across spatial + caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, + Dtype(1. / (H_ * W_)), buffer_data, + spatial_sum_multiplier_.gpu_data(), Dtype(0), + spatial_variance_.mutable_gpu_data()); + // E(X^2) across batch + caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), + spatial_variance_.gpu_data(), + batch_sum_multiplier_.gpu_data(), Dtype(0), + batch_variance_.mutable_gpu_data()); + + caffe_gpu_powx(batch_mean_.count(), batch_mean_.gpu_data(), + Dtype(2), buffer_blob_.mutable_gpu_data()); // (EX)^2 + caffe_gpu_sub(batch_mean_.count(), batch_variance_.gpu_data(), + buffer_data, batch_variance_.mutable_gpu_data()); // variance + + // do mean and variance normalization + // subtract mean + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), batch_mean_.gpu_data(), Dtype(0), + spatial_mean_data); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, H_ * W_, + 1, -Dtype(1), + spatial_mean_.gpu_data(), spatial_sum_multiplier_.gpu_data(), Dtype(0), + buffer_blob_.mutable_gpu_data()); + + caffe_gpu_add(buffer_blob_.count(), bottom_data, buffer_data, top_data); + + // normalize variance + caffe_gpu_add_scalar(batch_variance_.count(), var_eps_, + batch_variance_.mutable_gpu_data()); + caffe_gpu_powx(batch_variance_.count(), batch_variance_.gpu_data(), + Dtype(0.5), batch_variance_.mutable_gpu_data()); + + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), batch_variance_.gpu_data(), Dtype(0), + spatial_variance_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), + Dtype(0), buffer_blob_.mutable_gpu_data()); + + caffe_gpu_div(buffer_blob_.count(), top_data, buffer_data, top_data); + + // Saving x_norm + caffe_copy(top[0]->count(), const_top_data, x_norm_.mutable_gpu_data()); + + // scale + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), this->blobs_[0]->gpu_data(), + Dtype(0), spatial_variance_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), + Dtype(0), buffer_blob_.mutable_gpu_data()); + + caffe_gpu_mul(buffer_blob_.count(), top_data, buffer_data, top_data); + + // shift + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), + this->blobs_[1]->gpu_data(), Dtype(0), + spatial_mean_data); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, H_ * W_, 1, + Dtype(1), + spatial_mean_.gpu_data(), spatial_sum_multiplier_.gpu_data(), Dtype(0), + buffer_blob_.mutable_gpu_data()); + caffe_gpu_add(buffer_blob_.count(), top_data, buffer_data, top_data); + } + + template + void BatchNormLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const Dtype* const_bottom_diff = bottom[0]->gpu_diff(); + Dtype* spatial_mean_data = spatial_mean_.mutable_gpu_data(); + Dtype* buffer_data = buffer_blob_.mutable_gpu_data(); + const Dtype* const_buffer_data = buffer_blob_.gpu_data(); + + // Propage to layer params + // gradient w.r.t. scale + caffe_gpu_mul(buffer_blob_.count(), x_norm_.gpu_data(), + top_diff, buffer_blob_.mutable_gpu_data()); + // EX across spatial + caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, Dtype(1), + buffer_data, spatial_sum_multiplier_.gpu_data(), Dtype(0), + spatial_variance_.mutable_gpu_data()); + // EX across batch + caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_variance_.gpu_data(), + batch_sum_multiplier_.gpu_data(), Dtype(0), + this->blobs_[0]->mutable_gpu_diff()); + + // gradient w.r.t. shift + // EX across spatial + caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, Dtype(1), + top_diff, spatial_sum_multiplier_.gpu_data(), + Dtype(0), spatial_mean_data); + // EX across batch + caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_mean_.gpu_data(), + batch_sum_multiplier_.gpu_data(), Dtype(0), + this->blobs_[1]->mutable_gpu_diff()); + + // Propagate down + // scale top diff + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), this->blobs_[0]->gpu_data(), + Dtype(0), spatial_variance_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), + Dtype(0), + buffer_blob_.mutable_gpu_data()); + caffe_gpu_mul(buffer_blob_.count(), top_diff, buffer_data, + buffer_blob_.mutable_gpu_data()); + + // use new top diff for computation + caffe_gpu_mul(buffer_blob_.count(), x_norm_.gpu_data(), + buffer_data, bottom_diff); + // EX across spatial + caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, + Dtype(1), bottom_diff, + spatial_sum_multiplier_.gpu_data(), Dtype(0), spatial_mean_data); + // EX across batch + caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_mean_.gpu_data(), + batch_sum_multiplier_.gpu_data(), Dtype(0), + batch_mean_.mutable_gpu_data()); + + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), + batch_mean_.gpu_data(), Dtype(0), + spatial_mean_data); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), spatial_mean_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), Dtype(0), + bottom_diff); + + caffe_gpu_mul(buffer_blob_.count(), x_norm_.gpu_data(), + bottom_diff, bottom_diff); + + // EX across spatial + caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, Dtype(1), + buffer_data, spatial_sum_multiplier_.gpu_data(), + Dtype(0), spatial_mean_data); + + // EX across batch + caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), + spatial_mean_.gpu_data(), + batch_sum_multiplier_.gpu_data(), Dtype(0), + batch_mean_.mutable_gpu_data()); + + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, + C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), + batch_mean_.gpu_data(), Dtype(0), + spatial_mean_data); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_mean_.gpu_data(), spatial_sum_multiplier_.gpu_data(), + Dtype(1), + bottom_diff); + + caffe_gpu_axpby(buffer_blob_.count(), Dtype(1), buffer_data, + Dtype(-1. / (N_ * H_ * W_)), + bottom_diff); + + // put the squares of bottom into buffer_blob_ +// caffe_gpu_powx(buffer_blob_.count(), bottom_data, Dtype(2), +// buffer_blob_.mutable_gpu_data()); + + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), + batch_sum_multiplier_.gpu_data(), batch_variance_.gpu_data(), Dtype(0), + spatial_variance_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, + H_ * W_, 1, Dtype(1), + spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), + Dtype(0), + buffer_blob_.mutable_gpu_data()); + + caffe_gpu_div(buffer_blob_.count(), const_bottom_diff, + const_buffer_data, bottom_diff); + } + + INSTANTIATE_LAYER_GPU_FUNCS(BatchNormLayer); +} // namespace caffe + diff --git a/src/caffe/test/test_batch_norm_layer.cpp b/src/caffe/test/test_batch_norm_layer.cpp new file mode 100644 index 000000000..704efd5df --- /dev/null +++ b/src/caffe/test/test_batch_norm_layer.cpp @@ -0,0 +1,90 @@ +#include +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/common_layers.hpp" +#include "caffe/filler.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +#define BATCH_SIZE 2 +#define INPUT_DATA_SIZE 3 + +namespace caffe { + + template + class BatchNormLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + protected: + BatchNormLayerTest() + : blob_bottom_(new Blob(5, 2, 3, 4)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~BatchNormLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + }; + + TYPED_TEST_CASE(BatchNormLayerTest, TestDtypesAndDevices); + + TYPED_TEST(BatchNormLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + + BatchNormLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Test mean + int num = this->blob_bottom_->num(); + int channels = this->blob_bottom_->channels(); + int height = this->blob_bottom_->height(); + int width = this->blob_bottom_->width(); + + for (int j = 0; j < channels; ++j) { + Dtype sum = 0, var = 0; + for (int i = 0; i < num; ++i) { + for ( int k = 0; k < height; ++k ) { + for ( int l = 0; l < width; ++l ) { + Dtype data = this->blob_top_->data_at(i, j, k, l); + Dtype bottom_data = this->blob_bottom_->data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + } + sum /= height * width * num; + var /= height * width * num; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + // expect unit variance + EXPECT_NEAR(1, var, kErrorBound); + } + } + + TYPED_TEST(BatchNormLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + + BatchNormLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-4); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } + +} // namespace caffe From a52ee656a589313901560c87b65a570ee41c9fee Mon Sep 17 00:00:00 2001 From: Carl Doersch Date: Tue, 6 Oct 2015 14:19:59 -0700 Subject: [PATCH 081/458] Cleanup batch norm layer, include global stats computation --- .../cifar10_full_sigmoid_train_test.prototxt | 4 +- ...ifar10_full_sigmoid_train_test_bn.prototxt | 90 +-- include/caffe/common_layers.hpp | 64 ++- src/caffe/layers/batch_norm_layer.cpp | 535 +++++++----------- src/caffe/layers/batch_norm_layer.cu | 365 +++++------- src/caffe/proto/caffe.proto | 15 +- src/caffe/test/test_batch_norm_layer.cpp | 45 +- 7 files changed, 486 insertions(+), 632 deletions(-) diff --git a/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt b/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt index 6f5bf26bf..fba69b814 100644 --- a/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt +++ b/examples/cifar10/cifar10_full_sigmoid_train_test.prototxt @@ -176,10 +176,10 @@ layer { top: "ip1" param { lr_mult: 1 - decay_mult: 250 + decay_mult: 0 } param { - lr_mult: 0.2 + lr_mult: 2 decay_mult: 0 } inner_product_param { diff --git a/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt b/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt index 85c2dffe3..1a8107511 100644 --- a/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt +++ b/examples/cifar10/cifar10_full_sigmoid_train_test_bn.prototxt @@ -12,7 +12,7 @@ layer { } data_param { source: "examples/cifar10/cifar10_train_lmdb" - batch_size: 111 + batch_size: 100 backend: LMDB } } @@ -41,21 +41,16 @@ layer { param { lr_mult: 1 } - param { - lr_mult: 2 - } convolution_param { num_output: 32 pad: 2 kernel_size: 5 stride: 1 + bias_term: false weight_filler { type: "gaussian" std: 0.0001 } - bias_filler { - type: "constant" - } } } layer { @@ -75,23 +70,14 @@ layer { type: "BatchNorm" bottom: "pool1" top: "bn1" - bn_param { - scale_filler { - type: "constant" - value: 1 - } - shift_filler { - type: "constant" - value: 0.001 - } + param { + lr_mult: 0 } param { - lr_mult: 1.00001 - decay_mult: 0 + lr_mult: 0 } param { - lr_mult: 1.00001 - decay_mult: 0 + lr_mult: 0 } } @@ -110,50 +96,35 @@ layer { param { lr_mult: 1 } - param { - lr_mult: 2 - } convolution_param { num_output: 32 pad: 2 kernel_size: 5 stride: 1 + bias_term: false weight_filler { type: "gaussian" std: 0.01 } - bias_filler { - type: "constant" - } } } - - layer { name: "bn2" type: "BatchNorm" bottom: "conv2" top: "bn2" - bn_param { - scale_filler { - type: "constant" - value: 1 - } - shift_filler { - type: "constant" - value: 0.001 - } + param { + lr_mult: 0 } param { - lr_mult: 1.00001 - decay_mult: 0 + lr_mult: 0 } param { - lr_mult: 1.00001 - decay_mult: 0 + lr_mult: 0 } } + layer { name: "Sigmoid2" type: "Sigmoid" @@ -176,53 +147,38 @@ layer { type: "Convolution" bottom: "pool2" top: "conv3" + param { + lr_mult: 1 + } convolution_param { num_output: 64 pad: 2 kernel_size: 5 stride: 1 + bias_term: false weight_filler { type: "gaussian" std: 0.01 } - bias_filler { - type: "constant" - } - } - param { - lr_mult: 1 } - param { - lr_mult: 1 - } - } - layer { name: "bn3" type: "BatchNorm" bottom: "conv3" top: "bn3" - bn_param { - scale_filler { - type: "constant" - value: 1 - } - shift_filler { - type: "constant" - value: 0.001 - } + param { + lr_mult: 0 } param { - lr_mult: 1.00001 - decay_mult: 0 + lr_mult: 0 } param { - lr_mult: 1.00001 - decay_mult: 0 + lr_mult: 0 } } + layer { name: "Sigmoid3" type: "Sigmoid" @@ -248,10 +204,10 @@ layer { top: "ip1" param { lr_mult: 1 - decay_mult: 250 + decay_mult: 1 } param { - lr_mult: 0.2 + lr_mult: 1 decay_mult: 0 } inner_product_param { diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index 09605db9a..da38f1227 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -79,9 +79,35 @@ class ArgMaxLayer : public Layer { }; /** -* @brief Batch Normalization per-channel with scale & shift linear transform. -* -*/ + * @brief Normalizes the input to have 0-mean and/or unit (1) variance across + * the batch. + * + * This layer computes Batch Normalization described in [1]. For + * each channel in the data (i.e. axis 1), it subtracts the mean and divides + * by the variance, where both statistics are computed across both spatial + * dimensions and across the different examples in the batch. + * + * By default, during training time, the network is computing global mean/ + * variance statistics via a running average, which is then used at test + * time to allow deterministic outputs for each input. You can manually + * toggle whether the network is accumulating or using the statistics via the + * use_global_stats option. IMPORTANT: for this feature to work, you MUST + * set the learning rate to zero for all three parameter blobs, i.e., + * param {lr_mult: 0} three times in the layer definition. + * + * Note that the original paper also included a per-channel learned bias and + * scaling factor. It is possible (though a bit cumbersome) to implement + * this in caffe using a single-channel DummyDataLayer filled with zeros, + * followed by a Convolution layer with output the same size as the current. + * This produces a channel-specific value that can be added or multiplied by + * the BatchNorm layer's output. + * + * [1] S. Ioffe and C. Szegedy, "Batch Normalization: Accelerating Deep Network + * Training by Reducing Internal Covariate Shift." arXiv preprint + * arXiv:1502.03167 (2015). + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ template class BatchNormLayer : public Layer { public: @@ -89,11 +115,10 @@ class BatchNormLayer : public Layer { : Layer(param) {} virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); - virtual void Reshape(const vector*>& bottom, const vector*>& top); - virtual inline const char* type() const { return "BN"; } + virtual inline const char* type() const { return "BatchNorm"; } virtual inline int ExactNumBottomBlobs() const { return 1; } virtual inline int ExactNumTopBlobs() const { return 1; } @@ -105,26 +130,19 @@ class BatchNormLayer : public Layer { virtual void Backward_cpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - // spatial mean & variance - Blob spatial_mean_, spatial_variance_; - // batch mean & variance - Blob batch_mean_, batch_variance_; - // buffer blob - Blob buffer_blob_; + const vector& propagate_down, const vector*>& bottom); - Blob x_norm_; - // x_sum_multiplier is used to carry out sum using BLAS - Blob spatial_sum_multiplier_, batch_sum_multiplier_; + Blob mean_, variance_, temp_, x_norm_; + bool use_global_stats_; + Dtype moving_average_fraction_; + int channels_; + Dtype eps_; - // dimension - int N_; - int C_; - int H_; - int W_; - // eps - Dtype var_eps_; + // extra temporarary variables is used to carry out sums/broadcasting + // using BLAS + Blob batch_sum_multiplier_; + Blob num_by_chans_; + Blob spatial_sum_multiplier_; }; /** diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index 8dea34932..94c2b96b9 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -2,350 +2,235 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/filler.hpp" #include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { - template - void BatchNormLayer::Reshape(const vector*>& bottom, - const vector*>& top) { - top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); - - x_norm_.Reshape(bottom[0]->num(), bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); - - // Figure out the dimensions - N_ = bottom[0]->num(); - C_ = bottom[0]->channels(); - H_ = bottom[0]->height(); - W_ = bottom[0]->width(); - // mean - spatial_mean_.Reshape(N_, C_, 1, 1); - batch_mean_.Reshape(1, C_, 1, 1); - // variance - spatial_variance_.Reshape(N_, C_, 1, 1); - batch_variance_.Reshape(1, C_, 1, 1); - // buffer blod - buffer_blob_.Reshape(N_, C_, H_, W_); - - // fill spatial multiplier - spatial_sum_multiplier_.Reshape(1, 1, H_, W_); - Dtype* spatial_multipl_data = spatial_sum_multiplier_.mutable_cpu_data(); - caffe_set(spatial_sum_multiplier_.count(), Dtype(1), - spatial_multipl_data); - caffe_set(spatial_sum_multiplier_.count(), Dtype(0), - spatial_sum_multiplier_.mutable_cpu_diff()); - // fill batch multiplier - batch_sum_multiplier_.Reshape(N_, 1, 1, 1); - Dtype* batch_multiplier_data = batch_sum_multiplier_.mutable_cpu_data(); - caffe_set(batch_sum_multiplier_.count(), Dtype(1), - batch_multiplier_data); - caffe_set(batch_sum_multiplier_.count(), Dtype(0), - batch_sum_multiplier_.mutable_cpu_diff()); - this->param_propagate_down_.resize(this->blobs_.size(), true); - } - template - void BatchNormLayer::LayerSetUp(const vector*>& bottom, +template +void BatchNormLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { - CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " - "allow in-place computation."; - - top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); - - x_norm_.Reshape(bottom[0]->num(), bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); - // Figure out the dimensions - N_ = bottom[0]->num(); - C_ = bottom[0]->channels(); - H_ = bottom[0]->height(); - W_ = bottom[0]->width(); - var_eps_ = 1e-9; - - // mean - spatial_mean_.Reshape(N_, C_, 1, 1); - batch_mean_.Reshape(1, C_, 1, 1); - // variance - spatial_variance_.Reshape(N_, C_, 1, 1); - batch_variance_.Reshape(1, C_, 1, 1); - // buffer blod - buffer_blob_.Reshape(N_, C_, H_, W_); - - // fill spatial multiplier - spatial_sum_multiplier_.Reshape(1, 1, H_, W_); - Dtype* spatial_multipl_data = spatial_sum_multiplier_.mutable_cpu_data(); - caffe_set(spatial_sum_multiplier_.count(), Dtype(1), - spatial_multipl_data); - caffe_set(spatial_sum_multiplier_.count(), Dtype(0), - spatial_sum_multiplier_.mutable_cpu_diff()); - - // fill batch multiplier - batch_sum_multiplier_.Reshape(N_, 1, 1, 1); - Dtype* batch_multiplier_data = batch_sum_multiplier_.mutable_cpu_data(); - caffe_set(batch_sum_multiplier_.count(), Dtype(1), - batch_multiplier_data); - caffe_set(batch_sum_multiplier_.count(), Dtype(0), - batch_sum_multiplier_.mutable_cpu_diff()); - - // Check if we need to set up the weights - if (this->blobs_.size() > 0) { - LOG(INFO) << "Skipping parameter initialization"; - } else { - this->blobs_.resize(2); - - // fill scale with scale_filler - this->blobs_[0].reset(new Blob(1, C_, 1, 1)); - caffe_set(this->blobs_[0]->count(), Dtype(1), - this->blobs_[0]->mutable_cpu_data()); - - // fill shift with shift_filler - this->blobs_[1].reset(new Blob(1, C_, 1, 1)); - caffe_set(this->blobs_[1]->count(), Dtype(0), - this->blobs_[1]->mutable_cpu_data()); - } // parameter initialization - this->param_propagate_down_.resize(this->blobs_.size(), true); + BatchNormParameter param = this->layer_param_.batch_norm_param(); + moving_average_fraction_ = param.moving_average_fraction(); + use_global_stats_ = this->phase_ == TEST; + if (param.has_use_global_stats()) + use_global_stats_ = param.use_global_stats(); + if (bottom[0]->num_axes() == 1) + channels_ = 1; + else + channels_ = bottom[0]->shape(1); + eps_ = param.eps(); + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(3); + vector sz; + sz.push_back(channels_); + this->blobs_[0].reset(new Blob(sz)); + this->blobs_[1].reset(new Blob(sz)); + sz[0]=1; + this->blobs_[2].reset(new Blob(sz)); + for (int i = 0; i < 3; ++i) { + caffe_set(this->blobs_[i]->count(), Dtype(0), + this->blobs_[i]->mutable_cpu_data()); + } } +} - template - void BatchNormLayer::Forward_cpu(const vector*>& bottom, +template +void BatchNormLayer::Reshape(const vector*>& bottom, const vector*>& top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = top[0]->mutable_cpu_data(); - const Dtype* const_top_data = top[0]->cpu_data(); - - const Dtype* scale_data = this->blobs_[0]->cpu_data(); - const Dtype* shift_data = this->blobs_[1]->cpu_data(); - - // put the squares of bottom into buffer_blob_ - caffe_powx(bottom[0]->count(), bottom_data, Dtype(2), - buffer_blob_.mutable_cpu_data()); + if (bottom[0]->num_axes() >= 1) + CHECK_EQ(bottom[0]->shape(1), channels_); + top[0]->ReshapeLike(*bottom[0]); + + vector sz; + sz.push_back(channels_); + mean_.Reshape(sz); + variance_.Reshape(sz); + temp_.ReshapeLike(*bottom[0]); + x_norm_.ReshapeLike(*bottom[0]); + sz[0]=bottom[0]->shape(0); + batch_sum_multiplier_.Reshape(sz); + + int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); + if (spatial_sum_multiplier_.num_axes() == 0 || + spatial_sum_multiplier_.shape(0) != spatial_dim) { + sz[0] = spatial_dim; + spatial_sum_multiplier_.Reshape(sz); + Dtype* multiplier_data = spatial_sum_multiplier_.mutable_cpu_data(); + caffe_set(spatial_sum_multiplier_.count(), Dtype(1), multiplier_data); + } + int numbychans = channels_*bottom[0]->shape(0); + if (num_by_chans_.num_axes() == 0 || + num_by_chans_.shape(0) != numbychans) { + sz[0] = numbychans; + num_by_chans_.Reshape(sz); + caffe_set(batch_sum_multiplier_.count(), Dtype(1), + batch_sum_multiplier_.mutable_cpu_data()); + } +} + +template +void BatchNormLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + int num = bottom[0]->shape(0); + int spatial_dim = bottom[0]->count()/(bottom[0]->shape(0)*channels_); + + // elementwise square + caffe_powx(bottom[0]->count(), bottom_data, Dtype(2), + temp_.mutable_cpu_data()); + + if (use_global_stats_) { + // use the stored mean/variance estimates. TODO(cdoersch): allow an option + // to use an unbiased variance estimate, like the paper does. + const Dtype scale_factor = 1 / this->blobs_[2]->cpu_data()[0]; + caffe_cpu_scale(variance_.count(), scale_factor, + this->blobs_[0]->cpu_data(), mean_.mutable_cpu_data()); + caffe_cpu_scale(variance_.count(), scale_factor, + this->blobs_[1]->cpu_data(), variance_.mutable_cpu_data()); + } else { // computes variance using var(X) = E(X^2) - (EX)^2 - // EX across spatial - caffe_cpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, - Dtype(1. / (H_ * W_)), bottom_data, - spatial_sum_multiplier_.cpu_data(), Dtype(0), - spatial_mean_.mutable_cpu_data()); - // EX across batch - caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), - spatial_mean_.cpu_data(), - batch_sum_multiplier_.cpu_data(), Dtype(0), - batch_mean_.mutable_cpu_data()); - - // E(X^2) across spatial - caffe_cpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, - Dtype(1. / (H_ * W_)), buffer_blob_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - spatial_variance_.mutable_cpu_data()); - // E(X^2) across batch - caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), - spatial_variance_.cpu_data(), - batch_sum_multiplier_.cpu_data(), Dtype(0), - batch_variance_.mutable_cpu_data()); - - caffe_powx(batch_mean_.count(), batch_mean_.cpu_data(), Dtype(2), - buffer_blob_.mutable_cpu_data()); // (EX)^2 - caffe_sub(batch_mean_.count(), batch_variance_.cpu_data(), - buffer_blob_.cpu_data(), - batch_variance_.mutable_cpu_data()); // variance - - // do mean and variance normalization - // subtract mean - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, - C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), - batch_mean_.cpu_data(), Dtype(0), - spatial_mean_.mutable_cpu_data()); - - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(-1), - spatial_mean_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - buffer_blob_.mutable_cpu_data()); - - caffe_add(buffer_blob_.count(), bottom_data, - buffer_blob_.cpu_data(), top_data); - - // normalize variance - caffe_add_scalar(batch_variance_.count(), var_eps_, - batch_variance_.mutable_cpu_data()); - caffe_powx(batch_variance_.count(), - batch_variance_.cpu_data(), Dtype(0.5), - batch_variance_.mutable_cpu_data()); - - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, - C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), - batch_variance_.cpu_data(), Dtype(0), - spatial_variance_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_ * C_, H_ * W_, 1, Dtype(1), - spatial_variance_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - buffer_blob_.mutable_cpu_data()); - - caffe_div(buffer_blob_.count(), const_top_data, - buffer_blob_.cpu_data(), top_data); - - // Saving x_norm - caffe_copy(buffer_blob_.count(), const_top_data, - x_norm_.mutable_cpu_data()); - // scale - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), scale_data, Dtype(0), - spatial_variance_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_variance_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - buffer_blob_.mutable_cpu_data()); - caffe_mul(buffer_blob_.count(), top_data, - buffer_blob_.cpu_data(), top_data); - - // shift - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), shift_data, Dtype(0), - spatial_mean_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_ * C_, H_ * W_, 1, Dtype(1), - spatial_mean_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - buffer_blob_.mutable_cpu_data()); - caffe_add(buffer_blob_.count(), const_top_data, - buffer_blob_.cpu_data(), top_data); + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), bottom_data, + spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + mean_.mutable_cpu_data()); + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), temp_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + variance_.mutable_cpu_data()); + this->blobs_[2]->mutable_cpu_data()[0] *= moving_average_fraction_; + this->blobs_[2]->mutable_cpu_data()[0] += 1; + caffe_cpu_axpby(mean_.count(), Dtype(1), mean_.cpu_data(), + moving_average_fraction_, this->blobs_[0]->mutable_cpu_data()); + Dtype m = Dtype(bottom[0]->count()/channels_); + caffe_cpu_axpby(variance_.count(), m/(m-1), variance_.cpu_data(), + moving_average_fraction_, this->blobs_[1]->mutable_cpu_data()); } + // elementwise square of mean + caffe_powx(mean_.count(), mean_.cpu_data(), Dtype(2), + temp_.mutable_cpu_data()); - template - void BatchNormLayer::Backward_cpu(const vector*>& top, - const vector& propagate_down, - const vector*>& bottom) { - const Dtype* top_diff = top[0]->cpu_diff(); - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); - - Dtype* scale_diff = this->blobs_[0]->mutable_cpu_diff(); - Dtype* shift_diff = this->blobs_[1]->mutable_cpu_diff(); - const Dtype* scale_data = this->blobs_[0]->cpu_data(); - -// Propagate layer to parameters - // gradient w.r.t. scale - caffe_mul(buffer_blob_.count(), x_norm_.cpu_data(), - top_diff, buffer_blob_.mutable_cpu_data()); - // EX across spatial - caffe_cpu_gemv(CblasNoTrans, N_ * C_, - H_ * W_, Dtype(1), buffer_blob_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - spatial_variance_.mutable_cpu_diff()); - // EX across batch - caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_variance_.cpu_diff(), - batch_sum_multiplier_.cpu_data(), Dtype(0), scale_diff); - - // gradient w.r.t. shift - // EX across spatial - caffe_cpu_gemv(CblasNoTrans, N_ * C_, - H_ * W_, Dtype(1), top_diff, - spatial_sum_multiplier_.cpu_data(), - Dtype(0), spatial_mean_.mutable_cpu_diff()); - // EX across batch - caffe_cpu_gemv(CblasTrans, N_, C_, - Dtype(1), spatial_mean_.cpu_diff(), - batch_sum_multiplier_.cpu_data(), - Dtype(0), shift_diff); + caffe_sub(mean_.count(), variance_.cpu_data(), temp_.cpu_data(), + variance_.mutable_cpu_data()); // variance -// Propagate down + // normalize variance + caffe_add_scalar(variance_.count(), eps_, variance_.mutable_cpu_data()); + caffe_powx(variance_.count(), variance_.cpu_data(), Dtype(0.5), + variance_.mutable_cpu_data()); - // put scale * top_diff to buffer_blob_ - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), scale_data, Dtype(0), - spatial_variance_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_variance_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - buffer_blob_.mutable_cpu_data()); - caffe_mul(buffer_blob_.count(), top_diff, buffer_blob_.cpu_data(), - buffer_blob_.mutable_cpu_data()); - - // use new top diff for computation - caffe_mul(buffer_blob_.count(), x_norm_.cpu_data(), - buffer_blob_.cpu_data(), bottom_diff); - // EX across spatial - caffe_cpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, - Dtype(1), bottom_diff, - spatial_sum_multiplier_.cpu_data(), Dtype(0), - spatial_mean_.mutable_cpu_data()); - // EX across batch - caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_mean_.cpu_data(), - batch_sum_multiplier_.cpu_data(), Dtype(0), - batch_mean_.mutable_cpu_data()); - - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_, C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), - batch_mean_.cpu_data(), Dtype(0), - spatial_mean_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_mean_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - bottom_diff); - - caffe_mul(buffer_blob_.count(), - x_norm_.cpu_data(), bottom_diff, bottom_diff); - - // EX across spatial - caffe_cpu_gemv(CblasNoTrans, N_ * C_, - H_ * W_, Dtype(1), buffer_blob_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - spatial_mean_.mutable_cpu_data()); - // EX across batch - caffe_cpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_mean_.cpu_data(), - batch_sum_multiplier_.cpu_data(), Dtype(0), - batch_mean_.mutable_cpu_data()); - - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_, C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), - batch_mean_.cpu_data(), Dtype(0), - spatial_mean_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_ * C_, H_ * W_, 1, Dtype(1), - spatial_mean_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(1), bottom_diff); - - caffe_cpu_axpby(buffer_blob_.count(), Dtype(1), - buffer_blob_.cpu_data(), Dtype(-1. / (N_ * H_ * W_)), - bottom_diff); - - // put the squares of bottom into buffer_blob_ -// caffe_powx(buffer_blob_.count(), bottom_data, Dtype(2), -// buffer_blob_.mutable_cpu_data()); + // do mean and variance normalization + if (bottom[0] != top[0]) { + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } + // subtract mean + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, -1, num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 1., top_data); + // replicate variance to input size + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), variance_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 0., temp_.mutable_cpu_data()); + caffe_div(temp_.count(), top_data, temp_.cpu_data(), top_data); + // TODO(cdoersch): The caching is only needed because later in-place layers + // might clobber the data. Can we skip this if they won't? + caffe_copy(x_norm_.count(), top_data, + x_norm_.mutable_cpu_data()); +} + +template +void BatchNormLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + CHECK(!use_global_stats_); + const Dtype* top_diff; + if (bottom[0] != top[0]) { + top_diff = top[0]->cpu_diff(); + } else { + caffe_copy(x_norm_.count(), top[0]->cpu_diff(), x_norm_.mutable_cpu_diff()); + top_diff = x_norm_.cpu_diff(); + } + const Dtype* top_data = x_norm_.cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + int num = bottom[0]->shape()[0]; + int spatial_dim = bottom[0]->count()/(bottom[0]->shape(0)*channels_); + // if Y = (X-mean(X))/(sqrt(var(X)+eps)), then + // + // dE(Y)/dX = + // (dE/dY - mean(dE/dY) - mean(dE/dY \cdot Y) \cdot Y) + // ./ sqrt(var(X) + eps) + // + // where \cdot and ./ are hadamard product and elementwise division, + // respectively, dE/dY is the top diff, and mean/var/sum are all computed + // along all dimensions except the channels dimension. In the above + // equation, the operations allow for expansion (i.e. broadcast) along all + // dimensions except the channels dimension where required. + + // sum(dE/dY \cdot Y) + caffe_mul(temp_.count(), top_data, top_diff, bottom_diff); + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + bottom_diff, spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + mean_.mutable_cpu_data()); + + // reshape (broadcast) the above + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 0., bottom_diff); + + // sum(dE/dY \cdot Y) \cdot Y + caffe_mul(temp_.count(), top_data, bottom_diff, bottom_diff); + + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + top_diff, spatial_sum_multiplier_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., + mean_.mutable_cpu_data()); + // reshape (broadcast) the above to make + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num * channels_, + spatial_dim, 1, 1., num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 1., bottom_diff); + + // dE/dY - mean(dE/dY)-mean(dE/dY \cdot Y) \cdot Y + caffe_cpu_axpby(temp_.count(), Dtype(1), top_diff, + Dtype(-1. / (num * spatial_dim)), bottom_diff); + + // note: temp_ still contains sqrt(var(X)+eps), computed during the forward + // pass. + caffe_div(temp_.count(), bottom_diff, temp_.cpu_data(), bottom_diff); +} - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_, C_, 1, Dtype(1), - batch_sum_multiplier_.cpu_data(), - batch_variance_.cpu_data(), Dtype(0), - spatial_variance_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, - N_ * C_, H_ * W_, 1, Dtype(1), - spatial_variance_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), Dtype(0), - buffer_blob_.mutable_cpu_data()); - caffe_div(buffer_blob_.count(), bottom_diff, - buffer_blob_.cpu_data(), bottom_diff); - } #ifdef CPU_ONLY STUB_GPU(BatchNormLayer); #endif - INSTANTIATE_CLASS(BatchNormLayer); - REGISTER_LAYER_CLASS(BatchNorm); +INSTANTIATE_CLASS(BatchNormLayer); +REGISTER_LAYER_CLASS(BatchNorm); } // namespace caffe - diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu index e87f8c62f..cd8924a45 100644 --- a/src/caffe/layers/batch_norm_layer.cu +++ b/src/caffe/layers/batch_norm_layer.cu @@ -2,227 +2,166 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/filler.hpp" #include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { - template - void BatchNormLayer::Forward_gpu(const vector*>& bottom, - const vector*>& top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - const Dtype* const_top_data = top[0]->gpu_data(); - Dtype* top_data = top[0]->mutable_gpu_data(); - Dtype* spatial_mean_data = spatial_mean_.mutable_gpu_data(); - Dtype* buffer_data = buffer_blob_.mutable_gpu_data(); - const Dtype* const_buffer_data = buffer_blob_.gpu_data(); - - - // put the squares of bottom into buffer_blob_ - caffe_gpu_powx(bottom[0]->count(), bottom_data, Dtype(2), - buffer_blob_.mutable_gpu_data()); +template +void BatchNormLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + int num = bottom[0]->shape(0); + int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); + + // elementwise square + caffe_gpu_powx(bottom[0]->count(), bottom_data, Dtype(2), + temp_.mutable_gpu_data()); + + if (use_global_stats_) { + // use the stored mean/variance estimates. TODO(cdoersch): allow an option + // to use an unbiased variance estimate, like the paper does. + const Dtype scale_factor = 1 / this->blobs_[2]->cpu_data()[0]; + caffe_gpu_scale(variance_.count(), scale_factor, + this->blobs_[0]->gpu_data(), mean_.mutable_gpu_data()); + caffe_gpu_scale(variance_.count(), scale_factor, + this->blobs_[1]->gpu_data(), variance_.mutable_gpu_data()); + } else { // computes variance using var(X) = E(X^2) - (EX)^2 - // EX across spatial - caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, - Dtype(1. / (H_ * W_)), - bottom_data, spatial_sum_multiplier_.gpu_data(), - Dtype(0), spatial_mean_data); - // EX across batch - caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), - spatial_mean_.gpu_data(), - batch_sum_multiplier_.gpu_data(), Dtype(0), - batch_mean_.mutable_gpu_data()); - - // E(X^2) across spatial - caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, - Dtype(1. / (H_ * W_)), buffer_data, - spatial_sum_multiplier_.gpu_data(), Dtype(0), - spatial_variance_.mutable_gpu_data()); - // E(X^2) across batch - caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1. / N_), - spatial_variance_.gpu_data(), - batch_sum_multiplier_.gpu_data(), Dtype(0), - batch_variance_.mutable_gpu_data()); - - caffe_gpu_powx(batch_mean_.count(), batch_mean_.gpu_data(), - Dtype(2), buffer_blob_.mutable_gpu_data()); // (EX)^2 - caffe_gpu_sub(batch_mean_.count(), batch_variance_.gpu_data(), - buffer_data, batch_variance_.mutable_gpu_data()); // variance - - // do mean and variance normalization - // subtract mean - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), batch_mean_.gpu_data(), Dtype(0), - spatial_mean_data); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, H_ * W_, - 1, -Dtype(1), - spatial_mean_.gpu_data(), spatial_sum_multiplier_.gpu_data(), Dtype(0), - buffer_blob_.mutable_gpu_data()); - - caffe_gpu_add(buffer_blob_.count(), bottom_data, buffer_data, top_data); - - // normalize variance - caffe_gpu_add_scalar(batch_variance_.count(), var_eps_, - batch_variance_.mutable_gpu_data()); - caffe_gpu_powx(batch_variance_.count(), batch_variance_.gpu_data(), - Dtype(0.5), batch_variance_.mutable_gpu_data()); - - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), batch_variance_.gpu_data(), Dtype(0), - spatial_variance_.mutable_gpu_data()); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), - Dtype(0), buffer_blob_.mutable_gpu_data()); - - caffe_gpu_div(buffer_blob_.count(), top_data, buffer_data, top_data); - - // Saving x_norm - caffe_copy(top[0]->count(), const_top_data, x_norm_.mutable_gpu_data()); - - // scale - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), this->blobs_[0]->gpu_data(), - Dtype(0), spatial_variance_.mutable_gpu_data()); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), - Dtype(0), buffer_blob_.mutable_gpu_data()); - - caffe_gpu_mul(buffer_blob_.count(), top_data, buffer_data, top_data); - - // shift - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), - this->blobs_[1]->gpu_data(), Dtype(0), - spatial_mean_data); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, H_ * W_, 1, - Dtype(1), - spatial_mean_.gpu_data(), spatial_sum_multiplier_.gpu_data(), Dtype(0), - buffer_blob_.mutable_gpu_data()); - caffe_gpu_add(buffer_blob_.count(), top_data, buffer_data, top_data); + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), bottom_data, + spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + mean_.mutable_gpu_data()); + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, + 1. / (num * spatial_dim), temp_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + variance_.mutable_gpu_data()); + this->blobs_[2]->mutable_cpu_data()[0] *= moving_average_fraction_; + this->blobs_[2]->mutable_cpu_data()[0] += 1; + caffe_gpu_axpby(mean_.count(), Dtype(1), mean_.gpu_data(), + moving_average_fraction_, this->blobs_[0]->mutable_gpu_data()); + Dtype m = Dtype(bottom[0]->count()/channels_); + caffe_gpu_axpby(variance_.count(), m/(m-1), variance_.gpu_data(), + moving_average_fraction_, this->blobs_[1]->mutable_gpu_data()); } + // elementwise square of mean + caffe_gpu_powx(mean_.count(), mean_.gpu_data(), Dtype(2), + temp_.mutable_gpu_data()); + + caffe_gpu_sub(mean_.count(), variance_.gpu_data(), temp_.gpu_data(), + variance_.mutable_gpu_data()); // variance + + // normalize variance + caffe_gpu_add_scalar(variance_.count(), eps_, variance_.mutable_gpu_data()); + caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5), + variance_.mutable_gpu_data()); - template - void BatchNormLayer::Backward_gpu(const vector*>& top, - const vector& propagate_down, - const vector*>& bottom) { - const Dtype* top_diff = top[0]->gpu_diff(); - const Dtype* top_data = top[0]->gpu_data(); - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); - const Dtype* const_bottom_diff = bottom[0]->gpu_diff(); - Dtype* spatial_mean_data = spatial_mean_.mutable_gpu_data(); - Dtype* buffer_data = buffer_blob_.mutable_gpu_data(); - const Dtype* const_buffer_data = buffer_blob_.gpu_data(); - - // Propage to layer params - // gradient w.r.t. scale - caffe_gpu_mul(buffer_blob_.count(), x_norm_.gpu_data(), - top_diff, buffer_blob_.mutable_gpu_data()); - // EX across spatial - caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, Dtype(1), - buffer_data, spatial_sum_multiplier_.gpu_data(), Dtype(0), - spatial_variance_.mutable_gpu_data()); - // EX across batch - caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_variance_.gpu_data(), - batch_sum_multiplier_.gpu_data(), Dtype(0), - this->blobs_[0]->mutable_gpu_diff()); - - // gradient w.r.t. shift - // EX across spatial - caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, Dtype(1), - top_diff, spatial_sum_multiplier_.gpu_data(), - Dtype(0), spatial_mean_data); - // EX across batch - caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_mean_.gpu_data(), - batch_sum_multiplier_.gpu_data(), Dtype(0), - this->blobs_[1]->mutable_gpu_diff()); - - // Propagate down - // scale top diff - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), this->blobs_[0]->gpu_data(), - Dtype(0), spatial_variance_.mutable_gpu_data()); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), - Dtype(0), - buffer_blob_.mutable_gpu_data()); - caffe_gpu_mul(buffer_blob_.count(), top_diff, buffer_data, - buffer_blob_.mutable_gpu_data()); - - // use new top diff for computation - caffe_gpu_mul(buffer_blob_.count(), x_norm_.gpu_data(), - buffer_data, bottom_diff); - // EX across spatial - caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, - Dtype(1), bottom_diff, - spatial_sum_multiplier_.gpu_data(), Dtype(0), spatial_mean_data); - // EX across batch - caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_mean_.gpu_data(), - batch_sum_multiplier_.gpu_data(), Dtype(0), - batch_mean_.mutable_gpu_data()); - - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), - batch_mean_.gpu_data(), Dtype(0), - spatial_mean_data); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), spatial_mean_.gpu_data(), - spatial_sum_multiplier_.gpu_data(), Dtype(0), - bottom_diff); - - caffe_gpu_mul(buffer_blob_.count(), x_norm_.gpu_data(), - bottom_diff, bottom_diff); - - // EX across spatial - caffe_gpu_gemv(CblasNoTrans, N_ * C_, H_ * W_, Dtype(1), - buffer_data, spatial_sum_multiplier_.gpu_data(), - Dtype(0), spatial_mean_data); - - // EX across batch - caffe_gpu_gemv(CblasTrans, N_, C_, Dtype(1), - spatial_mean_.gpu_data(), - batch_sum_multiplier_.gpu_data(), Dtype(0), - batch_mean_.mutable_gpu_data()); - - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, - C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), - batch_mean_.gpu_data(), Dtype(0), - spatial_mean_data); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_mean_.gpu_data(), spatial_sum_multiplier_.gpu_data(), - Dtype(1), - bottom_diff); - - caffe_gpu_axpby(buffer_blob_.count(), Dtype(1), buffer_data, - Dtype(-1. / (N_ * H_ * W_)), - bottom_diff); - - // put the squares of bottom into buffer_blob_ -// caffe_gpu_powx(buffer_blob_.count(), bottom_data, Dtype(2), -// buffer_blob_.mutable_gpu_data()); - - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_, C_, 1, Dtype(1), - batch_sum_multiplier_.gpu_data(), batch_variance_.gpu_data(), Dtype(0), - spatial_variance_.mutable_gpu_data()); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, N_ * C_, - H_ * W_, 1, Dtype(1), - spatial_variance_.gpu_data(), spatial_sum_multiplier_.gpu_data(), - Dtype(0), - buffer_blob_.mutable_gpu_data()); - - caffe_gpu_div(buffer_blob_.count(), const_bottom_diff, - const_buffer_data, bottom_diff); + // do mean and variance normalization + if (bottom[0] != top[0]) { + caffe_copy(bottom[0]->count(), bottom_data, top_data); } + // subtract mean + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, -1, num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 1., top_data); + // replicate variance to input size + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), variance_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 0., temp_.mutable_gpu_data()); + caffe_gpu_div(temp_.count(), top_data, temp_.gpu_data(), top_data); + // TODO(cdoersch): The caching is only needed because later in-place layers + // might clobber the data. Can we skip this if they won't? + caffe_copy(x_norm_.count(), top_data, + x_norm_.mutable_gpu_data()); +} + +template +void BatchNormLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + CHECK(!use_global_stats_); + const Dtype* top_diff; + if (bottom[0] != top[0]) { + top_diff = top[0]->gpu_diff(); + } else { + caffe_copy(x_norm_.count(), top[0]->gpu_diff(), x_norm_.mutable_gpu_diff()); + top_diff = x_norm_.gpu_diff(); + } + const Dtype* top_data = x_norm_.gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + int num = bottom[0]->shape()[0]; + int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); + // if Y = (X-mean(X))/(sqrt(var(X)+eps)), then + // + // dE(Y)/dX = + // (dE/dY - mean(dE/dY) - mean(dE/dY \cdot Y) \cdot Y) + // ./ sqrt(var(X) + eps) + // + // where \cdot and ./ are hadamard product and elementwise division, + // respectively, dE/dY is the top diff, and mean/var/sum are all computed + // along all dimensions except the channels dimension. In the above + // equation, the operations allow for expansion (i.e. broadcast) along all + // dimensions except the channels dimension where required. + + // sum(dE/dY \cdot Y) + caffe_gpu_mul(temp_.count(), top_data, top_diff, bottom_diff); + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + bottom_diff, spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + mean_.mutable_gpu_data()); + + // reshape (broadcast) the above + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, 1., num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 0., bottom_diff); + + // sum(dE/dY \cdot Y) \cdot Y + caffe_gpu_mul(temp_.count(), top_data, bottom_diff, bottom_diff); + + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1., + top_diff, spatial_sum_multiplier_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemv(CblasTrans, num, channels_, 1., + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + mean_.mutable_gpu_data()); + // reshape (broadcast) the above to make + // sum(dE/dY)-sum(dE/dY \cdot Y) \cdot Y + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num * channels_, + spatial_dim, 1, 1., num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 1., bottom_diff); + + // dE/dY - mean(dE/dY)-mean(dE/dY \cdot Y) \cdot Y + caffe_gpu_axpby(temp_.count(), Dtype(1), top_diff, + Dtype(-1. / (num * spatial_dim)), bottom_diff); + + // note: temp_ still contains sqrt(var(X)+eps), computed during the forward + // pass. + caffe_gpu_div(temp_.count(), bottom_diff, temp_.gpu_data(), bottom_diff); +} + +INSTANTIATE_LAYER_GPU_FUNCS(BatchNormLayer); - INSTANTIATE_LAYER_GPU_FUNCS(BatchNormLayer); -} // namespace caffe +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index a8747c12b..99dd3c90e 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -301,7 +301,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 139 (last added: tile_param) +// LayerParameter next available layer-specific ID: 140 (last added: batch_norm_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -350,6 +350,7 @@ message LayerParameter { // The default for the engine is set by the ENGINE switch at compile-time. optional AccuracyParameter accuracy_param = 102; optional ArgMaxParameter argmax_param = 103; + optional BatchNormParameter batch_norm_param = 139; optional ConcatParameter concat_param = 104; optional ContrastiveLossParameter contrastive_loss_param = 105; optional ConvolutionParameter convolution_param = 106; @@ -461,6 +462,18 @@ message ConcatParameter { optional uint32 concat_dim = 1 [default = 1]; } +message BatchNormParameter { + // If false, accumulate global mean/variance values via a moving average. If + // true, use those accumulated values instead of computing mean/variance + // across the batch. + optional bool use_global_stats = 1; + // How much does the moving average decay each iteration? + optional float moving_average_fraction = 2 [default = .999]; + // Small value to add to the variance estimate so that we don't divide by + // zero. + optional float eps = 3 [default = 1e-5]; +} + message ContrastiveLossParameter { // margin for dissimilar pair optional float margin = 1 [default = 1.0]; diff --git a/src/caffe/test/test_batch_norm_layer.cpp b/src/caffe/test/test_batch_norm_layer.cpp index 704efd5df..22b9667f3 100644 --- a/src/caffe/test/test_batch_norm_layer.cpp +++ b/src/caffe/test/test_batch_norm_layer.cpp @@ -60,7 +60,50 @@ namespace caffe { for ( int k = 0; k < height; ++k ) { for ( int l = 0; l < width; ++l ) { Dtype data = this->blob_top_->data_at(i, j, k, l); - Dtype bottom_data = this->blob_bottom_->data_at(i, j, k, l); + sum += data; + var += data * data; + } + } + } + sum /= height * width * num; + var /= height * width * num; + + const Dtype kErrorBound = 0.001; + // expect zero mean + EXPECT_NEAR(0, sum, kErrorBound); + // expect unit variance + EXPECT_NEAR(1, var, kErrorBound); + } + } + + TYPED_TEST(BatchNormLayerTest, TestForwardInplace) { + typedef typename TypeParam::Dtype Dtype; + Blob blob_inplace(5, 2, 3, 4); + vector*> blob_bottom_vec; + vector*> blob_top_vec; + LayerParameter layer_param; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(&blob_inplace); + blob_bottom_vec.push_back(&blob_inplace); + blob_top_vec.push_back(&blob_inplace); + + BatchNormLayer layer(layer_param); + layer.SetUp(blob_bottom_vec, blob_top_vec); + layer.Forward(blob_bottom_vec, blob_top_vec); + + // Test mean + int num = blob_inplace.num(); + int channels = blob_inplace.channels(); + int height = blob_inplace.height(); + int width = blob_inplace.width(); + + for (int j = 0; j < channels; ++j) { + Dtype sum = 0, var = 0; + for (int i = 0; i < num; ++i) { + for ( int k = 0; k < height; ++k ) { + for ( int l = 0; l < width; ++l ) { + Dtype data = blob_inplace.data_at(i, j, k, l); sum += data; var += data * data; } From 09b8738d73ebc37dda09e8c6dd05e35609999c77 Mon Sep 17 00:00:00 2001 From: Rodrigo Benenson Date: Thu, 22 Oct 2015 18:18:08 +0200 Subject: [PATCH 082/458] diff.ndim != 4 is outdated this code seems not to apply to the caffe head. ``` if diff.ndim != 4: raise Exception('{} diff is not 4-d'.format(top)) ``` --- python/caffe/pycaffe.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 8ea24da4f..7bd4f411b 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -146,8 +146,6 @@ def _Net_backward(self, diffs=None, start=None, end=None, **kwargs): # Set top diffs according to defined shapes and make arrays single and # C-contiguous as Caffe expects. for top, diff in kwargs.iteritems(): - if diff.ndim != 4: - raise Exception('{} diff is not 4-d'.format(top)) if diff.shape[0] != self.blobs[top].num: raise Exception('Diff is not batch sized') self.blobs[top].diff[...] = diff From 3e5f49435f95de57bffbde53d745dcb4a8f1f870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20L=C3=B8ve=20Selvik?= Date: Tue, 13 Oct 2015 16:32:52 +0200 Subject: [PATCH 083/458] Add opencv_imgcodecs to library path in Makefile Project does not compile without opencv_imgcodecs in the library path if you're using OpenCV 3. This introduces a OPENCV_VERSION flag in Makefile.config that includes the library if set to 3. (Trying to include it with OpenCV 2 also breaks the build) --- Makefile | 7 ++++++- Makefile.config.example | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5fb6394e9..43cb15fe4 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,12 @@ ifeq ($(USE_LMDB), 1) LIBRARIES += lmdb endif ifeq ($(USE_OPENCV), 1) - LIBRARIES += opencv_core opencv_highgui opencv_imgproc + LIBRARIES += opencv_core opencv_highgui opencv_imgproc + + ifeq ($(OPENCV_VERSION), 3) + LIBRARIES += opencv_imgcodecs + endif + endif PYTHON_LIBRARIES := boost_python python2.7 WARNINGS := -Wall -Wno-sign-compare diff --git a/Makefile.config.example b/Makefile.config.example index a20bad2f5..8e2c4fb46 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -12,6 +12,9 @@ # USE_LMDB := 0 # USE_OPENCV := 0 +# Uncomment if you're using OpenCV 3 +# OPENCV_VERSION := 3 + # To customize your choice of compiler, uncomment and set the following. # N.B. the default for Linux is g++ and the default for OSX is clang++ # CUSTOM_CXX := g++ From 9898794172b7def7a91d925d97e11dd0878ddb61 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 22 Oct 2015 19:12:48 -0700 Subject: [PATCH 084/458] cuDNN: only log conv workspace in debug mode --- src/caffe/layers/cudnn_conv_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/cudnn_conv_layer.cpp b/src/caffe/layers/cudnn_conv_layer.cpp index 8b61249a4..c82cb7efd 100644 --- a/src/caffe/layers/cudnn_conv_layer.cpp +++ b/src/caffe/layers/cudnn_conv_layer.cpp @@ -191,7 +191,7 @@ void CuDNNConvolutionLayer::Reshape( // this is the total amount of storage needed over all groups + streams if (total_max_workspace > workspaceSizeInBytes) { - LOG(INFO) << "Reallocating workspace storage: " << total_max_workspace; + DLOG(INFO) << "Reallocating workspace storage: " << total_max_workspace; workspaceSizeInBytes = total_max_workspace; // free the existing workspace and allocate a new (larger) one From 8e455850bf398dd16dffa5e7591480d013b8e573 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Tue, 27 Oct 2015 22:49:28 -0700 Subject: [PATCH 085/458] CuDNNConvolutionLayer accumulate gradients --- src/caffe/layers/cudnn_conv_layer.cu | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index 63b6ab9c3..f2df4aa50 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -53,12 +53,10 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, if (this->param_propagate_down_[0]) { weight = this->blobs_[0]->gpu_data(); weight_diff = this->blobs_[0]->mutable_gpu_diff(); - caffe_gpu_set(this->blobs_[0]->count(), Dtype(0), weight_diff); } Dtype* bias_diff = NULL; if (this->bias_term_ && this->param_propagate_down_[1]) { bias_diff = this->blobs_[1]->mutable_gpu_diff(); - caffe_gpu_set(this->blobs_[1]->count(), Dtype(0), bias_diff); } for (int i = 0; i < top.size(); ++i) { const Dtype* top_diff = top[i]->gpu_diff(); From 5925fa8ed94e9af02449f853b06f252ac5f4c364 Mon Sep 17 00:00:00 2001 From: Kai Li <1196594711@qq.com> Date: Fri, 30 Oct 2015 00:46:08 +0800 Subject: [PATCH 086/458] Update plot_training_log.py.example I find there is no plot_log.sh file --- tools/extra/plot_training_log.py.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index b6fda54e0..4d3ed0d15 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -150,7 +150,7 @@ Be warned that the fields in the training log may change in the future. You had better check the data files and change the mapping from field name to field index in create_field_index before designing your own plots. Usage: - ./plot_log.sh chart_type[0-%s] /where/to/save.png /path/to/first.log ... + ./plot_training_log.py chart_type[0-%s] /where/to/save.png /path/to/first.log ... Notes: 1. Supporting multiple logs. 2. Log file name must end with the lower-cased "%s". From 54f0c08ca144c498c835baa017887a64bc8fbbf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Scheibe?= Date: Tue, 3 Nov 2015 19:27:07 +0100 Subject: [PATCH 087/458] fix detect.py (invalid model path) --- python/detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/detect.py b/python/detect.py index 691098f5c..1aba964a9 100755 --- a/python/detect.py +++ b/python/detect.py @@ -46,7 +46,7 @@ def main(argv): parser.add_argument( "--model_def", default=os.path.join(pycaffe_dir, - "../models/bvlc_reference_caffenet/deploy.prototxt.prototxt"), + "../models/bvlc_reference_caffenet/deploy.prototxt"), help="Model definition file." ) parser.add_argument( From b2339716fd3c6ebb050be0241ba2a34f804ae904 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Tue, 3 Nov 2015 14:42:24 -0800 Subject: [PATCH 088/458] TravisCI: wget cmake with --no-check-certificate ``` --2015-11-03 22:31:11-- http://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh Resolving www.cmake.org (www.cmake.org)... 66.194.253.19 Connecting to www.cmake.org (www.cmake.org)|66.194.253.19|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh [following] --2015-11-03 22:31:11-- http://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh Resolving cmake.org (cmake.org)... 66.194.253.19 Connecting to cmake.org (cmake.org)|66.194.253.19|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh [following] --2015-11-03 22:31:11-- https://cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh Connecting to cmake.org (cmake.org)|66.194.253.19|:443... connected. ERROR: no certificate subject alternative name matches requested host name `cmake.org'. To connect to cmake.org insecurely, use `--no-check-certificate'. ``` --- scripts/travis/travis_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/travis/travis_install.sh b/scripts/travis/travis_install.sh index d6c6e228b..d78c4d2f7 100755 --- a/scripts/travis/travis_install.sh +++ b/scripts/travis/travis_install.sh @@ -23,7 +23,7 @@ apt-get install \ # Caffe requires a minimum CMake version of 2.8.8. if $WITH_CMAKE; then # cmake 3 will make sure that the python interpreter and libraries match - wget http://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh -O cmake3.sh + wget --no-check-certificate http://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh -O cmake3.sh chmod +x cmake3.sh ./cmake3.sh --prefix=/usr/ --skip-license --exclude-subdir fi From 5196926a7cca1a85aecbd97e78452352fc5d2b3d Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Wed, 4 Nov 2015 22:10:25 -0800 Subject: [PATCH 089/458] [travis] fix boost/python3 conda conflict --- scripts/travis/travis_install.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/travis/travis_install.sh b/scripts/travis/travis_install.sh index d78c4d2f7..432c81dc6 100755 --- a/scripts/travis/travis_install.sh +++ b/scripts/travis/travis_install.sh @@ -70,6 +70,10 @@ if [ ! -d $CONDA_DIR ]; then ./miniconda.sh -b -p $CONDA_DIR conda update --yes conda + # The version of boost we're using for Python 3 depends on 3.4 for now. + if [ "$PYTHON_VERSION" -eq "3" ]; then + conda install --yes python=3.4 + fi conda install --yes numpy scipy matplotlib scikit-image pip # Let conda install boost (so that boost_python matches) conda install --yes -c https://conda.binstar.org/menpo boost=1.56.0 From 4137c093bd6ca018c5953a1e069069ab96f4f91d Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Wed, 4 Nov 2015 23:54:41 -0800 Subject: [PATCH 090/458] [style] fix whitespace in travis_install.sh --- scripts/travis/travis_install.sh | 54 ++++++++++++++++---------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/scripts/travis/travis_install.sh b/scripts/travis/travis_install.sh index 432c81dc6..d18dc223a 100755 --- a/scripts/travis/travis_install.sh +++ b/scripts/travis/travis_install.sh @@ -61,39 +61,39 @@ rm -f $LMDB_FILE # than using pip for everything). export PATH=$CONDA_DIR/bin:$PATH if [ ! -d $CONDA_DIR ]; then - if [ "$PYTHON_VERSION" -eq "3" ]; then - wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - else - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh - fi - chmod +x miniconda.sh - ./miniconda.sh -b -p $CONDA_DIR - - conda update --yes conda - # The version of boost we're using for Python 3 depends on 3.4 for now. - if [ "$PYTHON_VERSION" -eq "3" ]; then - conda install --yes python=3.4 - fi - conda install --yes numpy scipy matplotlib scikit-image pip - # Let conda install boost (so that boost_python matches) - conda install --yes -c https://conda.binstar.org/menpo boost=1.56.0 + if [ "$PYTHON_VERSION" -eq "3" ]; then + wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh + else + wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh + fi + chmod +x miniconda.sh + ./miniconda.sh -b -p $CONDA_DIR + + conda update --yes conda + # The version of boost we're using for Python 3 depends on 3.4 for now. + if [ "$PYTHON_VERSION" -eq "3" ]; then + conda install --yes python=3.4 + fi + conda install --yes numpy scipy matplotlib scikit-image pip + # Let conda install boost (so that boost_python matches) + conda install --yes -c https://conda.binstar.org/menpo boost=1.56.0 fi # install protobuf 3 (just use the miniconda3 directory to avoid having to setup the path again) if [ "$PYTHON_VERSION" -eq "3" ] && [ ! -e "$CONDA_DIR/bin/protoc" ]; then - pushd . - wget https://github.com/google/protobuf/archive/v3.0.0-alpha-3.1.tar.gz -O protobuf-3.tar.gz - tar -C /tmp -xzvf protobuf-3.tar.gz - cd /tmp/protobuf-3*/ - ./autogen.sh - ./configure --prefix=$CONDA_DIR - $MAKE - $MAKE install - popd + pushd . + wget https://github.com/google/protobuf/archive/v3.0.0-alpha-3.1.tar.gz -O protobuf-3.tar.gz + tar -C /tmp -xzvf protobuf-3.tar.gz + cd /tmp/protobuf-3*/ + ./autogen.sh + ./configure --prefix=$CONDA_DIR + $MAKE + $MAKE install + popd fi if [ "$PYTHON_VERSION" -eq "3" ]; then - pip install --pre protobuf + pip install --pre protobuf else - pip install protobuf + pip install protobuf fi From bc1aa41af7d0ba46da4d7c71fc9109baea651ce0 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Wed, 4 Nov 2015 20:48:43 -0800 Subject: [PATCH 091/458] remove dead cpp code for number of CUDA threads __CUDA_ARCH__ is not defined in host code; the #if was vacuous and misleading. --- include/caffe/util/device_alternate.hpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/include/caffe/util/device_alternate.hpp b/include/caffe/util/device_alternate.hpp index 6ea595dba..e3fe4fe29 100644 --- a/include/caffe/util/device_alternate.hpp +++ b/include/caffe/util/device_alternate.hpp @@ -81,14 +81,8 @@ namespace caffe { const char* cublasGetErrorString(cublasStatus_t error); const char* curandGetErrorString(curandStatus_t error); -// CUDA: thread number configuration. -// Use 1024 threads per block, which requires cuda sm_2x or above, -// or fall back to attempt compatibility (best of luck to you). -#if __CUDA_ARCH__ >= 200 - const int CAFFE_CUDA_NUM_THREADS = 1024; -#else - const int CAFFE_CUDA_NUM_THREADS = 512; -#endif +// CUDA: use 512 threads per block +const int CAFFE_CUDA_NUM_THREADS = 512; // CUDA: number of blocks for threads. inline int CAFFE_GET_BLOCKS(const int N) { From 32dc03f14c36d1df46f37a7d13ad528e52c6f786 Mon Sep 17 00:00:00 2001 From: ernest-tg Date: Thu, 5 Nov 2015 15:47:28 +0100 Subject: [PATCH 092/458] Correct transposition & channel_swap in deprocess MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The deprocess( ) function should invert the preprocess( ) function, however it only worked when the permutation of your channel_swap is of order 2 and the permutation of your transpose were of order 3. This is usually the case, which is why this bug went unnoticed for a long time. To reproduce it (on former version), try to preprocess and then deprocess with transformer.set_transpose('data', (0,2,1)) (or (1,0,2) or (2,1,0)) Or with transformer.set_channel_swap('data', (2,0,1)) (or (1,2,0) ) Indeed, we had L152 (in preprocess) caffe_in = caffe_in[channel_swap, :, :] L181 (in deprocess) decaf_in = decaf_in[channel_swap, :, :] So we applied [channel_swap,:,:] twice to the initial data => not always the identity L154 (in preprocess) caffe_in = caffe_in.transpose(transpose) L183 (in deprocess) decaf_in = decaf_in.transpose([transpose[t] for t in transpose]) The transposition [transpose[t] for t in transpose] is (tranpsose)² so we applied transpose[t] three times which is not always the identity. --- python/caffe/io.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index 11c84260f..14942bed5 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -178,9 +178,9 @@ def deprocess(self, in_, data): if raw_scale is not None: decaf_in /= raw_scale if channel_swap is not None: - decaf_in = decaf_in[channel_swap, :, :] + decaf_in = decaf_in[np.argsort(channel_swap), :, :] if transpose is not None: - decaf_in = decaf_in.transpose([transpose[t] for t in transpose]) + decaf_in = decaf_in.transpose(np.argsort(transpose)) return decaf_in def set_transpose(self, in_, order): From 7f49d80a83c9314dd10d3ec18e77226fca6c3b62 Mon Sep 17 00:00:00 2001 From: Daniel Golden Date: Thu, 5 Nov 2015 14:22:00 -0800 Subject: [PATCH 093/458] Don't attempt to write CSV if there are no lines to write This can happen if, e.g., testing never occurs in the log --- tools/extra/parse_log.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/extra/parse_log.py b/tools/extra/parse_log.py index 48f9bee0b..bb9b65ad6 100755 --- a/tools/extra/parse_log.py +++ b/tools/extra/parse_log.py @@ -149,6 +149,11 @@ def write_csv(output_filename, dict_list, delimiter, verbose=False): """Write a CSV file """ + if not dict_list: + if verbose: + print('Not writing %s; no lines to write' % output_filename) + return + dialect = csv.excel dialect.delimiter = delimiter From 987b3d8794e3fe27b4402d52fb3921555104b451 Mon Sep 17 00:00:00 2001 From: Tim Meinhardt Date: Fri, 6 Nov 2015 14:51:46 +0100 Subject: [PATCH 094/458] Fix ArgMaxLayer::Reshape for any num of bottom axes --- include/caffe/common_layers.hpp | 14 +++++++------- src/caffe/layers/argmax_layer.cpp | 4 +++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp index 72f39ee08..d42d15c47 100644 --- a/include/caffe/common_layers.hpp +++ b/include/caffe/common_layers.hpp @@ -53,8 +53,8 @@ class ArgMaxLayer : public Layer { * -# @f$ (N \times C \times H \times W) @f$ * the inputs @f$ x @f$ * @param top output Blob vector (length 1) - * -# @f$ (N \times 1 \times K \times 1) @f$ or, if out_max_val - * @f$ (N \times 2 \times K \times 1) @f$ unless axis set than e.g. + * -# @f$ (N \times 1 \times K) @f$ or, if out_max_val + * @f$ (N \times 2 \times K) @f$ unless axis set than e.g. * @f$ (N \times K \times H \times W) @f$ if axis == 1 * the computed outputs @f$ * y_n = \arg\max\limits_i x_{ni} @@ -81,13 +81,13 @@ class ArgMaxLayer : public Layer { * each channel in the data (i.e. axis 1), it subtracts the mean and divides * by the variance, where both statistics are computed across both spatial * dimensions and across the different examples in the batch. - * + * * By default, during training time, the network is computing global mean/ * variance statistics via a running average, which is then used at test * time to allow deterministic outputs for each input. You can manually * toggle whether the network is accumulating or using the statistics via the * use_global_stats option. IMPORTANT: for this feature to work, you MUST - * set the learning rate to zero for all three parameter blobs, i.e., + * set the learning rate to zero for all three parameter blobs, i.e., * param {lr_mult: 0} three times in the layer definition. * * Note that the original paper also included a per-channel learned bias and @@ -96,10 +96,10 @@ class ArgMaxLayer : public Layer { * followed by a Convolution layer with output the same size as the current. * This produces a channel-specific value that can be added or multiplied by * the BatchNorm layer's output. - * + * * [1] S. Ioffe and C. Szegedy, "Batch Normalization: Accelerating Deep Network - * Training by Reducing Internal Covariate Shift." arXiv preprint - * arXiv:1502.03167 (2015). + * Training by Reducing Internal Covariate Shift." arXiv preprint + * arXiv:1502.03167 (2015). * * TODO(dox): thorough documentation for Forward, Backward, and proto params. */ diff --git a/src/caffe/layers/argmax_layer.cpp b/src/caffe/layers/argmax_layer.cpp index 44df8d4e2..354d83f70 100644 --- a/src/caffe/layers/argmax_layer.cpp +++ b/src/caffe/layers/argmax_layer.cpp @@ -32,7 +32,9 @@ void ArgMaxLayer::LayerSetUp(const vector*>& bottom, template void ArgMaxLayer::Reshape(const vector*>& bottom, const vector*>& top) { - std::vector shape(bottom[0]->num_axes(), 1); + int num_top_axes = bottom[0]->num_axes(); + if ( num_top_axes < 3 ) num_top_axes = 3; + std::vector shape(num_top_axes, 1); if (has_axis_) { // Produces max_ind or max_val per axis shape = bottom[0]->shape(); From 0f1e4e5ddd884325df82db00ae0fc531481e9c60 Mon Sep 17 00:00:00 2001 From: Shandy Brown Date: Fri, 6 Nov 2015 20:01:57 -0800 Subject: [PATCH 095/458] Add a -c to wget so that it continues interrupted downloads This would've saved me an overnight download (slow connection here) I tested it, and it worked for me. --- data/ilsvrc12/get_ilsvrc_aux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/ilsvrc12/get_ilsvrc_aux.sh b/data/ilsvrc12/get_ilsvrc_aux.sh index b9b85d21e..90935f250 100755 --- a/data/ilsvrc12/get_ilsvrc_aux.sh +++ b/data/ilsvrc12/get_ilsvrc_aux.sh @@ -12,7 +12,7 @@ cd $DIR echo "Downloading..." -wget http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz +wget -c http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz echo "Unzipping..." From c42eb9c4f7d18f1ba16d1d5cb0646296679d936c Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Sun, 8 Nov 2015 18:50:29 +0800 Subject: [PATCH 096/458] GetDB must return a value As noted by @danst18, when USE_LEVELDB and USE_LMDB are disabled, a compiler error is issued since GetDB no longer returns a value. At runtime a fatal error would be issued anyways. However to help users who don't need a DB backend, NULL should be returned here. --- src/caffe/util/db.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/caffe/util/db.cpp b/src/caffe/util/db.cpp index ccda054d8..d0a2b0b5c 100644 --- a/src/caffe/util/db.cpp +++ b/src/caffe/util/db.cpp @@ -33,6 +33,7 @@ DB* GetDB(const string& backend) { } #endif // USE_LMDB LOG(FATAL) << "Unknown database backend"; + return NULL; } } // namespace db From 0eea94a0e02dd6d28175538a29720456f5213da9 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Sun, 8 Nov 2015 11:20:32 -0800 Subject: [PATCH 097/458] display 'ignore source layer' when initializing from existing parameters This helps in the case to see which layer is initialized from existing parameters, and which layer is ignored. This helps identify the cases where the user types a error mismatch layer name. --- src/caffe/net.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 1ad93e6af..05bee7987 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -745,7 +745,7 @@ void Net::ShareTrainedLayersWith(const Net* other) { ++target_layer_id; } if (target_layer_id == layer_names_.size()) { - DLOG(INFO) << "Ignoring source layer " << source_layer_name; + LOG(INFO) << "Ignoring source layer " << source_layer_name; continue; } DLOG(INFO) << "Copying source layer " << source_layer_name; @@ -813,7 +813,7 @@ void Net::CopyTrainedLayersFrom(const NetParameter& param) { ++target_layer_id; } if (target_layer_id == layer_names_.size()) { - DLOG(INFO) << "Ignoring source layer " << source_layer_name; + LOG(INFO) << "Ignoring source layer " << source_layer_name; continue; } DLOG(INFO) << "Copying source layer " << source_layer_name; @@ -868,7 +868,7 @@ void Net::CopyTrainedLayersFromHDF5(const string trained_filename) { for (int i = 0; i < num_layers; ++i) { string source_layer_name = hdf5_get_name_by_idx(data_hid, i); if (!layer_names_index_.count(source_layer_name)) { - DLOG(INFO) << "Ignoring source layer " << source_layer_name; + LOG(INFO) << "Ignoring source layer " << source_layer_name; continue; } int target_layer_id = layer_names_index_[source_layer_name]; From 50a44b05f87d6c5b734e2b172f5120898c6e3e47 Mon Sep 17 00:00:00 2001 From: panmari Date: Fri, 6 Nov 2015 12:53:16 +0100 Subject: [PATCH 098/458] Switched order of two layers for simpler diff with untuned file Untuned file is in models/bvlc_reference_caffenet/train_val.prototxt. --- models/finetune_flickr_style/train_val.prototxt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/models/finetune_flickr_style/train_val.prototxt b/models/finetune_flickr_style/train_val.prototxt index 848a426c9..985353be3 100644 --- a/models/finetune_flickr_style/train_val.prototxt +++ b/models/finetune_flickr_style/train_val.prototxt @@ -369,13 +369,6 @@ layer { } } } -layer { - name: "loss" - type: "SoftmaxWithLoss" - bottom: "fc8_flickr" - bottom: "label" - top: "loss" -} layer { name: "accuracy" type: "Accuracy" @@ -386,3 +379,10 @@ layer { phase: TEST } } +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "fc8_flickr" + bottom: "label" + top: "loss" +} From 96e95fb24dc53bed1e46f2404a2f79f1cf870472 Mon Sep 17 00:00:00 2001 From: Gustav Larsson Date: Mon, 9 Nov 2015 14:32:37 -0600 Subject: [PATCH 099/458] DOC: Fix consistent typo in contrastive loss If a pair is similar, it should take the squared distance and not the distance. This is clearly what the code is doing. --- include/caffe/loss_layers.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/caffe/loss_layers.hpp b/include/caffe/loss_layers.hpp index d08ad9b68..1591c0fe1 100644 --- a/include/caffe/loss_layers.hpp +++ b/include/caffe/loss_layers.hpp @@ -132,7 +132,7 @@ class LossLayer : public Layer { /** * @brief Computes the contrastive loss @f$ - * E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + + * E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + * \left(1-y\right) \max \left(margin-d, 0\right)^2 * @f$ where @f$ * d = \left| \left| a_n - b_n \right| \right|_2 @f$. This can be @@ -148,7 +148,7 @@ class LossLayer : public Layer { * @param top output Blob vector (length 1) * -# @f$ (1 \times 1 \times 1 \times 1) @f$ * the computed contrastive loss: @f$ E = - * \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + + * \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + * \left(1-y\right) \max \left(margin-d, 0\right)^2 * @f$ where @f$ * d = \left| \left| a_n - b_n \right| \right|_2 @f$. From 29f6670f11c4ac505cad0f779430dea01358c025 Mon Sep 17 00:00:00 2001 From: Tea Date: Sat, 7 Nov 2015 14:09:59 +0800 Subject: [PATCH 100/458] Replace unistd functions with cross platform counterparts --- Makefile | 2 +- cmake/Dependencies.cmake | 2 +- include/caffe/util/io.hpp | 30 +++++++++++------------------- src/caffe/test/test_benchmark.cpp | 6 +++--- 4 files changed, 16 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 4a1d41d5a..f5dbf432f 100644 --- a/Makefile +++ b/Makefile @@ -170,7 +170,7 @@ ifneq ($(CPU_ONLY), 1) LIBRARIES := cudart cublas curand endif -LIBRARIES += glog gflags protobuf boost_system m hdf5_hl hdf5 +LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 # handle IO dependencies USE_LEVELDB ?= 1 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 5651e2b08..51a803c1a 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -2,7 +2,7 @@ set(Caffe_LINKER_LIBS "") # ---[ Boost -find_package(Boost 1.46 REQUIRED COMPONENTS system thread) +find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem) include_directories(SYSTEM ${Boost_INCLUDE_DIR}) list(APPEND Caffe_LINKER_LIBS ${Boost_LIBRARIES}) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index d6cfa442f..6b7332548 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -1,7 +1,7 @@ #ifndef CAFFE_UTIL_IO_H_ #define CAFFE_UTIL_IO_H_ -#include +#include #include #include "google/protobuf/message.h" @@ -12,31 +12,23 @@ namespace caffe { using ::google::protobuf::Message; +using ::boost::filesystem::path; inline void MakeTempFilename(string* temp_filename) { temp_filename->clear(); - *temp_filename = "/tmp/caffe_test.XXXXXX"; - char* temp_filename_cstr = new char[temp_filename->size() + 1]; - // NOLINT_NEXT_LINE(runtime/printf) - strcpy(temp_filename_cstr, temp_filename->c_str()); - int fd = mkstemp(temp_filename_cstr); - CHECK_GE(fd, 0) << "Failed to open a temporary file at: " << *temp_filename; - close(fd); - *temp_filename = temp_filename_cstr; - delete[] temp_filename_cstr; + const path& model = boost::filesystem::temp_directory_path() + /"caffe_test.%%%%%%"; + *temp_filename = boost::filesystem::unique_path(model).string(); } inline void MakeTempDir(string* temp_dirname) { temp_dirname->clear(); - *temp_dirname = "/tmp/caffe_test.XXXXXX"; - char* temp_dirname_cstr = new char[temp_dirname->size() + 1]; - // NOLINT_NEXT_LINE(runtime/printf) - strcpy(temp_dirname_cstr, temp_dirname->c_str()); - char* mkdtemp_result = mkdtemp(temp_dirname_cstr); - CHECK(mkdtemp_result != NULL) - << "Failed to create a temporary directory at: " << *temp_dirname; - *temp_dirname = temp_dirname_cstr; - delete[] temp_dirname_cstr; + const path& model = boost::filesystem::temp_directory_path() + /"caffe_test.%%%%%%"; + const path& dir = boost::filesystem::unique_path(model).string(); + bool directoryCreated = boost::filesystem::create_directory(dir); + CHECK(directoryCreated); + *temp_dirname = dir.string(); } bool ReadProtoFromTextFile(const char* filename, Message* proto); diff --git a/src/caffe/test/test_benchmark.cpp b/src/caffe/test/test_benchmark.cpp index 43aaa639b..b03fdf69a 100644 --- a/src/caffe/test/test_benchmark.cpp +++ b/src/caffe/test/test_benchmark.cpp @@ -1,4 +1,4 @@ -#include // for usleep +#include #include "gtest/gtest.h" @@ -64,7 +64,7 @@ TYPED_TEST(BenchmarkTest, TestTimerMilliSeconds) { EXPECT_FALSE(timer.running()); EXPECT_FALSE(timer.has_run_at_least_once()); timer.Start(); - usleep(300 * 1000); + boost::this_thread::sleep(boost::posix_time::milliseconds(300)); EXPECT_GE(timer.MilliSeconds(), 300 - kMillisecondsThreshold); EXPECT_LE(timer.MilliSeconds(), 300 + kMillisecondsThreshold); EXPECT_TRUE(timer.initted()); @@ -79,7 +79,7 @@ TYPED_TEST(BenchmarkTest, TestTimerSeconds) { EXPECT_FALSE(timer.running()); EXPECT_FALSE(timer.has_run_at_least_once()); timer.Start(); - usleep(300 * 1000); + boost::this_thread::sleep(boost::posix_time::milliseconds(300)); EXPECT_GE(timer.Seconds(), 0.3 - kMillisecondsThreshold / 1000.); EXPECT_LE(timer.Seconds(), 0.3 + kMillisecondsThreshold / 1000.); EXPECT_TRUE(timer.initted()); From 5395cc66d68df74ff5d0920ed80eabcdd439c660 Mon Sep 17 00:00:00 2001 From: ixartz Date: Mon, 2 Nov 2015 23:07:45 -0500 Subject: [PATCH 101/458] OSX 10.10 (and more) use Accelerate Framework instead of veclib --- cmake/Dependencies.cmake | 6 ++++++ include/caffe/util/mkl_alternate.hpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 51a803c1a..64e6500ed 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -102,6 +102,12 @@ elseif(APPLE) find_package(vecLib REQUIRED) include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) list(APPEND Caffe_LINKER_LIBS ${vecLib_LINKER_LIBS}) + + if(VECLIB_FOUND) + if(NOT vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*") + add_definitions(-DUSE_ACCELERATE) + endif() + endif() endif() # ---[ Python diff --git a/include/caffe/util/mkl_alternate.hpp b/include/caffe/util/mkl_alternate.hpp index 3355b6658..95df0f93b 100644 --- a/include/caffe/util/mkl_alternate.hpp +++ b/include/caffe/util/mkl_alternate.hpp @@ -7,9 +7,14 @@ #else // If use MKL, simply include the MKL header +#ifdef USE_ACCELERATE +#include +#else extern "C" { #include } +#endif // USE_ACCELERATE + #include // Functions that caffe uses but are not present if MKL is not linked. From f9970c83264b43722bd9f97376580cc3dbf61227 Mon Sep 17 00:00:00 2001 From: gdh1995 Date: Tue, 10 Nov 2015 22:41:55 +0800 Subject: [PATCH 102/458] fix a bug that time duration may be 0 when downloading model binary --- scripts/download_model_binary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/download_model_binary.py b/scripts/download_model_binary.py index 03a50f677..66f72f247 100755 --- a/scripts/download_model_binary.py +++ b/scripts/download_model_binary.py @@ -18,7 +18,7 @@ def reporthook(count, block_size, total_size): if count == 0: start_time = time.time() return - duration = time.time() - start_time + duration = (time.time() - start_time) or 0.01 progress_size = int(count * block_size) speed = int(progress_size / (1024 * duration)) percent = int(count * block_size * 100 / total_size) From 9ff2baf8e06e4809ad668e5c355ad76c36d9674d Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Thu, 12 Nov 2015 15:32:28 +0800 Subject: [PATCH 103/458] Remove un-necessary includes --- src/caffe/parallel.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/caffe/parallel.cpp b/src/caffe/parallel.cpp index 9abc92b61..62f5d7385 100644 --- a/src/caffe/parallel.cpp +++ b/src/caffe/parallel.cpp @@ -3,9 +3,6 @@ #endif #include #include -#include -#include -#include #include #include From 3682fde8a9a4a7b20e6ceb2d95a9abeab5227561 Mon Sep 17 00:00:00 2001 From: Tea Date: Thu, 12 Nov 2015 15:55:06 +0800 Subject: [PATCH 104/458] Functions shall return a value in syncedmem --- src/caffe/syncedmem.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/caffe/syncedmem.cpp b/src/caffe/syncedmem.cpp index ec4665ecd..4d3564172 100644 --- a/src/caffe/syncedmem.cpp +++ b/src/caffe/syncedmem.cpp @@ -97,6 +97,7 @@ const void* SyncedMemory::gpu_data() { return (const void*)gpu_ptr_; #else NO_GPU; + return NULL; #endif } @@ -133,6 +134,7 @@ void* SyncedMemory::mutable_gpu_data() { return gpu_ptr_; #else NO_GPU; + return NULL; #endif } From dc48870d7f8e823138594c794789ac3156cc0798 Mon Sep 17 00:00:00 2001 From: Benedikt Wilbertz Date: Wed, 30 Sep 2015 23:02:34 +0200 Subject: [PATCH 105/458] Fix loss of last iteration when average_loss > 1 refactor duplicate code into separate update function for smoothed loss fix naming convention --- include/caffe/solver.hpp | 3 +++ src/caffe/solver.cpp | 37 ++++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index 26b8e8e20..38259edad 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -107,6 +107,7 @@ class Solver { virtual void RestoreSolverStateFromHDF5(const string& state_file) = 0; virtual void RestoreSolverStateFromBinaryProto(const string& state_file) = 0; void DisplayOutputBlobs(const int net_id); + void UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss); SolverParameter param_; int iter_; @@ -114,6 +115,8 @@ class Solver { shared_ptr > net_; vector > > test_nets_; vector callbacks_; + vector losses_; + Dtype smoothed_loss_; // The root solver that holds root nets (actually containing shared layers) // in data parallelism diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index d3bc7361d..5b31c7d81 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -195,8 +195,8 @@ void Solver::Step(int iters) { const int start_iter = iter_; const int stop_iter = iter_ + iters; int average_loss = this->param_.average_loss(); - vector losses; - Dtype smoothed_loss = 0; + losses_.clear(); + smoothed_loss_ = 0; while (iter_ < stop_iter) { // zero-init the params @@ -223,18 +223,10 @@ void Solver::Step(int iters) { } loss /= param_.iter_size(); // average the loss across iterations for smoothed reporting - if (losses.size() < average_loss) { - losses.push_back(loss); - int size = losses.size(); - smoothed_loss = (smoothed_loss * (size - 1) + loss) / size; - } else { - int idx = (iter_ - start_iter) % average_loss; - smoothed_loss += (loss - losses[idx]) / average_loss; - losses[idx] = loss; - } + UpdateSmoothedLoss(loss, start_iter, average_loss); if (display) { LOG_IF(INFO, Caffe::root_solver()) << "Iteration " << iter_ - << ", loss = " << smoothed_loss; + << ", loss = " << smoothed_loss_; const vector*>& result = net_->output_blobs(); int score_index = 0; for (int j = 0; j < result.size(); ++j) { @@ -297,6 +289,7 @@ void Solver::Solve(const char* resume_file) { // For a network that is trained by the solver, no bottom or top vecs // should be given, and we will just provide dummy vecs. + int start_iter = iter_; Step(param_.max_iter() - iter_); // If we haven't already, save a snapshot after optimization, unless // overridden by setting snapshot_after_train := false @@ -315,9 +308,13 @@ void Solver::Solve(const char* resume_file) { // updated the parameters "max_iter" times -- this final pass is only done to // display the loss, which is computed in the forward pass. if (param_.display() && iter_ % param_.display() == 0) { + int average_loss = this->param_.average_loss(); Dtype loss; net_->ForwardPrefilled(&loss); - LOG(INFO) << "Iteration " << iter_ << ", loss = " << loss; + + UpdateSmoothedLoss(loss, start_iter, average_loss); + + LOG(INFO) << "Iteration " << iter_ << ", loss = " << smoothed_loss_; } if (param_.test_interval() && iter_ % param_.test_interval() == 0) { TestAll(); @@ -485,6 +482,20 @@ void Solver::Restore(const char* state_file) { } } +template +void Solver::UpdateSmoothedLoss(Dtype loss, int start_iter, + int average_loss) { + if (losses_.size() < average_loss) { + losses_.push_back(loss); + int size = losses_.size(); + smoothed_loss_ = (smoothed_loss_ * (size - 1) + loss) / size; + } else { + int idx = (iter_ - start_iter) % average_loss; + smoothed_loss_ += (loss - losses_[idx]) / average_loss; + losses_[idx] = loss; + } +} + INSTANTIATE_CLASS(Solver); } // namespace caffe From 0ad1d8ab3f8e3d0bd4d9a7e8b65c7a5f9f28d60a Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Sat, 7 Nov 2015 12:49:15 +0900 Subject: [PATCH 106/458] Update computation of variance and global stats in BatchNormLayer --- src/caffe/layers/batch_norm_layer.cpp | 55 +++++++++++++------------- src/caffe/layers/batch_norm_layer.cu | 56 ++++++++++++++------------- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index 94c2b96b9..5eba25e90 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -2,7 +2,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { @@ -80,20 +79,21 @@ void BatchNormLayer::Forward_cpu(const vector*>& bottom, int num = bottom[0]->shape(0); int spatial_dim = bottom[0]->count()/(bottom[0]->shape(0)*channels_); - // elementwise square - caffe_powx(bottom[0]->count(), bottom_data, Dtype(2), - temp_.mutable_cpu_data()); + if (bottom[0] != top[0]) { + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } if (use_global_stats_) { // use the stored mean/variance estimates. TODO(cdoersch): allow an option // to use an unbiased variance estimate, like the paper does. - const Dtype scale_factor = 1 / this->blobs_[2]->cpu_data()[0]; + const Dtype scale_factor = this->blobs_[2]->cpu_data()[0] == 0 ? + 0 : 1 / this->blobs_[2]->cpu_data()[0]; caffe_cpu_scale(variance_.count(), scale_factor, this->blobs_[0]->cpu_data(), mean_.mutable_cpu_data()); caffe_cpu_scale(variance_.count(), scale_factor, this->blobs_[1]->cpu_data(), variance_.mutable_cpu_data()); } else { - // computes variance using var(X) = E(X^2) - (EX)^2 + // compute mean caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1. / (num * spatial_dim), bottom_data, spatial_sum_multiplier_.cpu_data(), 0., @@ -101,44 +101,45 @@ void BatchNormLayer::Forward_cpu(const vector*>& bottom, caffe_cpu_gemv(CblasTrans, num, channels_, 1., num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., mean_.mutable_cpu_data()); + } + + // subtract mean + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., + num_by_chans_.mutable_cpu_data()); + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, -1, num_by_chans_.cpu_data(), + spatial_sum_multiplier_.cpu_data(), 1., top_data); + + if (!use_global_stats_) { + // compute variance using var(X) = E((X-EX)^2) + caffe_powx(top[0]->count(), top_data, Dtype(2), + temp_.mutable_cpu_data()); // (X-EX)^2 caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1. / (num * spatial_dim), temp_.cpu_data(), spatial_sum_multiplier_.cpu_data(), 0., num_by_chans_.mutable_cpu_data()); caffe_cpu_gemv(CblasTrans, num, channels_, 1., num_by_chans_.cpu_data(), batch_sum_multiplier_.cpu_data(), 0., - variance_.mutable_cpu_data()); + variance_.mutable_cpu_data()); // E((X_EX)^2) + + // compute and save moving average this->blobs_[2]->mutable_cpu_data()[0] *= moving_average_fraction_; this->blobs_[2]->mutable_cpu_data()[0] += 1; caffe_cpu_axpby(mean_.count(), Dtype(1), mean_.cpu_data(), moving_average_fraction_, this->blobs_[0]->mutable_cpu_data()); - Dtype m = Dtype(bottom[0]->count()/channels_); - caffe_cpu_axpby(variance_.count(), m/(m-1), variance_.cpu_data(), - moving_average_fraction_, this->blobs_[1]->mutable_cpu_data()); + int m = bottom[0]->count()/channels_; + Dtype bias_correction_factor = m > 1 ? Dtype(m)/(m-1) : 1; + caffe_cpu_axpby(variance_.count(), bias_correction_factor, + variance_.cpu_data(), moving_average_fraction_, + this->blobs_[1]->mutable_cpu_data()); } - // elementwise square of mean - caffe_powx(mean_.count(), mean_.cpu_data(), Dtype(2), - temp_.mutable_cpu_data()); - - caffe_sub(mean_.count(), variance_.cpu_data(), temp_.cpu_data(), - variance_.mutable_cpu_data()); // variance // normalize variance caffe_add_scalar(variance_.count(), eps_, variance_.mutable_cpu_data()); caffe_powx(variance_.count(), variance_.cpu_data(), Dtype(0.5), variance_.mutable_cpu_data()); - // do mean and variance normalization - if (bottom[0] != top[0]) { - caffe_copy(bottom[0]->count(), bottom_data, top_data); - } - // subtract mean - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, - batch_sum_multiplier_.cpu_data(), mean_.cpu_data(), 0., - num_by_chans_.mutable_cpu_data()); - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, - spatial_dim, 1, -1, num_by_chans_.cpu_data(), - spatial_sum_multiplier_.cpu_data(), 1., top_data); // replicate variance to input size caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, batch_sum_multiplier_.cpu_data(), variance_.cpu_data(), 0., diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu index cd8924a45..921a58f07 100644 --- a/src/caffe/layers/batch_norm_layer.cu +++ b/src/caffe/layers/batch_norm_layer.cu @@ -2,7 +2,6 @@ #include #include "caffe/common_layers.hpp" -#include "caffe/layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { @@ -15,20 +14,22 @@ void BatchNormLayer::Forward_gpu(const vector*>& bottom, int num = bottom[0]->shape(0); int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); - // elementwise square - caffe_gpu_powx(bottom[0]->count(), bottom_data, Dtype(2), - temp_.mutable_gpu_data()); + if (bottom[0] != top[0]) { + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } + if (use_global_stats_) { // use the stored mean/variance estimates. TODO(cdoersch): allow an option // to use an unbiased variance estimate, like the paper does. - const Dtype scale_factor = 1 / this->blobs_[2]->cpu_data()[0]; + const Dtype scale_factor = this->blobs_[2]->cpu_data()[0] == 0 ? + 0 : 1 / this->blobs_[2]->cpu_data()[0]; caffe_gpu_scale(variance_.count(), scale_factor, this->blobs_[0]->gpu_data(), mean_.mutable_gpu_data()); caffe_gpu_scale(variance_.count(), scale_factor, this->blobs_[1]->gpu_data(), variance_.mutable_gpu_data()); } else { - // computes variance using var(X) = E(X^2) - (EX)^2 + // compute mean caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1. / (num * spatial_dim), bottom_data, spatial_sum_multiplier_.gpu_data(), 0., @@ -36,44 +37,45 @@ void BatchNormLayer::Forward_gpu(const vector*>& bottom, caffe_gpu_gemv(CblasTrans, num, channels_, 1., num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., mean_.mutable_gpu_data()); + } + + // subtract mean + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, + batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., + num_by_chans_.mutable_gpu_data()); + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, + spatial_dim, 1, -1, num_by_chans_.gpu_data(), + spatial_sum_multiplier_.gpu_data(), 1., top_data); + + if (!use_global_stats_) { + // compute variance using var(X) = E((X-EX)^2) + caffe_gpu_powx(top[0]->count(), top_data, Dtype(2), + temp_.mutable_gpu_data()); // (X-EX)^2 caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1. / (num * spatial_dim), temp_.gpu_data(), spatial_sum_multiplier_.gpu_data(), 0., num_by_chans_.mutable_gpu_data()); caffe_gpu_gemv(CblasTrans, num, channels_, 1., num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., - variance_.mutable_gpu_data()); + variance_.mutable_gpu_data()); // E((X_EX)^2) + + // compute and save moving average this->blobs_[2]->mutable_cpu_data()[0] *= moving_average_fraction_; this->blobs_[2]->mutable_cpu_data()[0] += 1; caffe_gpu_axpby(mean_.count(), Dtype(1), mean_.gpu_data(), moving_average_fraction_, this->blobs_[0]->mutable_gpu_data()); - Dtype m = Dtype(bottom[0]->count()/channels_); - caffe_gpu_axpby(variance_.count(), m/(m-1), variance_.gpu_data(), - moving_average_fraction_, this->blobs_[1]->mutable_gpu_data()); + int m = bottom[0]->count()/channels_; + Dtype bias_correction_factor = m > 1 ? Dtype(m)/(m-1) : 1; + caffe_gpu_axpby(variance_.count(), bias_correction_factor, + variance_.gpu_data(), moving_average_fraction_, + this->blobs_[1]->mutable_gpu_data()); } - // elementwise square of mean - caffe_gpu_powx(mean_.count(), mean_.gpu_data(), Dtype(2), - temp_.mutable_gpu_data()); - - caffe_gpu_sub(mean_.count(), variance_.gpu_data(), temp_.gpu_data(), - variance_.mutable_gpu_data()); // variance // normalize variance caffe_gpu_add_scalar(variance_.count(), eps_, variance_.mutable_gpu_data()); caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5), variance_.mutable_gpu_data()); - // do mean and variance normalization - if (bottom[0] != top[0]) { - caffe_copy(bottom[0]->count(), bottom_data, top_data); - } - // subtract mean - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, - batch_sum_multiplier_.gpu_data(), mean_.gpu_data(), 0., - num_by_chans_.mutable_gpu_data()); - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, channels_ * num, - spatial_dim, 1, -1, num_by_chans_.gpu_data(), - spatial_sum_multiplier_.gpu_data(), 1., top_data); // replicate variance to input size caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, channels_, 1, 1, batch_sum_multiplier_.gpu_data(), variance_.gpu_data(), 0., From f6e582a38deee8db0904460cbf7aaeb143c682f5 Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Fri, 13 Nov 2015 02:20:02 +0900 Subject: [PATCH 107/458] Make backward pass work when global stats is active for BatchNormLayer including minor code cleaning --- src/caffe/layers/batch_norm_layer.cpp | 10 ++++++---- src/caffe/layers/batch_norm_layer.cu | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index 5eba25e90..b5c91b5e1 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -84,8 +84,7 @@ void BatchNormLayer::Forward_cpu(const vector*>& bottom, } if (use_global_stats_) { - // use the stored mean/variance estimates. TODO(cdoersch): allow an option - // to use an unbiased variance estimate, like the paper does. + // use the stored mean/variance estimates. const Dtype scale_factor = this->blobs_[2]->cpu_data()[0] == 0 ? 0 : 1 / this->blobs_[2]->cpu_data()[0]; caffe_cpu_scale(variance_.count(), scale_factor, @@ -158,7 +157,6 @@ template void BatchNormLayer::Backward_cpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { - CHECK(!use_global_stats_); const Dtype* top_diff; if (bottom[0] != top[0]) { top_diff = top[0]->cpu_diff(); @@ -166,8 +164,12 @@ void BatchNormLayer::Backward_cpu(const vector*>& top, caffe_copy(x_norm_.count(), top[0]->cpu_diff(), x_norm_.mutable_cpu_diff()); top_diff = x_norm_.cpu_diff(); } - const Dtype* top_data = x_norm_.cpu_data(); Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + if (use_global_stats_) { + caffe_div(temp_.count(), top_diff, temp_.cpu_data(), bottom_diff); + return; + } + const Dtype* top_data = x_norm_.cpu_data(); int num = bottom[0]->shape()[0]; int spatial_dim = bottom[0]->count()/(bottom[0]->shape(0)*channels_); // if Y = (X-mean(X))/(sqrt(var(X)+eps)), then diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu index 921a58f07..2a6cac541 100644 --- a/src/caffe/layers/batch_norm_layer.cu +++ b/src/caffe/layers/batch_norm_layer.cu @@ -20,8 +20,7 @@ void BatchNormLayer::Forward_gpu(const vector*>& bottom, if (use_global_stats_) { - // use the stored mean/variance estimates. TODO(cdoersch): allow an option - // to use an unbiased variance estimate, like the paper does. + // use the stored mean/variance estimates. const Dtype scale_factor = this->blobs_[2]->cpu_data()[0] == 0 ? 0 : 1 / this->blobs_[2]->cpu_data()[0]; caffe_gpu_scale(variance_.count(), scale_factor, @@ -94,7 +93,6 @@ template void BatchNormLayer::Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { - CHECK(!use_global_stats_); const Dtype* top_diff; if (bottom[0] != top[0]) { top_diff = top[0]->gpu_diff(); @@ -102,8 +100,12 @@ void BatchNormLayer::Backward_gpu(const vector*>& top, caffe_copy(x_norm_.count(), top[0]->gpu_diff(), x_norm_.mutable_gpu_diff()); top_diff = x_norm_.gpu_diff(); } - const Dtype* top_data = x_norm_.gpu_data(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + if (use_global_stats_) { + caffe_gpu_div(temp_.count(), top_diff, temp_.gpu_data(), bottom_diff); + return; + } + const Dtype* top_data = x_norm_.gpu_data(); int num = bottom[0]->shape()[0]; int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); // if Y = (X-mean(X))/(sqrt(var(X)+eps)), then From d81ffbff8cda56de1fe6c41b7156d781f775c7b3 Mon Sep 17 00:00:00 2001 From: Adam Siembida Date: Thu, 12 Nov 2015 16:03:41 -0500 Subject: [PATCH 108/458] Add parentheses to backward_{cpu,gpu} method. --- docs/tutorial/forward_backward.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/forward_backward.md b/docs/tutorial/forward_backward.md index a645f002f..528b993ba 100644 --- a/docs/tutorial/forward_backward.md +++ b/docs/tutorial/forward_backward.md @@ -29,7 +29,7 @@ The backward pass begins with the loss and computes the gradient with respect to These computations follow immediately from defining the model: Caffe plans and carries out the forward and backward passes for you. - The `Net::Forward()` and `Net::Backward()` methods carry out the respective passes while `Layer::Forward()` and `Layer::Backward()` compute each step. -- Every layer type has `forward_{cpu,gpu}()` and `backward_{cpu,gpu}` methods to compute its steps according to the mode of computation. A layer may only implement CPU or GPU mode due to constraints or convenience. +- Every layer type has `forward_{cpu,gpu}()` and `backward_{cpu,gpu}()` methods to compute its steps according to the mode of computation. A layer may only implement CPU or GPU mode due to constraints or convenience. The [Solver](solver.html) optimizes a model by first calling forward to yield the output and loss, then calling backward to generate the gradient of the model, and then incorporating the gradient into a weight update that attempts to minimize the loss. Division of labor between the Solver, Net, and Layer keep Caffe modular and open to development. From a6f14f6e3d03caf8242ed5aa7e224a9ea8ef740d Mon Sep 17 00:00:00 2001 From: Balint Cristian Date: Fri, 13 Nov 2015 13:58:49 +0200 Subject: [PATCH 109/458] Display and store cuDNN version numbers during cmake. --- cmake/Cuda.cmake | 33 +++++++++++++++++++++++++++++++-- cmake/Summary.cmake | 2 +- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index 98aef268c..286a42802 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -183,12 +183,41 @@ function(detect_cuDNN) set(HAVE_CUDNN TRUE PARENT_SCOPE) set(CUDNN_FOUND TRUE PARENT_SCOPE) + file(READ ${CUDNN_INCLUDE}/cudnn.h CUDNN_VERSION_FILE_CONTENTS) + + # cuDNN v3 and beyond + string(REGEX MATCH "define CUDNN_MAJOR * +([0-9]+)" + CUDNN_VERSION_MAJOR "${CUDNN_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define CUDNN_MAJOR * +([0-9]+)" "\\1" + CUDNN_VERSION_MAJOR "${CUDNN_VERSION_MAJOR}") + string(REGEX MATCH "define CUDNN_MINOR * +([0-9]+)" + CUDNN_VERSION_MINOR "${CUDNN_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define CUDNN_MINOR * +([0-9]+)" "\\1" + CUDNN_VERSION_MINOR "${CUDNN_VERSION_MINOR}") + string(REGEX MATCH "define CUDNN_PATCHLEVEL * +([0-9]+)" + CUDNN_VERSION_PATCH "${CUDNN_VERSION_FILE_CONTENTS}") + string(REGEX REPLACE "define CUDNN_PATCHLEVEL * +([0-9]+)" "\\1" + CUDNN_VERSION_PATCH "${CUDNN_VERSION_PATCH}") + + if(NOT CUDNN_VERSION_MAJOR) + set(CUDNN_VERSION "???") + else() + set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}") + endif() + + message(STATUS "Found cuDNN: ver. ${CUDNN_VERSION} found (include: ${CUDNN_INCLUDE}, library: ${CUDNN_LIBRARY})") + + string(COMPARE LESS "${CUDNN_VERSION_MAJOR}" 3 cuDNNVersionIncompatible) + if(cuDNNVersionIncompatible) + message(FATAL_ERROR "cuDNN version >3 is required.") + endif() + + set(CUDNN_VERSION "${CUDNN_VERSION}" PARENT_SCOPE) mark_as_advanced(CUDNN_INCLUDE CUDNN_LIBRARY CUDNN_ROOT) - message(STATUS "Found cuDNN (include: ${CUDNN_INCLUDE}, library: ${CUDNN_LIBRARY})") + endif() endfunction() - ################################################################################################ ### Non macro section ################################################################################################ diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 6984f417e..557a6f04e 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -142,7 +142,7 @@ function(caffe_print_configuration_summary) caffe_status(" Target GPU(s) : ${CUDA_ARCH_NAME}" ) caffe_status(" GPU arch(s) : ${NVCC_FLAGS_EXTRA_readable}") if(USE_CUDNN) - caffe_status(" cuDNN : " HAVE_CUDNN THEN "Yes" ELSE "Not found") + caffe_status(" cuDNN : " HAVE_CUDNN THEN "Yes (ver. ${CUDNN_VERSION})" ELSE "Not found") else() caffe_status(" cuDNN : Disabled") endif() From a29c2f7a0ff2ff4278a2e498f0b686b5d5cb88cd Mon Sep 17 00:00:00 2001 From: Alex Lee Date: Sat, 14 Nov 2015 12:49:05 -0800 Subject: [PATCH 110/458] Fix outs and diffs being overwritten in forward_backward_all. --- python/caffe/pycaffe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 7bd4f411b..31dc702f6 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -216,9 +216,9 @@ def _Net_forward_backward_all(self, blobs=None, diffs=None, **kwargs): batch_blobs = self.forward(blobs=blobs, **fb) batch_diffs = self.backward(diffs=diffs, **bb) for out, out_blobs in batch_blobs.iteritems(): - all_outs[out].extend(out_blobs) + all_outs[out].extend(out_blobs.copy()) for diff, out_diffs in batch_diffs.iteritems(): - all_diffs[diff].extend(out_diffs) + all_diffs[diff].extend(out_diffs.copy()) # Package in ndarray. for out, diff in zip(all_outs, all_diffs): all_outs[out] = np.asarray(all_outs[out]) From c4190a56ab62b1a63c1c55bcef3860701a322bed Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 18 Nov 2015 10:38:32 -0800 Subject: [PATCH 111/458] Skip python layer tests if WITH_PYTHON_LAYER unset --- python/caffe/test/test_python_layer.py | 2 ++ python/caffe/test/test_python_layer_with_param_str.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/python/caffe/test/test_python_layer.py b/python/caffe/test/test_python_layer.py index 8ed86655e..e46b71180 100644 --- a/python/caffe/test/test_python_layer.py +++ b/python/caffe/test/test_python_layer.py @@ -77,6 +77,8 @@ def parameter_net_file(): return f.name +@unittest.skipIf('Python' not in caffe.layer_type_list(), + 'Caffe built without Python layer support') class TestPythonLayer(unittest.TestCase): def setUp(self): net_file = python_net_file() diff --git a/python/caffe/test/test_python_layer_with_param_str.py b/python/caffe/test/test_python_layer_with_param_str.py index 3d0f107b3..c36048ae9 100644 --- a/python/caffe/test/test_python_layer_with_param_str.py +++ b/python/caffe/test/test_python_layer_with_param_str.py @@ -38,6 +38,8 @@ def python_param_net_file(): return f.name +@unittest.skipIf('Python' not in caffe.layer_type_list(), + 'Caffe built without Python layer support') class TestLayerWithParam(unittest.TestCase): def setUp(self): net_file = python_param_net_file() From 1b0716cfd761cec547c85b19fc8f6f971e9236ac Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Thu, 19 Nov 2015 10:05:48 -0800 Subject: [PATCH 112/458] Fix MaxTopBlobs in Accuracy Layer Fix the typo "MaxTopBlos" to "MaxTopBlobs". This typo causes maximum top number to be incorrect. --- include/caffe/loss_layers.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/caffe/loss_layers.hpp b/include/caffe/loss_layers.hpp index 1591c0fe1..e2e3e48ce 100644 --- a/include/caffe/loss_layers.hpp +++ b/include/caffe/loss_layers.hpp @@ -42,7 +42,7 @@ class AccuracyLayer : public Layer { // If there are two top blobs, then the second blob will contain // accuracies per class. virtual inline int MinTopBlobs() const { return 1; } - virtual inline int MaxTopBlos() const { return 2; } + virtual inline int MaxTopBlobs() const { return 2; } protected: /** From 41d0c77e5849f97744a3ca5933fd20887bb97f43 Mon Sep 17 00:00:00 2001 From: Tea Date: Thu, 12 Nov 2015 15:15:22 +0800 Subject: [PATCH 113/458] Convert std::max args to Dtype --- include/caffe/test/test_gradient_check_util.hpp | 5 +++-- src/caffe/layers/contrastive_loss_layer.cpp | 3 ++- src/caffe/test/test_contrastive_loss_layer.cpp | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/caffe/test/test_gradient_check_util.hpp b/include/caffe/test/test_gradient_check_util.hpp index 25f35d158..b25a84875 100644 --- a/include/caffe/test/test_gradient_check_util.hpp +++ b/include/caffe/test/test_gradient_check_util.hpp @@ -169,8 +169,9 @@ void GradientChecker::CheckGradientSingle(Layer* layer, || fabs(feature) > kink_ + kink_range_) { // We check relative accuracy, but for too small values, we threshold // the scale factor by 1. - Dtype scale = std::max( - std::max(fabs(computed_gradient), fabs(estimated_gradient)), 1.); + Dtype scale = std::max( + std::max(fabs(computed_gradient), fabs(estimated_gradient)), + Dtype(1.)); EXPECT_NEAR(computed_gradient, estimated_gradient, threshold_ * scale) << "debug: (top_id, top_data_id, blob_id, feat_id)=" << top_id << "," << top_data_id << "," << blob_id << "," << feat_id diff --git a/src/caffe/layers/contrastive_loss_layer.cpp b/src/caffe/layers/contrastive_loss_layer.cpp index 74002087e..45facd4a4 100644 --- a/src/caffe/layers/contrastive_loss_layer.cpp +++ b/src/caffe/layers/contrastive_loss_layer.cpp @@ -51,7 +51,8 @@ void ContrastiveLossLayer::Forward_cpu( if (legacy_version) { loss += std::max(margin - dist_sq_.cpu_data()[i], Dtype(0.0)); } else { - Dtype dist = std::max(margin - sqrt(dist_sq_.cpu_data()[i]), 0.0); + Dtype dist = std::max(margin - sqrt(dist_sq_.cpu_data()[i]), + Dtype(0.0)); loss += dist*dist; } } diff --git a/src/caffe/test/test_contrastive_loss_layer.cpp b/src/caffe/test/test_contrastive_loss_layer.cpp index 592997e45..95901f142 100644 --- a/src/caffe/test/test_contrastive_loss_layer.cpp +++ b/src/caffe/test/test_contrastive_loss_layer.cpp @@ -77,7 +77,7 @@ TYPED_TEST(ContrastiveLossLayerTest, TestForward) { if (this->blob_bottom_y_->cpu_data()[i]) { // similar pairs loss += dist_sq; } else { - Dtype dist = std::max(margin - sqrt(dist_sq), 0.0); + Dtype dist = std::max(margin - sqrt(dist_sq), 0.0); loss += dist*dist; } } From 23e4e4621b0199684d6d7a8535fb7628f5609952 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Fri, 20 Nov 2015 16:36:29 +0800 Subject: [PATCH 114/458] Function must return a value Currently compilation will fail with some compilers when LevelDB and LMDB are disabled. Very similar to a recently fixed issue. --- src/caffe/util/db.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/caffe/util/db.cpp b/src/caffe/util/db.cpp index d0a2b0b5c..7f22509b5 100644 --- a/src/caffe/util/db.cpp +++ b/src/caffe/util/db.cpp @@ -18,6 +18,7 @@ DB* GetDB(DataParameter::DB backend) { #endif // USE_LMDB default: LOG(FATAL) << "Unknown database backend"; + return NULL; } } From e09329077d7612d7d1a185ea120be6be91bf03d2 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Fri, 20 Nov 2015 16:52:25 +0800 Subject: [PATCH 115/458] Exclude core.hpp when building without OpenCV --- src/caffe/util/io.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index f2b1dd984..835d2d4e4 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -2,8 +2,8 @@ #include #include #include -#include #ifdef USE_OPENCV +#include #include #include #include From 8b2aa7093cba002a5f286d47658de72a961d1299 Mon Sep 17 00:00:00 2001 From: Carl Doersch Date: Fri, 6 Nov 2015 14:41:30 -0800 Subject: [PATCH 116/458] Better normalization options for SoftmaxWithLoss layer. --- include/caffe/loss_layers.hpp | 11 +++-- src/caffe/layers/softmax_loss_layer.cpp | 54 +++++++++++++++++++------ src/caffe/layers/softmax_loss_layer.cu | 32 ++++++++------- src/caffe/proto/caffe.proto | 24 +++++++++-- 4 files changed, 89 insertions(+), 32 deletions(-) diff --git a/include/caffe/loss_layers.hpp b/include/caffe/loss_layers.hpp index d08ad9b68..d6569c4a5 100644 --- a/include/caffe/loss_layers.hpp +++ b/include/caffe/loss_layers.hpp @@ -747,6 +747,12 @@ class SoftmaxWithLossLayer : public LossLayer { virtual void Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); /// The internal SoftmaxLayer used to map predictions to a distribution. shared_ptr > softmax_layer_; @@ -760,9 +766,8 @@ class SoftmaxWithLossLayer : public LossLayer { bool has_ignore_label_; /// The label indicating that an instance should be ignored. int ignore_label_; - /// Whether to normalize the loss by the total number of values present - /// (otherwise just by the batch size). - bool normalize_; + /// How to normalize the output loss. + LossParameter_NormalizationMode normalization_; int softmax_axis_, outer_num_, inner_num_; }; diff --git a/src/caffe/layers/softmax_loss_layer.cpp b/src/caffe/layers/softmax_loss_layer.cpp index dee50ac63..3cdef82af 100644 --- a/src/caffe/layers/softmax_loss_layer.cpp +++ b/src/caffe/layers/softmax_loss_layer.cpp @@ -25,7 +25,14 @@ void SoftmaxWithLossLayer::LayerSetUp( if (has_ignore_label_) { ignore_label_ = this->layer_param_.loss_param().ignore_label(); } - normalize_ = this->layer_param_.loss_param().normalize(); + if (!this->layer_param_.loss_param().has_normalization() && + this->layer_param_.loss_param().has_normalize()) { + normalization_ = this->layer_param_.loss_param().normalize() ? + LossParameter_NormalizationMode_VALID : + LossParameter_NormalizationMode_BATCH_SIZE; + } else { + normalization_ = this->layer_param_.loss_param().normalization(); + } } template @@ -48,6 +55,36 @@ void SoftmaxWithLossLayer::Reshape( } } +template +Dtype SoftmaxWithLossLayer::get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count) { + Dtype normalizer; + switch (normalization_mode) { + case LossParameter_NormalizationMode_FULL: + normalizer = Dtype(outer_num_ * inner_num_); + break; + case LossParameter_NormalizationMode_VALID: + if (valid_count == -1) { + normalizer = Dtype(outer_num_ * inner_num_); + } else { + normalizer = Dtype(valid_count); + } + break; + case LossParameter_NormalizationMode_BATCH_SIZE: + normalizer = Dtype(outer_num_); + break; + case LossParameter_NormalizationMode_NONE: + normalizer = Dtype(1); + break; + default: + LOG(FATAL) << "Unknown normalization mode: " + << LossParameter_NormalizationMode_Name(normalization_mode); + } + // Some users will have no labels for some examples in order to 'turn off' a + // particular loss in a multi-task setup. The max prevents NaNs in that case. + return std::max(Dtype(1.0), normalizer); +} + template void SoftmaxWithLossLayer::Forward_cpu( const vector*>& bottom, const vector*>& top) { @@ -71,11 +108,7 @@ void SoftmaxWithLossLayer::Forward_cpu( ++count; } } - if (normalize_) { - top[0]->mutable_cpu_data()[0] = loss / count; - } else { - top[0]->mutable_cpu_data()[0] = loss / outer_num_; - } + top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_, count); if (top.size() == 2) { top[1]->ShareData(prob_); } @@ -109,12 +142,9 @@ void SoftmaxWithLossLayer::Backward_cpu(const vector*>& top, } } // Scale gradient - const Dtype loss_weight = top[0]->cpu_diff()[0]; - if (normalize_) { - caffe_scal(prob_.count(), loss_weight / count, bottom_diff); - } else { - caffe_scal(prob_.count(), loss_weight / outer_num_, bottom_diff); - } + Dtype loss_weight = top[0]->cpu_diff()[0] / + get_normalizer(normalization_, count); + caffe_scal(prob_.count(), loss_weight, bottom_diff); } } diff --git a/src/caffe/layers/softmax_loss_layer.cu b/src/caffe/layers/softmax_loss_layer.cu index 42e91fa9e..4753a1ec2 100644 --- a/src/caffe/layers/softmax_loss_layer.cu +++ b/src/caffe/layers/softmax_loss_layer.cu @@ -49,14 +49,15 @@ void SoftmaxWithLossLayer::Forward_gpu( outer_num_, dim, inner_num_, has_ignore_label_, ignore_label_, counts); Dtype loss; caffe_gpu_asum(nthreads, loss_data, &loss); - if (normalize_) { - Dtype count; - caffe_gpu_asum(nthreads, counts, &count); - loss /= count; - } else { - loss /= outer_num_; + Dtype valid_count = -1; + // Only launch another CUDA kernel if we actually need the count of valid + // outputs. + if (normalization_ == LossParameter_NormalizationMode_VALID && + has_ignore_label_) { + caffe_gpu_asum(nthreads, counts, &valid_count); } - top[0]->mutable_cpu_data()[0] = loss; + top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_, + valid_count); if (top.size() == 2) { top[1]->ShareData(prob_); } @@ -108,14 +109,17 @@ void SoftmaxWithLossLayer::Backward_gpu(const vector*>& top, SoftmaxLossBackwardGPU<<>>(nthreads, top_data, label, bottom_diff, outer_num_, dim, inner_num_, has_ignore_label_, ignore_label_, counts); - const Dtype loss_weight = top[0]->cpu_diff()[0]; - if (normalize_) { - Dtype count; - caffe_gpu_asum(nthreads, counts, &count); - caffe_gpu_scal(prob_.count(), loss_weight / count, bottom_diff); - } else { - caffe_gpu_scal(prob_.count(), loss_weight / outer_num_, bottom_diff); + + Dtype valid_count = -1; + // Only launch another CUDA kernel if we actually need the count of valid + // outputs. + if (normalization_ == LossParameter_NormalizationMode_VALID && + has_ignore_label_) { + caffe_gpu_asum(nthreads, counts, &valid_count); } + const Dtype loss_weight = top[0]->cpu_diff()[0] / + get_normalizer(normalization_, valid_count); + caffe_gpu_scal(prob_.count(), loss_weight , bottom_diff); } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 39873cf7f..787369f7c 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -420,9 +420,27 @@ message TransformationParameter { message LossParameter { // If specified, ignore instances with the given label. optional int32 ignore_label = 1; - // If true, normalize each batch across all instances (including spatial - // dimesions, but not ignored instances); else, divide by batch size only. - optional bool normalize = 2 [default = true]; + // How to normalize the loss for loss layers that aggregate across batches, + // spatial dimensions, or other dimensions. Currently only implemented in + // SoftmaxWithLoss layer. + enum NormalizationMode { + // Divide by the number of examples in the batch times spatial dimensions. + // Outputs that receive the ignore label will NOT be ignored in computing + // the normalization factor. + FULL = 0; + // Divide by the total number of output locations that do not take the + // ignore_label. If ignore_label is not set, this behaves like FULL. + VALID = 1; + // Divide by the batch size. + BATCH_SIZE = 2; + // Do not normalize the loss. + NONE = 3; + } + optional NormalizationMode normalization = 3 [default = VALID]; + // Deprecated. Ignored if normalization is specified. If normalization + // is not specified, then setting this to false will be equivalent to + // normalization = BATCH_SIZE to be consistent with previous behavior. + optional bool normalize = 2; } // Messages that store parameters used by individual layer types follow, in From 37413f9d0b102950dc6b94e52e367c762974f02a Mon Sep 17 00:00:00 2001 From: Tea Date: Mon, 23 Nov 2015 11:36:46 +0800 Subject: [PATCH 117/458] Scope macros inside switch --- src/caffe/util/hdf5.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/util/hdf5.cpp b/src/caffe/util/hdf5.cpp index 7730e76ab..d255877b6 100644 --- a/src/caffe/util/hdf5.cpp +++ b/src/caffe/util/hdf5.cpp @@ -29,10 +29,10 @@ void hdf5_load_nd_dataset_helper( CHECK_GE(status, 0) << "Failed to get dataset info for " << dataset_name_; switch (class_) { case H5T_FLOAT: - LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_FLOAT"; + { LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_FLOAT"; } break; case H5T_INTEGER: - LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_INTEGER"; + { LOG_FIRST_N(INFO, 1) << "Datatype class: H5T_INTEGER"; } break; case H5T_TIME: LOG(FATAL) << "Unsupported datatype class: H5T_TIME"; From b72b0318e2802785c17be1fe8ed1b6899961df19 Mon Sep 17 00:00:00 2001 From: Tea Date: Tue, 17 Nov 2015 17:05:56 +0800 Subject: [PATCH 118/458] replace snprintf with a C++98 equivalent --- examples/cifar10/convert_cifar_data.cpp | 13 ++++++------- examples/mnist/convert_mnist_data.cpp | 12 +++++------- .../siamese/convert_mnist_siamese_data.cpp | 7 +++---- include/caffe/util/format.hpp | 18 ++++++++++++++++++ src/caffe/solver.cpp | 8 +++----- tools/convert_imageset.cpp | 8 +++----- tools/extract_features.cpp | 11 ++++------- 7 files changed, 42 insertions(+), 35 deletions(-) create mode 100644 include/caffe/util/format.hpp diff --git a/examples/cifar10/convert_cifar_data.cpp b/examples/cifar10/convert_cifar_data.cpp index f4c42e4d2..e1b89f42f 100644 --- a/examples/cifar10/convert_cifar_data.cpp +++ b/examples/cifar10/convert_cifar_data.cpp @@ -16,6 +16,7 @@ #include "caffe/proto/caffe.pb.h" #include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" using caffe::Datum; using boost::scoped_ptr; @@ -52,19 +53,18 @@ void convert_dataset(const string& input_folder, const string& output_folder, for (int fileid = 0; fileid < kCIFARTrainBatches; ++fileid) { // Open files LOG(INFO) << "Training Batch " << fileid + 1; - snprintf(str_buffer, kCIFARImageNBytes, "/data_batch_%d.bin", fileid + 1); - std::ifstream data_file((input_folder + str_buffer).c_str(), + string batchFileName = input_folder + "/data_batch_" + + caffe::format_int(fileid+1) + ".bin"; + std::ifstream data_file(batchFileName.c_str(), std::ios::in | std::ios::binary); CHECK(data_file) << "Unable to open train file #" << fileid + 1; for (int itemid = 0; itemid < kCIFARBatchSize; ++itemid) { read_image(&data_file, &label, str_buffer); datum.set_label(label); datum.set_data(str_buffer, kCIFARImageNBytes); - int length = snprintf(str_buffer, kCIFARImageNBytes, "%05d", - fileid * kCIFARBatchSize + itemid); string out; CHECK(datum.SerializeToString(&out)); - txn->Put(string(str_buffer, length), out); + txn->Put(caffe::format_int(fileid * kCIFARBatchSize + itemid, 5), out); } } txn->Commit(); @@ -82,10 +82,9 @@ void convert_dataset(const string& input_folder, const string& output_folder, read_image(&data_file, &label, str_buffer); datum.set_label(label); datum.set_data(str_buffer, kCIFARImageNBytes); - int length = snprintf(str_buffer, kCIFARImageNBytes, "%05d", itemid); string out; CHECK(datum.SerializeToString(&out)); - txn->Put(string(str_buffer, length), out); + txn->Put(caffe::format_int(itemid, 5), out); } txn->Commit(); test_db->Close(); diff --git a/examples/mnist/convert_mnist_data.cpp b/examples/mnist/convert_mnist_data.cpp index 8f29bafde..16d28093d 100644 --- a/examples/mnist/convert_mnist_data.cpp +++ b/examples/mnist/convert_mnist_data.cpp @@ -23,6 +23,7 @@ #include #include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" #if defined(USE_LEVELDB) && defined(USE_LMDB) @@ -108,8 +109,6 @@ void convert_dataset(const char* image_filename, const char* label_filename, char label; char* pixels = new char[rows * cols]; int count = 0; - const int kMaxKeyLength = 10; - char key_cstr[kMaxKeyLength]; string value; Datum datum; @@ -123,18 +122,17 @@ void convert_dataset(const char* image_filename, const char* label_filename, label_file.read(&label, 1); datum.set_data(pixels, rows*cols); datum.set_label(label); - snprintf(key_cstr, kMaxKeyLength, "%08d", item_id); + string key_str = caffe::format_int(item_id, 8); datum.SerializeToString(&value); - string keystr(key_cstr); // Put in db if (db_backend == "leveldb") { // leveldb - batch->Put(keystr, value); + batch->Put(key_str, value); } else if (db_backend == "lmdb") { // lmdb mdb_data.mv_size = value.size(); mdb_data.mv_data = reinterpret_cast(&value[0]); - mdb_key.mv_size = keystr.size(); - mdb_key.mv_data = reinterpret_cast(&keystr[0]); + mdb_key.mv_size = key_str.size(); + mdb_key.mv_data = reinterpret_cast(&key_str[0]); CHECK_EQ(mdb_put(mdb_txn, mdb_dbi, &mdb_key, &mdb_data, 0), MDB_SUCCESS) << "mdb_put failed"; } else { diff --git a/examples/siamese/convert_mnist_siamese_data.cpp b/examples/siamese/convert_mnist_siamese_data.cpp index ad08036fb..928b3fbf4 100644 --- a/examples/siamese/convert_mnist_siamese_data.cpp +++ b/examples/siamese/convert_mnist_siamese_data.cpp @@ -13,6 +13,7 @@ #include "stdint.h" #include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" #include "caffe/util/math_functions.hpp" #ifdef USE_LEVELDB @@ -75,8 +76,6 @@ void convert_dataset(const char* image_filename, const char* label_filename, char label_i; char label_j; char* pixels = new char[2 * rows * cols]; - const int kMaxKeyLength = 10; - char key[kMaxKeyLength]; std::string value; caffe::Datum datum; @@ -99,8 +98,8 @@ void convert_dataset(const char* image_filename, const char* label_filename, datum.set_label(0); } datum.SerializeToString(&value); - snprintf(key, kMaxKeyLength, "%08d", itemid); - db->Put(leveldb::WriteOptions(), std::string(key), value); + std::string key_str = caffe::format_int(itemid, 8); + db->Put(leveldb::WriteOptions(), key_str, value); } delete db; diff --git a/include/caffe/util/format.hpp b/include/caffe/util/format.hpp new file mode 100644 index 000000000..925ad2e04 --- /dev/null +++ b/include/caffe/util/format.hpp @@ -0,0 +1,18 @@ +#ifndef CAFFE_UTIL_FORMAT_H_ +#define CAFFE_UTIL_FORMAT_H_ + +#include // NOLINT(readability/streams) +#include // NOLINT(readability/streams) +#include + +namespace caffe { + +inline std::string format_int(int n, int numberOfLeadingZeros = 0 ) { + std::ostringstream s; + s << std::setw(numberOfLeadingZeros) << std::setfill('0') << n; + return s.str(); +} + +} + +#endif // CAFFE_UTIL_FORMAT_H_ diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index d3bc7361d..95d750663 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -4,6 +4,7 @@ #include #include "caffe/solver.hpp" +#include "caffe/util/format.hpp" #include "caffe/util/hdf5.hpp" #include "caffe/util/io.hpp" #include "caffe/util/upgrade_proto.hpp" @@ -448,11 +449,8 @@ void Solver::CheckSnapshotWritePermissions() { template string Solver::SnapshotFilename(const string extension) { - string filename(param_.snapshot_prefix()); - const int kBufferSize = 20; - char iter_str_buffer[kBufferSize]; - snprintf(iter_str_buffer, kBufferSize, "_iter_%d", iter_); - return filename + iter_str_buffer + extension; + return param_.snapshot_prefix() + "_iter_" + caffe::format_int(iter_) + + extension; } template diff --git a/tools/convert_imageset.cpp b/tools/convert_imageset.cpp index e51a26310..9c52bfa0e 100644 --- a/tools/convert_imageset.cpp +++ b/tools/convert_imageset.cpp @@ -20,6 +20,7 @@ #include "caffe/proto/caffe.pb.h" #include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" #include "caffe/util/io.hpp" #include "caffe/util/rng.hpp" @@ -99,8 +100,6 @@ int main(int argc, char** argv) { std::string root_folder(argv[1]); Datum datum; int count = 0; - const int kMaxKeyLength = 256; - char key_cstr[kMaxKeyLength]; int data_size = 0; bool data_size_initialized = false; @@ -131,13 +130,12 @@ int main(int argc, char** argv) { } } // sequential - int length = snprintf(key_cstr, kMaxKeyLength, "%08d_%s", line_id, - lines[line_id].first.c_str()); + string key_str = caffe::format_int(line_id, 8) + "_" + lines[line_id].first; // Put in db string out; CHECK(datum.SerializeToString(&out)); - txn->Put(string(key_cstr, length), out); + txn->Put(key_str, out); if (++count % 1000 == 0) { // Commit db diff --git a/tools/extract_features.cpp b/tools/extract_features.cpp index 084c9bf88..b94dbb980 100644 --- a/tools/extract_features.cpp +++ b/tools/extract_features.cpp @@ -1,4 +1,3 @@ -#include // for snprintf #include #include @@ -10,6 +9,7 @@ #include "caffe/net.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/db.hpp" +#include "caffe/util/format.hpp" #include "caffe/util/io.hpp" #include "caffe/vision_layers.hpp" @@ -135,8 +135,6 @@ int feature_extraction_pipeline(int argc, char** argv) { LOG(ERROR)<< "Extacting Features"; Datum datum; - const int kMaxKeyStrLength = 100; - char key_str[kMaxKeyStrLength]; std::vector*> input_vec; std::vector image_indices(num_features, 0); for (int batch_index = 0; batch_index < num_mini_batches; ++batch_index) { @@ -158,11 +156,11 @@ int feature_extraction_pipeline(int argc, char** argv) { for (int d = 0; d < dim_features; ++d) { datum.add_float_data(feature_blob_data[d]); } - int length = snprintf(key_str, kMaxKeyStrLength, "%010d", - image_indices[i]); + string key_str = caffe::format_int(image_indices[i], 10); + string out; CHECK(datum.SerializeToString(&out)); - txns.at(i)->Put(std::string(key_str, length), out); + txns.at(i)->Put(key_str, out); ++image_indices[i]; if (image_indices[i] % 1000 == 0) { txns.at(i)->Commit(); @@ -186,4 +184,3 @@ int feature_extraction_pipeline(int argc, char** argv) { LOG(ERROR)<< "Successfully extracted the features!"; return 0; } - From d3025f5ffb731ef2f7e796f67f6fd6bd43f601b9 Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Wed, 25 Nov 2015 21:02:02 -0800 Subject: [PATCH 119/458] Remove bogus stepearly in MNIST example This `examples/lenet/lenet_stepearly_solver.prototxt` is introduced in #190 by mistake, since stepearly is never actually merged. --- .../mnist/lenet_stepearly_solver.prototxt | 28 ------------------- 1 file changed, 28 deletions(-) delete mode 100644 examples/mnist/lenet_stepearly_solver.prototxt diff --git a/examples/mnist/lenet_stepearly_solver.prototxt b/examples/mnist/lenet_stepearly_solver.prototxt deleted file mode 100644 index efc6a335d..000000000 --- a/examples/mnist/lenet_stepearly_solver.prototxt +++ /dev/null @@ -1,28 +0,0 @@ -# The training protocol buffer definition -train_net: "lenet_train.prototxt" -# The testing protocol buffer definition -test_net: "lenet_test.prototxt" -# test_iter specifies how many forward passes the test should carry out. -# In the case of MNIST, we have test batch size 100 and 100 test iterations, -# covering the full 10,000 testing images. -test_iter: 100 -# Carry out testing every 500 training iterations. -test_interval: 500 -# The base learning rate, momentum and the weight decay of the network. -base_lr: 0.01 -momentum: 0.9 -weight_decay: 0.0005 -# The learning rate policy -lr_policy: "stepearly" -gamma: 0.9 -stepearly: 1 -# Display every 100 iterations -display: 100 -# The maximum number of iterations -max_iter: 10000 -# snapshot intermediate results -snapshot: 5000 -snapshot_prefix: "lenet" -# solver mode: 0 for CPU and 1 for GPU -solver_mode: 1 -device_id: 1 From 34ee5df55dc11dfc8afff60cf64cd479b639e5a8 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Tue, 24 Nov 2015 14:33:27 +0800 Subject: [PATCH 120/458] Secure implementation of MakeTempDir --- include/caffe/util/io.hpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index 6b7332548..f9f0f55a5 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -9,6 +9,10 @@ #include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" +#ifndef CAFFE_TMP_DIR_RETRIES +#define CAFFE_TMP_DIR_RETRIES 100 +#endif + namespace caffe { using ::google::protobuf::Message; @@ -23,12 +27,17 @@ inline void MakeTempFilename(string* temp_filename) { inline void MakeTempDir(string* temp_dirname) { temp_dirname->clear(); - const path& model = boost::filesystem::temp_directory_path() - /"caffe_test.%%%%%%"; - const path& dir = boost::filesystem::unique_path(model).string(); - bool directoryCreated = boost::filesystem::create_directory(dir); - CHECK(directoryCreated); - *temp_dirname = dir.string(); + const path& model = + boost::filesystem::temp_directory_path()/"caffe_test.%%%%-%%%%"; + for ( int i = 0; i < CAFFE_TMP_DIR_RETRIES; i++ ) { + const path& dir = boost::filesystem::unique_path(model).string(); + bool done = boost::filesystem::create_directory(dir); + if ( done ) { + *temp_dirname = dir.string(); + return; + } + } + LOG(FATAL) << "Failed to create a temporary directory."; } bool ReadProtoFromTextFile(const char* filename, Message* proto); From 33905d5a8023c3dbac514dac680060dc608145e8 Mon Sep 17 00:00:00 2001 From: Tea Date: Wed, 25 Nov 2015 11:43:45 +0800 Subject: [PATCH 121/458] Secure temporary file creation --- include/caffe/util/io.hpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index f9f0f55a5..1a599883c 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -2,12 +2,15 @@ #define CAFFE_UTIL_IO_H_ #include +#include +#include // NOLINT(readability/streams) #include #include "google/protobuf/message.h" #include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" #ifndef CAFFE_TMP_DIR_RETRIES #define CAFFE_TMP_DIR_RETRIES 100 @@ -18,13 +21,6 @@ namespace caffe { using ::google::protobuf::Message; using ::boost::filesystem::path; -inline void MakeTempFilename(string* temp_filename) { - temp_filename->clear(); - const path& model = boost::filesystem::temp_directory_path() - /"caffe_test.%%%%%%"; - *temp_filename = boost::filesystem::unique_path(model).string(); -} - inline void MakeTempDir(string* temp_dirname) { temp_dirname->clear(); const path& model = @@ -40,6 +36,19 @@ inline void MakeTempDir(string* temp_dirname) { LOG(FATAL) << "Failed to create a temporary directory."; } +inline void MakeTempFilename(string* temp_filename) { + static path temp_files_subpath; + static uint64_t next_temp_file = 0; + temp_filename->clear(); + if ( temp_files_subpath.empty() ) { + string path_string=""; + MakeTempDir(&path_string); + temp_files_subpath = path_string; + } + *temp_filename = + (temp_files_subpath/caffe::format_int(next_temp_file++, 9)).string(); +} + bool ReadProtoFromTextFile(const char* filename, Message* proto); inline bool ReadProtoFromTextFile(const string& filename, Message* proto) { From 300f43f3ae6347ac8e01093f9a57ee99e551ed74 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Tue, 10 Nov 2015 00:22:58 -0800 Subject: [PATCH 122/458] dismantle layer headers No more monolithic includes: split layers into their own headers for modular inclusion and build. --- Makefile | 2 +- include/caffe/caffe.hpp | 1 - include/caffe/common_layers.hpp | 816 ------------------ include/caffe/data_layers.hpp | 347 -------- include/caffe/layer_factory.hpp | 1 + include/caffe/layers/absval_layer.hpp | 68 ++ include/caffe/layers/accuracy_layer.hpp | 95 ++ include/caffe/layers/argmax_layer.hpp | 77 ++ include/caffe/layers/base_conv_layer.hpp | 168 ++++ include/caffe/layers/base_data_layer.hpp | 86 ++ include/caffe/layers/batch_norm_layer.hpp | 81 ++ include/caffe/layers/batch_reindex_layer.hpp | 83 ++ include/caffe/layers/bnll_layer.hpp | 70 ++ include/caffe/layers/concat_layer.hpp | 87 ++ .../caffe/layers/contrastive_loss_layer.hpp | 101 +++ include/caffe/layers/conv_layer.hpp | 81 ++ include/caffe/layers/cudnn_conv_layer.hpp | 72 ++ include/caffe/layers/cudnn_lcn_layer.hpp | 49 ++ include/caffe/layers/cudnn_lrn_layer.hpp | 44 + include/caffe/layers/cudnn_pooling_layer.hpp | 49 ++ include/caffe/layers/cudnn_relu_layer.hpp | 45 + include/caffe/layers/cudnn_sigmoid_layer.hpp | 45 + include/caffe/layers/cudnn_softmax_layer.hpp | 45 + include/caffe/layers/cudnn_tanh_layer.hpp | 45 + include/caffe/layers/data_layer.hpp | 39 + include/caffe/layers/deconv_layer.hpp | 51 ++ include/caffe/layers/dropout_layer.hpp | 80 ++ include/caffe/layers/dummy_data_layer.hpp | 49 ++ include/caffe/layers/eltwise_layer.hpp | 51 ++ include/caffe/layers/embed_layer.hpp | 52 ++ include/caffe/layers/euclidean_loss_layer.hpp | 107 +++ include/caffe/layers/exp_layer.hpp | 80 ++ include/caffe/layers/filter_layer.hpp | 77 ++ include/caffe/layers/flatten_layer.hpp | 61 ++ include/caffe/layers/hdf5_data_layer.hpp | 62 ++ include/caffe/layers/hdf5_output_layer.hpp | 64 ++ include/caffe/layers/hinge_loss_layer.hpp | 104 +++ include/caffe/layers/im2col_layer.hpp | 63 ++ include/caffe/layers/image_data_layer.hpp | 47 + include/caffe/layers/infogain_loss_layer.hpp | 110 +++ include/caffe/layers/inner_product_layer.hpp | 51 ++ include/caffe/layers/log_layer.hpp | 82 ++ include/caffe/layers/loss_layer.hpp | 53 ++ include/caffe/layers/lrn_layer.hpp | 94 ++ include/caffe/layers/memory_data_layer.hpp | 63 ++ .../multinomial_logistic_loss_layer.hpp | 92 ++ include/caffe/layers/mvn_layer.hpp | 48 ++ include/caffe/layers/neuron_layer.hpp | 32 + include/caffe/layers/pooling_layer.hpp | 60 ++ include/caffe/layers/power_layer.hpp | 89 ++ include/caffe/layers/prelu_layer.hpp | 101 +++ include/caffe/{ => layers}/python_layer.hpp | 0 include/caffe/layers/reduction_layer.hpp | 59 ++ include/caffe/layers/relu_layer.hpp | 85 ++ include/caffe/layers/reshape_layer.hpp | 52 ++ .../sigmoid_cross_entropy_loss_layer.hpp | 110 +++ include/caffe/layers/sigmoid_layer.hpp | 71 ++ include/caffe/layers/silence_layer.hpp | 43 + include/caffe/layers/slice_layer.hpp | 51 ++ include/caffe/layers/softmax_layer.hpp | 50 ++ include/caffe/layers/softmax_loss_layer.hpp | 130 +++ include/caffe/layers/split_layer.hpp | 45 + include/caffe/layers/spp_layer.hpp | 76 ++ include/caffe/layers/tanh_layer.hpp | 73 ++ include/caffe/layers/threshold_layer.hpp | 64 ++ include/caffe/layers/tile_layer.hpp | 43 + include/caffe/layers/window_data_layer.hpp | 55 ++ include/caffe/loss_layers.hpp | 777 ----------------- include/caffe/neuron_layers.hpp | 806 ----------------- include/caffe/vision_layers.hpp | 659 -------------- python/caffe/_caffe.cpp | 3 +- src/caffe/data_reader.cpp | 2 +- src/caffe/layer_factory.cpp | 21 +- src/caffe/layers/absval_layer.cpp | 2 +- src/caffe/layers/absval_layer.cu | 2 +- src/caffe/layers/accuracy_layer.cpp | 2 +- src/caffe/layers/argmax_layer.cpp | 2 +- src/caffe/layers/base_conv_layer.cpp | 2 +- src/caffe/layers/base_data_layer.cpp | 8 +- src/caffe/layers/base_data_layer.cu | 2 +- src/caffe/layers/batch_norm_layer.cpp | 2 +- src/caffe/layers/batch_norm_layer.cu | 2 +- src/caffe/layers/batch_reindex_layer.cpp | 2 +- src/caffe/layers/batch_reindex_layer.cu | 2 +- src/caffe/layers/bnll_layer.cpp | 2 +- src/caffe/layers/bnll_layer.cu | 2 +- src/caffe/layers/concat_layer.cpp | 2 +- src/caffe/layers/concat_layer.cu | 2 +- src/caffe/layers/contrastive_loss_layer.cpp | 2 +- src/caffe/layers/contrastive_loss_layer.cu | 2 +- src/caffe/layers/conv_layer.cpp | 2 +- src/caffe/layers/conv_layer.cu | 2 +- src/caffe/layers/cudnn_conv_layer.cpp | 2 +- src/caffe/layers/cudnn_conv_layer.cu | 2 +- src/caffe/layers/cudnn_lcn_layer.cpp | 2 +- src/caffe/layers/cudnn_lcn_layer.cu | 2 +- src/caffe/layers/cudnn_lrn_layer.cpp | 2 +- src/caffe/layers/cudnn_lrn_layer.cu | 2 +- src/caffe/layers/cudnn_pooling_layer.cpp | 2 +- src/caffe/layers/cudnn_pooling_layer.cu | 2 +- src/caffe/layers/cudnn_relu_layer.cpp | 2 +- src/caffe/layers/cudnn_relu_layer.cu | 2 +- src/caffe/layers/cudnn_sigmoid_layer.cpp | 2 +- src/caffe/layers/cudnn_sigmoid_layer.cu | 2 +- src/caffe/layers/cudnn_softmax_layer.cpp | 2 +- src/caffe/layers/cudnn_softmax_layer.cu | 2 +- src/caffe/layers/cudnn_tanh_layer.cpp | 2 +- src/caffe/layers/cudnn_tanh_layer.cu | 2 +- src/caffe/layers/data_layer.cpp | 4 +- src/caffe/layers/deconv_layer.cpp | 2 +- src/caffe/layers/deconv_layer.cu | 2 +- src/caffe/layers/dropout_layer.cpp | 2 +- src/caffe/layers/dropout_layer.cu | 4 +- src/caffe/layers/dummy_data_layer.cpp | 2 +- src/caffe/layers/eltwise_layer.cpp | 2 +- src/caffe/layers/eltwise_layer.cu | 2 +- src/caffe/layers/embed_layer.cpp | 2 +- src/caffe/layers/embed_layer.cu | 2 +- src/caffe/layers/euclidean_loss_layer.cpp | 2 +- src/caffe/layers/euclidean_loss_layer.cu | 2 +- src/caffe/layers/exp_layer.cpp | 2 +- src/caffe/layers/exp_layer.cu | 2 +- src/caffe/layers/filter_layer.cpp | 2 +- src/caffe/layers/filter_layer.cu | 2 +- src/caffe/layers/flatten_layer.cpp | 2 +- src/caffe/layers/hdf5_data_layer.cpp | 2 +- src/caffe/layers/hdf5_data_layer.cu | 2 +- src/caffe/layers/hdf5_output_layer.cpp | 2 +- src/caffe/layers/hdf5_output_layer.cu | 2 +- src/caffe/layers/hinge_loss_layer.cpp | 2 +- src/caffe/layers/im2col_layer.cpp | 2 +- src/caffe/layers/im2col_layer.cu | 2 +- src/caffe/layers/image_data_layer.cpp | 4 +- src/caffe/layers/infogain_loss_layer.cpp | 2 +- src/caffe/layers/inner_product_layer.cpp | 2 +- src/caffe/layers/inner_product_layer.cu | 2 +- src/caffe/layers/log_layer.cpp | 2 +- src/caffe/layers/log_layer.cu | 2 +- src/caffe/layers/loss_layer.cpp | 2 +- src/caffe/layers/lrn_layer.cpp | 2 +- src/caffe/layers/lrn_layer.cu | 2 +- src/caffe/layers/memory_data_layer.cpp | 2 +- .../multinomial_logistic_loss_layer.cpp | 2 +- src/caffe/layers/mvn_layer.cpp | 2 +- src/caffe/layers/mvn_layer.cu | 2 +- src/caffe/layers/neuron_layer.cpp | 2 +- src/caffe/layers/pooling_layer.cpp | 2 +- src/caffe/layers/pooling_layer.cu | 2 +- src/caffe/layers/power_layer.cpp | 2 +- src/caffe/layers/power_layer.cu | 2 +- src/caffe/layers/prelu_layer.cpp | 4 +- src/caffe/layers/prelu_layer.cu | 3 +- src/caffe/layers/reduction_layer.cpp | 2 +- src/caffe/layers/reduction_layer.cu | 2 +- src/caffe/layers/relu_layer.cpp | 2 +- src/caffe/layers/relu_layer.cu | 2 +- src/caffe/layers/reshape_layer.cpp | 2 +- .../sigmoid_cross_entropy_loss_layer.cpp | 2 +- .../sigmoid_cross_entropy_loss_layer.cu | 2 +- src/caffe/layers/sigmoid_layer.cpp | 2 +- src/caffe/layers/sigmoid_layer.cu | 2 +- src/caffe/layers/silence_layer.cpp | 2 +- src/caffe/layers/silence_layer.cu | 2 +- src/caffe/layers/slice_layer.cpp | 2 +- src/caffe/layers/slice_layer.cu | 2 +- src/caffe/layers/softmax_layer.cpp | 2 +- src/caffe/layers/softmax_layer.cu | 2 +- src/caffe/layers/softmax_loss_layer.cpp | 2 +- src/caffe/layers/softmax_loss_layer.cu | 2 +- src/caffe/layers/split_layer.cpp | 2 +- src/caffe/layers/split_layer.cu | 2 +- src/caffe/layers/spp_layer.cpp | 8 +- src/caffe/layers/tanh_layer.cpp | 2 +- src/caffe/layers/tanh_layer.cu | 2 +- src/caffe/layers/threshold_layer.cpp | 3 +- src/caffe/layers/threshold_layer.cu | 2 +- src/caffe/layers/tile_layer.cpp | 2 +- src/caffe/layers/tile_layer.cu | 2 +- src/caffe/layers/window_data_layer.cpp | 5 +- src/caffe/test/test_accuracy_layer.cpp | 2 +- src/caffe/test/test_argmax_layer.cpp | 2 +- src/caffe/test/test_batch_norm_layer.cpp | 2 +- src/caffe/test/test_batch_reindex_layer.cpp | 2 +- src/caffe/test/test_concat_layer.cpp | 2 +- .../test/test_contrastive_loss_layer.cpp | 2 +- src/caffe/test/test_convolution_layer.cpp | 6 +- src/caffe/test/test_data_layer.cpp | 2 +- src/caffe/test/test_deconvolution_layer.cpp | 2 +- src/caffe/test/test_dummy_data_layer.cpp | 2 +- src/caffe/test/test_eltwise_layer.cpp | 2 +- src/caffe/test/test_embed_layer.cpp | 2 +- src/caffe/test/test_euclidean_loss_layer.cpp | 2 +- src/caffe/test/test_filter_layer.cpp | 2 +- src/caffe/test/test_flatten_layer.cpp | 2 +- src/caffe/test/test_hdf5_output_layer.cpp | 2 +- src/caffe/test/test_hdf5data_layer.cpp | 4 +- src/caffe/test/test_hinge_loss_layer.cpp | 2 +- src/caffe/test/test_im2col_kernel.cu | 2 +- src/caffe/test/test_im2col_layer.cpp | 2 +- src/caffe/test/test_image_data_layer.cpp | 2 +- src/caffe/test/test_infogain_loss_layer.cpp | 2 +- src/caffe/test/test_inner_product_layer.cpp | 2 +- src/caffe/test/test_lrn_layer.cpp | 7 +- .../test/test_maxpool_dropout_layers.cpp | 3 +- src/caffe/test/test_memory_data_layer.cpp | 2 +- .../test_multinomial_logistic_loss_layer.cpp | 2 +- src/caffe/test/test_mvn_layer.cpp | 2 +- src/caffe/test/test_neuron_layer.cpp | 21 +- src/caffe/test/test_pooling_layer.cpp | 6 +- src/caffe/test/test_power_layer.cpp | 2 +- src/caffe/test/test_reduction_layer.cpp | 2 +- src/caffe/test/test_reshape_layer.cpp | 2 +- .../test_sigmoid_cross_entropy_loss_layer.cpp | 2 +- src/caffe/test/test_slice_layer.cpp | 2 +- src/caffe/test/test_softmax_layer.cpp | 6 +- .../test/test_softmax_with_loss_layer.cpp | 2 +- src/caffe/test/test_split_layer.cpp | 2 +- src/caffe/test/test_spp_layer.cpp | 7 +- src/caffe/test/test_stochastic_pooling.cpp | 2 +- src/caffe/test/test_tanh_layer.cpp | 2 +- src/caffe/test/test_threshold_layer.cpp | 2 +- src/caffe/test/test_tile_layer.cpp | 2 +- src/caffe/util/blocking_queue.cpp | 2 +- tools/extract_features.cpp | 1 - 224 files changed, 4497 insertions(+), 3568 deletions(-) delete mode 100644 include/caffe/common_layers.hpp delete mode 100644 include/caffe/data_layers.hpp create mode 100644 include/caffe/layers/absval_layer.hpp create mode 100644 include/caffe/layers/accuracy_layer.hpp create mode 100644 include/caffe/layers/argmax_layer.hpp create mode 100644 include/caffe/layers/base_conv_layer.hpp create mode 100644 include/caffe/layers/base_data_layer.hpp create mode 100644 include/caffe/layers/batch_norm_layer.hpp create mode 100644 include/caffe/layers/batch_reindex_layer.hpp create mode 100644 include/caffe/layers/bnll_layer.hpp create mode 100644 include/caffe/layers/concat_layer.hpp create mode 100644 include/caffe/layers/contrastive_loss_layer.hpp create mode 100644 include/caffe/layers/conv_layer.hpp create mode 100644 include/caffe/layers/cudnn_conv_layer.hpp create mode 100644 include/caffe/layers/cudnn_lcn_layer.hpp create mode 100644 include/caffe/layers/cudnn_lrn_layer.hpp create mode 100644 include/caffe/layers/cudnn_pooling_layer.hpp create mode 100644 include/caffe/layers/cudnn_relu_layer.hpp create mode 100644 include/caffe/layers/cudnn_sigmoid_layer.hpp create mode 100644 include/caffe/layers/cudnn_softmax_layer.hpp create mode 100644 include/caffe/layers/cudnn_tanh_layer.hpp create mode 100644 include/caffe/layers/data_layer.hpp create mode 100644 include/caffe/layers/deconv_layer.hpp create mode 100644 include/caffe/layers/dropout_layer.hpp create mode 100644 include/caffe/layers/dummy_data_layer.hpp create mode 100644 include/caffe/layers/eltwise_layer.hpp create mode 100644 include/caffe/layers/embed_layer.hpp create mode 100644 include/caffe/layers/euclidean_loss_layer.hpp create mode 100644 include/caffe/layers/exp_layer.hpp create mode 100644 include/caffe/layers/filter_layer.hpp create mode 100644 include/caffe/layers/flatten_layer.hpp create mode 100644 include/caffe/layers/hdf5_data_layer.hpp create mode 100644 include/caffe/layers/hdf5_output_layer.hpp create mode 100644 include/caffe/layers/hinge_loss_layer.hpp create mode 100644 include/caffe/layers/im2col_layer.hpp create mode 100644 include/caffe/layers/image_data_layer.hpp create mode 100644 include/caffe/layers/infogain_loss_layer.hpp create mode 100644 include/caffe/layers/inner_product_layer.hpp create mode 100644 include/caffe/layers/log_layer.hpp create mode 100644 include/caffe/layers/loss_layer.hpp create mode 100644 include/caffe/layers/lrn_layer.hpp create mode 100644 include/caffe/layers/memory_data_layer.hpp create mode 100644 include/caffe/layers/multinomial_logistic_loss_layer.hpp create mode 100644 include/caffe/layers/mvn_layer.hpp create mode 100644 include/caffe/layers/neuron_layer.hpp create mode 100644 include/caffe/layers/pooling_layer.hpp create mode 100644 include/caffe/layers/power_layer.hpp create mode 100644 include/caffe/layers/prelu_layer.hpp rename include/caffe/{ => layers}/python_layer.hpp (100%) create mode 100644 include/caffe/layers/reduction_layer.hpp create mode 100644 include/caffe/layers/relu_layer.hpp create mode 100644 include/caffe/layers/reshape_layer.hpp create mode 100644 include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp create mode 100644 include/caffe/layers/sigmoid_layer.hpp create mode 100644 include/caffe/layers/silence_layer.hpp create mode 100644 include/caffe/layers/slice_layer.hpp create mode 100644 include/caffe/layers/softmax_layer.hpp create mode 100644 include/caffe/layers/softmax_loss_layer.hpp create mode 100644 include/caffe/layers/split_layer.hpp create mode 100644 include/caffe/layers/spp_layer.hpp create mode 100644 include/caffe/layers/tanh_layer.hpp create mode 100644 include/caffe/layers/threshold_layer.hpp create mode 100644 include/caffe/layers/tile_layer.hpp create mode 100644 include/caffe/layers/window_data_layer.hpp delete mode 100644 include/caffe/loss_layers.hpp delete mode 100644 include/caffe/neuron_layers.hpp delete mode 100644 include/caffe/vision_layers.hpp diff --git a/Makefile b/Makefile index 3dc76ae56..985fffd6c 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,7 @@ NONEMPTY_LINT_REPORT := $(BUILD_DIR)/$(LINT_EXT) # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) PY$(PROJECT)_SRC := python/$(PROJECT)/_$(PROJECT).cpp PY$(PROJECT)_SO := python/$(PROJECT)/_$(PROJECT).so -PY$(PROJECT)_HXX := include/$(PROJECT)/python_layer.hpp +PY$(PROJECT)_HXX := include/$(PROJECT)/layers/python_layer.hpp # MAT$(PROJECT)_SRC is the mex entrance point of matlab package for $(PROJECT) MAT$(PROJECT)_SRC := matlab/+$(PROJECT)/private/$(PROJECT)_.cpp ifneq ($(MATLAB_DIR),) diff --git a/include/caffe/caffe.hpp b/include/caffe/caffe.hpp index a339efba5..06882096c 100644 --- a/include/caffe/caffe.hpp +++ b/include/caffe/caffe.hpp @@ -17,6 +17,5 @@ #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/util/upgrade_proto.hpp" -#include "caffe/vision_layers.hpp" #endif // CAFFE_CAFFE_HPP_ diff --git a/include/caffe/common_layers.hpp b/include/caffe/common_layers.hpp deleted file mode 100644 index d42d15c47..000000000 --- a/include/caffe/common_layers.hpp +++ /dev/null @@ -1,816 +0,0 @@ -#ifndef CAFFE_COMMON_LAYERS_HPP_ -#define CAFFE_COMMON_LAYERS_HPP_ - -#include -#include - -#include "caffe/blob.hpp" -#include "caffe/layer.hpp" -#include "caffe/proto/caffe.pb.h" - -namespace caffe { - -/** - * @brief Compute the index of the @f$ K @f$ max values for each datum across - * all dimensions @f$ (C \times H \times W) @f$. - * - * Intended for use after a classification layer to produce a prediction. - * If parameter out_max_val is set to true, output is a vector of pairs - * (max_ind, max_val) for each image. The axis parameter specifies an axis - * along which to maximise. - * - * NOTE: does not implement Backwards operation. - */ -template -class ArgMaxLayer : public Layer { - public: - /** - * @param param provides ArgMaxParameter argmax_param, - * with ArgMaxLayer options: - * - top_k (\b optional uint, default 1). - * the number @f$ K @f$ of maximal items to output. - * - out_max_val (\b optional bool, default false). - * if set, output a vector of pairs (max_ind, max_val) unless axis is set then - * output max_val along the specified axis. - * - axis (\b optional int). - * if set, maximise along the specified axis else maximise the flattened - * trailing dimensions for each index of the first / num dimension. - */ - explicit ArgMaxLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "ArgMax"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times 1 \times K) @f$ or, if out_max_val - * @f$ (N \times 2 \times K) @f$ unless axis set than e.g. - * @f$ (N \times K \times H \times W) @f$ if axis == 1 - * the computed outputs @f$ - * y_n = \arg\max\limits_i x_{ni} - * @f$ (for @f$ K = 1 @f$). - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - /// @brief Not implemented (non-differentiable function) - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) { - NOT_IMPLEMENTED; - } - bool out_max_val_; - size_t top_k_; - bool has_axis_; - int axis_; -}; - -/** - * @brief Normalizes the input to have 0-mean and/or unit (1) variance across - * the batch. - * - * This layer computes Batch Normalization described in [1]. For - * each channel in the data (i.e. axis 1), it subtracts the mean and divides - * by the variance, where both statistics are computed across both spatial - * dimensions and across the different examples in the batch. - * - * By default, during training time, the network is computing global mean/ - * variance statistics via a running average, which is then used at test - * time to allow deterministic outputs for each input. You can manually - * toggle whether the network is accumulating or using the statistics via the - * use_global_stats option. IMPORTANT: for this feature to work, you MUST - * set the learning rate to zero for all three parameter blobs, i.e., - * param {lr_mult: 0} three times in the layer definition. - * - * Note that the original paper also included a per-channel learned bias and - * scaling factor. It is possible (though a bit cumbersome) to implement - * this in caffe using a single-channel DummyDataLayer filled with zeros, - * followed by a Convolution layer with output the same size as the current. - * This produces a channel-specific value that can be added or multiplied by - * the BatchNorm layer's output. - * - * [1] S. Ioffe and C. Szegedy, "Batch Normalization: Accelerating Deep Network - * Training by Reducing Internal Covariate Shift." arXiv preprint - * arXiv:1502.03167 (2015). - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class BatchNormLayer : public Layer { - public: - explicit BatchNormLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "BatchNorm"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Blob mean_, variance_, temp_, x_norm_; - bool use_global_stats_; - Dtype moving_average_fraction_; - int channels_; - Dtype eps_; - - // extra temporarary variables is used to carry out sums/broadcasting - // using BLAS - Blob batch_sum_multiplier_; - Blob num_by_chans_; - Blob spatial_sum_multiplier_; -}; - -/** - * @brief Index into the input blob along its first axis. - * - * This layer can be used to select, reorder, and even replicate examples in a - * batch. The second blob is cast to int and treated as an index into the - * first axis of the first blob. - */ -template -class BatchReindexLayer : public Layer { - public: - explicit BatchReindexLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "BatchReindex"; } - virtual inline int ExactNumBottomBlobs() const { return 2; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - /** - * @param bottom input Blob vector (length 2+) - * -# @f$ (N \times ...) @f$ - * the inputs @f$ x_1 @f$ - * -# @f$ (M) @f$ - * the inputs @f$ x_2 @f$ - * @param top output Blob vector (length 1) - * -# @f$ (M \times ...) @f$: - * the reindexed array @f$ - * y = x_1[x_2] - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the reordered input. - * - * @param top output Blob vector (length 1), providing the error gradient - * with respect to the outputs - * -# @f$ (M \times ...) @f$: - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to concatenated outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 2): - * - @f$ \frac{\partial E}{\partial y} @f$ is de-indexed (summing where - * required) back to the input x_1 - * - This layer cannot backprop to x_2, i.e. propagate_down[1] must be - * false. - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - private: - struct pair_sort_first { - bool operator()(const std::pair &left, - const std::pair &right) { - return left.first < right.first; - } - }; - void check_batch_reindex(int initial_num, int final_num, - const Dtype* ridx_data); -}; - -/** - * @brief Takes at least two Blob%s and concatenates them along either the num - * or channel dimension, outputting the result. - */ -template -class ConcatLayer : public Layer { - public: - explicit ConcatLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Concat"; } - virtual inline int MinBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - /** - * @param bottom input Blob vector (length 2+) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x_1 @f$ - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x_2 @f$ - * -# ... - * - K @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x_K @f$ - * @param top output Blob vector (length 1) - * -# @f$ (KN \times C \times H \times W) @f$ if axis == 0, or - * @f$ (N \times KC \times H \times W) @f$ if axis == 1: - * the concatenated output @f$ - * y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the concatenate inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (KN \times C \times H \times W) @f$ if axis == 0, or - * @f$ (N \times KC \times H \times W) @f$ if axis == 1: - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to concatenated outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length K), into which the top gradient - * @f$ \frac{\partial E}{\partial y} @f$ is deconcatenated back to the - * inputs @f$ - * \left[ \begin{array}{cccc} - * \frac{\partial E}{\partial x_1} & - * \frac{\partial E}{\partial x_2} & - * ... & - * \frac{\partial E}{\partial x_K} - * \end{array} \right] = - * \frac{\partial E}{\partial y} - * @f$ - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int count_; - int num_concats_; - int concat_input_size_; - int concat_axis_; -}; - -/** - * @brief Compute elementwise operations, such as product and sum, - * along multiple input Blobs. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class EltwiseLayer : public Layer { - public: - explicit EltwiseLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Eltwise"; } - virtual inline int MinBottomBlobs() const { return 2; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - EltwiseParameter_EltwiseOp op_; - vector coeffs_; - Blob max_idx_; - - bool stable_prod_grad_; -}; - -/** - * @brief A layer for learning "embeddings" of one-hot vector input. - * Equivalent to an InnerProductLayer with one-hot vectors as input, but - * for efficiency the input is the "hot" index of each column itself. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class EmbedLayer : public Layer { - public: - explicit EmbedLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Embed"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int M_; - int K_; - int N_; - bool bias_term_; - Blob bias_multiplier_; -}; - -/** - * @brief Takes two+ Blobs, interprets last Blob as a selector and - * filter remaining Blobs accordingly with selector data (0 means that - * the corresponding item has to be filtered, non-zero means that corresponding - * item needs to stay). - */ -template -class FilterLayer : public Layer { - public: - explicit FilterLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Filter"; } - virtual inline int MinBottomBlobs() const { return 2; } - virtual inline int MinTopBlobs() const { return 1; } - - protected: - /** - * @param bottom input Blob vector (length 2+) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs to be filtered @f$ x_1 @f$ - * -# ... - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs to be filtered @f$ x_K @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the selector blob - * @param top output Blob vector (length 1+) - * -# @f$ (S \times C \times H \times W) @f$ () - * the filtered output @f$ x_1 @f$ - * where S is the number of items - * that haven't been filtered - * @f$ (S \times C \times H \times W) @f$ - * the filtered output @f$ x_K @f$ - * where S is the number of items - * that haven't been filtered - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the forwarded inputs. - * - * @param top output Blob vector (length 1+), providing the error gradient with - * respect to the outputs - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 2+), into which the top error - * gradient is copied - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool first_reshape_; - vector indices_to_forward_; -}; - -/** - * @brief Reshapes the input Blob into flat vectors. - * - * Note: because this layer does not change the input values -- merely the - * dimensions -- it can simply copy the input. The copy happens "virtually" - * (thus taking effectively 0 real time) by setting, in Forward, the data - * pointer of the top Blob to that of the bottom Blob (see Blob::ShareData), - * and in Backward, the diff pointer of the bottom Blob to that of the top Blob - * (see Blob::ShareDiff). - */ -template -class FlattenLayer : public Layer { - public: - explicit FlattenLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Flatten"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - /** - * @param bottom input Blob vector (length 2+) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs - * @param top output Blob vector (length 1) - * -# @f$ (N \times CHW \times 1 \times 1) @f$ - * the outputs -- i.e., the (virtually) copied, flattened inputs - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the concatenate inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length K), into which the top error - * gradient is (virtually) copied - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -/** - * @brief Also known as a "fully-connected" layer, computes an inner product - * with a set of learned weights, and (optionally) adds biases. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class InnerProductLayer : public Layer { - public: - explicit InnerProductLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "InnerProduct"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int M_; - int K_; - int N_; - bool bias_term_; - Blob bias_multiplier_; -}; - -/** - * @brief Normalizes the input to have 0-mean and/or unit (1) variance. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class MVNLayer : public Layer { - public: - explicit MVNLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "MVN"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Blob mean_, variance_, temp_; - - /// sum_multiplier is used to carry out sum using BLAS - Blob sum_multiplier_; - Dtype eps_; -}; - -/* - * @brief Reshapes the input Blob into an arbitrary-sized output Blob. - * - * Note: similarly to FlattenLayer, this layer does not change the input values - * (see FlattenLayer, Blob::ShareData and Blob::ShareDiff). - */ -template -class ReshapeLayer : public Layer { - public: - explicit ReshapeLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Reshape"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top) {} - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top) {} - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - - /// @brief vector of axes indices whose dimensions we'll copy from the bottom - vector copy_axes_; - /// @brief the index of the axis whose dimension we infer, or -1 if none - int inferred_axis_; - /// @brief the product of the "constant" output dimensions - int constant_count_; -}; - -/** - * @brief Compute "reductions" -- operations that return a scalar output Blob - * for an input Blob of arbitrary size, such as the sum, absolute sum, - * and sum of squares. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class ReductionLayer : public Layer { - public: - explicit ReductionLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Reduction"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - /// @brief the reduction operation performed by the layer - ReductionParameter_ReductionOp op_; - /// @brief a scalar coefficient applied to all outputs - Dtype coeff_; - /// @brief the index of the first input axis to reduce - int axis_; - /// @brief the number of reductions performed - int num_; - /// @brief the input size of each reduction - int dim_; - /// @brief a helper Blob used for summation (op_ == SUM) - Blob sum_multiplier_; -}; - -/** - * @brief Ignores bottom blobs while producing no top blobs. (This is useful - * to suppress outputs during testing.) - */ -template -class SilenceLayer : public Layer { - public: - explicit SilenceLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top) {} - - virtual inline const char* type() const { return "Silence"; } - virtual inline int MinBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 0; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top) {} - // We can't define Forward_gpu here, since STUB_GPU will provide - // its own definition for CPU_ONLY mode. - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -/** - * @brief Computes the softmax function. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class SoftmaxLayer : public Layer { - public: - explicit SoftmaxLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Softmax"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int outer_num_; - int inner_num_; - int softmax_axis_; - /// sum_multiplier is used to carry out sum using BLAS - Blob sum_multiplier_; - /// scale is an intermediate Blob to hold temporary results. - Blob scale_; -}; - -#ifdef USE_CUDNN -/** - * @brief cuDNN implementation of SoftmaxLayer. - * Fallback to SoftmaxLayer for CPU mode. - */ -template -class CuDNNSoftmaxLayer : public SoftmaxLayer { - public: - explicit CuDNNSoftmaxLayer(const LayerParameter& param) - : SoftmaxLayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNSoftmaxLayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnTensorDescriptor_t bottom_desc_; - cudnnTensorDescriptor_t top_desc_; -}; -#endif - -/** - * @brief Creates a "split" path in the network by copying the bottom Blob - * into multiple top Blob%s to be used by multiple consuming layers. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class SplitLayer : public Layer { - public: - explicit SplitLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Split"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int MinTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int count_; -}; - -/** - * @brief Takes a Blob and slices it along either the num or channel dimension, - * outputting multiple sliced Blob results. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class SliceLayer : public Layer { - public: - explicit SliceLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Slice"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int MinTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int count_; - int num_slices_; - int slice_size_; - int slice_axis_; - vector slice_point_; -}; - -/** - * @brief Copy a Blob along specified dimensions. - */ -template -class TileLayer : public Layer { - public: - explicit TileLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Tile"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - unsigned int axis_, tiles_, outer_dim_, inner_dim_; -}; - -} // namespace caffe - -#endif // CAFFE_COMMON_LAYERS_HPP_ diff --git a/include/caffe/data_layers.hpp b/include/caffe/data_layers.hpp deleted file mode 100644 index aa0ab7df3..000000000 --- a/include/caffe/data_layers.hpp +++ /dev/null @@ -1,347 +0,0 @@ -#ifndef CAFFE_DATA_LAYERS_HPP_ -#define CAFFE_DATA_LAYERS_HPP_ - -#include -#include -#include -#include "hdf5.h" - -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/data_reader.hpp" -#include "caffe/data_transformer.hpp" -#include "caffe/filler.hpp" -#include "caffe/internal_thread.hpp" -#include "caffe/layer.hpp" -#include "caffe/proto/caffe.pb.h" -#include "caffe/util/blocking_queue.hpp" -#include "caffe/util/db.hpp" - -#define HDF5_DATA_DATASET_NAME "data" -#define HDF5_DATA_LABEL_NAME "label" - -namespace caffe { - -/** - * @brief Provides base for data layers that feed blobs to the Net. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class BaseDataLayer : public Layer { - public: - explicit BaseDataLayer(const LayerParameter& param); - // LayerSetUp: implements common data layer setup functionality, and calls - // DataLayerSetUp to do special data layer setup for individual layer types. - // This method may not be overridden except by the BasePrefetchingDataLayer. - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } - virtual void DataLayerSetUp(const vector*>& bottom, - const vector*>& top) {} - // Data layers have no bottoms, so reshaping is trivial. - virtual void Reshape(const vector*>& bottom, - const vector*>& top) {} - - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - - protected: - TransformationParameter transform_param_; - shared_ptr > data_transformer_; - bool output_labels_; -}; - -template -class Batch { - public: - Blob data_, label_; -}; - -template -class BasePrefetchingDataLayer : - public BaseDataLayer, public InternalThread { - public: - explicit BasePrefetchingDataLayer(const LayerParameter& param); - // LayerSetUp: implements common data layer setup functionality, and calls - // DataLayerSetUp to do special data layer setup for individual layer types. - // This method may not be overridden. - void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - // Prefetches batches (asynchronously if to GPU memory) - static const int PREFETCH_COUNT = 3; - - protected: - virtual void InternalThreadEntry(); - virtual void load_batch(Batch* batch) = 0; - - Batch prefetch_[PREFETCH_COUNT]; - BlockingQueue*> prefetch_free_; - BlockingQueue*> prefetch_full_; - - Blob transformed_data_; -}; - -template -class DataLayer : public BasePrefetchingDataLayer { - public: - explicit DataLayer(const LayerParameter& param); - virtual ~DataLayer(); - virtual void DataLayerSetUp(const vector*>& bottom, - const vector*>& top); - // DataLayer uses DataReader instead for sharing for parallelism - virtual inline bool ShareInParallel() const { return false; } - virtual inline const char* type() const { return "Data"; } - virtual inline int ExactNumBottomBlobs() const { return 0; } - virtual inline int MinTopBlobs() const { return 1; } - virtual inline int MaxTopBlobs() const { return 2; } - - protected: - virtual void load_batch(Batch* batch); - - DataReader reader_; -}; - -/** - * @brief Provides data to the Net generated by a Filler. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class DummyDataLayer : public Layer { - public: - explicit DummyDataLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } - // Data layers have no bottoms, so reshaping is trivial. - virtual void Reshape(const vector*>& bottom, - const vector*>& top) {} - - virtual inline const char* type() const { return "DummyData"; } - virtual inline int ExactNumBottomBlobs() const { return 0; } - virtual inline int MinTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - - vector > > fillers_; - vector refill_; -}; - -/** - * @brief Provides data to the Net from HDF5 files. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class HDF5DataLayer : public Layer { - public: - explicit HDF5DataLayer(const LayerParameter& param) - : Layer(param) {} - virtual ~HDF5DataLayer(); - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } - // Data layers have no bottoms, so reshaping is trivial. - virtual void Reshape(const vector*>& bottom, - const vector*>& top) {} - - virtual inline const char* type() const { return "HDF5Data"; } - virtual inline int ExactNumBottomBlobs() const { return 0; } - virtual inline int MinTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) {} - virtual void LoadHDF5FileData(const char* filename); - - std::vector hdf_filenames_; - unsigned int num_files_; - unsigned int current_file_; - hsize_t current_row_; - std::vector > > hdf_blobs_; - std::vector data_permutation_; - std::vector file_permutation_; -}; - -/** - * @brief Write blobs to disk as HDF5 files. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class HDF5OutputLayer : public Layer { - public: - explicit HDF5OutputLayer(const LayerParameter& param) - : Layer(param), file_opened_(false) {} - virtual ~HDF5OutputLayer(); - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } - // Data layers have no bottoms, so reshaping is trivial. - virtual void Reshape(const vector*>& bottom, - const vector*>& top) {} - - virtual inline const char* type() const { return "HDF5Output"; } - // TODO: no limit on the number of blobs - virtual inline int ExactNumBottomBlobs() const { return 2; } - virtual inline int ExactNumTopBlobs() const { return 0; } - - inline std::string file_name() const { return file_name_; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void SaveBlobs(); - - bool file_opened_; - std::string file_name_; - hid_t file_id_; - Blob data_blob_; - Blob label_blob_; -}; - -/** - * @brief Provides data to the Net from image files. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class ImageDataLayer : public BasePrefetchingDataLayer { - public: - explicit ImageDataLayer(const LayerParameter& param) - : BasePrefetchingDataLayer(param) {} - virtual ~ImageDataLayer(); - virtual void DataLayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "ImageData"; } - virtual inline int ExactNumBottomBlobs() const { return 0; } - virtual inline int ExactNumTopBlobs() const { return 2; } - - protected: - shared_ptr prefetch_rng_; - virtual void ShuffleImages(); - virtual void load_batch(Batch* batch); - - vector > lines_; - int lines_id_; -}; - -/** - * @brief Provides data to the Net from memory. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class MemoryDataLayer : public BaseDataLayer { - public: - explicit MemoryDataLayer(const LayerParameter& param) - : BaseDataLayer(param), has_new_data_(false) {} - virtual void DataLayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "MemoryData"; } - virtual inline int ExactNumBottomBlobs() const { return 0; } - virtual inline int ExactNumTopBlobs() const { return 2; } - - virtual void AddDatumVector(const vector& datum_vector); -#ifdef USE_OPENCV - virtual void AddMatVector(const vector& mat_vector, - const vector& labels); -#endif // USE_OPENCV - - // Reset should accept const pointers, but can't, because the memory - // will be given to Blob, which is mutable - void Reset(Dtype* data, Dtype* label, int n); - void set_batch_size(int new_size); - - int batch_size() { return batch_size_; } - int channels() { return channels_; } - int height() { return height_; } - int width() { return width_; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - int batch_size_, channels_, height_, width_, size_; - Dtype* data_; - Dtype* labels_; - int n_; - size_t pos_; - Blob added_data_; - Blob added_label_; - bool has_new_data_; -}; - -/** - * @brief Provides data to the Net from windows of images files, specified - * by a window data file. - * - * TODO(dox): thorough documentation for Forward and proto params. - */ -template -class WindowDataLayer : public BasePrefetchingDataLayer { - public: - explicit WindowDataLayer(const LayerParameter& param) - : BasePrefetchingDataLayer(param) {} - virtual ~WindowDataLayer(); - virtual void DataLayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "WindowData"; } - virtual inline int ExactNumBottomBlobs() const { return 0; } - virtual inline int ExactNumTopBlobs() const { return 2; } - - protected: - virtual unsigned int PrefetchRand(); - virtual void load_batch(Batch* batch); - - shared_ptr prefetch_rng_; - vector > > image_database_; - enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM }; - vector > fg_windows_; - vector > bg_windows_; - Blob data_mean_; - vector mean_values_; - bool has_mean_file_; - bool has_mean_values_; - bool cache_images_; - vector > image_database_cache_; -}; - -} // namespace caffe - -#endif // CAFFE_DATA_LAYERS_HPP_ diff --git a/include/caffe/layer_factory.hpp b/include/caffe/layer_factory.hpp index 2c2fde4d9..f385afccf 100644 --- a/include/caffe/layer_factory.hpp +++ b/include/caffe/layer_factory.hpp @@ -44,6 +44,7 @@ #include #include "caffe/common.hpp" +#include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" namespace caffe { diff --git a/include/caffe/layers/absval_layer.hpp b/include/caffe/layers/absval_layer.hpp new file mode 100644 index 000000000..9b5305dce --- /dev/null +++ b/include/caffe/layers/absval_layer.hpp @@ -0,0 +1,68 @@ +#ifndef CAFFE_ABSVAL_LAYER_HPP_ +#define CAFFE_ABSVAL_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = |x| @f$ + * + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ y = |x| @f$ + */ +template +class AbsValLayer : public NeuronLayer { + public: + explicit AbsValLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "AbsVal"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /// @copydoc AbsValLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the absolute value inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \mathrm{sign}(x) \frac{\partial E}{\partial y} + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_ABSVAL_LAYER_HPP_ diff --git a/include/caffe/layers/accuracy_layer.hpp b/include/caffe/layers/accuracy_layer.hpp new file mode 100644 index 000000000..fe2adb939 --- /dev/null +++ b/include/caffe/layers/accuracy_layer.hpp @@ -0,0 +1,95 @@ +#ifndef CAFFE_ACCURACY_LAYER_HPP_ +#define CAFFE_ACCURACY_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the classification accuracy for a one-of-many + * classification task. + */ +template +class AccuracyLayer : public Layer { + public: + /** + * @param param provides AccuracyParameter accuracy_param, + * with AccuracyLayer options: + * - top_k (\b optional, default 1). + * Sets the maximum rank @f$ k @f$ at which a prediction is considered + * correct. For example, if @f$ k = 5 @f$, a prediction is counted + * correct if the correct label is among the top 5 predicted labels. + */ + explicit AccuracyLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Accuracy"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + + // If there are two top blobs, then the second blob will contain + // accuracies per class. + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlos() const { return 2; } + + protected: + /** + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ x @f$, a Blob with values in + * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of + * the @f$ K = CHW @f$ classes. Each @f$ x_n @f$ is mapped to a predicted + * label @f$ \hat{l}_n @f$ given by its maximal index: + * @f$ \hat{l}_n = \arg\max\limits_k x_{nk} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed accuracy: @f$ + * \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} + * @f$, where @f$ + * \delta\{\mathrm{condition}\} = \left\{ + * \begin{array}{lr} + * 1 & \mbox{if condition} \\ + * 0 & \mbox{otherwise} + * \end{array} \right. + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + + /// @brief Not implemented -- AccuracyLayer cannot be used as a loss. + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + for (int i = 0; i < propagate_down.size(); ++i) { + if (propagate_down[i]) { NOT_IMPLEMENTED; } + } + } + + int label_axis_, outer_num_, inner_num_; + + int top_k_; + + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// Keeps counts of the number of samples per class. + Blob nums_buffer_; +}; + +} // namespace caffe + +#endif // CAFFE_ACCURACY_LAYER_HPP_ diff --git a/include/caffe/layers/argmax_layer.hpp b/include/caffe/layers/argmax_layer.hpp new file mode 100644 index 000000000..4fef363e8 --- /dev/null +++ b/include/caffe/layers/argmax_layer.hpp @@ -0,0 +1,77 @@ +#ifndef CAFFE_ARGMAX_LAYER_HPP_ +#define CAFFE_ARGMAX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Compute the index of the @f$ K @f$ max values for each datum across + * all dimensions @f$ (C \times H \times W) @f$. + * + * Intended for use after a classification layer to produce a prediction. + * If parameter out_max_val is set to true, output is a vector of pairs + * (max_ind, max_val) for each image. The axis parameter specifies an axis + * along which to maximise. + * + * NOTE: does not implement Backwards operation. + */ +template +class ArgMaxLayer : public Layer { + public: + /** + * @param param provides ArgMaxParameter argmax_param, + * with ArgMaxLayer options: + * - top_k (\b optional uint, default 1). + * the number @f$ K @f$ of maximal items to output. + * - out_max_val (\b optional bool, default false). + * if set, output a vector of pairs (max_ind, max_val) unless axis is set then + * output max_val along the specified axis. + * - axis (\b optional int). + * if set, maximise along the specified axis else maximise the flattened + * trailing dimensions for each index of the first / num dimension. + */ + explicit ArgMaxLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "ArgMax"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times 1 \times K) @f$ or, if out_max_val + * @f$ (N \times 2 \times K) @f$ unless axis set than e.g. + * @f$ (N \times K \times H \times W) @f$ if axis == 1 + * the computed outputs @f$ + * y_n = \arg\max\limits_i x_{ni} + * @f$ (for @f$ K = 1 @f$). + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + /// @brief Not implemented (non-differentiable function) + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + NOT_IMPLEMENTED; + } + bool out_max_val_; + size_t top_k_; + bool has_axis_; + int axis_; +}; + +} // namespace caffe + +#endif // CAFFE_ARGMAX_LAYER_HPP_ diff --git a/include/caffe/layers/base_conv_layer.hpp b/include/caffe/layers/base_conv_layer.hpp new file mode 100644 index 000000000..f3def16c0 --- /dev/null +++ b/include/caffe/layers/base_conv_layer.hpp @@ -0,0 +1,168 @@ +#ifndef CAFFE_BASE_CONVOLUTION_LAYER_HPP_ +#define CAFFE_BASE_CONVOLUTION_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/im2col.hpp" + +namespace caffe { + +/** + * @brief Abstract base class that factors out the BLAS code common to + * ConvolutionLayer and DeconvolutionLayer. + */ +template +class BaseConvolutionLayer : public Layer { + public: + explicit BaseConvolutionLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline bool EqualNumBottomTopBlobs() const { return true; } + + protected: + // Helper functions that abstract away the column buffer and gemm arguments. + // The last argument in forward_cpu_gemm is so that we can skip the im2col if + // we just called weight_cpu_gemm with the same input. + void forward_cpu_gemm(const Dtype* input, const Dtype* weights, + Dtype* output, bool skip_im2col = false); + void forward_cpu_bias(Dtype* output, const Dtype* bias); + void backward_cpu_gemm(const Dtype* input, const Dtype* weights, + Dtype* output); + void weight_cpu_gemm(const Dtype* input, const Dtype* output, Dtype* + weights); + void backward_cpu_bias(Dtype* bias, const Dtype* input); + +#ifndef CPU_ONLY + void forward_gpu_gemm(const Dtype* col_input, const Dtype* weights, + Dtype* output, bool skip_im2col = false); + void forward_gpu_bias(Dtype* output, const Dtype* bias); + void backward_gpu_gemm(const Dtype* input, const Dtype* weights, + Dtype* col_output); + void weight_gpu_gemm(const Dtype* col_input, const Dtype* output, Dtype* + weights); + void backward_gpu_bias(Dtype* bias, const Dtype* input); +#endif + + /// @brief The spatial dimensions of the input. + inline int input_shape(int i) { + return (*bottom_shape_)[channel_axis_ + i]; + } + // reverse_dimensions should return true iff we are implementing deconv, so + // that conv helpers know which dimensions are which. + virtual bool reverse_dimensions() = 0; + // Compute height_out_ and width_out_ from other parameters. + virtual void compute_output_shape() = 0; + + /// @brief The spatial dimensions of a filter kernel. + Blob kernel_shape_; + /// @brief The spatial dimensions of the stride. + Blob stride_; + /// @brief The spatial dimensions of the padding. + Blob pad_; + /// @brief The spatial dimensions of the convolution input. + Blob conv_input_shape_; + /// @brief The spatial dimensions of the col_buffer. + vector col_buffer_shape_; + /// @brief The spatial dimensions of the output. + vector output_shape_; + const vector* bottom_shape_; + + int num_spatial_axes_; + int bottom_dim_; + int top_dim_; + + int channel_axis_; + int num_; + int channels_; + int group_; + int out_spatial_dim_; + int weight_offset_; + int num_output_; + bool bias_term_; + bool is_1x1_; + bool force_nd_im2col_; + + private: + // wrap im2col/col2im so we don't have to remember the (long) argument lists + inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_cpu(data, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); + } else { + im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(), + col_buffer_shape_.data(), kernel_shape_.cpu_data(), + pad_.cpu_data(), stride_.cpu_data(), col_buff); + } + } + inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_cpu(col_buff, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], data); + } else { + col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(), + col_buffer_shape_.data(), kernel_shape_.cpu_data(), + pad_.cpu_data(), stride_.cpu_data(), data); + } + } +#ifndef CPU_ONLY + inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + im2col_gpu(data, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); + } else { + im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_, + conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), + kernel_shape_.gpu_data(), pad_.gpu_data(), + stride_.gpu_data(), col_buff); + } + } + inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) { + if (!force_nd_im2col_ && num_spatial_axes_ == 2) { + col2im_gpu(col_buff, conv_in_channels_, + conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], + kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], + pad_.cpu_data()[0], pad_.cpu_data()[1], + stride_.cpu_data()[0], stride_.cpu_data()[1], data); + } else { + col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_, + conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), + kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), + data); + } + } +#endif + + int num_kernels_im2col_; + int num_kernels_col2im_; + int conv_out_channels_; + int conv_in_channels_; + int conv_out_spatial_dim_; + int kernel_dim_; + int col_offset_; + int output_offset_; + + Blob col_buffer_; + Blob bias_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_BASE_CONVOLUTION_LAYER_HPP_ diff --git a/include/caffe/layers/base_data_layer.hpp b/include/caffe/layers/base_data_layer.hpp new file mode 100644 index 000000000..2c49b7318 --- /dev/null +++ b/include/caffe/layers/base_data_layer.hpp @@ -0,0 +1,86 @@ +#ifndef CAFFE_DATA_LAYERS_HPP_ +#define CAFFE_DATA_LAYERS_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/blocking_queue.hpp" + +namespace caffe { + +/** + * @brief Provides base for data layers that feed blobs to the Net. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class BaseDataLayer : public Layer { + public: + explicit BaseDataLayer(const LayerParameter& param); + // LayerSetUp: implements common data layer setup functionality, and calls + // DataLayerSetUp to do special data layer setup for individual layer types. + // This method may not be overridden except by the BasePrefetchingDataLayer. + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers should be shared by multiple solvers in parallel + virtual inline bool ShareInParallel() const { return true; } + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top) {} + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + + protected: + TransformationParameter transform_param_; + shared_ptr > data_transformer_; + bool output_labels_; +}; + +template +class Batch { + public: + Blob data_, label_; +}; + +template +class BasePrefetchingDataLayer : + public BaseDataLayer, public InternalThread { + public: + explicit BasePrefetchingDataLayer(const LayerParameter& param); + // LayerSetUp: implements common data layer setup functionality, and calls + // DataLayerSetUp to do special data layer setup for individual layer types. + // This method may not be overridden. + void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + // Prefetches batches (asynchronously if to GPU memory) + static const int PREFETCH_COUNT = 3; + + protected: + virtual void InternalThreadEntry(); + virtual void load_batch(Batch* batch) = 0; + + Batch prefetch_[PREFETCH_COUNT]; + BlockingQueue*> prefetch_free_; + BlockingQueue*> prefetch_full_; + + Blob transformed_data_; +}; + +} // namespace caffe + +#endif // CAFFE_DATA_LAYERS_HPP_ diff --git a/include/caffe/layers/batch_norm_layer.hpp b/include/caffe/layers/batch_norm_layer.hpp new file mode 100644 index 000000000..9b2d5126e --- /dev/null +++ b/include/caffe/layers/batch_norm_layer.hpp @@ -0,0 +1,81 @@ +#ifndef CAFFE_BATCHNORM_LAYER_HPP_ +#define CAFFE_BATCHNORM_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Normalizes the input to have 0-mean and/or unit (1) variance across + * the batch. + * + * This layer computes Batch Normalization described in [1]. For + * each channel in the data (i.e. axis 1), it subtracts the mean and divides + * by the variance, where both statistics are computed across both spatial + * dimensions and across the different examples in the batch. + * + * By default, during training time, the network is computing global mean/ + * variance statistics via a running average, which is then used at test + * time to allow deterministic outputs for each input. You can manually + * toggle whether the network is accumulating or using the statistics via the + * use_global_stats option. IMPORTANT: for this feature to work, you MUST + * set the learning rate to zero for all three parameter blobs, i.e., + * param {lr_mult: 0} three times in the layer definition. + * + * Note that the original paper also included a per-channel learned bias and + * scaling factor. It is possible (though a bit cumbersome) to implement + * this in caffe using a single-channel DummyDataLayer filled with zeros, + * followed by a Convolution layer with output the same size as the current. + * This produces a channel-specific value that can be added or multiplied by + * the BatchNorm layer's output. + * + * [1] S. Ioffe and C. Szegedy, "Batch Normalization: Accelerating Deep Network + * Training by Reducing Internal Covariate Shift." arXiv preprint + * arXiv:1502.03167 (2015). + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class BatchNormLayer : public Layer { + public: + explicit BatchNormLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "BatchNorm"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob mean_, variance_, temp_, x_norm_; + bool use_global_stats_; + Dtype moving_average_fraction_; + int channels_; + Dtype eps_; + + // extra temporarary variables is used to carry out sums/broadcasting + // using BLAS + Blob batch_sum_multiplier_; + Blob num_by_chans_; + Blob spatial_sum_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_BATCHNORM_LAYER_HPP_ diff --git a/include/caffe/layers/batch_reindex_layer.hpp b/include/caffe/layers/batch_reindex_layer.hpp new file mode 100644 index 000000000..ebb3a567b --- /dev/null +++ b/include/caffe/layers/batch_reindex_layer.hpp @@ -0,0 +1,83 @@ +#ifndef CAFFE_BATCHREINDEX_LAYER_HPP_ +#define CAFFE_BATCHREINDEX_LAYER_HPP_ + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Index into the input blob along its first axis. + * + * This layer can be used to select, reorder, and even replicate examples in a + * batch. The second blob is cast to int and treated as an index into the + * first axis of the first blob. + */ +template +class BatchReindexLayer : public Layer { + public: + explicit BatchReindexLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "BatchReindex"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times ...) @f$ + * the inputs @f$ x_1 @f$ + * -# @f$ (M) @f$ + * the inputs @f$ x_2 @f$ + * @param top output Blob vector (length 1) + * -# @f$ (M \times ...) @f$: + * the reindexed array @f$ + * y = x_1[x_2] + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the reordered input. + * + * @param top output Blob vector (length 1), providing the error gradient + * with respect to the outputs + * -# @f$ (M \times ...) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to concatenated outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2): + * - @f$ \frac{\partial E}{\partial y} @f$ is de-indexed (summing where + * required) back to the input x_1 + * - This layer cannot backprop to x_2, i.e. propagate_down[1] must be + * false. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + private: + struct pair_sort_first { + bool operator()(const std::pair &left, + const std::pair &right) { + return left.first < right.first; + } + }; + void check_batch_reindex(int initial_num, int final_num, + const Dtype* ridx_data); +}; + +} // namespace caffe + +#endif // CAFFE_BATCHREINDEX_LAYER_HPP_ diff --git a/include/caffe/layers/bnll_layer.hpp b/include/caffe/layers/bnll_layer.hpp new file mode 100644 index 000000000..be07c7483 --- /dev/null +++ b/include/caffe/layers/bnll_layer.hpp @@ -0,0 +1,70 @@ +#ifndef CAFFE_BNLL_LAYER_HPP_ +#define CAFFE_BNLL_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = x + \log(1 + \exp(-x)) @f$ if @f$ x > 0 @f$; + * @f$ y = \log(1 + \exp(x)) @f$ otherwise. + * + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \left\{ + * \begin{array}{ll} + * x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ + * \log(1 + \exp(x)) & \mbox{otherwise} + * \end{array} \right. + * @f$ + */ +template +class BNLLLayer : public NeuronLayer { + public: + explicit BNLLLayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "BNLL"; } + + protected: + /// @copydoc BNLLLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the BNLL inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_BNLL_LAYER_HPP_ diff --git a/include/caffe/layers/concat_layer.hpp b/include/caffe/layers/concat_layer.hpp new file mode 100644 index 000000000..a15702491 --- /dev/null +++ b/include/caffe/layers/concat_layer.hpp @@ -0,0 +1,87 @@ +#ifndef CAFFE_CONCAT_LAYER_HPP_ +#define CAFFE_CONCAT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes at least two Blob%s and concatenates them along either the num + * or channel dimension, outputting the result. + */ +template +class ConcatLayer : public Layer { + public: + explicit ConcatLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Concat"; } + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x_1 @f$ + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x_2 @f$ + * -# ... + * - K @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x_K @f$ + * @param top output Blob vector (length 1) + * -# @f$ (KN \times C \times H \times W) @f$ if axis == 0, or + * @f$ (N \times KC \times H \times W) @f$ if axis == 1: + * the concatenated output @f$ + * y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the concatenate inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (KN \times C \times H \times W) @f$ if axis == 0, or + * @f$ (N \times KC \times H \times W) @f$ if axis == 1: + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to concatenated outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length K), into which the top gradient + * @f$ \frac{\partial E}{\partial y} @f$ is deconcatenated back to the + * inputs @f$ + * \left[ \begin{array}{cccc} + * \frac{\partial E}{\partial x_1} & + * \frac{\partial E}{\partial x_2} & + * ... & + * \frac{\partial E}{\partial x_K} + * \end{array} \right] = + * \frac{\partial E}{\partial y} + * @f$ + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int count_; + int num_concats_; + int concat_input_size_; + int concat_axis_; +}; + +} // namespace caffe + +#endif // CAFFE_CONCAT_LAYER_HPP_ diff --git a/include/caffe/layers/contrastive_loss_layer.hpp b/include/caffe/layers/contrastive_loss_layer.hpp new file mode 100644 index 000000000..e890afb82 --- /dev/null +++ b/include/caffe/layers/contrastive_loss_layer.hpp @@ -0,0 +1,101 @@ +#ifndef CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_ +#define CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the contrastive loss @f$ + * E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + + * \left(1-y\right) \max \left(margin-d, 0\right)^2 + * @f$ where @f$ + * d = \left| \left| a_n - b_n \right| \right|_2 @f$. This can be + * used to train siamese networks. + * + * @param bottom input Blob vector (length 3) + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$ a \in [-\infty, +\infty]@f$ + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$ b \in [-\infty, +\infty]@f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the binary similarity @f$ s \in [0, 1]@f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed contrastive loss: @f$ E = + * \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + + * \left(1-y\right) \max \left(margin-d, 0\right)^2 + * @f$ where @f$ + * d = \left| \left| a_n - b_n \right| \right|_2 @f$. + * This can be used to train siamese networks. + */ +template +class ContrastiveLossLayer : public LossLayer { + public: + explicit ContrastiveLossLayer(const LayerParameter& param) + : LossLayer(param), diff_() {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline int ExactNumBottomBlobs() const { return 3; } + virtual inline const char* type() const { return "ContrastiveLoss"; } + /** + * Unlike most loss layers, in the ContrastiveLossLayer we can backpropagate + * to the first two inputs. + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return bottom_index != 2; + } + + protected: + /// @copydoc ContrastiveLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the Contrastive error gradient w.r.t. the inputs. + * + * Computes the gradients with respect to the two input vectors (bottom[0] and + * bottom[1]), but not the similarity label (bottom[2]). + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$a@f$; Backward fills their diff with + * gradients if propagate_down[0] + * -# @f$ (N \times C \times 1 \times 1) @f$ + * the features @f$b@f$; Backward fills their diff with gradients if + * propagate_down[1] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob diff_; // cached for backward pass + Blob dist_sq_; // cached for backward pass + Blob diff_sq_; // tmp storage for gpu forward pass + Blob summer_vec_; // tmp storage for gpu forward pass +}; + +} // namespace caffe + +#endif // CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/conv_layer.hpp b/include/caffe/layers/conv_layer.hpp new file mode 100644 index 000000000..15574766d --- /dev/null +++ b/include/caffe/layers/conv_layer.hpp @@ -0,0 +1,81 @@ +#ifndef CAFFE_CONV_LAYER_HPP_ +#define CAFFE_CONV_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_conv_layer.hpp" + +namespace caffe { + +/** + * @brief Convolves the input image with a bank of learned filters, + * and (optionally) adds biases. + * + * Caffe convolves by reduction to matrix multiplication. This achieves + * high-throughput and generality of input and filter dimensions but comes at + * the cost of memory for matrices. This makes use of efficiency in BLAS. + * + * The input is "im2col" transformed to a channel K' x H x W data matrix + * for multiplication with the N x K' x H x W filter matrix to yield a + * N' x H x W output matrix that is then "col2im" restored. K' is the + * input channel * kernel height * kernel width dimension of the unrolled + * inputs so that the im2col matrix has a column for each input region to + * be filtered. col2im restores the output spatial structure by rolling up + * the output channel N' columns of the output matrix. + */ +template +class ConvolutionLayer : public BaseConvolutionLayer { + public: + /** + * @param param provides ConvolutionParameter convolution_param, + * with ConvolutionLayer options: + * - num_output. The number of filters. + * - kernel_size / kernel_h / kernel_w. The filter dimensions, given by + * kernel_size for square filters or kernel_h and kernel_w for rectangular + * filters. + * - stride / stride_h / stride_w (\b optional, default 1). The filter + * stride, given by stride_size for equal dimensions or stride_h and stride_w + * for different strides. By default the convolution is dense with stride 1. + * - pad / pad_h / pad_w (\b optional, default 0). The zero-padding for + * convolution, given by pad for equal dimensions or pad_h and pad_w for + * different padding. Input padding is computed implicitly instead of + * actually padding. + * - group (\b optional, default 1). The number of filter groups. Group + * convolution is a method for reducing parameterization by selectively + * connecting input and output channels. The input and output channel dimensions must be divisible + * by the number of groups. For group @f$ \geq 1 @f$, the + * convolutional filters' input and output channels are separated s.t. each + * group takes 1 / group of the input channels and makes 1 / group of the + * output channels. Concretely 4 input channels, 8 output channels, and + * 2 groups separate input channels 1-2 and output channels 1-4 into the + * first group and input channels 3-4 and output channels 5-8 into the second + * group. + * - bias_term (\b optional, default true). Whether to have a bias. + * - engine: convolution has CAFFE (matrix multiplication) and CUDNN (library + * kernels + stream parallelism) engines. + */ + explicit ConvolutionLayer(const LayerParameter& param) + : BaseConvolutionLayer(param) {} + + virtual inline const char* type() const { return "Convolution"; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual inline bool reverse_dimensions() { return false; } + virtual void compute_output_shape(); +}; + +} // namespace caffe + +#endif // CAFFE_CONV_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_conv_layer.hpp b/include/caffe/layers/cudnn_conv_layer.hpp new file mode 100644 index 000000000..31fe49a71 --- /dev/null +++ b/include/caffe/layers/cudnn_conv_layer.hpp @@ -0,0 +1,72 @@ +#ifndef CAFFE_CUDNN_CONV_LAYER_HPP_ +#define CAFFE_CUDNN_CONV_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/conv_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/* + * @brief cuDNN implementation of ConvolutionLayer. + * Fallback to ConvolutionLayer for CPU mode. + * + * cuDNN accelerates convolution through forward kernels for filtering and bias + * plus backward kernels for the gradient w.r.t. the filters, biases, and + * inputs. Caffe + cuDNN further speeds up the computation through forward + * parallelism across groups and backward parallelism across gradients. + * + * The CUDNN engine does not have memory overhead for matrix buffers. For many + * input and filter regimes the CUDNN engine is faster than the CAFFE engine, + * but for fully-convolutional models and large inputs the CAFFE engine can be + * faster as long as it fits in memory. +*/ +template +class CuDNNConvolutionLayer : public ConvolutionLayer { + public: + explicit CuDNNConvolutionLayer(const LayerParameter& param) + : ConvolutionLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNConvolutionLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t* handle_; + cudaStream_t* stream_; + + // algorithms for forward and backwards convolutions + cudnnConvolutionFwdAlgo_t *fwd_algo_; + cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_; + cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_; + + vector bottom_descs_, top_descs_; + cudnnTensorDescriptor_t bias_desc_; + cudnnFilterDescriptor_t filter_desc_; + vector conv_descs_; + int bottom_offset_, top_offset_, bias_offset_; + + size_t *workspace_fwd_sizes_; + size_t *workspace_bwd_data_sizes_; + size_t *workspace_bwd_filter_sizes_; + size_t workspaceSizeInBytes; // size of underlying storage + void *workspaceData; // underlying storage + void **workspace; // aliases into workspaceData +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_CONV_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_lcn_layer.hpp b/include/caffe/layers/cudnn_lcn_layer.hpp new file mode 100644 index 000000000..74cf4775e --- /dev/null +++ b/include/caffe/layers/cudnn_lcn_layer.hpp @@ -0,0 +1,49 @@ +#ifndef CAFFE_CUDNN_LCN_LAYER_HPP_ +#define CAFFE_CUDNN_LCN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/lrn_layer.hpp" +#include "caffe/layers/power_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +template +class CuDNNLCNLayer : public LRNLayer { + public: + explicit CuDNNLCNLayer(const LayerParameter& param) + : LRNLayer(param), handles_setup_(false), tempDataSize(0), + tempData1(NULL), tempData2(NULL) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNLCNLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnLRNDescriptor_t norm_desc_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + + int size_, pre_pad_; + Dtype alpha_, beta_, k_; + + size_t tempDataSize; + void *tempData1, *tempData2; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_LCN_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_lrn_layer.hpp b/include/caffe/layers/cudnn_lrn_layer.hpp new file mode 100644 index 000000000..000ccc365 --- /dev/null +++ b/include/caffe/layers/cudnn_lrn_layer.hpp @@ -0,0 +1,44 @@ +#ifndef CAFFE_CUDNN_LRN_LAYER_HPP_ +#define CAFFE_CUDNN_LRN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/lrn_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +template +class CuDNNLRNLayer : public LRNLayer { + public: + explicit CuDNNLRNLayer(const LayerParameter& param) + : LRNLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNLRNLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnLRNDescriptor_t norm_desc_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + + int size_; + Dtype alpha_, beta_, k_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_LRN_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_pooling_layer.hpp b/include/caffe/layers/cudnn_pooling_layer.hpp new file mode 100644 index 000000000..6d0db47d6 --- /dev/null +++ b/include/caffe/layers/cudnn_pooling_layer.hpp @@ -0,0 +1,49 @@ +#ifndef CAFFE_CUDNN_POOLING_LAYER_HPP_ +#define CAFFE_CUDNN_POOLING_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/pooling_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/* + * @brief cuDNN implementation of PoolingLayer. + * Fallback to PoolingLayer for CPU mode. +*/ +template +class CuDNNPoolingLayer : public PoolingLayer { + public: + explicit CuDNNPoolingLayer(const LayerParameter& param) + : PoolingLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNPoolingLayer(); + // Currently, cuDNN does not support the extra top blob. + virtual inline int MinTopBlobs() const { return -1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_, top_desc_; + cudnnPoolingDescriptor_t pooling_desc_; + cudnnPoolingMode_t mode_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_POOLING_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_relu_layer.hpp b/include/caffe/layers/cudnn_relu_layer.hpp new file mode 100644 index 000000000..e01f568ab --- /dev/null +++ b/include/caffe/layers/cudnn_relu_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_CUDNN_RELU_LAYER_HPP_ +#define CAFFE_CUDNN_RELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/relu_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief CuDNN acceleration of ReLULayer. + */ +template +class CuDNNReLULayer : public ReLULayer { + public: + explicit CuDNNReLULayer(const LayerParameter& param) + : ReLULayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNReLULayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_RELU_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_sigmoid_layer.hpp b/include/caffe/layers/cudnn_sigmoid_layer.hpp new file mode 100644 index 000000000..9c597958b --- /dev/null +++ b/include/caffe/layers/cudnn_sigmoid_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_CUDNN_SIGMOID_LAYER_HPP_ +#define CAFFE_CUDNN_SIGMOID_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief CuDNN acceleration of SigmoidLayer. + */ +template +class CuDNNSigmoidLayer : public SigmoidLayer { + public: + explicit CuDNNSigmoidLayer(const LayerParameter& param) + : SigmoidLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNSigmoidLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_SIGMOID_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_softmax_layer.hpp b/include/caffe/layers/cudnn_softmax_layer.hpp new file mode 100644 index 000000000..174368e41 --- /dev/null +++ b/include/caffe/layers/cudnn_softmax_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_CUDNN_SOFTMAX_LAYER_HPP_ +#define CAFFE_CUDNN_SOFTMAX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/softmax_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief cuDNN implementation of SoftmaxLayer. + * Fallback to SoftmaxLayer for CPU mode. + */ +template +class CuDNNSoftmaxLayer : public SoftmaxLayer { + public: + explicit CuDNNSoftmaxLayer(const LayerParameter& param) + : SoftmaxLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNSoftmaxLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_SOFTMAX_LAYER_HPP_ diff --git a/include/caffe/layers/cudnn_tanh_layer.hpp b/include/caffe/layers/cudnn_tanh_layer.hpp new file mode 100644 index 000000000..c0f0053f7 --- /dev/null +++ b/include/caffe/layers/cudnn_tanh_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_CUDNN_TANH_LAYER_HPP_ +#define CAFFE_CUDNN_TANH_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/tanh_layer.hpp" + +namespace caffe { + +#ifdef USE_CUDNN +/** + * @brief CuDNN acceleration of TanHLayer. + */ +template +class CuDNNTanHLayer : public TanHLayer { + public: + explicit CuDNNTanHLayer(const LayerParameter& param) + : TanHLayer(param), handles_setup_(false) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual ~CuDNNTanHLayer(); + + protected: + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool handles_setup_; + cudnnHandle_t handle_; + cudnnTensorDescriptor_t bottom_desc_; + cudnnTensorDescriptor_t top_desc_; +}; +#endif + +} // namespace caffe + +#endif // CAFFE_CUDNN_TANH_LAYER_HPP_ diff --git a/include/caffe/layers/data_layer.hpp b/include/caffe/layers/data_layer.hpp new file mode 100644 index 000000000..6c361791a --- /dev/null +++ b/include/caffe/layers/data_layer.hpp @@ -0,0 +1,39 @@ +#ifndef CAFFE_DATA_LAYER_HPP_ +#define CAFFE_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/data_reader.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" + +namespace caffe { + +template +class DataLayer : public BasePrefetchingDataLayer { + public: + explicit DataLayer(const LayerParameter& param); + virtual ~DataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + // DataLayer uses DataReader instead for sharing for parallelism + virtual inline bool ShareInParallel() const { return false; } + virtual inline const char* type() const { return "Data"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + + protected: + virtual void load_batch(Batch* batch); + + DataReader reader_; +}; + +} // namespace caffe + +#endif // CAFFE_DATA_LAYER_HPP_ diff --git a/include/caffe/layers/deconv_layer.hpp b/include/caffe/layers/deconv_layer.hpp new file mode 100644 index 000000000..23ae887e6 --- /dev/null +++ b/include/caffe/layers/deconv_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_DECONV_LAYER_HPP_ +#define CAFFE_DECONV_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_conv_layer.hpp" + +namespace caffe { + +/** + * @brief Convolve the input with a bank of learned filters, and (optionally) + * add biases, treating filters and convolution parameters in the + * opposite sense as ConvolutionLayer. + * + * ConvolutionLayer computes each output value by dotting an input window with + * a filter; DeconvolutionLayer multiplies each input value by a filter + * elementwise, and sums over the resulting output windows. In other words, + * DeconvolutionLayer is ConvolutionLayer with the forward and backward passes + * reversed. DeconvolutionLayer reuses ConvolutionParameter for its + * parameters, but they take the opposite sense as in ConvolutionLayer (so + * padding is removed from the output rather than added to the input, and + * stride results in upsampling rather than downsampling). + */ +template +class DeconvolutionLayer : public BaseConvolutionLayer { + public: + explicit DeconvolutionLayer(const LayerParameter& param) + : BaseConvolutionLayer(param) {} + + virtual inline const char* type() const { return "Deconvolution"; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual inline bool reverse_dimensions() { return true; } + virtual void compute_output_shape(); +}; + +} // namespace caffe + +#endif // CAFFE_DECONV_LAYER_HPP_ diff --git a/include/caffe/layers/dropout_layer.hpp b/include/caffe/layers/dropout_layer.hpp new file mode 100644 index 000000000..e83143bc3 --- /dev/null +++ b/include/caffe/layers/dropout_layer.hpp @@ -0,0 +1,80 @@ +#ifndef CAFFE_DROPOUT_LAYER_HPP_ +#define CAFFE_DROPOUT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief During training only, sets a random portion of @f$x@f$ to 0, adjusting + * the rest of the vector magnitude accordingly. + * + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ y = |x| @f$ + */ +template +class DropoutLayer : public NeuronLayer { + public: + /** + * @param param provides DropoutParameter dropout_param, + * with DropoutLayer options: + * - dropout_ratio (\b optional, default 0.5). + * Sets the probability @f$ p @f$ that any given unit is dropped. + */ + explicit DropoutLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Dropout"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs. At training time, we have @f$ + * y_{\mbox{train}} = \left\{ + * \begin{array}{ll} + * \frac{x}{1 - p} & \mbox{if } u > p \\ + * 0 & \mbox{otherwise} + * \end{array} \right. + * @f$, where @f$ u \sim U(0, 1)@f$ is generated independently for each + * input at each iteration. At test time, we simply have + * @f$ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// when divided by UINT_MAX, the randomly generated values @f$u\sim U(0,1)@f$ + Blob rand_vec_; + /// the probability @f$ p @f$ of dropping any input + Dtype threshold_; + /// the scale for undropped inputs at train time @f$ 1 / (1 - p) @f$ + Dtype scale_; + unsigned int uint_thres_; +}; + +} // namespace caffe + +#endif // CAFFE_DROPOUT_LAYER_HPP_ diff --git a/include/caffe/layers/dummy_data_layer.hpp b/include/caffe/layers/dummy_data_layer.hpp new file mode 100644 index 000000000..4180f1d01 --- /dev/null +++ b/include/caffe/layers/dummy_data_layer.hpp @@ -0,0 +1,49 @@ +#ifndef CAFFE_DUMMY_DATA_LAYER_HPP_ +#define CAFFE_DUMMY_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net generated by a Filler. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class DummyDataLayer : public Layer { + public: + explicit DummyDataLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers should be shared by multiple solvers in parallel + virtual inline bool ShareInParallel() const { return true; } + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "DummyData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + + vector > > fillers_; + vector refill_; +}; + +} // namespace caffe + +#endif // CAFFE_DUMMY_DATA_LAYER_HPP_ diff --git a/include/caffe/layers/eltwise_layer.hpp b/include/caffe/layers/eltwise_layer.hpp new file mode 100644 index 000000000..091de8343 --- /dev/null +++ b/include/caffe/layers/eltwise_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_ELTWISE_LAYER_HPP_ +#define CAFFE_ELTWISE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Compute elementwise operations, such as product and sum, + * along multiple input Blobs. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class EltwiseLayer : public Layer { + public: + explicit EltwiseLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Eltwise"; } + virtual inline int MinBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + EltwiseParameter_EltwiseOp op_; + vector coeffs_; + Blob max_idx_; + + bool stable_prod_grad_; +}; + +} // namespace caffe + +#endif // CAFFE_ELTWISE_LAYER_HPP_ diff --git a/include/caffe/layers/embed_layer.hpp b/include/caffe/layers/embed_layer.hpp new file mode 100644 index 000000000..36137a625 --- /dev/null +++ b/include/caffe/layers/embed_layer.hpp @@ -0,0 +1,52 @@ +#ifndef CAFFE_EMBED_LAYER_HPP_ +#define CAFFE_EMBED_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief A layer for learning "embeddings" of one-hot vector input. + * Equivalent to an InnerProductLayer with one-hot vectors as input, but + * for efficiency the input is the "hot" index of each column itself. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class EmbedLayer : public Layer { + public: + explicit EmbedLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Embed"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int M_; + int K_; + int N_; + bool bias_term_; + Blob bias_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_EMBED_LAYER_HPP_ diff --git a/include/caffe/layers/euclidean_loss_layer.hpp b/include/caffe/layers/euclidean_loss_layer.hpp new file mode 100644 index 000000000..f564569e2 --- /dev/null +++ b/include/caffe/layers/euclidean_loss_layer.hpp @@ -0,0 +1,107 @@ +#ifndef CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_ +#define CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the Euclidean (L2) loss @f$ + * E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n + * \right| \right|_2^2 @f$ for real-valued regression tasks. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{y} \in [-\infty, +\infty]@f$ + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$ y \in [-\infty, +\infty]@f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed Euclidean loss: @f$ E = + * \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n + * \right| \right|_2^2 @f$ + * + * This can be used for least-squares regression tasks. An InnerProductLayer + * input to a EuclideanLossLayer exactly formulates a linear least squares + * regression problem. With non-zero weight decay the problem becomes one of + * ridge regression -- see src/caffe/test/test_sgd_solver.cpp for a concrete + * example wherein we check that the gradients computed for a Net with exactly + * this structure match hand-computed gradient formulas for ridge regression. + * + * (Note: Caffe, and SGD in general, is certainly \b not the best way to solve + * linear least squares problems! We use it only as an instructive example.) + */ +template +class EuclideanLossLayer : public LossLayer { + public: + explicit EuclideanLossLayer(const LayerParameter& param) + : LossLayer(param), diff_() {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "EuclideanLoss"; } + /** + * Unlike most loss layers, in the EuclideanLossLayer we can backpropagate + * to both inputs -- override to return true and always allow force_backward. + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return true; + } + + protected: + /// @copydoc EuclideanLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the Euclidean error gradient w.r.t. the inputs. + * + * Unlike other children of LossLayer, EuclideanLossLayer \b can compute + * gradients with respect to the label inputs bottom[1] (but still only will + * if propagate_down[1] is set, due to being produced by learnable parameters + * or if force_backward is set). In fact, this layer is "commutative" -- the + * result is the same regardless of the order of the two bottoms. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$\hat{y}@f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial \hat{y}} = + * \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) + * @f$ if propagate_down[0] + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$y@f$; Backward fills their diff with gradients + * @f$ \frac{\partial E}{\partial y} = + * \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) + * @f$ if propagate_down[1] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob diff_; +}; + +} // namespace caffe + +#endif // CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/exp_layer.hpp b/include/caffe/layers/exp_layer.hpp new file mode 100644 index 000000000..9fc8c396a --- /dev/null +++ b/include/caffe/layers/exp_layer.hpp @@ -0,0 +1,80 @@ +#ifndef CAFFE_EXP_LAYER_HPP_ +#define CAFFE_EXP_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = \gamma ^ {\alpha x + \beta} @f$, + * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, + * and base @f$ \gamma @f$. + */ +template +class ExpLayer : public NeuronLayer { + public: + /** + * @param param provides ExpParameter exp_param, + * with ExpLayer options: + * - scale (\b optional, default 1) the scale @f$ \alpha @f$ + * - shift (\b optional, default 0) the shift @f$ \beta @f$ + * - base (\b optional, default -1 for a value of @f$ e \approx 2.718 @f$) + * the base @f$ \gamma @f$ + */ + explicit ExpLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Exp"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \gamma ^ {\alpha x + \beta} + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the exp inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \frac{\partial E}{\partial y} y \alpha \log_e(gamma) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Dtype inner_scale_, outer_scale_; +}; + +} // namespace caffe + +#endif // CAFFE_EXP_LAYER_HPP_ diff --git a/include/caffe/layers/filter_layer.hpp b/include/caffe/layers/filter_layer.hpp new file mode 100644 index 000000000..e040e6661 --- /dev/null +++ b/include/caffe/layers/filter_layer.hpp @@ -0,0 +1,77 @@ +#ifndef CAFFE_FILTER_LAYER_HPP_ +#define CAFFE_FILTER_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes two+ Blobs, interprets last Blob as a selector and + * filter remaining Blobs accordingly with selector data (0 means that + * the corresponding item has to be filtered, non-zero means that corresponding + * item needs to stay). + */ +template +class FilterLayer : public Layer { + public: + explicit FilterLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Filter"; } + virtual inline int MinBottomBlobs() const { return 2; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs to be filtered @f$ x_1 @f$ + * -# ... + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs to be filtered @f$ x_K @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the selector blob + * @param top output Blob vector (length 1+) + * -# @f$ (S \times C \times H \times W) @f$ () + * the filtered output @f$ x_1 @f$ + * where S is the number of items + * that haven't been filtered + * @f$ (S \times C \times H \times W) @f$ + * the filtered output @f$ x_K @f$ + * where S is the number of items + * that haven't been filtered + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the forwarded inputs. + * + * @param top output Blob vector (length 1+), providing the error gradient with + * respect to the outputs + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 2+), into which the top error + * gradient is copied + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool first_reshape_; + vector indices_to_forward_; +}; + +} // namespace caffe + +#endif // CAFFE_FILTER_LAYER_HPP_ diff --git a/include/caffe/layers/flatten_layer.hpp b/include/caffe/layers/flatten_layer.hpp new file mode 100644 index 000000000..e494bbb58 --- /dev/null +++ b/include/caffe/layers/flatten_layer.hpp @@ -0,0 +1,61 @@ +#ifndef CAFFE_FLATTEN_LAYER_HPP_ +#define CAFFE_FLATTEN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Reshapes the input Blob into flat vectors. + * + * Note: because this layer does not change the input values -- merely the + * dimensions -- it can simply copy the input. The copy happens "virtually" + * (thus taking effectively 0 real time) by setting, in Forward, the data + * pointer of the top Blob to that of the bottom Blob (see Blob::ShareData), + * and in Backward, the diff pointer of the bottom Blob to that of the top Blob + * (see Blob::ShareDiff). + */ +template +class FlattenLayer : public Layer { + public: + explicit FlattenLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Flatten"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * @param bottom input Blob vector (length 2+) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs + * @param top output Blob vector (length 1) + * -# @f$ (N \times CHW \times 1 \times 1) @f$ + * the outputs -- i.e., the (virtually) copied, flattened inputs + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the concatenate inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length K), into which the top error + * gradient is (virtually) copied + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_FLATTEN_LAYER_HPP_ diff --git a/include/caffe/layers/hdf5_data_layer.hpp b/include/caffe/layers/hdf5_data_layer.hpp new file mode 100644 index 000000000..b04cf8e19 --- /dev/null +++ b/include/caffe/layers/hdf5_data_layer.hpp @@ -0,0 +1,62 @@ +#ifndef CAFFE_HDF5_DATA_LAYER_HPP_ +#define CAFFE_HDF5_DATA_LAYER_HPP_ + +#include "hdf5.h" + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_data_layer.hpp" + +namespace caffe { + +/** + * @brief Provides data to the Net from HDF5 files. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class HDF5DataLayer : public Layer { + public: + explicit HDF5DataLayer(const LayerParameter& param) + : Layer(param) {} + virtual ~HDF5DataLayer(); + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers should be shared by multiple solvers in parallel + virtual inline bool ShareInParallel() const { return true; } + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "HDF5Data"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void LoadHDF5FileData(const char* filename); + + std::vector hdf_filenames_; + unsigned int num_files_; + unsigned int current_file_; + hsize_t current_row_; + std::vector > > hdf_blobs_; + std::vector data_permutation_; + std::vector file_permutation_; +}; + +} // namespace caffe + +#endif // CAFFE_HDF5_DATA_LAYER_HPP_ diff --git a/include/caffe/layers/hdf5_output_layer.hpp b/include/caffe/layers/hdf5_output_layer.hpp new file mode 100644 index 000000000..487d08fc0 --- /dev/null +++ b/include/caffe/layers/hdf5_output_layer.hpp @@ -0,0 +1,64 @@ +#ifndef CAFFE_HDF5_OUTPUT_LAYER_HPP_ +#define CAFFE_HDF5_OUTPUT_LAYER_HPP_ + +#include "hdf5.h" + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +#define HDF5_DATA_DATASET_NAME "data" +#define HDF5_DATA_LABEL_NAME "label" + +/** + * @brief Write blobs to disk as HDF5 files. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class HDF5OutputLayer : public Layer { + public: + explicit HDF5OutputLayer(const LayerParameter& param) + : Layer(param), file_opened_(false) {} + virtual ~HDF5OutputLayer(); + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers should be shared by multiple solvers in parallel + virtual inline bool ShareInParallel() const { return true; } + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "HDF5Output"; } + // TODO: no limit on the number of blobs + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 0; } + + inline std::string file_name() const { return file_name_; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void SaveBlobs(); + + bool file_opened_; + std::string file_name_; + hid_t file_id_; + Blob data_blob_; + Blob label_blob_; +}; + +} // namespace caffe + +#endif // CAFFE_HDF5_OUTPUT_LAYER_HPP_ diff --git a/include/caffe/layers/hinge_loss_layer.hpp b/include/caffe/layers/hinge_loss_layer.hpp new file mode 100644 index 000000000..54e42bd44 --- /dev/null +++ b/include/caffe/layers/hinge_loss_layer.hpp @@ -0,0 +1,104 @@ +#ifndef CAFFE_HINGE_LOSS_LAYER_HPP_ +#define CAFFE_HINGE_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the hinge loss for a one-of-many classification task. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ t @f$, a Blob with values in + * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of + * the @f$ K = CHW @f$ classes. In an SVM, @f$ t @f$ is the result of + * taking the inner product @f$ X^T W @f$ of the D-dimensional features + * @f$ X \in \mathcal{R}^{D \times N} @f$ and the learned hyperplane + * parameters @f$ W \in \mathcal{R}^{D \times K} @f$, so a Net with just + * an InnerProductLayer (with num_output = D) providing predictions to a + * HingeLossLayer and no other learnable parameters or losses is + * equivalent to an SVM. + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed hinge loss: @f$ E = + * \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K + * [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p + * @f$, for the @f$ L^p @f$ norm + * (defaults to @f$ p = 1 @f$, the L1 norm; L2 norm, as in L2-SVM, + * is also available), and @f$ + * \delta\{\mathrm{condition}\} = \left\{ + * \begin{array}{lr} + * 1 & \mbox{if condition} \\ + * -1 & \mbox{otherwise} + * \end{array} \right. + * @f$ + * + * In an SVM, @f$ t \in \mathcal{R}^{N \times K} @f$ is the result of taking + * the inner product @f$ X^T W @f$ of the features + * @f$ X \in \mathcal{R}^{D \times N} @f$ + * and the learned hyperplane parameters + * @f$ W \in \mathcal{R}^{D \times K} @f$. So, a Net with just an + * InnerProductLayer (with num_output = @f$k@f$) providing predictions to a + * HingeLossLayer is equivalent to an SVM (assuming it has no other learned + * outside the InnerProductLayer and no other losses outside the + * HingeLossLayer). + */ +template +class HingeLossLayer : public LossLayer { + public: + explicit HingeLossLayer(const LayerParameter& param) + : LossLayer(param) {} + + virtual inline const char* type() const { return "HingeLoss"; } + + protected: + /// @copydoc HingeLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the hinge loss error gradient w.r.t. the predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$t@f$; Backward computes diff + * @f$ \frac{\partial E}{\partial t} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + + +} // namespace caffe + +#endif // CAFFE_HINGE_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/im2col_layer.hpp b/include/caffe/layers/im2col_layer.hpp new file mode 100644 index 000000000..1d3b2eb67 --- /dev/null +++ b/include/caffe/layers/im2col_layer.hpp @@ -0,0 +1,63 @@ +#ifndef CAFFE_IM2COL_LAYER_HPP_ +#define CAFFE_IM2COL_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief A helper for image operations that rearranges image regions into + * column vectors. Used by ConvolutionLayer to perform convolution + * by matrix multiplication. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class Im2colLayer : public Layer { + public: + explicit Im2colLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Im2col"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief The spatial dimensions of a filter kernel. + Blob kernel_shape_; + /// @brief The spatial dimensions of the stride. + Blob stride_; + /// @brief The spatial dimensions of the padding. + Blob pad_; + + int num_spatial_axes_; + int bottom_dim_; + int top_dim_; + + int channel_axis_; + int num_; + int channels_; + + bool force_nd_im2col_; +}; + +} // namespace caffe + +#endif // CAFFE_IM2COL_LAYER_HPP_ diff --git a/include/caffe/layers/image_data_layer.hpp b/include/caffe/layers/image_data_layer.hpp new file mode 100644 index 000000000..a0d3384e4 --- /dev/null +++ b/include/caffe/layers/image_data_layer.hpp @@ -0,0 +1,47 @@ +#ifndef CAFFE_IMAGE_DATA_LAYER_HPP_ +#define CAFFE_IMAGE_DATA_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net from image files. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class ImageDataLayer : public BasePrefetchingDataLayer { + public: + explicit ImageDataLayer(const LayerParameter& param) + : BasePrefetchingDataLayer(param) {} + virtual ~ImageDataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "ImageData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + protected: + shared_ptr prefetch_rng_; + virtual void ShuffleImages(); + virtual void load_batch(Batch* batch); + + vector > lines_; + int lines_id_; +}; + + +} // namespace caffe + +#endif // CAFFE_IMAGE_DATA_LAYER_HPP_ diff --git a/include/caffe/layers/infogain_loss_layer.hpp b/include/caffe/layers/infogain_loss_layer.hpp new file mode 100644 index 000000000..633f339a2 --- /dev/null +++ b/include/caffe/layers/infogain_loss_layer.hpp @@ -0,0 +1,110 @@ +#ifndef CAFFE_INFOGAIN_LOSS_LAYER_HPP_ +#define CAFFE_INFOGAIN_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief A generalization of MultinomialLogisticLossLayer that takes an + * "information gain" (infogain) matrix specifying the "value" of all label + * pairs. + * + * Equivalent to the MultinomialLogisticLossLayer if the infogain matrix is the + * identity. + * + * @param bottom input Blob vector (length 2-3) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$, a Blob with values in + * @f$ [0, 1] @f$ indicating the predicted probability of each of the + * @f$ K = CHW @f$ classes. Each prediction vector @f$ \hat{p}_n @f$ + * should sum to 1 as in a probability distribution: @f$ + * \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 @f$. + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * -# @f$ (1 \times 1 \times K \times K) @f$ + * (\b optional) the infogain matrix @f$ H @f$. This must be provided as + * the third bottom blob input if not provided as the infogain_mat in the + * InfogainLossParameter. If @f$ H = I @f$, this layer is equivalent to the + * MultinomialLogisticLossLayer. + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed infogain multinomial logistic loss: @f$ E = + * \frac{-1}{N} \sum\limits_{n=1}^N H_{l_n} \log(\hat{p}_n) = + * \frac{-1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^{K} H_{l_n,k} + * \log(\hat{p}_{n,k}) + * @f$, where @f$ H_{l_n} @f$ denotes row @f$l_n@f$ of @f$H@f$. + */ +template +class InfogainLossLayer : public LossLayer { + public: + explicit InfogainLossLayer(const LayerParameter& param) + : LossLayer(param), infogain_() {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should + // be the infogain matrix. (Otherwise the infogain matrix is loaded from a + // file specified by LayerParameter.) + virtual inline int ExactNumBottomBlobs() const { return -1; } + virtual inline int MinBottomBlobs() const { return 2; } + virtual inline int MaxBottomBlobs() const { return 3; } + + virtual inline const char* type() const { return "InfogainLoss"; } + + protected: + /// @copydoc InfogainLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the infogain loss error gradient w.r.t. the predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. (The same applies to the infogain matrix, if + * provided as bottom[2] rather than in the layer_param.) + * + * @param top output Blob vector (length 1), providing the error gradient + * with respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels (similarly for propagate_down[2] and the + * infogain matrix, if provided as bottom[2]) + * @param bottom input Blob vector (length 2-3) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$; Backward computes diff + * @f$ \frac{\partial E}{\partial \hat{p}} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + * -# @f$ (1 \times 1 \times K \times K) @f$ + * (\b optional) the information gain matrix -- ignored as its error + * gradient computation is not implemented. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob infogain_; +}; + +} // namespace caffe + +#endif // CAFFE_INFOGAIN_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/inner_product_layer.hpp b/include/caffe/layers/inner_product_layer.hpp new file mode 100644 index 000000000..250576a48 --- /dev/null +++ b/include/caffe/layers/inner_product_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_INNER_PRODUCT_LAYER_HPP_ +#define CAFFE_INNER_PRODUCT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Also known as a "fully-connected" layer, computes an inner product + * with a set of learned weights, and (optionally) adds biases. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class InnerProductLayer : public Layer { + public: + explicit InnerProductLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "InnerProduct"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int M_; + int K_; + int N_; + bool bias_term_; + Blob bias_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_INNER_PRODUCT_LAYER_HPP_ diff --git a/include/caffe/layers/log_layer.hpp b/include/caffe/layers/log_layer.hpp new file mode 100644 index 000000000..7d037d2bd --- /dev/null +++ b/include/caffe/layers/log_layer.hpp @@ -0,0 +1,82 @@ +#ifndef CAFFE_LOG_LAYER_HPP_ +#define CAFFE_LOG_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = log_{\gamma}(\alpha x + \beta) @f$, + * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, + * and base @f$ \gamma @f$. + */ +template +class LogLayer : public NeuronLayer { + public: + /** + * @param param provides LogParameter log_param, + * with LogLayer options: + * - scale (\b optional, default 1) the scale @f$ \alpha @f$ + * - shift (\b optional, default 0) the shift @f$ \beta @f$ + * - base (\b optional, default -1 for a value of @f$ e \approx 2.718 @f$) + * the base @f$ \gamma @f$ + */ + explicit LogLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Log"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = log_{\gamma}(\alpha x + \beta) + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the exp inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \frac{\partial E}{\partial y} y \alpha \log_e(gamma) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Dtype base_scale_; + Dtype input_scale_, input_shift_; + Dtype backward_num_scale_; +}; + +} // namespace caffe + +#endif // CAFFE_LOG_LAYER_HPP_ diff --git a/include/caffe/layers/loss_layer.hpp b/include/caffe/layers/loss_layer.hpp new file mode 100644 index 000000000..dbdf612c0 --- /dev/null +++ b/include/caffe/layers/loss_layer.hpp @@ -0,0 +1,53 @@ +#ifndef CAFFE_LOSS_LAYER_HPP_ +#define CAFFE_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +const float kLOG_THRESHOLD = 1e-20; + +/** + * @brief An interface for Layer%s that take two Blob%s as input -- usually + * (1) predictions and (2) ground-truth labels -- and output a + * singleton Blob representing the loss. + * + * LossLayers are typically only capable of backpropagating to their first input + * -- the predictions. + */ +template +class LossLayer : public Layer { + public: + explicit LossLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp( + const vector*>& bottom, const vector*>& top); + virtual void Reshape( + const vector*>& bottom, const vector*>& top); + + virtual inline int ExactNumBottomBlobs() const { return 2; } + + /** + * @brief For convenience and backwards compatibility, instruct the Net to + * automatically allocate a single top Blob for LossLayers, into which + * they output their singleton loss, (even if the user didn't specify + * one in the prototxt, etc.). + */ + virtual inline bool AutoTopBlobs() const { return true; } + virtual inline int ExactNumTopBlobs() const { return 1; } + /** + * We usually cannot backpropagate to the labels; ignore force_backward for + * these inputs. + */ + virtual inline bool AllowForceBackward(const int bottom_index) const { + return bottom_index != 1; + } +}; + +} // namespace caffe + +#endif // CAFFE_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/lrn_layer.hpp b/include/caffe/layers/lrn_layer.hpp new file mode 100644 index 000000000..06cf71a94 --- /dev/null +++ b/include/caffe/layers/lrn_layer.hpp @@ -0,0 +1,94 @@ +#ifndef CAFFE_LRN_LAYER_HPP_ +#define CAFFE_LRN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/eltwise_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/power_layer.hpp" +#include "caffe/layers/split_layer.hpp" + +namespace caffe { + +/** + * @brief Normalize the input in a local region across or within feature maps. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class LRNLayer : public Layer { + public: + explicit LRNLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "LRN"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + virtual void CrossChannelForward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void CrossChannelForward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void WithinChannelForward(const vector*>& bottom, + const vector*>& top); + virtual void CrossChannelBackward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void CrossChannelBackward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void WithinChannelBackward(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int size_; + int pre_pad_; + Dtype alpha_; + Dtype beta_; + Dtype k_; + int num_; + int channels_; + int height_; + int width_; + + // Fields used for normalization ACROSS_CHANNELS + // scale_ stores the intermediate summing results + Blob scale_; + + // Fields used for normalization WITHIN_CHANNEL + shared_ptr > split_layer_; + vector*> split_top_vec_; + shared_ptr > square_layer_; + Blob square_input_; + Blob square_output_; + vector*> square_bottom_vec_; + vector*> square_top_vec_; + shared_ptr > pool_layer_; + Blob pool_output_; + vector*> pool_top_vec_; + shared_ptr > power_layer_; + Blob power_output_; + vector*> power_top_vec_; + shared_ptr > product_layer_; + Blob product_input_; + vector*> product_bottom_vec_; +}; + +} // namespace caffe + +#endif // CAFFE_LRN_LAYER_HPP_ diff --git a/include/caffe/layers/memory_data_layer.hpp b/include/caffe/layers/memory_data_layer.hpp new file mode 100644 index 000000000..8abcc8c1b --- /dev/null +++ b/include/caffe/layers/memory_data_layer.hpp @@ -0,0 +1,63 @@ +#ifndef CAFFE_MEMORY_DATA_LAYER_HPP_ +#define CAFFE_MEMORY_DATA_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/base_data_layer.hpp" + +namespace caffe { + +/** + * @brief Provides data to the Net from memory. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class MemoryDataLayer : public BaseDataLayer { + public: + explicit MemoryDataLayer(const LayerParameter& param) + : BaseDataLayer(param), has_new_data_(false) {} + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MemoryData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + virtual void AddDatumVector(const vector& datum_vector); +#ifdef USE_OPENCV + virtual void AddMatVector(const vector& mat_vector, + const vector& labels); +#endif // USE_OPENCV + + // Reset should accept const pointers, but can't, because the memory + // will be given to Blob, which is mutable + void Reset(Dtype* data, Dtype* label, int n); + void set_batch_size(int new_size); + + int batch_size() { return batch_size_; } + int channels() { return channels_; } + int height() { return height_; } + int width() { return width_; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + int batch_size_, channels_, height_, width_, size_; + Dtype* data_; + Dtype* labels_; + int n_; + size_t pos_; + Blob added_data_; + Blob added_label_; + bool has_new_data_; +}; + +} // namespace caffe + +#endif // CAFFE_MEMORY_DATA_LAYER_HPP_ diff --git a/include/caffe/layers/multinomial_logistic_loss_layer.hpp b/include/caffe/layers/multinomial_logistic_loss_layer.hpp new file mode 100644 index 000000000..3977cf9ea --- /dev/null +++ b/include/caffe/layers/multinomial_logistic_loss_layer.hpp @@ -0,0 +1,92 @@ +#ifndef CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_ +#define CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the multinomial logistic loss for a one-of-many + * classification task, directly taking a predicted probability + * distribution as input. + * + * When predictions are not already a probability distribution, you should + * instead use the SoftmaxWithLossLayer, which maps predictions to a + * distribution using the SoftmaxLayer, before computing the multinomial + * logistic loss. The SoftmaxWithLossLayer should be preferred over separate + * SoftmaxLayer + MultinomialLogisticLossLayer + * as its gradient computation is more numerically stable. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$, a Blob with values in + * @f$ [0, 1] @f$ indicating the predicted probability of each of the + * @f$ K = CHW @f$ classes. Each prediction vector @f$ \hat{p}_n @f$ + * should sum to 1 as in a probability distribution: @f$ + * \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 @f$. + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed multinomial logistic loss: @f$ E = + * \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) + * @f$ + */ +template +class MultinomialLogisticLossLayer : public LossLayer { + public: + explicit MultinomialLogisticLossLayer(const LayerParameter& param) + : LossLayer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MultinomialLogisticLoss"; } + + protected: + /// @copydoc MultinomialLogisticLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the multinomial logistic loss error gradient w.r.t. the + * predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ \hat{p} @f$; Backward computes diff + * @f$ \frac{\partial E}{\partial \hat{p}} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/mvn_layer.hpp b/include/caffe/layers/mvn_layer.hpp new file mode 100644 index 000000000..3a235ceca --- /dev/null +++ b/include/caffe/layers/mvn_layer.hpp @@ -0,0 +1,48 @@ +#ifndef CAFFE_MVN_LAYER_HPP_ +#define CAFFE_MVN_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Normalizes the input to have 0-mean and/or unit (1) variance. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class MVNLayer : public Layer { + public: + explicit MVNLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "MVN"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + Blob mean_, variance_, temp_; + + /// sum_multiplier is used to carry out sum using BLAS + Blob sum_multiplier_; + Dtype eps_; +}; + +} // namespace caffe + +#endif // CAFFE_MVN_LAYER_HPP_ diff --git a/include/caffe/layers/neuron_layer.hpp b/include/caffe/layers/neuron_layer.hpp new file mode 100644 index 000000000..10c108ce6 --- /dev/null +++ b/include/caffe/layers/neuron_layer.hpp @@ -0,0 +1,32 @@ +#ifndef CAFFE_NEURON_LAYER_HPP_ +#define CAFFE_NEURON_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief An interface for layers that take one blob as input (@f$ x @f$) + * and produce one equally-sized blob as output (@f$ y @f$), where + * each element of the output depends only on the corresponding input + * element. + */ +template +class NeuronLayer : public Layer { + public: + explicit NeuronLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } +}; + +} // namespace caffe + +#endif // CAFFE_NEURON_LAYER_HPP_ diff --git a/include/caffe/layers/pooling_layer.hpp b/include/caffe/layers/pooling_layer.hpp new file mode 100644 index 000000000..f4d6803ba --- /dev/null +++ b/include/caffe/layers/pooling_layer.hpp @@ -0,0 +1,60 @@ +#ifndef CAFFE_POOLING_LAYER_HPP_ +#define CAFFE_POOLING_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Pools the input image by taking the max, average, etc. within regions. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class PoolingLayer : public Layer { + public: + explicit PoolingLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Pooling"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + // MAX POOL layers can output an extra top blob for the mask; + // others can only output the pooled inputs. + virtual inline int MaxTopBlobs() const { + return (this->layer_param_.pooling_param().pool() == + PoolingParameter_PoolMethod_MAX) ? 2 : 1; + } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int kernel_h_, kernel_w_; + int stride_h_, stride_w_; + int pad_h_, pad_w_; + int channels_; + int height_, width_; + int pooled_height_, pooled_width_; + bool global_pooling_; + Blob rand_idx_; + Blob max_idx_; +}; + +} // namespace caffe + +#endif // CAFFE_POOLING_LAYER_HPP_ diff --git a/include/caffe/layers/power_layer.hpp b/include/caffe/layers/power_layer.hpp new file mode 100644 index 000000000..6ecbafcac --- /dev/null +++ b/include/caffe/layers/power_layer.hpp @@ -0,0 +1,89 @@ +#ifndef CAFFE_POWER_LAYER_HPP_ +#define CAFFE_POWER_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Computes @f$ y = (\alpha x + \beta) ^ \gamma @f$, + * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, + * and power @f$ \gamma @f$. + */ +template +class PowerLayer : public NeuronLayer { + public: + /** + * @param param provides PowerParameter power_param, + * with PowerLayer options: + * - scale (\b optional, default 1) the scale @f$ \alpha @f$ + * - shift (\b optional, default 0) the shift @f$ \beta @f$ + * - power (\b optional, default 1) the power @f$ \gamma @f$ + */ + explicit PowerLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Power"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = (\alpha x + \beta) ^ \gamma + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the power inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = + * \frac{\partial E}{\partial y} + * \alpha \gamma (\alpha x + \beta) ^ {\gamma - 1} = + * \frac{\partial E}{\partial y} + * \frac{\alpha \gamma y}{\alpha x + \beta} + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief @f$ \gamma @f$ from layer_param_.power_param() + Dtype power_; + /// @brief @f$ \alpha @f$ from layer_param_.power_param() + Dtype scale_; + /// @brief @f$ \beta @f$ from layer_param_.power_param() + Dtype shift_; + /// @brief Result of @f$ \alpha \gamma @f$ + Dtype diff_scale_; +}; + +} // namespace caffe + +#endif // CAFFE_POWER_LAYER_HPP_ diff --git a/include/caffe/layers/prelu_layer.hpp b/include/caffe/layers/prelu_layer.hpp new file mode 100644 index 000000000..3ddfb484b --- /dev/null +++ b/include/caffe/layers/prelu_layer.hpp @@ -0,0 +1,101 @@ +#ifndef CAFFE_PRELU_LAYER_HPP_ +#define CAFFE_PRELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Parameterized Rectified Linear Unit non-linearity @f$ + * y_i = \max(0, x_i) + a_i \min(0, x_i) + * @f$. The differences from ReLULayer are 1) negative slopes are + * learnable though backprop and 2) negative slopes can vary across + * channels. The number of axes of input blob should be greater than or + * equal to 2. The 1st axis (0-based) is seen as channels. + */ +template +class PReLULayer : public NeuronLayer { + public: + /** + * @param param provides PReLUParameter prelu_param, + * with PReLULayer options: + * - filler (\b optional, FillerParameter, + * default {'type': constant 'value':0.25}). + * - channel_shared (\b optional, default false). + * negative slopes are shared across channels. + */ + explicit PReLULayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "PReLU"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the computed outputs for each channel @f$i@f$ @f$ + * y_i = \max(0, x_i) + a_i \min(0, x_i) + * @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the PReLU inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times ...) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the inputs @f$ x @f$; For each channel @f$i@f$, backward fills their + * diff with gradients @f$ + * \frac{\partial E}{\partial x_i} = \left\{ + * \begin{array}{lr} + * a_i \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i \le 0 \\ + * \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i > 0 + * \end{array} \right. + * @f$. + * If param_propagate_down_[0] is true, it fills the diff with gradients + * @f$ + * \frac{\partial E}{\partial a_i} = \left\{ + * \begin{array}{lr} + * \sum_{x_i} x_i \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i \le 0 \\ + * 0 & \mathrm{if} \; x_i > 0 + * \end{array} \right. + * @f$. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + bool channel_shared_; + Blob multiplier_; // dot multiplier for backward computation of params + Blob backward_buff_; // temporary buffer for backward computation + Blob bottom_memory_; // memory for in-place computation +}; + +} // namespace caffe + +#endif // CAFFE_PRELU_LAYER_HPP_ diff --git a/include/caffe/python_layer.hpp b/include/caffe/layers/python_layer.hpp similarity index 100% rename from include/caffe/python_layer.hpp rename to include/caffe/layers/python_layer.hpp diff --git a/include/caffe/layers/reduction_layer.hpp b/include/caffe/layers/reduction_layer.hpp new file mode 100644 index 000000000..804a495b1 --- /dev/null +++ b/include/caffe/layers/reduction_layer.hpp @@ -0,0 +1,59 @@ +#ifndef CAFFE_REDUCTION_LAYER_HPP_ +#define CAFFE_REDUCTION_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Compute "reductions" -- operations that return a scalar output Blob + * for an input Blob of arbitrary size, such as the sum, absolute sum, + * and sum of squares. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class ReductionLayer : public Layer { + public: + explicit ReductionLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Reduction"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief the reduction operation performed by the layer + ReductionParameter_ReductionOp op_; + /// @brief a scalar coefficient applied to all outputs + Dtype coeff_; + /// @brief the index of the first input axis to reduce + int axis_; + /// @brief the number of reductions performed + int num_; + /// @brief the input size of each reduction + int dim_; + /// @brief a helper Blob used for summation (op_ == SUM) + Blob sum_multiplier_; +}; + +} // namespace caffe + +#endif // CAFFE_REDUCTION_LAYER_HPP_ diff --git a/include/caffe/layers/relu_layer.hpp b/include/caffe/layers/relu_layer.hpp new file mode 100644 index 000000000..d7a73f7a8 --- /dev/null +++ b/include/caffe/layers/relu_layer.hpp @@ -0,0 +1,85 @@ +#ifndef CAFFE_RELU_LAYER_HPP_ +#define CAFFE_RELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Rectified Linear Unit non-linearity @f$ y = \max(0, x) @f$. + * The simple max is fast to compute, and the function does not saturate. + */ +template +class ReLULayer : public NeuronLayer { + public: + /** + * @param param provides ReLUParameter relu_param, + * with ReLULayer options: + * - negative_slope (\b optional, default 0). + * the value @f$ \nu @f$ by which negative values are multiplied. + */ + explicit ReLULayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "ReLU"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \max(0, x) + * @f$ by default. If a non-zero negative_slope @f$ \nu @f$ is provided, + * the computed outputs are @f$ y = \max(0, x) + \nu \min(0, x) @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the ReLU inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = \left\{ + * \begin{array}{lr} + * 0 & \mathrm{if} \; x \le 0 \\ + * \frac{\partial E}{\partial y} & \mathrm{if} \; x > 0 + * \end{array} \right. + * @f$ if propagate_down[0], by default. + * If a non-zero negative_slope @f$ \nu @f$ is provided, + * the computed gradients are @f$ + * \frac{\partial E}{\partial x} = \left\{ + * \begin{array}{lr} + * \nu \frac{\partial E}{\partial y} & \mathrm{if} \; x \le 0 \\ + * \frac{\partial E}{\partial y} & \mathrm{if} \; x > 0 + * \end{array} \right. + * @f$. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_RELU_LAYER_HPP_ diff --git a/include/caffe/layers/reshape_layer.hpp b/include/caffe/layers/reshape_layer.hpp new file mode 100644 index 000000000..d11e06384 --- /dev/null +++ b/include/caffe/layers/reshape_layer.hpp @@ -0,0 +1,52 @@ +#ifndef CAFFE_XXX_LAYER_HPP_ +#define CAFFE_XXX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/* + * @brief Reshapes the input Blob into an arbitrary-sized output Blob. + * + * Note: similarly to FlattenLayer, this layer does not change the input values + * (see FlattenLayer, Blob::ShareData and Blob::ShareDiff). + */ +template +class ReshapeLayer : public Layer { + public: + explicit ReshapeLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Reshape"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) {} + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top) {} + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} + + /// @brief vector of axes indices whose dimensions we'll copy from the bottom + vector copy_axes_; + /// @brief the index of the axis whose dimension we infer, or -1 if none + int inferred_axis_; + /// @brief the product of the "constant" output dimensions + int constant_count_; +}; + +} // namespace caffe + +#endif // CAFFE_XXX_LAYER_HPP_ diff --git a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp new file mode 100644 index 000000000..598dca5ff --- /dev/null +++ b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp @@ -0,0 +1,110 @@ +#ifndef CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ +#define CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the cross-entropy (logistic) loss @f$ + * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ + * p_n \log \hat{p}_n + + * (1 - p_n) \log(1 - \hat{p}_n) + * \right] + * @f$, often used for predicting targets interpreted as probabilities. + * + * This layer is implemented rather than separate + * SigmoidLayer + CrossEntropyLayer + * as its gradient computation is more numerically stable. + * At test time, this layer can be replaced simply by a SigmoidLayer. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the scores @f$ x \in [-\infty, +\infty]@f$, + * which this layer maps to probability predictions + * @f$ \hat{p}_n = \sigma(x_n) \in [0, 1] @f$ + * using the sigmoid function @f$ \sigma(.) @f$ (see SigmoidLayer). + * -# @f$ (N \times C \times H \times W) @f$ + * the targets @f$ y \in [0, 1] @f$ + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed cross-entropy loss: @f$ + * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ + * p_n \log \hat{p}_n + (1 - p_n) \log(1 - \hat{p}_n) + * \right] + * @f$ + */ +template +class SigmoidCrossEntropyLossLayer : public LossLayer { + public: + explicit SigmoidCrossEntropyLossLayer(const LayerParameter& param) + : LossLayer(param), + sigmoid_layer_(new SigmoidLayer(param)), + sigmoid_output_(new Blob()) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "SigmoidCrossEntropyLoss"; } + + protected: + /// @copydoc SigmoidCrossEntropyLossLayer + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the sigmoid cross-entropy loss error gradient w.r.t. the + * predictions. + * + * Gradients cannot be computed with respect to the target inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as gradient computation with respect + * to the targets is not implemented. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$x@f$; Backward computes diff + * @f$ \frac{\partial E}{\partial x} = + * \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) + * @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// The internal SigmoidLayer used to map predictions to probabilities. + shared_ptr > sigmoid_layer_; + /// sigmoid_output stores the output of the SigmoidLayer. + shared_ptr > sigmoid_output_; + /// bottom vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_bottom_vec_; + /// top vector holder to call the underlying SigmoidLayer::Forward + vector*> sigmoid_top_vec_; +}; + +} // namespace caffe + +#endif // CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/sigmoid_layer.hpp b/include/caffe/layers/sigmoid_layer.hpp new file mode 100644 index 000000000..ac0f6927f --- /dev/null +++ b/include/caffe/layers/sigmoid_layer.hpp @@ -0,0 +1,71 @@ +#ifndef CAFFE_SIGMOID_LAYER_HPP_ +#define CAFFE_SIGMOID_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Sigmoid function non-linearity @f$ + * y = (1 + \exp(-x))^{-1} + * @f$, a classic choice in neural networks. + * + * Note that the gradient vanishes as the values move away from 0. + * The ReLULayer is often a better choice for this reason. + */ +template +class SigmoidLayer : public NeuronLayer { + public: + explicit SigmoidLayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "Sigmoid"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = (1 + \exp(-x))^{-1} + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the sigmoid inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} + * = \frac{\partial E}{\partial y} y (1 - y) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_SIGMOID_LAYER_HPP_ diff --git a/include/caffe/layers/silence_layer.hpp b/include/caffe/layers/silence_layer.hpp new file mode 100644 index 000000000..fba087fce --- /dev/null +++ b/include/caffe/layers/silence_layer.hpp @@ -0,0 +1,43 @@ +#ifndef CAFFE_SILENCE_LAYER_HPP_ +#define CAFFE_SILENCE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Ignores bottom blobs while producing no top blobs. (This is useful + * to suppress outputs during testing.) + */ +template +class SilenceLayer : public Layer { + public: + explicit SilenceLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "Silence"; } + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 0; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) {} + // We can't define Forward_gpu here, since STUB_GPU will provide + // its own definition for CPU_ONLY mode. + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_SILENCE_LAYER_HPP_ diff --git a/include/caffe/layers/slice_layer.hpp b/include/caffe/layers/slice_layer.hpp new file mode 100644 index 000000000..10a0abb6e --- /dev/null +++ b/include/caffe/layers/slice_layer.hpp @@ -0,0 +1,51 @@ +#ifndef CAFFE_SLICE_LAYER_HPP_ +#define CAFFE_SLICE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes a Blob and slices it along either the num or channel dimension, + * outputting multiple sliced Blob results. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class SliceLayer : public Layer { + public: + explicit SliceLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Slice"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int count_; + int num_slices_; + int slice_size_; + int slice_axis_; + vector slice_point_; +}; + +} // namespace caffe + +#endif // CAFFE_SLICE_LAYER_HPP_ diff --git a/include/caffe/layers/softmax_layer.hpp b/include/caffe/layers/softmax_layer.hpp new file mode 100644 index 000000000..c65b8703e --- /dev/null +++ b/include/caffe/layers/softmax_layer.hpp @@ -0,0 +1,50 @@ +#ifndef CAFFE_SOFTMAX_LAYER_HPP_ +#define CAFFE_SOFTMAX_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Computes the softmax function. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class SoftmaxLayer : public Layer { + public: + explicit SoftmaxLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Softmax"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int outer_num_; + int inner_num_; + int softmax_axis_; + /// sum_multiplier is used to carry out sum using BLAS + Blob sum_multiplier_; + /// scale is an intermediate Blob to hold temporary results. + Blob scale_; +}; + +} // namespace caffe + +#endif // CAFFE_SOFTMAX_LAYER_HPP_ diff --git a/include/caffe/layers/softmax_loss_layer.hpp b/include/caffe/layers/softmax_loss_layer.hpp new file mode 100644 index 000000000..f07e8a02c --- /dev/null +++ b/include/caffe/layers/softmax_loss_layer.hpp @@ -0,0 +1,130 @@ +#ifndef CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_ +#define CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/softmax_layer.hpp" + +namespace caffe { + +/** + * @brief Computes the multinomial logistic loss for a one-of-many + * classification task, passing real-valued predictions through a + * softmax to get a probability distribution over classes. + * + * This layer should be preferred over separate + * SoftmaxLayer + MultinomialLogisticLossLayer + * as its gradient computation is more numerically stable. + * At test time, this layer can be replaced simply by a SoftmaxLayer. + * + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ x @f$, a Blob with values in + * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of + * the @f$ K = CHW @f$ classes. This layer maps these scores to a + * probability distribution over classes using the softmax function + * @f$ \hat{p}_{nk} = \exp(x_{nk}) / + * \left[\sum_{k'} \exp(x_{nk'})\right] @f$ (see SoftmaxLayer). + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels @f$ l @f$, an integer-valued Blob with values + * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ + * indicating the correct class label among the @f$ K @f$ classes + * @param top output Blob vector (length 1) + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * the computed cross-entropy classification loss: @f$ E = + * \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) + * @f$, for softmax output class probabilites @f$ \hat{p} @f$ + */ +template +class SoftmaxWithLossLayer : public LossLayer { + public: + /** + * @param param provides LossParameter loss_param, with options: + * - ignore_label (optional) + * Specify a label value that should be ignored when computing the loss. + * - normalize (optional, default true) + * If true, the loss is normalized by the number of (nonignored) labels + * present; otherwise the loss is simply summed over spatial locations. + */ + explicit SoftmaxWithLossLayer(const LayerParameter& param) + : LossLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "SoftmaxWithLoss"; } + virtual inline int ExactNumTopBlobs() const { return -1; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + /** + * @brief Computes the softmax loss error gradient w.r.t. the predictions. + * + * Gradients cannot be computed with respect to the label inputs (bottom[1]), + * so this method ignores bottom[1] and requires !propagate_down[1], crashing + * if propagate_down[1] is set. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times 1 \times 1 \times 1) @f$ + * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, + * as @f$ \lambda @f$ is the coefficient of this layer's output + * @f$\ell_i@f$ in the overall Net loss + * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence + * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. + * (*Assuming that this top Blob is not used as a bottom (input) by any + * other layer of the Net.) + * @param propagate_down see Layer::Backward. + * propagate_down[1] must be false as we can't compute gradients with + * respect to the labels. + * @param bottom input Blob vector (length 2) + * -# @f$ (N \times C \times H \times W) @f$ + * the predictions @f$ x @f$; Backward computes diff + * @f$ \frac{\partial E}{\partial x} @f$ + * -# @f$ (N \times 1 \times 1 \times 1) @f$ + * the labels -- ignored as we can't compute their error gradients + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); + + /// The internal SoftmaxLayer used to map predictions to a distribution. + shared_ptr > softmax_layer_; + /// prob stores the output probability predictions from the SoftmaxLayer. + Blob prob_; + /// bottom vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_bottom_vec_; + /// top vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_top_vec_; + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// How to normalize the output loss. + LossParameter_NormalizationMode normalization_; + + int softmax_axis_, outer_num_, inner_num_; +}; + +} // namespace caffe + +#endif // CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_ diff --git a/include/caffe/layers/split_layer.hpp b/include/caffe/layers/split_layer.hpp new file mode 100644 index 000000000..8140dfc7c --- /dev/null +++ b/include/caffe/layers/split_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_SPLIT_LAYER_HPP_ +#define CAFFE_SPLIT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Creates a "split" path in the network by copying the bottom Blob + * into multiple top Blob%s to be used by multiple consuming layers. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ +template +class SplitLayer : public Layer { + public: + explicit SplitLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Split"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int count_; +}; + +} // namespace caffe + +#endif // CAFFE_SPLIT_LAYER_HPP_ diff --git a/include/caffe/layers/spp_layer.hpp b/include/caffe/layers/spp_layer.hpp new file mode 100644 index 000000000..9f145cc77 --- /dev/null +++ b/include/caffe/layers/spp_layer.hpp @@ -0,0 +1,76 @@ +#ifndef CAFFE_SPP_LAYER_HPP_ +#define CAFFE_SPP_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Does spatial pyramid pooling on the input image + * by taking the max, average, etc. within regions + * so that the result vector of different sized + * images are of the same size. + */ +template +class SPPLayer : public Layer { + public: + explicit SPPLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "SPP"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + // calculates the kernel and stride dimensions for the pooling layer, + // returns a correctly configured LayerParameter for a PoolingLayer + virtual LayerParameter GetPoolingParam(const int pyramid_level, + const int bottom_h, const int bottom_w, const SPPParameter spp_param); + + int pyramid_height_; + int bottom_h_, bottom_w_; + int num_; + int channels_; + int kernel_h_, kernel_w_; + int pad_h_, pad_w_; + bool reshaped_first_time_; + + /// the internal Split layer that feeds the pooling layers + shared_ptr > split_layer_; + /// top vector holder used in call to the underlying SplitLayer::Forward + vector*> split_top_vec_; + /// bottom vector holder used in call to the underlying PoolingLayer::Forward + vector*>*> pooling_bottom_vecs_; + /// the internal Pooling layers of different kernel sizes + vector > > pooling_layers_; + /// top vector holders used in call to the underlying PoolingLayer::Forward + vector*>*> pooling_top_vecs_; + /// pooling_outputs stores the outputs of the PoolingLayers + vector*> pooling_outputs_; + /// the internal Flatten layers that the Pooling layers feed into + vector*> flatten_layers_; + /// top vector holders used in call to the underlying FlattenLayer::Forward + vector*>*> flatten_top_vecs_; + /// flatten_outputs stores the outputs of the FlattenLayers + vector*> flatten_outputs_; + /// bottom vector holder used in call to the underlying ConcatLayer::Forward + vector*> concat_bottom_vec_; + /// the internal Concat layers that the Flatten layers feed into + shared_ptr > concat_layer_; +}; + +} // namespace caffe + +#endif // CAFFE_SPP_LAYER_HPP_ diff --git a/include/caffe/layers/tanh_layer.hpp b/include/caffe/layers/tanh_layer.hpp new file mode 100644 index 000000000..8f95e9322 --- /dev/null +++ b/include/caffe/layers/tanh_layer.hpp @@ -0,0 +1,73 @@ +#ifndef CAFFE_TANH_LAYER_HPP_ +#define CAFFE_TANH_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief TanH hyperbolic tangent non-linearity @f$ + * y = \frac{\exp(2x) - 1}{\exp(2x) + 1} + * @f$, popular in auto-encoders. + * + * Note that the gradient vanishes as the values move away from 0. + * The ReLULayer is often a better choice for this reason. + */ +template +class TanHLayer : public NeuronLayer { + public: + explicit TanHLayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "TanH"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \frac{\exp(2x) - 1}{\exp(2x) + 1} + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the sigmoid inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} + * = \frac{\partial E}{\partial y} + * \left(1 - \left[\frac{\exp(2x) - 1}{exp(2x) + 1} \right]^2 \right) + * = \frac{\partial E}{\partial y} (1 - y^2) + * @f$ if propagate_down[0] + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + +} // namespace caffe + +#endif // CAFFE_TANH_LAYER_HPP_ diff --git a/include/caffe/layers/threshold_layer.hpp b/include/caffe/layers/threshold_layer.hpp new file mode 100644 index 000000000..3bf4db63e --- /dev/null +++ b/include/caffe/layers/threshold_layer.hpp @@ -0,0 +1,64 @@ +#ifndef CAFFE_THRESHOLD_LAYER_HPP_ +#define CAFFE_THRESHOLD_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Tests whether the input exceeds a threshold: outputs 1 for inputs + * above threshold; 0 otherwise. + */ +template +class ThresholdLayer : public NeuronLayer { + public: + /** + * @param param provides ThresholdParameter threshold_param, + * with ThresholdLayer options: + * - threshold (\b optional, default 0). + * the threshold value @f$ t @f$ to which the input values are compared. + */ + explicit ThresholdLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Threshold"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \left\{ + * \begin{array}{lr} + * 0 & \mathrm{if} \; x \le t \\ + * 1 & \mathrm{if} \; x > t + * \end{array} \right. + * @f$ + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + /// @brief Not implemented (non-differentiable function) + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + NOT_IMPLEMENTED; + } + + Dtype threshold_; +}; + +} // namespace caffe + +#endif // CAFFE_THRESHOLD_LAYER_HPP_ diff --git a/include/caffe/layers/tile_layer.hpp b/include/caffe/layers/tile_layer.hpp new file mode 100644 index 000000000..fbdbe2f0c --- /dev/null +++ b/include/caffe/layers/tile_layer.hpp @@ -0,0 +1,43 @@ +#ifndef CAFFE_TILE_LAYER_HPP_ +#define CAFFE_TILE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Copy a Blob along specified dimensions. + */ +template +class TileLayer : public Layer { + public: + explicit TileLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Tile"; } + virtual inline int ExactNumBottomBlobs() const { return 1; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + unsigned int axis_, tiles_, outer_dim_, inner_dim_; +}; + +} // namespace caffe + +#endif // CAFFE_TILE_LAYER_HPP_ diff --git a/include/caffe/layers/window_data_layer.hpp b/include/caffe/layers/window_data_layer.hpp new file mode 100644 index 000000000..35f41b80e --- /dev/null +++ b/include/caffe/layers/window_data_layer.hpp @@ -0,0 +1,55 @@ +#ifndef CAFFE_WINDOW_DATA_LAYER_HPP_ +#define CAFFE_WINDOW_DATA_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net from windows of images files, specified + * by a window data file. + * + * TODO(dox): thorough documentation for Forward and proto params. + */ +template +class WindowDataLayer : public BasePrefetchingDataLayer { + public: + explicit WindowDataLayer(const LayerParameter& param) + : BasePrefetchingDataLayer(param) {} + virtual ~WindowDataLayer(); + virtual void DataLayerSetUp(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "WindowData"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + protected: + virtual unsigned int PrefetchRand(); + virtual void load_batch(Batch* batch); + + shared_ptr prefetch_rng_; + vector > > image_database_; + enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM }; + vector > fg_windows_; + vector > bg_windows_; + Blob data_mean_; + vector mean_values_; + bool has_mean_file_; + bool has_mean_values_; + bool cache_images_; + vector > image_database_cache_; +}; + +} // namespace caffe + +#endif // CAFFE_WINDOW_DATA_LAYER_HPP_ diff --git a/include/caffe/loss_layers.hpp b/include/caffe/loss_layers.hpp deleted file mode 100644 index 53d07025f..000000000 --- a/include/caffe/loss_layers.hpp +++ /dev/null @@ -1,777 +0,0 @@ -#ifndef CAFFE_LOSS_LAYERS_HPP_ -#define CAFFE_LOSS_LAYERS_HPP_ - -#include -#include -#include - -#include "caffe/blob.hpp" -#include "caffe/layer.hpp" -#include "caffe/neuron_layers.hpp" -#include "caffe/proto/caffe.pb.h" - -namespace caffe { - -const float kLOG_THRESHOLD = 1e-20; - -/** - * @brief Computes the classification accuracy for a one-of-many - * classification task. - */ -template -class AccuracyLayer : public Layer { - public: - /** - * @param param provides AccuracyParameter accuracy_param, - * with AccuracyLayer options: - * - top_k (\b optional, default 1). - * Sets the maximum rank @f$ k @f$ at which a prediction is considered - * correct. For example, if @f$ k = 5 @f$, a prediction is counted - * correct if the correct label is among the top 5 predicted labels. - */ - explicit AccuracyLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Accuracy"; } - virtual inline int ExactNumBottomBlobs() const { return 2; } - - // If there are two top blobs, then the second blob will contain - // accuracies per class. - virtual inline int MinTopBlobs() const { return 1; } - virtual inline int MaxTopBlobs() const { return 2; } - - protected: - /** - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ x @f$, a Blob with values in - * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of - * the @f$ K = CHW @f$ classes. Each @f$ x_n @f$ is mapped to a predicted - * label @f$ \hat{l}_n @f$ given by its maximal index: - * @f$ \hat{l}_n = \arg\max\limits_k x_{nk} @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels @f$ l @f$, an integer-valued Blob with values - * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ - * indicating the correct class label among the @f$ K @f$ classes - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed accuracy: @f$ - * \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} - * @f$, where @f$ - * \delta\{\mathrm{condition}\} = \left\{ - * \begin{array}{lr} - * 1 & \mbox{if condition} \\ - * 0 & \mbox{otherwise} - * \end{array} \right. - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - - /// @brief Not implemented -- AccuracyLayer cannot be used as a loss. - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) { - for (int i = 0; i < propagate_down.size(); ++i) { - if (propagate_down[i]) { NOT_IMPLEMENTED; } - } - } - - int label_axis_, outer_num_, inner_num_; - - int top_k_; - - /// Whether to ignore instances with a certain label. - bool has_ignore_label_; - /// The label indicating that an instance should be ignored. - int ignore_label_; - /// Keeps counts of the number of samples per class. - Blob nums_buffer_; -}; - -/** - * @brief An interface for Layer%s that take two Blob%s as input -- usually - * (1) predictions and (2) ground-truth labels -- and output a - * singleton Blob representing the loss. - * - * LossLayers are typically only capable of backpropagating to their first input - * -- the predictions. - */ -template -class LossLayer : public Layer { - public: - explicit LossLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp( - const vector*>& bottom, const vector*>& top); - virtual void Reshape( - const vector*>& bottom, const vector*>& top); - - virtual inline int ExactNumBottomBlobs() const { return 2; } - - /** - * @brief For convenience and backwards compatibility, instruct the Net to - * automatically allocate a single top Blob for LossLayers, into which - * they output their singleton loss, (even if the user didn't specify - * one in the prototxt, etc.). - */ - virtual inline bool AutoTopBlobs() const { return true; } - virtual inline int ExactNumTopBlobs() const { return 1; } - /** - * We usually cannot backpropagate to the labels; ignore force_backward for - * these inputs. - */ - virtual inline bool AllowForceBackward(const int bottom_index) const { - return bottom_index != 1; - } -}; - -/** - * @brief Computes the contrastive loss @f$ - * E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + - * \left(1-y\right) \max \left(margin-d, 0\right)^2 - * @f$ where @f$ - * d = \left| \left| a_n - b_n \right| \right|_2 @f$. This can be - * used to train siamese networks. - * - * @param bottom input Blob vector (length 3) - * -# @f$ (N \times C \times 1 \times 1) @f$ - * the features @f$ a \in [-\infty, +\infty]@f$ - * -# @f$ (N \times C \times 1 \times 1) @f$ - * the features @f$ b \in [-\infty, +\infty]@f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the binary similarity @f$ s \in [0, 1]@f$ - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed contrastive loss: @f$ E = - * \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d^2 + - * \left(1-y\right) \max \left(margin-d, 0\right)^2 - * @f$ where @f$ - * d = \left| \left| a_n - b_n \right| \right|_2 @f$. - * This can be used to train siamese networks. - */ -template -class ContrastiveLossLayer : public LossLayer { - public: - explicit ContrastiveLossLayer(const LayerParameter& param) - : LossLayer(param), diff_() {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline int ExactNumBottomBlobs() const { return 3; } - virtual inline const char* type() const { return "ContrastiveLoss"; } - /** - * Unlike most loss layers, in the ContrastiveLossLayer we can backpropagate - * to the first two inputs. - */ - virtual inline bool AllowForceBackward(const int bottom_index) const { - return bottom_index != 2; - } - - protected: - /// @copydoc ContrastiveLossLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the Contrastive error gradient w.r.t. the inputs. - * - * Computes the gradients with respect to the two input vectors (bottom[0] and - * bottom[1]), but not the similarity label (bottom[2]). - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times 1 \times 1) @f$ - * the features @f$a@f$; Backward fills their diff with - * gradients if propagate_down[0] - * -# @f$ (N \times C \times 1 \times 1) @f$ - * the features @f$b@f$; Backward fills their diff with gradients if - * propagate_down[1] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Blob diff_; // cached for backward pass - Blob dist_sq_; // cached for backward pass - Blob diff_sq_; // tmp storage for gpu forward pass - Blob summer_vec_; // tmp storage for gpu forward pass -}; - -/** - * @brief Computes the Euclidean (L2) loss @f$ - * E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n - * \right| \right|_2^2 @f$ for real-valued regression tasks. - * - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ \hat{y} \in [-\infty, +\infty]@f$ - * -# @f$ (N \times C \times H \times W) @f$ - * the targets @f$ y \in [-\infty, +\infty]@f$ - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed Euclidean loss: @f$ E = - * \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n - * \right| \right|_2^2 @f$ - * - * This can be used for least-squares regression tasks. An InnerProductLayer - * input to a EuclideanLossLayer exactly formulates a linear least squares - * regression problem. With non-zero weight decay the problem becomes one of - * ridge regression -- see src/caffe/test/test_sgd_solver.cpp for a concrete - * example wherein we check that the gradients computed for a Net with exactly - * this structure match hand-computed gradient formulas for ridge regression. - * - * (Note: Caffe, and SGD in general, is certainly \b not the best way to solve - * linear least squares problems! We use it only as an instructive example.) - */ -template -class EuclideanLossLayer : public LossLayer { - public: - explicit EuclideanLossLayer(const LayerParameter& param) - : LossLayer(param), diff_() {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "EuclideanLoss"; } - /** - * Unlike most loss layers, in the EuclideanLossLayer we can backpropagate - * to both inputs -- override to return true and always allow force_backward. - */ - virtual inline bool AllowForceBackward(const int bottom_index) const { - return true; - } - - protected: - /// @copydoc EuclideanLossLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the Euclidean error gradient w.r.t. the inputs. - * - * Unlike other children of LossLayer, EuclideanLossLayer \b can compute - * gradients with respect to the label inputs bottom[1] (but still only will - * if propagate_down[1] is set, due to being produced by learnable parameters - * or if force_backward is set). In fact, this layer is "commutative" -- the - * result is the same regardless of the order of the two bottoms. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$\hat{y}@f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial \hat{y}} = - * \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) - * @f$ if propagate_down[0] - * -# @f$ (N \times C \times H \times W) @f$ - * the targets @f$y@f$; Backward fills their diff with gradients - * @f$ \frac{\partial E}{\partial y} = - * \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) - * @f$ if propagate_down[1] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Blob diff_; -}; - -/** - * @brief Computes the hinge loss for a one-of-many classification task. - * - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ t @f$, a Blob with values in - * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of - * the @f$ K = CHW @f$ classes. In an SVM, @f$ t @f$ is the result of - * taking the inner product @f$ X^T W @f$ of the D-dimensional features - * @f$ X \in \mathcal{R}^{D \times N} @f$ and the learned hyperplane - * parameters @f$ W \in \mathcal{R}^{D \times K} @f$, so a Net with just - * an InnerProductLayer (with num_output = D) providing predictions to a - * HingeLossLayer and no other learnable parameters or losses is - * equivalent to an SVM. - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels @f$ l @f$, an integer-valued Blob with values - * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ - * indicating the correct class label among the @f$ K @f$ classes - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed hinge loss: @f$ E = - * \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K - * [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p - * @f$, for the @f$ L^p @f$ norm - * (defaults to @f$ p = 1 @f$, the L1 norm; L2 norm, as in L2-SVM, - * is also available), and @f$ - * \delta\{\mathrm{condition}\} = \left\{ - * \begin{array}{lr} - * 1 & \mbox{if condition} \\ - * -1 & \mbox{otherwise} - * \end{array} \right. - * @f$ - * - * In an SVM, @f$ t \in \mathcal{R}^{N \times K} @f$ is the result of taking - * the inner product @f$ X^T W @f$ of the features - * @f$ X \in \mathcal{R}^{D \times N} @f$ - * and the learned hyperplane parameters - * @f$ W \in \mathcal{R}^{D \times K} @f$. So, a Net with just an - * InnerProductLayer (with num_output = @f$k@f$) providing predictions to a - * HingeLossLayer is equivalent to an SVM (assuming it has no other learned - * outside the InnerProductLayer and no other losses outside the - * HingeLossLayer). - */ -template -class HingeLossLayer : public LossLayer { - public: - explicit HingeLossLayer(const LayerParameter& param) - : LossLayer(param) {} - - virtual inline const char* type() const { return "HingeLoss"; } - - protected: - /// @copydoc HingeLossLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the hinge loss error gradient w.r.t. the predictions. - * - * Gradients cannot be computed with respect to the label inputs (bottom[1]), - * so this method ignores bottom[1] and requires !propagate_down[1], crashing - * if propagate_down[1] is set. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * propagate_down[1] must be false as we can't compute gradients with - * respect to the labels. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$t@f$; Backward computes diff - * @f$ \frac{\partial E}{\partial t} @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels -- ignored as we can't compute their error gradients - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -/** - * @brief A generalization of MultinomialLogisticLossLayer that takes an - * "information gain" (infogain) matrix specifying the "value" of all label - * pairs. - * - * Equivalent to the MultinomialLogisticLossLayer if the infogain matrix is the - * identity. - * - * @param bottom input Blob vector (length 2-3) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ \hat{p} @f$, a Blob with values in - * @f$ [0, 1] @f$ indicating the predicted probability of each of the - * @f$ K = CHW @f$ classes. Each prediction vector @f$ \hat{p}_n @f$ - * should sum to 1 as in a probability distribution: @f$ - * \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 @f$. - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels @f$ l @f$, an integer-valued Blob with values - * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ - * indicating the correct class label among the @f$ K @f$ classes - * -# @f$ (1 \times 1 \times K \times K) @f$ - * (\b optional) the infogain matrix @f$ H @f$. This must be provided as - * the third bottom blob input if not provided as the infogain_mat in the - * InfogainLossParameter. If @f$ H = I @f$, this layer is equivalent to the - * MultinomialLogisticLossLayer. - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed infogain multinomial logistic loss: @f$ E = - * \frac{-1}{N} \sum\limits_{n=1}^N H_{l_n} \log(\hat{p}_n) = - * \frac{-1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^{K} H_{l_n,k} - * \log(\hat{p}_{n,k}) - * @f$, where @f$ H_{l_n} @f$ denotes row @f$l_n@f$ of @f$H@f$. - */ -template -class InfogainLossLayer : public LossLayer { - public: - explicit InfogainLossLayer(const LayerParameter& param) - : LossLayer(param), infogain_() {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should - // be the infogain matrix. (Otherwise the infogain matrix is loaded from a - // file specified by LayerParameter.) - virtual inline int ExactNumBottomBlobs() const { return -1; } - virtual inline int MinBottomBlobs() const { return 2; } - virtual inline int MaxBottomBlobs() const { return 3; } - - virtual inline const char* type() const { return "InfogainLoss"; } - - protected: - /// @copydoc InfogainLossLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the infogain loss error gradient w.r.t. the predictions. - * - * Gradients cannot be computed with respect to the label inputs (bottom[1]), - * so this method ignores bottom[1] and requires !propagate_down[1], crashing - * if propagate_down[1] is set. (The same applies to the infogain matrix, if - * provided as bottom[2] rather than in the layer_param.) - * - * @param top output Blob vector (length 1), providing the error gradient - * with respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * propagate_down[1] must be false as we can't compute gradients with - * respect to the labels (similarly for propagate_down[2] and the - * infogain matrix, if provided as bottom[2]) - * @param bottom input Blob vector (length 2-3) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ \hat{p} @f$; Backward computes diff - * @f$ \frac{\partial E}{\partial \hat{p}} @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels -- ignored as we can't compute their error gradients - * -# @f$ (1 \times 1 \times K \times K) @f$ - * (\b optional) the information gain matrix -- ignored as its error - * gradient computation is not implemented. - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Blob infogain_; -}; - -/** - * @brief Computes the multinomial logistic loss for a one-of-many - * classification task, directly taking a predicted probability - * distribution as input. - * - * When predictions are not already a probability distribution, you should - * instead use the SoftmaxWithLossLayer, which maps predictions to a - * distribution using the SoftmaxLayer, before computing the multinomial - * logistic loss. The SoftmaxWithLossLayer should be preferred over separate - * SoftmaxLayer + MultinomialLogisticLossLayer - * as its gradient computation is more numerically stable. - * - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ \hat{p} @f$, a Blob with values in - * @f$ [0, 1] @f$ indicating the predicted probability of each of the - * @f$ K = CHW @f$ classes. Each prediction vector @f$ \hat{p}_n @f$ - * should sum to 1 as in a probability distribution: @f$ - * \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 @f$. - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels @f$ l @f$, an integer-valued Blob with values - * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ - * indicating the correct class label among the @f$ K @f$ classes - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed multinomial logistic loss: @f$ E = - * \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) - * @f$ - */ -template -class MultinomialLogisticLossLayer : public LossLayer { - public: - explicit MultinomialLogisticLossLayer(const LayerParameter& param) - : LossLayer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "MultinomialLogisticLoss"; } - - protected: - /// @copydoc MultinomialLogisticLossLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the multinomial logistic loss error gradient w.r.t. the - * predictions. - * - * Gradients cannot be computed with respect to the label inputs (bottom[1]), - * so this method ignores bottom[1] and requires !propagate_down[1], crashing - * if propagate_down[1] is set. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * propagate_down[1] must be false as we can't compute gradients with - * respect to the labels. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ \hat{p} @f$; Backward computes diff - * @f$ \frac{\partial E}{\partial \hat{p}} @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels -- ignored as we can't compute their error gradients - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -/** - * @brief Computes the cross-entropy (logistic) loss @f$ - * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ - * p_n \log \hat{p}_n + - * (1 - p_n) \log(1 - \hat{p}_n) - * \right] - * @f$, often used for predicting targets interpreted as probabilities. - * - * This layer is implemented rather than separate - * SigmoidLayer + CrossEntropyLayer - * as its gradient computation is more numerically stable. - * At test time, this layer can be replaced simply by a SigmoidLayer. - * - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the scores @f$ x \in [-\infty, +\infty]@f$, - * which this layer maps to probability predictions - * @f$ \hat{p}_n = \sigma(x_n) \in [0, 1] @f$ - * using the sigmoid function @f$ \sigma(.) @f$ (see SigmoidLayer). - * -# @f$ (N \times C \times H \times W) @f$ - * the targets @f$ y \in [0, 1] @f$ - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed cross-entropy loss: @f$ - * E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ - * p_n \log \hat{p}_n + (1 - p_n) \log(1 - \hat{p}_n) - * \right] - * @f$ - */ -template -class SigmoidCrossEntropyLossLayer : public LossLayer { - public: - explicit SigmoidCrossEntropyLossLayer(const LayerParameter& param) - : LossLayer(param), - sigmoid_layer_(new SigmoidLayer(param)), - sigmoid_output_(new Blob()) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "SigmoidCrossEntropyLoss"; } - - protected: - /// @copydoc SigmoidCrossEntropyLossLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the sigmoid cross-entropy loss error gradient w.r.t. the - * predictions. - * - * Gradients cannot be computed with respect to the target inputs (bottom[1]), - * so this method ignores bottom[1] and requires !propagate_down[1], crashing - * if propagate_down[1] is set. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * propagate_down[1] must be false as gradient computation with respect - * to the targets is not implemented. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$x@f$; Backward computes diff - * @f$ \frac{\partial E}{\partial x} = - * \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) - * @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels -- ignored as we can't compute their error gradients - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - /// The internal SigmoidLayer used to map predictions to probabilities. - shared_ptr > sigmoid_layer_; - /// sigmoid_output stores the output of the SigmoidLayer. - shared_ptr > sigmoid_output_; - /// bottom vector holder to call the underlying SigmoidLayer::Forward - vector*> sigmoid_bottom_vec_; - /// top vector holder to call the underlying SigmoidLayer::Forward - vector*> sigmoid_top_vec_; -}; - -// Forward declare SoftmaxLayer for use in SoftmaxWithLossLayer. -template class SoftmaxLayer; - -/** - * @brief Computes the multinomial logistic loss for a one-of-many - * classification task, passing real-valued predictions through a - * softmax to get a probability distribution over classes. - * - * This layer should be preferred over separate - * SoftmaxLayer + MultinomialLogisticLossLayer - * as its gradient computation is more numerically stable. - * At test time, this layer can be replaced simply by a SoftmaxLayer. - * - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ x @f$, a Blob with values in - * @f$ [-\infty, +\infty] @f$ indicating the predicted score for each of - * the @f$ K = CHW @f$ classes. This layer maps these scores to a - * probability distribution over classes using the softmax function - * @f$ \hat{p}_{nk} = \exp(x_{nk}) / - * \left[\sum_{k'} \exp(x_{nk'})\right] @f$ (see SoftmaxLayer). - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels @f$ l @f$, an integer-valued Blob with values - * @f$ l_n \in [0, 1, 2, ..., K - 1] @f$ - * indicating the correct class label among the @f$ K @f$ classes - * @param top output Blob vector (length 1) - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * the computed cross-entropy classification loss: @f$ E = - * \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) - * @f$, for softmax output class probabilites @f$ \hat{p} @f$ - */ -template -class SoftmaxWithLossLayer : public LossLayer { - public: - /** - * @param param provides LossParameter loss_param, with options: - * - ignore_label (optional) - * Specify a label value that should be ignored when computing the loss. - * - normalize (optional, default true) - * If true, the loss is normalized by the number of (nonignored) labels - * present; otherwise the loss is simply summed over spatial locations. - */ - explicit SoftmaxWithLossLayer(const LayerParameter& param) - : LossLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "SoftmaxWithLoss"; } - virtual inline int ExactNumTopBlobs() const { return -1; } - virtual inline int MinTopBlobs() const { return 1; } - virtual inline int MaxTopBlobs() const { return 2; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - /** - * @brief Computes the softmax loss error gradient w.r.t. the predictions. - * - * Gradients cannot be computed with respect to the label inputs (bottom[1]), - * so this method ignores bottom[1] and requires !propagate_down[1], crashing - * if propagate_down[1] is set. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (1 \times 1 \times 1 \times 1) @f$ - * This Blob's diff will simply contain the loss_weight* @f$ \lambda @f$, - * as @f$ \lambda @f$ is the coefficient of this layer's output - * @f$\ell_i@f$ in the overall Net loss - * @f$ E = \lambda_i \ell_i + \mbox{other loss terms}@f$; hence - * @f$ \frac{\partial E}{\partial \ell_i} = \lambda_i @f$. - * (*Assuming that this top Blob is not used as a bottom (input) by any - * other layer of the Net.) - * @param propagate_down see Layer::Backward. - * propagate_down[1] must be false as we can't compute gradients with - * respect to the labels. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the predictions @f$ x @f$; Backward computes diff - * @f$ \frac{\partial E}{\partial x} @f$ - * -# @f$ (N \times 1 \times 1 \times 1) @f$ - * the labels -- ignored as we can't compute their error gradients - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - /// Read the normalization mode parameter and compute the normalizer based - /// on the blob size. If normalization_mode is VALID, the count of valid - /// outputs will be read from valid_count, unless it is -1 in which case - /// all outputs are assumed to be valid. - virtual Dtype get_normalizer( - LossParameter_NormalizationMode normalization_mode, int valid_count); - - /// The internal SoftmaxLayer used to map predictions to a distribution. - shared_ptr > softmax_layer_; - /// prob stores the output probability predictions from the SoftmaxLayer. - Blob prob_; - /// bottom vector holder used in call to the underlying SoftmaxLayer::Forward - vector*> softmax_bottom_vec_; - /// top vector holder used in call to the underlying SoftmaxLayer::Forward - vector*> softmax_top_vec_; - /// Whether to ignore instances with a certain label. - bool has_ignore_label_; - /// The label indicating that an instance should be ignored. - int ignore_label_; - /// How to normalize the output loss. - LossParameter_NormalizationMode normalization_; - - int softmax_axis_, outer_num_, inner_num_; -}; - -} // namespace caffe - -#endif // CAFFE_LOSS_LAYERS_HPP_ diff --git a/include/caffe/neuron_layers.hpp b/include/caffe/neuron_layers.hpp deleted file mode 100644 index 4fa330ec7..000000000 --- a/include/caffe/neuron_layers.hpp +++ /dev/null @@ -1,806 +0,0 @@ -#ifndef CAFFE_NEURON_LAYERS_HPP_ -#define CAFFE_NEURON_LAYERS_HPP_ - -#include -#include -#include - -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/layer.hpp" -#include "caffe/proto/caffe.pb.h" - -namespace caffe { - -/** - * @brief An interface for layers that take one blob as input (@f$ x @f$) - * and produce one equally-sized blob as output (@f$ y @f$), where - * each element of the output depends only on the corresponding input - * element. - */ -template -class NeuronLayer : public Layer { - public: - explicit NeuronLayer(const LayerParameter& param) - : Layer(param) {} - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } -}; - -/** - * @brief Computes @f$ y = |x| @f$ - * - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ y = |x| @f$ - */ -template -class AbsValLayer : public NeuronLayer { - public: - explicit AbsValLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "AbsVal"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - /// @copydoc AbsValLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the absolute value inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} = - * \mathrm{sign}(x) \frac{\partial E}{\partial y} - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -/** - * @brief Computes @f$ y = x + \log(1 + \exp(-x)) @f$ if @f$ x > 0 @f$; - * @f$ y = \log(1 + \exp(x)) @f$ otherwise. - * - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = \left\{ - * \begin{array}{ll} - * x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ - * \log(1 + \exp(x)) & \mbox{otherwise} - * \end{array} \right. - * @f$ - */ -template -class BNLLLayer : public NeuronLayer { - public: - explicit BNLLLayer(const LayerParameter& param) - : NeuronLayer(param) {} - - virtual inline const char* type() const { return "BNLL"; } - - protected: - /// @copydoc BNLLLayer - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the BNLL inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 2) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -/** - * @brief During training only, sets a random portion of @f$x@f$ to 0, adjusting - * the rest of the vector magnitude accordingly. - * - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ y = |x| @f$ - */ -template -class DropoutLayer : public NeuronLayer { - public: - /** - * @param param provides DropoutParameter dropout_param, - * with DropoutLayer options: - * - dropout_ratio (\b optional, default 0.5). - * Sets the probability @f$ p @f$ that any given unit is dropped. - */ - explicit DropoutLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Dropout"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs. At training time, we have @f$ - * y_{\mbox{train}} = \left\{ - * \begin{array}{ll} - * \frac{x}{1 - p} & \mbox{if } u > p \\ - * 0 & \mbox{otherwise} - * \end{array} \right. - * @f$, where @f$ u \sim U(0, 1)@f$ is generated independently for each - * input at each iteration. At test time, we simply have - * @f$ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x @f$. - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - /// when divided by UINT_MAX, the randomly generated values @f$u\sim U(0,1)@f$ - Blob rand_vec_; - /// the probability @f$ p @f$ of dropping any input - Dtype threshold_; - /// the scale for undropped inputs at train time @f$ 1 / (1 - p) @f$ - Dtype scale_; - unsigned int uint_thres_; -}; - -/** - * @brief Computes @f$ y = \gamma ^ {\alpha x + \beta} @f$, - * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, - * and base @f$ \gamma @f$. - */ -template -class ExpLayer : public NeuronLayer { - public: - /** - * @param param provides ExpParameter exp_param, - * with ExpLayer options: - * - scale (\b optional, default 1) the scale @f$ \alpha @f$ - * - shift (\b optional, default 0) the shift @f$ \beta @f$ - * - base (\b optional, default -1 for a value of @f$ e \approx 2.718 @f$) - * the base @f$ \gamma @f$ - */ - explicit ExpLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Exp"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = \gamma ^ {\alpha x + \beta} - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the exp inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} = - * \frac{\partial E}{\partial y} y \alpha \log_e(gamma) - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Dtype inner_scale_, outer_scale_; -}; - -/** - * @brief Computes @f$ y = log_{\gamma}(\alpha x + \beta) @f$, - * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, - * and base @f$ \gamma @f$. - */ -template -class LogLayer : public NeuronLayer { - public: - /** - * @param param provides LogParameter log_param, - * with LogLayer options: - * - scale (\b optional, default 1) the scale @f$ \alpha @f$ - * - shift (\b optional, default 0) the shift @f$ \beta @f$ - * - base (\b optional, default -1 for a value of @f$ e \approx 2.718 @f$) - * the base @f$ \gamma @f$ - */ - explicit LogLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Log"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = log_{\gamma}(\alpha x + \beta) - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the exp inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} = - * \frac{\partial E}{\partial y} y \alpha \log_e(gamma) - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - Dtype base_scale_; - Dtype input_scale_, input_shift_; - Dtype backward_num_scale_; -}; - -/** - * @brief Computes @f$ y = (\alpha x + \beta) ^ \gamma @f$, - * as specified by the scale @f$ \alpha @f$, shift @f$ \beta @f$, - * and power @f$ \gamma @f$. - */ -template -class PowerLayer : public NeuronLayer { - public: - /** - * @param param provides PowerParameter power_param, - * with PowerLayer options: - * - scale (\b optional, default 1) the scale @f$ \alpha @f$ - * - shift (\b optional, default 0) the shift @f$ \beta @f$ - * - power (\b optional, default 1) the power @f$ \gamma @f$ - */ - explicit PowerLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Power"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = (\alpha x + \beta) ^ \gamma - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the power inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} = - * \frac{\partial E}{\partial y} - * \alpha \gamma (\alpha x + \beta) ^ {\gamma - 1} = - * \frac{\partial E}{\partial y} - * \frac{\alpha \gamma y}{\alpha x + \beta} - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - /// @brief @f$ \gamma @f$ from layer_param_.power_param() - Dtype power_; - /// @brief @f$ \alpha @f$ from layer_param_.power_param() - Dtype scale_; - /// @brief @f$ \beta @f$ from layer_param_.power_param() - Dtype shift_; - /// @brief Result of @f$ \alpha \gamma @f$ - Dtype diff_scale_; -}; - -/** - * @brief Rectified Linear Unit non-linearity @f$ y = \max(0, x) @f$. - * The simple max is fast to compute, and the function does not saturate. - */ -template -class ReLULayer : public NeuronLayer { - public: - /** - * @param param provides ReLUParameter relu_param, - * with ReLULayer options: - * - negative_slope (\b optional, default 0). - * the value @f$ \nu @f$ by which negative values are multiplied. - */ - explicit ReLULayer(const LayerParameter& param) - : NeuronLayer(param) {} - - virtual inline const char* type() const { return "ReLU"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = \max(0, x) - * @f$ by default. If a non-zero negative_slope @f$ \nu @f$ is provided, - * the computed outputs are @f$ y = \max(0, x) + \nu \min(0, x) @f$. - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the ReLU inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} = \left\{ - * \begin{array}{lr} - * 0 & \mathrm{if} \; x \le 0 \\ - * \frac{\partial E}{\partial y} & \mathrm{if} \; x > 0 - * \end{array} \right. - * @f$ if propagate_down[0], by default. - * If a non-zero negative_slope @f$ \nu @f$ is provided, - * the computed gradients are @f$ - * \frac{\partial E}{\partial x} = \left\{ - * \begin{array}{lr} - * \nu \frac{\partial E}{\partial y} & \mathrm{if} \; x \le 0 \\ - * \frac{\partial E}{\partial y} & \mathrm{if} \; x > 0 - * \end{array} \right. - * @f$. - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -#ifdef USE_CUDNN -/** - * @brief CuDNN acceleration of ReLULayer. - */ -template -class CuDNNReLULayer : public ReLULayer { - public: - explicit CuDNNReLULayer(const LayerParameter& param) - : ReLULayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNReLULayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnTensorDescriptor_t bottom_desc_; - cudnnTensorDescriptor_t top_desc_; -}; -#endif - -/** - * @brief Sigmoid function non-linearity @f$ - * y = (1 + \exp(-x))^{-1} - * @f$, a classic choice in neural networks. - * - * Note that the gradient vanishes as the values move away from 0. - * The ReLULayer is often a better choice for this reason. - */ -template -class SigmoidLayer : public NeuronLayer { - public: - explicit SigmoidLayer(const LayerParameter& param) - : NeuronLayer(param) {} - - virtual inline const char* type() const { return "Sigmoid"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = (1 + \exp(-x))^{-1} - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the sigmoid inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} - * = \frac{\partial E}{\partial y} y (1 - y) - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -#ifdef USE_CUDNN -/** - * @brief CuDNN acceleration of SigmoidLayer. - */ -template -class CuDNNSigmoidLayer : public SigmoidLayer { - public: - explicit CuDNNSigmoidLayer(const LayerParameter& param) - : SigmoidLayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNSigmoidLayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnTensorDescriptor_t bottom_desc_; - cudnnTensorDescriptor_t top_desc_; -}; -#endif - -/** - * @brief TanH hyperbolic tangent non-linearity @f$ - * y = \frac{\exp(2x) - 1}{\exp(2x) + 1} - * @f$, popular in auto-encoders. - * - * Note that the gradient vanishes as the values move away from 0. - * The ReLULayer is often a better choice for this reason. - */ -template -class TanHLayer : public NeuronLayer { - public: - explicit TanHLayer(const LayerParameter& param) - : NeuronLayer(param) {} - - virtual inline const char* type() const { return "TanH"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = \frac{\exp(2x) - 1}{\exp(2x) + 1} - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the sigmoid inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times H \times W) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$; Backward fills their diff with - * gradients @f$ - * \frac{\partial E}{\partial x} - * = \frac{\partial E}{\partial y} - * \left(1 - \left[\frac{\exp(2x) - 1}{exp(2x) + 1} \right]^2 \right) - * = \frac{\partial E}{\partial y} (1 - y^2) - * @f$ if propagate_down[0] - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); -}; - -#ifdef USE_CUDNN -/** - * @brief CuDNN acceleration of TanHLayer. - */ -template -class CuDNNTanHLayer : public TanHLayer { - public: - explicit CuDNNTanHLayer(const LayerParameter& param) - : TanHLayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNTanHLayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnTensorDescriptor_t bottom_desc_; - cudnnTensorDescriptor_t top_desc_; -}; -#endif - -/** - * @brief Tests whether the input exceeds a threshold: outputs 1 for inputs - * above threshold; 0 otherwise. - */ -template -class ThresholdLayer : public NeuronLayer { - public: - /** - * @param param provides ThresholdParameter threshold_param, - * with ThresholdLayer options: - * - threshold (\b optional, default 0). - * the threshold value @f$ t @f$ to which the input values are compared. - */ - explicit ThresholdLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Threshold"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times H \times W) @f$ - * the computed outputs @f$ - * y = \left\{ - * \begin{array}{lr} - * 0 & \mathrm{if} \; x \le t \\ - * 1 & \mathrm{if} \; x > t - * \end{array} \right. - * @f$ - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - /// @brief Not implemented (non-differentiable function) - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom) { - NOT_IMPLEMENTED; - } - - Dtype threshold_; -}; - -/** - * @brief Parameterized Rectified Linear Unit non-linearity @f$ - * y_i = \max(0, x_i) + a_i \min(0, x_i) - * @f$. The differences from ReLULayer are 1) negative slopes are - * learnable though backprop and 2) negative slopes can vary across - * channels. The number of axes of input blob should be greater than or - * equal to 2. The 1st axis (0-based) is seen as channels. - */ -template -class PReLULayer : public NeuronLayer { - public: - /** - * @param param provides PReLUParameter prelu_param, - * with PReLULayer options: - * - filler (\b optional, FillerParameter, - * default {'type': constant 'value':0.25}). - * - channel_shared (\b optional, default false). - * negative slopes are shared across channels. - */ - explicit PReLULayer(const LayerParameter& param) - : NeuronLayer(param) {} - - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "PReLU"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times ...) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times ...) @f$ - * the computed outputs for each channel @f$i@f$ @f$ - * y_i = \max(0, x_i) + a_i \min(0, x_i) - * @f$. - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - - /** - * @brief Computes the error gradient w.r.t. the PReLU inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times ...) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times ...) @f$ - * the inputs @f$ x @f$; For each channel @f$i@f$, backward fills their - * diff with gradients @f$ - * \frac{\partial E}{\partial x_i} = \left\{ - * \begin{array}{lr} - * a_i \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i \le 0 \\ - * \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i > 0 - * \end{array} \right. - * @f$. - * If param_propagate_down_[0] is true, it fills the diff with gradients - * @f$ - * \frac{\partial E}{\partial a_i} = \left\{ - * \begin{array}{lr} - * \sum_{x_i} x_i \frac{\partial E}{\partial y_i} & \mathrm{if} \; x_i \le 0 \\ - * 0 & \mathrm{if} \; x_i > 0 - * \end{array} \right. - * @f$. - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool channel_shared_; - Blob multiplier_; // dot multiplier for backward computation of params - Blob backward_buff_; // temporary buffer for backward computation - Blob bottom_memory_; // memory for in-place computation -}; - -} // namespace caffe - -#endif // CAFFE_NEURON_LAYERS_HPP_ diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp deleted file mode 100644 index 237b05d6f..000000000 --- a/include/caffe/vision_layers.hpp +++ /dev/null @@ -1,659 +0,0 @@ -#ifndef CAFFE_VISION_LAYERS_HPP_ -#define CAFFE_VISION_LAYERS_HPP_ - -#include -#include -#include - -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/common_layers.hpp" -#include "caffe/data_layers.hpp" -#include "caffe/layer.hpp" -#include "caffe/loss_layers.hpp" -#include "caffe/neuron_layers.hpp" -#include "caffe/proto/caffe.pb.h" - -namespace caffe { - -/** - * @brief Abstract base class that factors out the BLAS code common to - * ConvolutionLayer and DeconvolutionLayer. - */ -template -class BaseConvolutionLayer : public Layer { - public: - explicit BaseConvolutionLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline int MinBottomBlobs() const { return 1; } - virtual inline int MinTopBlobs() const { return 1; } - virtual inline bool EqualNumBottomTopBlobs() const { return true; } - - protected: - // Helper functions that abstract away the column buffer and gemm arguments. - // The last argument in forward_cpu_gemm is so that we can skip the im2col if - // we just called weight_cpu_gemm with the same input. - void forward_cpu_gemm(const Dtype* input, const Dtype* weights, - Dtype* output, bool skip_im2col = false); - void forward_cpu_bias(Dtype* output, const Dtype* bias); - void backward_cpu_gemm(const Dtype* input, const Dtype* weights, - Dtype* output); - void weight_cpu_gemm(const Dtype* input, const Dtype* output, Dtype* - weights); - void backward_cpu_bias(Dtype* bias, const Dtype* input); - -#ifndef CPU_ONLY - void forward_gpu_gemm(const Dtype* col_input, const Dtype* weights, - Dtype* output, bool skip_im2col = false); - void forward_gpu_bias(Dtype* output, const Dtype* bias); - void backward_gpu_gemm(const Dtype* input, const Dtype* weights, - Dtype* col_output); - void weight_gpu_gemm(const Dtype* col_input, const Dtype* output, Dtype* - weights); - void backward_gpu_bias(Dtype* bias, const Dtype* input); -#endif - - /// @brief The spatial dimensions of the input. - inline int input_shape(int i) { - return (*bottom_shape_)[channel_axis_ + i]; - } - // reverse_dimensions should return true iff we are implementing deconv, so - // that conv helpers know which dimensions are which. - virtual bool reverse_dimensions() = 0; - // Compute height_out_ and width_out_ from other parameters. - virtual void compute_output_shape() = 0; - - /// @brief The spatial dimensions of a filter kernel. - Blob kernel_shape_; - /// @brief The spatial dimensions of the stride. - Blob stride_; - /// @brief The spatial dimensions of the padding. - Blob pad_; - /// @brief The spatial dimensions of the convolution input. - Blob conv_input_shape_; - /// @brief The spatial dimensions of the col_buffer. - vector col_buffer_shape_; - /// @brief The spatial dimensions of the output. - vector output_shape_; - const vector* bottom_shape_; - - int num_spatial_axes_; - int bottom_dim_; - int top_dim_; - - int channel_axis_; - int num_; - int channels_; - int group_; - int out_spatial_dim_; - int weight_offset_; - int num_output_; - bool bias_term_; - bool is_1x1_; - bool force_nd_im2col_; - - private: - // wrap im2col/col2im so we don't have to remember the (long) argument lists - inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) { - if (!force_nd_im2col_ && num_spatial_axes_ == 2) { - im2col_cpu(data, conv_in_channels_, - conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], - kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], - pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); - } else { - im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(), - col_buffer_shape_.data(), kernel_shape_.cpu_data(), - pad_.cpu_data(), stride_.cpu_data(), col_buff); - } - } - inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) { - if (!force_nd_im2col_ && num_spatial_axes_ == 2) { - col2im_cpu(col_buff, conv_in_channels_, - conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], - kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], - pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], data); - } else { - col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(), - col_buffer_shape_.data(), kernel_shape_.cpu_data(), - pad_.cpu_data(), stride_.cpu_data(), data); - } - } -#ifndef CPU_ONLY - inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) { - if (!force_nd_im2col_ && num_spatial_axes_ == 2) { - im2col_gpu(data, conv_in_channels_, - conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], - kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], - pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); - } else { - im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_, - conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), - kernel_shape_.gpu_data(), pad_.gpu_data(), - stride_.gpu_data(), col_buff); - } - } - inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) { - if (!force_nd_im2col_ && num_spatial_axes_ == 2) { - col2im_gpu(col_buff, conv_in_channels_, - conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], - kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], - pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], data); - } else { - col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_, - conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), - kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), - data); - } - } -#endif - - int num_kernels_im2col_; - int num_kernels_col2im_; - int conv_out_channels_; - int conv_in_channels_; - int conv_out_spatial_dim_; - int kernel_dim_; - int col_offset_; - int output_offset_; - - Blob col_buffer_; - Blob bias_multiplier_; -}; - -/** - * @brief Convolves the input image with a bank of learned filters, - * and (optionally) adds biases. - * - * Caffe convolves by reduction to matrix multiplication. This achieves - * high-throughput and generality of input and filter dimensions but comes at - * the cost of memory for matrices. This makes use of efficiency in BLAS. - * - * The input is "im2col" transformed to a channel K' x H x W data matrix - * for multiplication with the N x K' x H x W filter matrix to yield a - * N' x H x W output matrix that is then "col2im" restored. K' is the - * input channel * kernel height * kernel width dimension of the unrolled - * inputs so that the im2col matrix has a column for each input region to - * be filtered. col2im restores the output spatial structure by rolling up - * the output channel N' columns of the output matrix. - */ -template -class ConvolutionLayer : public BaseConvolutionLayer { - public: - /** - * @param param provides ConvolutionParameter convolution_param, - * with ConvolutionLayer options: - * - num_output. The number of filters. - * - kernel_size / kernel_h / kernel_w. The filter dimensions, given by - * kernel_size for square filters or kernel_h and kernel_w for rectangular - * filters. - * - stride / stride_h / stride_w (\b optional, default 1). The filter - * stride, given by stride_size for equal dimensions or stride_h and stride_w - * for different strides. By default the convolution is dense with stride 1. - * - pad / pad_h / pad_w (\b optional, default 0). The zero-padding for - * convolution, given by pad for equal dimensions or pad_h and pad_w for - * different padding. Input padding is computed implicitly instead of - * actually padding. - * - group (\b optional, default 1). The number of filter groups. Group - * convolution is a method for reducing parameterization by selectively - * connecting input and output channels. The input and output channel dimensions must be divisible - * by the number of groups. For group @f$ \geq 1 @f$, the - * convolutional filters' input and output channels are separated s.t. each - * group takes 1 / group of the input channels and makes 1 / group of the - * output channels. Concretely 4 input channels, 8 output channels, and - * 2 groups separate input channels 1-2 and output channels 1-4 into the - * first group and input channels 3-4 and output channels 5-8 into the second - * group. - * - bias_term (\b optional, default true). Whether to have a bias. - * - engine: convolution has CAFFE (matrix multiplication) and CUDNN (library - * kernels + stream parallelism) engines. - */ - explicit ConvolutionLayer(const LayerParameter& param) - : BaseConvolutionLayer(param) {} - - virtual inline const char* type() const { return "Convolution"; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual inline bool reverse_dimensions() { return false; } - virtual void compute_output_shape(); -}; - -/** - * @brief Convolve the input with a bank of learned filters, and (optionally) - * add biases, treating filters and convolution parameters in the - * opposite sense as ConvolutionLayer. - * - * ConvolutionLayer computes each output value by dotting an input window with - * a filter; DeconvolutionLayer multiplies each input value by a filter - * elementwise, and sums over the resulting output windows. In other words, - * DeconvolutionLayer is ConvolutionLayer with the forward and backward passes - * reversed. DeconvolutionLayer reuses ConvolutionParameter for its - * parameters, but they take the opposite sense as in ConvolutionLayer (so - * padding is removed from the output rather than added to the input, and - * stride results in upsampling rather than downsampling). - */ -template -class DeconvolutionLayer : public BaseConvolutionLayer { - public: - explicit DeconvolutionLayer(const LayerParameter& param) - : BaseConvolutionLayer(param) {} - - virtual inline const char* type() const { return "Deconvolution"; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual inline bool reverse_dimensions() { return true; } - virtual void compute_output_shape(); -}; - -#ifdef USE_CUDNN -/* - * @brief cuDNN implementation of ConvolutionLayer. - * Fallback to ConvolutionLayer for CPU mode. - * - * cuDNN accelerates convolution through forward kernels for filtering and bias - * plus backward kernels for the gradient w.r.t. the filters, biases, and - * inputs. Caffe + cuDNN further speeds up the computation through forward - * parallelism across groups and backward parallelism across gradients. - * - * The CUDNN engine does not have memory overhead for matrix buffers. For many - * input and filter regimes the CUDNN engine is faster than the CAFFE engine, - * but for fully-convolutional models and large inputs the CAFFE engine can be - * faster as long as it fits in memory. -*/ -template -class CuDNNConvolutionLayer : public ConvolutionLayer { - public: - explicit CuDNNConvolutionLayer(const LayerParameter& param) - : ConvolutionLayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNConvolutionLayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t* handle_; - cudaStream_t* stream_; - - // algorithms for forward and backwards convolutions - cudnnConvolutionFwdAlgo_t *fwd_algo_; - cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_; - cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_; - - vector bottom_descs_, top_descs_; - cudnnTensorDescriptor_t bias_desc_; - cudnnFilterDescriptor_t filter_desc_; - vector conv_descs_; - int bottom_offset_, top_offset_, bias_offset_; - - size_t *workspace_fwd_sizes_; - size_t *workspace_bwd_data_sizes_; - size_t *workspace_bwd_filter_sizes_; - size_t workspaceSizeInBytes; // size of underlying storage - void *workspaceData; // underlying storage - void **workspace; // aliases into workspaceData -}; -#endif - -/** - * @brief A helper for image operations that rearranges image regions into - * column vectors. Used by ConvolutionLayer to perform convolution - * by matrix multiplication. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class Im2colLayer : public Layer { - public: - explicit Im2colLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Im2col"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - /// @brief The spatial dimensions of a filter kernel. - Blob kernel_shape_; - /// @brief The spatial dimensions of the stride. - Blob stride_; - /// @brief The spatial dimensions of the padding. - Blob pad_; - - int num_spatial_axes_; - int bottom_dim_; - int top_dim_; - - int channel_axis_; - int num_; - int channels_; - - bool force_nd_im2col_; -}; - -// Forward declare PoolingLayer and SplitLayer for use in LRNLayer. -template class PoolingLayer; -template class SplitLayer; - -/** - * @brief Normalize the input in a local region across or within feature maps. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class LRNLayer : public Layer { - public: - explicit LRNLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "LRN"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - virtual void CrossChannelForward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void CrossChannelForward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void WithinChannelForward(const vector*>& bottom, - const vector*>& top); - virtual void CrossChannelBackward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void CrossChannelBackward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void WithinChannelBackward(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int size_; - int pre_pad_; - Dtype alpha_; - Dtype beta_; - Dtype k_; - int num_; - int channels_; - int height_; - int width_; - - // Fields used for normalization ACROSS_CHANNELS - // scale_ stores the intermediate summing results - Blob scale_; - - // Fields used for normalization WITHIN_CHANNEL - shared_ptr > split_layer_; - vector*> split_top_vec_; - shared_ptr > square_layer_; - Blob square_input_; - Blob square_output_; - vector*> square_bottom_vec_; - vector*> square_top_vec_; - shared_ptr > pool_layer_; - Blob pool_output_; - vector*> pool_top_vec_; - shared_ptr > power_layer_; - Blob power_output_; - vector*> power_top_vec_; - shared_ptr > product_layer_; - Blob product_input_; - vector*> product_bottom_vec_; -}; - -#ifdef USE_CUDNN - -template -class CuDNNLRNLayer : public LRNLayer { - public: - explicit CuDNNLRNLayer(const LayerParameter& param) - : LRNLayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNLRNLayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnLRNDescriptor_t norm_desc_; - cudnnTensorDescriptor_t bottom_desc_, top_desc_; - - int size_; - Dtype alpha_, beta_, k_; -}; - -template -class CuDNNLCNLayer : public LRNLayer { - public: - explicit CuDNNLCNLayer(const LayerParameter& param) - : LRNLayer(param), handles_setup_(false), tempDataSize(0), - tempData1(NULL), tempData2(NULL) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNLCNLayer(); - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnLRNDescriptor_t norm_desc_; - cudnnTensorDescriptor_t bottom_desc_, top_desc_; - - int size_, pre_pad_; - Dtype alpha_, beta_, k_; - - size_t tempDataSize; - void *tempData1, *tempData2; -}; - -#endif - -/** - * @brief Pools the input image by taking the max, average, etc. within regions. - * - * TODO(dox): thorough documentation for Forward, Backward, and proto params. - */ -template -class PoolingLayer : public Layer { - public: - explicit PoolingLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "Pooling"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int MinTopBlobs() const { return 1; } - // MAX POOL layers can output an extra top blob for the mask; - // others can only output the pooled inputs. - virtual inline int MaxTopBlobs() const { - return (this->layer_param_.pooling_param().pool() == - PoolingParameter_PoolMethod_MAX) ? 2 : 1; - } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - int kernel_h_, kernel_w_; - int stride_h_, stride_w_; - int pad_h_, pad_w_; - int channels_; - int height_, width_; - int pooled_height_, pooled_width_; - bool global_pooling_; - Blob rand_idx_; - Blob max_idx_; -}; - -#ifdef USE_CUDNN -/* - * @brief cuDNN implementation of PoolingLayer. - * Fallback to PoolingLayer for CPU mode. -*/ -template -class CuDNNPoolingLayer : public PoolingLayer { - public: - explicit CuDNNPoolingLayer(const LayerParameter& param) - : PoolingLayer(param), handles_setup_(false) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual ~CuDNNPoolingLayer(); - // Currently, cuDNN does not support the extra top blob. - virtual inline int MinTopBlobs() const { return -1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - - bool handles_setup_; - cudnnHandle_t handle_; - cudnnTensorDescriptor_t bottom_desc_, top_desc_; - cudnnPoolingDescriptor_t pooling_desc_; - cudnnPoolingMode_t mode_; -}; -#endif - -/** - * @brief Does spatial pyramid pooling on the input image - * by taking the max, average, etc. within regions - * so that the result vector of different sized - * images are of the same size. - */ -template -class SPPLayer : public Layer { - public: - explicit SPPLayer(const LayerParameter& param) - : Layer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - - virtual inline const char* type() const { return "SPP"; } - virtual inline int ExactNumBottomBlobs() const { return 1; } - virtual inline int ExactNumTopBlobs() const { return 1; } - - protected: - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, const vector*>& bottom); - // calculates the kernel and stride dimensions for the pooling layer, - // returns a correctly configured LayerParameter for a PoolingLayer - virtual LayerParameter GetPoolingParam(const int pyramid_level, - const int bottom_h, const int bottom_w, const SPPParameter spp_param); - - int pyramid_height_; - int bottom_h_, bottom_w_; - int num_; - int channels_; - int kernel_h_, kernel_w_; - int pad_h_, pad_w_; - bool reshaped_first_time_; - - /// the internal Split layer that feeds the pooling layers - shared_ptr > split_layer_; - /// top vector holder used in call to the underlying SplitLayer::Forward - vector*> split_top_vec_; - /// bottom vector holder used in call to the underlying PoolingLayer::Forward - vector*>*> pooling_bottom_vecs_; - /// the internal Pooling layers of different kernel sizes - vector > > pooling_layers_; - /// top vector holders used in call to the underlying PoolingLayer::Forward - vector*>*> pooling_top_vecs_; - /// pooling_outputs stores the outputs of the PoolingLayers - vector*> pooling_outputs_; - /// the internal Flatten layers that the Pooling layers feed into - vector*> flatten_layers_; - /// top vector holders used in call to the underlying FlattenLayer::Forward - vector*>*> flatten_top_vecs_; - /// flatten_outputs stores the outputs of the FlattenLayers - vector*> flatten_outputs_; - /// bottom vector holder used in call to the underlying ConcatLayer::Forward - vector*> concat_bottom_vec_; - /// the internal Concat layers that the Flatten layers feed into - shared_ptr > concat_layer_; -}; - -} // namespace caffe - -#endif // CAFFE_VISION_LAYERS_HPP_ diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 1a318f8d3..69d553328 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -15,7 +15,8 @@ #include // NOLINT #include "caffe/caffe.hpp" -#include "caffe/python_layer.hpp" +#include "caffe/layers/memory_data_layer.hpp" +#include "caffe/layers/python_layer.hpp" #include "caffe/sgd_solvers.hpp" // Temporary solution for numpy < 1.7 versions: old macro, no promises. diff --git a/src/caffe/data_reader.cpp b/src/caffe/data_reader.cpp index 16378203a..9f019bbfc 100644 --- a/src/caffe/data_reader.cpp +++ b/src/caffe/data_reader.cpp @@ -4,8 +4,8 @@ #include #include "caffe/common.hpp" -#include "caffe/data_layers.hpp" #include "caffe/data_reader.hpp" +#include "caffe/layers/data_layer.hpp" #include "caffe/proto/caffe.pb.h" namespace caffe { diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 417ffe986..76d851af9 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -7,11 +7,28 @@ #include "caffe/layer.hpp" #include "caffe/layer_factory.hpp" +#include "caffe/layers/conv_layer.hpp" +#include "caffe/layers/lrn_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/relu_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" +#include "caffe/layers/softmax_layer.hpp" +#include "caffe/layers/tanh_layer.hpp" #include "caffe/proto/caffe.pb.h" -#include "caffe/vision_layers.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_conv_layer.hpp" +#include "caffe/layers/cudnn_lcn_layer.hpp" +#include "caffe/layers/cudnn_lrn_layer.hpp" +#include "caffe/layers/cudnn_pooling_layer.hpp" +#include "caffe/layers/cudnn_relu_layer.hpp" +#include "caffe/layers/cudnn_sigmoid_layer.hpp" +#include "caffe/layers/cudnn_softmax_layer.hpp" +#include "caffe/layers/cudnn_tanh_layer.hpp" +#endif #ifdef WITH_PYTHON_LAYER -#include "caffe/python_layer.hpp" +#include "caffe/layers/python_layer.hpp" #endif namespace caffe { diff --git a/src/caffe/layers/absval_layer.cpp b/src/caffe/layers/absval_layer.cpp index 7e5523526..855bf0bfa 100644 --- a/src/caffe/layers/absval_layer.cpp +++ b/src/caffe/layers/absval_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/absval_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/absval_layer.cu b/src/caffe/layers/absval_layer.cu index b5a6c25a8..6c927e6fa 100644 --- a/src/caffe/layers/absval_layer.cu +++ b/src/caffe/layers/absval_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/absval_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/accuracy_layer.cpp b/src/caffe/layers/accuracy_layer.cpp index ae2df1f1b..4eddbb5c8 100644 --- a/src/caffe/layers/accuracy_layer.cpp +++ b/src/caffe/layers/accuracy_layer.cpp @@ -2,7 +2,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/accuracy_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/argmax_layer.cpp b/src/caffe/layers/argmax_layer.cpp index 354d83f70..2d3d6f2d3 100644 --- a/src/caffe/layers/argmax_layer.cpp +++ b/src/caffe/layers/argmax_layer.cpp @@ -3,7 +3,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/argmax_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index 316cb0fdf..f6f14cd0f 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -2,9 +2,9 @@ #include #include "caffe/filler.hpp" +#include "caffe/layers/base_conv_layer.hpp" #include "caffe/util/im2col.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/base_data_layer.cpp b/src/caffe/layers/base_data_layer.cpp index d77f91c91..989319f1a 100644 --- a/src/caffe/layers/base_data_layer.cpp +++ b/src/caffe/layers/base_data_layer.cpp @@ -1,7 +1,13 @@ #include #include -#include "caffe/data_layers.hpp" +#include "caffe/blob.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/blocking_queue.hpp" namespace caffe { diff --git a/src/caffe/layers/base_data_layer.cu b/src/caffe/layers/base_data_layer.cu index ff6e412ab..4056d36a7 100644 --- a/src/caffe/layers/base_data_layer.cu +++ b/src/caffe/layers/base_data_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/data_layers.hpp" +#include "caffe/layers/base_data_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index b5c91b5e1..a69d8f993 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/batch_norm_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu index 2a6cac541..c21713c81 100644 --- a/src/caffe/layers/batch_norm_layer.cu +++ b/src/caffe/layers/batch_norm_layer.cu @@ -1,7 +1,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/batch_norm_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/batch_reindex_layer.cpp b/src/caffe/layers/batch_reindex_layer.cpp index 3d3ce32c9..b14e56f7c 100644 --- a/src/caffe/layers/batch_reindex_layer.cpp +++ b/src/caffe/layers/batch_reindex_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/batch_reindex_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/batch_reindex_layer.cu b/src/caffe/layers/batch_reindex_layer.cu index 0b5ccf099..83054d36d 100644 --- a/src/caffe/layers/batch_reindex_layer.cu +++ b/src/caffe/layers/batch_reindex_layer.cu @@ -2,7 +2,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/batch_reindex_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/bnll_layer.cpp b/src/caffe/layers/bnll_layer.cpp index 1e422a546..448d86d75 100644 --- a/src/caffe/layers/bnll_layer.cpp +++ b/src/caffe/layers/bnll_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/bnll_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/bnll_layer.cu b/src/caffe/layers/bnll_layer.cu index 3e328ef70..8df8ef09a 100644 --- a/src/caffe/layers/bnll_layer.cu +++ b/src/caffe/layers/bnll_layer.cu @@ -1,7 +1,7 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/bnll_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/concat_layer.cpp b/src/caffe/layers/concat_layer.cpp index 14cbfb11f..580bd4797 100644 --- a/src/caffe/layers/concat_layer.cpp +++ b/src/caffe/layers/concat_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/concat_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/concat_layer.cu b/src/caffe/layers/concat_layer.cu index e1e9449e4..a3a0bf6f6 100644 --- a/src/caffe/layers/concat_layer.cu +++ b/src/caffe/layers/concat_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/concat_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/contrastive_loss_layer.cpp b/src/caffe/layers/contrastive_loss_layer.cpp index 45facd4a4..599e178e9 100644 --- a/src/caffe/layers/contrastive_loss_layer.cpp +++ b/src/caffe/layers/contrastive_loss_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/contrastive_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/contrastive_loss_layer.cu b/src/caffe/layers/contrastive_loss_layer.cu index ee2784077..fd7d67cca 100644 --- a/src/caffe/layers/contrastive_loss_layer.cu +++ b/src/caffe/layers/contrastive_loss_layer.cu @@ -1,7 +1,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/contrastive_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index efd69d45e..cff097839 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/conv_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/conv_layer.cu b/src/caffe/layers/conv_layer.cu index a534b3560..d06e4b624 100644 --- a/src/caffe/layers/conv_layer.cu +++ b/src/caffe/layers/conv_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/conv_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_conv_layer.cpp b/src/caffe/layers/cudnn_conv_layer.cpp index c82cb7efd..1987fb096 100644 --- a/src/caffe/layers/cudnn_conv_layer.cpp +++ b/src/caffe/layers/cudnn_conv_layer.cpp @@ -2,7 +2,7 @@ #include #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_conv_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index f2df4aa50..1990e932a 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_conv_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lcn_layer.cpp b/src/caffe/layers/cudnn_lcn_layer.cpp index 4c700786e..9c09bf26b 100644 --- a/src/caffe/layers/cudnn_lcn_layer.cpp +++ b/src/caffe/layers/cudnn_lcn_layer.cpp @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_lcn_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lcn_layer.cu b/src/caffe/layers/cudnn_lcn_layer.cu index e79c74589..b44ef4730 100644 --- a/src/caffe/layers/cudnn_lcn_layer.cu +++ b/src/caffe/layers/cudnn_lcn_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_lcn_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lrn_layer.cpp b/src/caffe/layers/cudnn_lrn_layer.cpp index a03db3bdd..0495b802b 100644 --- a/src/caffe/layers/cudnn_lrn_layer.cpp +++ b/src/caffe/layers/cudnn_lrn_layer.cpp @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_lrn_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_lrn_layer.cu b/src/caffe/layers/cudnn_lrn_layer.cu index 327e44b4d..ca647f3c6 100644 --- a/src/caffe/layers/cudnn_lrn_layer.cu +++ b/src/caffe/layers/cudnn_lrn_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_lrn_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_pooling_layer.cpp b/src/caffe/layers/cudnn_pooling_layer.cpp index 5f995d45e..24f14780b 100644 --- a/src/caffe/layers/cudnn_pooling_layer.cpp +++ b/src/caffe/layers/cudnn_pooling_layer.cpp @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_pooling_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_pooling_layer.cu b/src/caffe/layers/cudnn_pooling_layer.cu index 9aa39ed88..6f00195fa 100644 --- a/src/caffe/layers/cudnn_pooling_layer.cu +++ b/src/caffe/layers/cudnn_pooling_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_pooling_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_relu_layer.cpp b/src/caffe/layers/cudnn_relu_layer.cpp index e6b6d5a97..c86c69071 100644 --- a/src/caffe/layers/cudnn_relu_layer.cpp +++ b/src/caffe/layers/cudnn_relu_layer.cpp @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_relu_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_relu_layer.cu b/src/caffe/layers/cudnn_relu_layer.cu index 2a53a49b9..9f617183b 100644 --- a/src/caffe/layers/cudnn_relu_layer.cu +++ b/src/caffe/layers/cudnn_relu_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_relu_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_sigmoid_layer.cpp b/src/caffe/layers/cudnn_sigmoid_layer.cpp index 4b489fa5b..ccb955cda 100644 --- a/src/caffe/layers/cudnn_sigmoid_layer.cpp +++ b/src/caffe/layers/cudnn_sigmoid_layer.cpp @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_sigmoid_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_sigmoid_layer.cu b/src/caffe/layers/cudnn_sigmoid_layer.cu index 9de5c742c..e2a4b460c 100644 --- a/src/caffe/layers/cudnn_sigmoid_layer.cu +++ b/src/caffe/layers/cudnn_sigmoid_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_sigmoid_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_softmax_layer.cpp b/src/caffe/layers/cudnn_softmax_layer.cpp index f5cd04505..6440df980 100644 --- a/src/caffe/layers/cudnn_softmax_layer.cpp +++ b/src/caffe/layers/cudnn_softmax_layer.cpp @@ -3,7 +3,7 @@ #include "thrust/device_vector.h" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_softmax_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_softmax_layer.cu b/src/caffe/layers/cudnn_softmax_layer.cu index c270202f0..7283eb715 100644 --- a/src/caffe/layers/cudnn_softmax_layer.cu +++ b/src/caffe/layers/cudnn_softmax_layer.cu @@ -3,7 +3,7 @@ #include "thrust/device_vector.h" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/cudnn_softmax_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_tanh_layer.cpp b/src/caffe/layers/cudnn_tanh_layer.cpp index 462968180..1a5641822 100644 --- a/src/caffe/layers/cudnn_tanh_layer.cpp +++ b/src/caffe/layers/cudnn_tanh_layer.cpp @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/cudnn_tanh_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/cudnn_tanh_layer.cu b/src/caffe/layers/cudnn_tanh_layer.cu index 84f784b37..89df28a3e 100644 --- a/src/caffe/layers/cudnn_tanh_layer.cu +++ b/src/caffe/layers/cudnn_tanh_layer.cu @@ -1,7 +1,7 @@ #ifdef USE_CUDNN #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/cudnn_tanh_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index 49ac858ef..66e6301fd 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -5,8 +5,8 @@ #include -#include "caffe/data_layers.hpp" -#include "caffe/proto/caffe.pb.h" +#include "caffe/data_transformer.hpp" +#include "caffe/layers/data_layer.hpp" #include "caffe/util/benchmark.hpp" namespace caffe { diff --git a/src/caffe/layers/deconv_layer.cpp b/src/caffe/layers/deconv_layer.cpp index 5038b6389..275c05626 100644 --- a/src/caffe/layers/deconv_layer.cpp +++ b/src/caffe/layers/deconv_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/deconv_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/deconv_layer.cu b/src/caffe/layers/deconv_layer.cu index 0e8e2edea..226763223 100644 --- a/src/caffe/layers/deconv_layer.cu +++ b/src/caffe/layers/deconv_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/vision_layers.hpp" +#include "caffe/layers/deconv_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/dropout_layer.cpp b/src/caffe/layers/dropout_layer.cpp index eb7a8a9a2..9cb64d973 100644 --- a/src/caffe/layers/dropout_layer.cpp +++ b/src/caffe/layers/dropout_layer.cpp @@ -2,7 +2,7 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/dropout_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/dropout_layer.cu b/src/caffe/layers/dropout_layer.cu index 028fc026d..186c10ca4 100644 --- a/src/caffe/layers/dropout_layer.cu +++ b/src/caffe/layers/dropout_layer.cu @@ -1,11 +1,10 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/dropout_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { - template __global__ void DropoutForward(const int n, const Dtype* in, const unsigned int* mask, const unsigned int threshold, const float scale, @@ -68,5 +67,4 @@ void DropoutLayer::Backward_gpu(const vector*>& top, INSTANTIATE_LAYER_GPU_FUNCS(DropoutLayer); - } // namespace caffe diff --git a/src/caffe/layers/dummy_data_layer.cpp b/src/caffe/layers/dummy_data_layer.cpp index ab0478c86..e382bfea8 100644 --- a/src/caffe/layers/dummy_data_layer.cpp +++ b/src/caffe/layers/dummy_data_layer.cpp @@ -1,7 +1,7 @@ #include -#include "caffe/data_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/dummy_data_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/eltwise_layer.cpp b/src/caffe/layers/eltwise_layer.cpp index 7924fbeec..21256166b 100644 --- a/src/caffe/layers/eltwise_layer.cpp +++ b/src/caffe/layers/eltwise_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/eltwise_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/eltwise_layer.cu b/src/caffe/layers/eltwise_layer.cu index 014042098..c142852e0 100644 --- a/src/caffe/layers/eltwise_layer.cu +++ b/src/caffe/layers/eltwise_layer.cu @@ -1,7 +1,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/eltwise_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/embed_layer.cpp b/src/caffe/layers/embed_layer.cpp index 52704a06d..36b40d700 100644 --- a/src/caffe/layers/embed_layer.cpp +++ b/src/caffe/layers/embed_layer.cpp @@ -1,7 +1,7 @@ #include -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/embed_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/embed_layer.cu b/src/caffe/layers/embed_layer.cu index cd4b40f58..6324a3a89 100644 --- a/src/caffe/layers/embed_layer.cu +++ b/src/caffe/layers/embed_layer.cu @@ -1,7 +1,7 @@ #include -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/embed_layer.hpp" #include "caffe/util/gpu_util.cuh" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/euclidean_loss_layer.cpp b/src/caffe/layers/euclidean_loss_layer.cpp index 7338953d3..300d991e7 100644 --- a/src/caffe/layers/euclidean_loss_layer.cpp +++ b/src/caffe/layers/euclidean_loss_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/euclidean_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/euclidean_loss_layer.cu b/src/caffe/layers/euclidean_loss_layer.cu index 1aa79bd54..4c221b64f 100644 --- a/src/caffe/layers/euclidean_loss_layer.cu +++ b/src/caffe/layers/euclidean_loss_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/euclidean_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/exp_layer.cpp b/src/caffe/layers/exp_layer.cpp index f85692d6c..1f4a309fe 100644 --- a/src/caffe/layers/exp_layer.cpp +++ b/src/caffe/layers/exp_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/exp_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/exp_layer.cu b/src/caffe/layers/exp_layer.cu index 9e24bbeec..61f7f11dd 100644 --- a/src/caffe/layers/exp_layer.cu +++ b/src/caffe/layers/exp_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/exp_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/filter_layer.cpp b/src/caffe/layers/filter_layer.cpp index e8b62a5d5..e226c0b6c 100644 --- a/src/caffe/layers/filter_layer.cpp +++ b/src/caffe/layers/filter_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/filter_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/filter_layer.cu b/src/caffe/layers/filter_layer.cu index 746e91c9e..b01b16f84 100644 --- a/src/caffe/layers/filter_layer.cu +++ b/src/caffe/layers/filter_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/filter_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/flatten_layer.cpp b/src/caffe/layers/flatten_layer.cpp index d831fb5c6..651507e2e 100644 --- a/src/caffe/layers/flatten_layer.cpp +++ b/src/caffe/layers/flatten_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/flatten_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index c765fa02c..2f13dc641 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -14,7 +14,7 @@ #include "hdf5_hl.h" #include "stdint.h" -#include "caffe/data_layers.hpp" +#include "caffe/layers/hdf5_data_layer.hpp" #include "caffe/util/hdf5.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index 6ac499c6f..595d22302 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -9,7 +9,7 @@ TODO: #include "hdf5.h" #include "hdf5_hl.h" -#include "caffe/data_layers.hpp" +#include "caffe/layers/hdf5_data_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_output_layer.cpp b/src/caffe/layers/hdf5_output_layer.cpp index dbde65da1..f8f1edcd1 100644 --- a/src/caffe/layers/hdf5_output_layer.cpp +++ b/src/caffe/layers/hdf5_output_layer.cpp @@ -3,7 +3,7 @@ #include "hdf5.h" #include "hdf5_hl.h" -#include "caffe/data_layers.hpp" +#include "caffe/layers/hdf5_output_layer.hpp" #include "caffe/util/hdf5.hpp" namespace caffe { diff --git a/src/caffe/layers/hdf5_output_layer.cu b/src/caffe/layers/hdf5_output_layer.cu index ca8f26165..c1685cd34 100644 --- a/src/caffe/layers/hdf5_output_layer.cu +++ b/src/caffe/layers/hdf5_output_layer.cu @@ -3,7 +3,7 @@ #include "hdf5.h" #include "hdf5_hl.h" -#include "caffe/data_layers.hpp" +#include "caffe/layers/hdf5_output_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/hinge_loss_layer.cpp b/src/caffe/layers/hinge_loss_layer.cpp index a88c87752..374aed3c9 100644 --- a/src/caffe/layers/hinge_loss_layer.cpp +++ b/src/caffe/layers/hinge_loss_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/hinge_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index f3b0f7101..c12e4f52a 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -1,7 +1,7 @@ #include +#include "caffe/layers/im2col_layer.hpp" #include "caffe/util/im2col.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/im2col_layer.cu b/src/caffe/layers/im2col_layer.cu index 4633628b4..517b4220c 100644 --- a/src/caffe/layers/im2col_layer.cu +++ b/src/caffe/layers/im2col_layer.cu @@ -1,7 +1,7 @@ #include +#include "caffe/layers/im2col_layer.hpp" #include "caffe/util/im2col.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/image_data_layer.cpp b/src/caffe/layers/image_data_layer.cpp index 9a7df5a78..62fda4acc 100644 --- a/src/caffe/layers/image_data_layer.cpp +++ b/src/caffe/layers/image_data_layer.cpp @@ -7,7 +7,9 @@ #include #include -#include "caffe/data_layers.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/layers/image_data_layer.hpp" #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/layers/infogain_loss_layer.cpp b/src/caffe/layers/infogain_loss_layer.cpp index 88bd8aaf5..624d31181 100644 --- a/src/caffe/layers/infogain_loss_layer.cpp +++ b/src/caffe/layers/infogain_loss_layer.cpp @@ -2,7 +2,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/infogain_loss_layer.hpp" #include "caffe/util/io.hpp" namespace caffe { diff --git a/src/caffe/layers/inner_product_layer.cpp b/src/caffe/layers/inner_product_layer.cpp index 274744eaa..d90888055 100644 --- a/src/caffe/layers/inner_product_layer.cpp +++ b/src/caffe/layers/inner_product_layer.cpp @@ -1,7 +1,7 @@ #include -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/inner_product_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/inner_product_layer.cu b/src/caffe/layers/inner_product_layer.cu index e91e94fc9..dc25aa33b 100644 --- a/src/caffe/layers/inner_product_layer.cu +++ b/src/caffe/layers/inner_product_layer.cu @@ -1,7 +1,7 @@ #include -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/inner_product_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/log_layer.cpp b/src/caffe/layers/log_layer.cpp index a1876b9da..c70a795cf 100644 --- a/src/caffe/layers/log_layer.cpp +++ b/src/caffe/layers/log_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/log_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/log_layer.cu b/src/caffe/layers/log_layer.cu index 055b713be..db466dbac 100644 --- a/src/caffe/layers/log_layer.cu +++ b/src/caffe/layers/log_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/log_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/loss_layer.cpp b/src/caffe/layers/loss_layer.cpp index c10466dbd..c0b7a8621 100644 --- a/src/caffe/layers/loss_layer.cpp +++ b/src/caffe/layers/loss_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/loss_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/lrn_layer.cpp b/src/caffe/layers/lrn_layer.cpp index cc561811e..210525e20 100644 --- a/src/caffe/layers/lrn_layer.cpp +++ b/src/caffe/layers/lrn_layer.cpp @@ -1,7 +1,7 @@ #include +#include "caffe/layers/lrn_layer.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/lrn_layer.cu b/src/caffe/layers/lrn_layer.cu index 4523d4109..26e619c75 100644 --- a/src/caffe/layers/lrn_layer.cu +++ b/src/caffe/layers/lrn_layer.cu @@ -1,7 +1,7 @@ #include +#include "caffe/layers/lrn_layer.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/memory_data_layer.cpp b/src/caffe/layers/memory_data_layer.cpp index 13a3d9f61..829098740 100644 --- a/src/caffe/layers/memory_data_layer.cpp +++ b/src/caffe/layers/memory_data_layer.cpp @@ -4,7 +4,7 @@ #include -#include "caffe/data_layers.hpp" +#include "caffe/layers/memory_data_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/multinomial_logistic_loss_layer.cpp b/src/caffe/layers/multinomial_logistic_loss_layer.cpp index 597459238..65664998d 100644 --- a/src/caffe/layers/multinomial_logistic_loss_layer.cpp +++ b/src/caffe/layers/multinomial_logistic_loss_layer.cpp @@ -2,7 +2,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/multinomial_logistic_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/mvn_layer.cpp b/src/caffe/layers/mvn_layer.cpp index 0e7301442..8fe4ef8c0 100644 --- a/src/caffe/layers/mvn_layer.cpp +++ b/src/caffe/layers/mvn_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/mvn_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/mvn_layer.cu b/src/caffe/layers/mvn_layer.cu index b7e3b3ceb..739293be0 100644 --- a/src/caffe/layers/mvn_layer.cu +++ b/src/caffe/layers/mvn_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/mvn_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/neuron_layer.cpp b/src/caffe/layers/neuron_layer.cpp index 1dcb2c064..d7b5f3893 100644 --- a/src/caffe/layers/neuron_layer.cpp +++ b/src/caffe/layers/neuron_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/neuron_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/pooling_layer.cpp b/src/caffe/layers/pooling_layer.cpp index 3a7de42c9..90897db0f 100644 --- a/src/caffe/layers/pooling_layer.cpp +++ b/src/caffe/layers/pooling_layer.cpp @@ -2,8 +2,8 @@ #include #include +#include "caffe/layers/pooling_layer.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/pooling_layer.cu b/src/caffe/layers/pooling_layer.cu index 5e94ce2bc..1ea46cc81 100644 --- a/src/caffe/layers/pooling_layer.cu +++ b/src/caffe/layers/pooling_layer.cu @@ -2,8 +2,8 @@ #include #include +#include "caffe/layers/pooling_layer.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" namespace caffe { diff --git a/src/caffe/layers/power_layer.cpp b/src/caffe/layers/power_layer.cpp index 6304fadd4..d99b77ca8 100644 --- a/src/caffe/layers/power_layer.cpp +++ b/src/caffe/layers/power_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/power_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/power_layer.cu b/src/caffe/layers/power_layer.cu index 680faad4b..07711c421 100644 --- a/src/caffe/layers/power_layer.cu +++ b/src/caffe/layers/power_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/power_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/prelu_layer.cpp b/src/caffe/layers/prelu_layer.cpp index b5a294e1c..853181bd5 100644 --- a/src/caffe/layers/prelu_layer.cpp +++ b/src/caffe/layers/prelu_layer.cpp @@ -2,7 +2,9 @@ #include #include "caffe/filler.hpp" -#include "caffe/neuron_layers.hpp" + +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/prelu_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/prelu_layer.cu b/src/caffe/layers/prelu_layer.cu index 992cd885a..aeb80eacd 100644 --- a/src/caffe/layers/prelu_layer.cu +++ b/src/caffe/layers/prelu_layer.cu @@ -1,7 +1,8 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/layers/prelu_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/reduction_layer.cpp b/src/caffe/layers/reduction_layer.cpp index 6b7925e37..fa46487e6 100644 --- a/src/caffe/layers/reduction_layer.cpp +++ b/src/caffe/layers/reduction_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/reduction_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/reduction_layer.cu b/src/caffe/layers/reduction_layer.cu index a9a8c8d96..4a6b2b73f 100644 --- a/src/caffe/layers/reduction_layer.cu +++ b/src/caffe/layers/reduction_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/reduction_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/relu_layer.cpp b/src/caffe/layers/relu_layer.cpp index 93d090263..92a729c81 100644 --- a/src/caffe/layers/relu_layer.cpp +++ b/src/caffe/layers/relu_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/relu_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/relu_layer.cu b/src/caffe/layers/relu_layer.cu index c18ab61f2..4bf15b3aa 100644 --- a/src/caffe/layers/relu_layer.cu +++ b/src/caffe/layers/relu_layer.cu @@ -1,7 +1,7 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/relu_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/reshape_layer.cpp b/src/caffe/layers/reshape_layer.cpp index 8659049b5..82339f76d 100644 --- a/src/caffe/layers/reshape_layer.cpp +++ b/src/caffe/layers/reshape_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/reshape_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp index 985886378..10ac94708 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu index 48dbec41b..046cb9d3a 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_layer.cpp b/src/caffe/layers/sigmoid_layer.cpp index d4a3f8773..85fd96768 100644 --- a/src/caffe/layers/sigmoid_layer.cpp +++ b/src/caffe/layers/sigmoid_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/sigmoid_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/sigmoid_layer.cu b/src/caffe/layers/sigmoid_layer.cu index 5730636ef..184c61ede 100644 --- a/src/caffe/layers/sigmoid_layer.cu +++ b/src/caffe/layers/sigmoid_layer.cu @@ -1,7 +1,7 @@ #include #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/sigmoid_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/silence_layer.cpp b/src/caffe/layers/silence_layer.cpp index 3974f5d4e..b2f85c52a 100644 --- a/src/caffe/layers/silence_layer.cpp +++ b/src/caffe/layers/silence_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/silence_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/silence_layer.cu b/src/caffe/layers/silence_layer.cu index c49ecb233..3494f6f67 100644 --- a/src/caffe/layers/silence_layer.cu +++ b/src/caffe/layers/silence_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/silence_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/slice_layer.cpp b/src/caffe/layers/slice_layer.cpp index f368a249a..759beafe0 100644 --- a/src/caffe/layers/slice_layer.cpp +++ b/src/caffe/layers/slice_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/slice_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/slice_layer.cu b/src/caffe/layers/slice_layer.cu index d555f7d0d..1be3a797d 100644 --- a/src/caffe/layers/slice_layer.cu +++ b/src/caffe/layers/slice_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/slice_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_layer.cpp b/src/caffe/layers/softmax_layer.cpp index 8ae7d49cf..f60e9b03e 100644 --- a/src/caffe/layers/softmax_layer.cpp +++ b/src/caffe/layers/softmax_layer.cpp @@ -1,7 +1,7 @@ #include #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/softmax_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_layer.cu b/src/caffe/layers/softmax_layer.cu index a620fcc86..7a9e6833b 100644 --- a/src/caffe/layers/softmax_layer.cu +++ b/src/caffe/layers/softmax_layer.cu @@ -4,7 +4,7 @@ #include "thrust/device_vector.h" -#include "caffe/common_layers.hpp" +#include "caffe/layers/softmax_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_loss_layer.cpp b/src/caffe/layers/softmax_loss_layer.cpp index 3cdef82af..dddb76065 100644 --- a/src/caffe/layers/softmax_loss_layer.cpp +++ b/src/caffe/layers/softmax_loss_layer.cpp @@ -2,7 +2,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/softmax_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/softmax_loss_layer.cu b/src/caffe/layers/softmax_loss_layer.cu index 4753a1ec2..660e1b39f 100644 --- a/src/caffe/layers/softmax_loss_layer.cu +++ b/src/caffe/layers/softmax_loss_layer.cu @@ -2,7 +2,7 @@ #include #include -#include "caffe/loss_layers.hpp" +#include "caffe/layers/softmax_loss_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/split_layer.cpp b/src/caffe/layers/split_layer.cpp index 5333e578f..1a27a9af0 100644 --- a/src/caffe/layers/split_layer.cpp +++ b/src/caffe/layers/split_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/split_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/split_layer.cu b/src/caffe/layers/split_layer.cu index 73d04c98f..bec9987c7 100644 --- a/src/caffe/layers/split_layer.cu +++ b/src/caffe/layers/split_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/split_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/spp_layer.cpp b/src/caffe/layers/spp_layer.cpp index 2ef4ac7ab..b9af8e8af 100644 --- a/src/caffe/layers/spp_layer.cpp +++ b/src/caffe/layers/spp_layer.cpp @@ -1,7 +1,12 @@ #include #include -#include "caffe/vision_layers.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/concat_layer.hpp" +#include "caffe/layers/flatten_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/split_layer.hpp" +#include "caffe/layers/spp_layer.hpp" namespace caffe { @@ -217,7 +222,6 @@ void SPPLayer::Backward_cpu(const vector*>& top, split_layer_->Backward(split_top_vec_, propagate_down, bottom); } - INSTANTIATE_CLASS(SPPLayer); REGISTER_LAYER_CLASS(SPP); diff --git a/src/caffe/layers/tanh_layer.cpp b/src/caffe/layers/tanh_layer.cpp index 9d1cac761..184e926d2 100644 --- a/src/caffe/layers/tanh_layer.cpp +++ b/src/caffe/layers/tanh_layer.cpp @@ -3,7 +3,7 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/tanh_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/tanh_layer.cu b/src/caffe/layers/tanh_layer.cu index d87bccece..cbfc178e6 100644 --- a/src/caffe/layers/tanh_layer.cu +++ b/src/caffe/layers/tanh_layer.cu @@ -3,7 +3,7 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/tanh_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/threshold_layer.cpp b/src/caffe/layers/threshold_layer.cpp index d65147368..63822ee55 100644 --- a/src/caffe/layers/threshold_layer.cpp +++ b/src/caffe/layers/threshold_layer.cpp @@ -1,7 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" - +#include "caffe/layers/threshold_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/threshold_layer.cu b/src/caffe/layers/threshold_layer.cu index 1cd62d994..b0b066558 100644 --- a/src/caffe/layers/threshold_layer.cu +++ b/src/caffe/layers/threshold_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/threshold_layer.hpp" namespace caffe { diff --git a/src/caffe/layers/tile_layer.cpp b/src/caffe/layers/tile_layer.cpp index 581546c4f..cf0c18700 100644 --- a/src/caffe/layers/tile_layer.cpp +++ b/src/caffe/layers/tile_layer.cpp @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/tile_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/tile_layer.cu b/src/caffe/layers/tile_layer.cu index fdf960901..282049ebd 100644 --- a/src/caffe/layers/tile_layer.cu +++ b/src/caffe/layers/tile_layer.cu @@ -1,6 +1,6 @@ #include -#include "caffe/common_layers.hpp" +#include "caffe/layers/tile_layer.hpp" #include "caffe/util/math_functions.hpp" namespace caffe { diff --git a/src/caffe/layers/window_data_layer.cpp b/src/caffe/layers/window_data_layer.cpp index 3f937bc9d..4ca8315d7 100644 --- a/src/caffe/layers/window_data_layer.cpp +++ b/src/caffe/layers/window_data_layer.cpp @@ -12,7 +12,10 @@ #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" -#include "caffe/data_layers.hpp" +#include "caffe/data_transformer.hpp" +#include "caffe/internal_thread.hpp" +#include "caffe/layers/base_data_layer.hpp" +#include "caffe/layers/window_data_layer.hpp" #include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" diff --git a/src/caffe/test/test_accuracy_layer.cpp b/src/caffe/test/test_accuracy_layer.cpp index 5960a6667..6fe808bd5 100644 --- a/src/caffe/test/test_accuracy_layer.cpp +++ b/src/caffe/test/test_accuracy_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/accuracy_layer.hpp" #include "caffe/util/rng.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_argmax_layer.cpp b/src/caffe/test/test_argmax_layer.cpp index f3f2094ed..472e66522 100644 --- a/src/caffe/test/test_argmax_layer.cpp +++ b/src/caffe/test/test_argmax_layer.cpp @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/argmax_layer.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_batch_norm_layer.cpp b/src/caffe/test/test_batch_norm_layer.cpp index 22b9667f3..936b93a17 100644 --- a/src/caffe/test/test_batch_norm_layer.cpp +++ b/src/caffe/test/test_batch_norm_layer.cpp @@ -6,8 +6,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/batch_norm_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_batch_reindex_layer.cpp b/src/caffe/test/test_batch_reindex_layer.cpp index 17e47f050..9ea1a2f6f 100644 --- a/src/caffe/test/test_batch_reindex_layer.cpp +++ b/src/caffe/test/test_batch_reindex_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/batch_reindex_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_concat_layer.cpp b/src/caffe/test/test_concat_layer.cpp index 8ba51f4f7..23c1e8c1d 100644 --- a/src/caffe/test/test_concat_layer.cpp +++ b/src/caffe/test/test_concat_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/concat_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_contrastive_loss_layer.cpp b/src/caffe/test/test_contrastive_loss_layer.cpp index 95901f142..2fa055ee0 100644 --- a/src/caffe/test/test_contrastive_loss_layer.cpp +++ b/src/caffe/test/test_contrastive_loss_layer.cpp @@ -7,7 +7,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/contrastive_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index b47473571..e2d43f31b 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -5,7 +5,11 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/conv_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_conv_layer.hpp" +#endif #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_data_layer.cpp b/src/caffe/test/test_data_layer.cpp index 9e03954a5..3e8d113d9 100644 --- a/src/caffe/test/test_data_layer.cpp +++ b/src/caffe/test/test_data_layer.cpp @@ -7,8 +7,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/data_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/data_layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/db.hpp" #include "caffe/util/io.hpp" diff --git a/src/caffe/test/test_deconvolution_layer.cpp b/src/caffe/test/test_deconvolution_layer.cpp index b473dbb9c..c4b09ad55 100644 --- a/src/caffe/test/test_deconvolution_layer.cpp +++ b/src/caffe/test/test_deconvolution_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/deconv_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_dummy_data_layer.cpp b/src/caffe/test/test_dummy_data_layer.cpp index c9ed38db3..1a01ca85f 100644 --- a/src/caffe/test/test_dummy_data_layer.cpp +++ b/src/caffe/test/test_dummy_data_layer.cpp @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" +#include "caffe/layers/dummy_data_layer.hpp" #include "caffe/proto/caffe.pb.h" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_eltwise_layer.cpp b/src/caffe/test/test_eltwise_layer.cpp index 3b56c5cae..c06e3baab 100644 --- a/src/caffe/test/test_eltwise_layer.cpp +++ b/src/caffe/test/test_eltwise_layer.cpp @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/eltwise_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_embed_layer.cpp b/src/caffe/test/test_embed_layer.cpp index 0f4caf157..acd4b0f63 100644 --- a/src/caffe/test/test_embed_layer.cpp +++ b/src/caffe/test/test_embed_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/embed_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_euclidean_loss_layer.cpp b/src/caffe/test/test_euclidean_loss_layer.cpp index 9dc14de41..f253f9fd3 100644 --- a/src/caffe/test/test_euclidean_loss_layer.cpp +++ b/src/caffe/test/test_euclidean_loss_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/euclidean_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_filter_layer.cpp b/src/caffe/test/test_filter_layer.cpp index a2d0c2936..9ea2b8b21 100644 --- a/src/caffe/test/test_filter_layer.cpp +++ b/src/caffe/test/test_filter_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/filter_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_flatten_layer.cpp b/src/caffe/test/test_flatten_layer.cpp index 5d1caac2a..d929ac7a7 100644 --- a/src/caffe/test/test_flatten_layer.cpp +++ b/src/caffe/test/test_flatten_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/flatten_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_hdf5_output_layer.cpp b/src/caffe/test/test_hdf5_output_layer.cpp index adc27df4a..3833ebff7 100644 --- a/src/caffe/test/test_hdf5_output_layer.cpp +++ b/src/caffe/test/test_hdf5_output_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/data_layers.hpp" +#include "caffe/layers/hdf5_output_layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/hdf5.hpp" #include "caffe/util/io.hpp" diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 7169e7bfc..8884ce95a 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -1,11 +1,13 @@ #include #include +#include "hdf5.h" + #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/data_layers.hpp" +#include "caffe/layers/hdf5_data_layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_hinge_loss_layer.cpp b/src/caffe/test/test_hinge_loss_layer.cpp index dfdd01d02..8bf89fa63 100644 --- a/src/caffe/test/test_hinge_loss_layer.cpp +++ b/src/caffe/test/test_hinge_loss_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/hinge_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_im2col_kernel.cu b/src/caffe/test/test_im2col_kernel.cu index bafcacf78..3f97cf6d5 100644 --- a/src/caffe/test/test_im2col_kernel.cu +++ b/src/caffe/test/test_im2col_kernel.cu @@ -5,8 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/im2col_layer.hpp" #include "caffe/util/im2col.hpp" -#include "caffe/vision_layers.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index ec055b201..8274dd489 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/im2col_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_image_data_layer.cpp b/src/caffe/test/test_image_data_layer.cpp index 776902451..a4080ccd1 100644 --- a/src/caffe/test/test_image_data_layer.cpp +++ b/src/caffe/test/test_image_data_layer.cpp @@ -7,8 +7,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/data_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/image_data_layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/io.hpp" diff --git a/src/caffe/test/test_infogain_loss_layer.cpp b/src/caffe/test/test_infogain_loss_layer.cpp index b2a6754fd..a24ac683d 100644 --- a/src/caffe/test/test_infogain_loss_layer.cpp +++ b/src/caffe/test/test_infogain_loss_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/infogain_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_inner_product_layer.cpp b/src/caffe/test/test_inner_product_layer.cpp index 1ad2c97e7..b888b5103 100644 --- a/src/caffe/test/test_inner_product_layer.cpp +++ b/src/caffe/test/test_inner_product_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/inner_product_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_lrn_layer.cpp b/src/caffe/test/test_lrn_layer.cpp index bd1c4fe88..4c97b1ae0 100644 --- a/src/caffe/test/test_lrn_layer.cpp +++ b/src/caffe/test/test_lrn_layer.cpp @@ -6,7 +6,12 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/lrn_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_lcn_layer.hpp" +#include "caffe/layers/cudnn_lrn_layer.hpp" +#endif #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_maxpool_dropout_layers.cpp b/src/caffe/test/test_maxpool_dropout_layers.cpp index 8fc944f32..4f0e20ac3 100644 --- a/src/caffe/test/test_maxpool_dropout_layers.cpp +++ b/src/caffe/test/test_maxpool_dropout_layers.cpp @@ -5,7 +5,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/dropout_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_memory_data_layer.cpp b/src/caffe/test/test_memory_data_layer.cpp index 7269a4d44..7998bc182 100644 --- a/src/caffe/test/test_memory_data_layer.cpp +++ b/src/caffe/test/test_memory_data_layer.cpp @@ -5,8 +5,8 @@ #include #include -#include "caffe/data_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/memory_data_layer.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp index 0404aa25a..8cc210223 100644 --- a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp +++ b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/multinomial_logistic_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_mvn_layer.cpp b/src/caffe/test/test_mvn_layer.cpp index e9a7d54ce..28a762d27 100644 --- a/src/caffe/test/test_mvn_layer.cpp +++ b/src/caffe/test/test_mvn_layer.cpp @@ -2,8 +2,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/mvn_layer.hpp" #include "google/protobuf/text_format.h" #include "gtest/gtest.h" diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index b333fdee8..21441b412 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -6,9 +6,26 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" -#include "caffe/neuron_layers.hpp" + +#include "caffe/layers/absval_layer.hpp" +#include "caffe/layers/bnll_layer.hpp" +#include "caffe/layers/dropout_layer.hpp" +#include "caffe/layers/exp_layer.hpp" +#include "caffe/layers/inner_product_layer.hpp" +#include "caffe/layers/log_layer.hpp" +#include "caffe/layers/power_layer.hpp" +#include "caffe/layers/prelu_layer.hpp" +#include "caffe/layers/relu_layer.hpp" +#include "caffe/layers/sigmoid_layer.hpp" +#include "caffe/layers/tanh_layer.hpp" +#include "caffe/layers/threshold_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_relu_layer.hpp" +#include "caffe/layers/cudnn_sigmoid_layer.hpp" +#include "caffe/layers/cudnn_tanh_layer.hpp" +#endif #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_pooling_layer.cpp b/src/caffe/test/test_pooling_layer.cpp index 9e986e665..bb95cae03 100644 --- a/src/caffe/test/test_pooling_layer.cpp +++ b/src/caffe/test/test_pooling_layer.cpp @@ -5,7 +5,11 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/pooling_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_pooling_layer.hpp" +#endif #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_power_layer.cpp b/src/caffe/test/test_power_layer.cpp index 1041ddd4e..1aa587ac9 100644 --- a/src/caffe/test/test_power_layer.cpp +++ b/src/caffe/test/test_power_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/power_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_reduction_layer.cpp b/src/caffe/test/test_reduction_layer.cpp index a8d437271..6ed7cda6a 100644 --- a/src/caffe/test/test_reduction_layer.cpp +++ b/src/caffe/test/test_reduction_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/reduction_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_reshape_layer.cpp b/src/caffe/test/test_reshape_layer.cpp index e0f4ba428..4f2613868 100644 --- a/src/caffe/test/test_reshape_layer.cpp +++ b/src/caffe/test/test_reshape_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/reshape_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp index b4f831c8f..5dfd7656d 100644 --- a/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_slice_layer.cpp b/src/caffe/test/test_slice_layer.cpp index 45fbcffda..c2b231e1e 100644 --- a/src/caffe/test/test_slice_layer.cpp +++ b/src/caffe/test/test_slice_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/slice_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_softmax_layer.cpp b/src/caffe/test/test_softmax_layer.cpp index 4b01f5cfb..944435767 100644 --- a/src/caffe/test/test_softmax_layer.cpp +++ b/src/caffe/test/test_softmax_layer.cpp @@ -5,8 +5,12 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/softmax_layer.hpp" + +#ifdef USE_CUDNN +#include "caffe/layers/cudnn_softmax_layer.hpp" +#endif #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_softmax_with_loss_layer.cpp b/src/caffe/test/test_softmax_with_loss_layer.cpp index 0ae4cd681..c67f3e0d9 100644 --- a/src/caffe/test/test_softmax_with_loss_layer.cpp +++ b/src/caffe/test/test_softmax_with_loss_layer.cpp @@ -7,7 +7,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/loss_layers.hpp" +#include "caffe/layers/softmax_loss_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_split_layer.cpp b/src/caffe/test/test_split_layer.cpp index e27e355c7..ba2ccbb2b 100644 --- a/src/caffe/test/test_split_layer.cpp +++ b/src/caffe/test/test_split_layer.cpp @@ -6,8 +6,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/split_layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/util/insert_splits.hpp" diff --git a/src/caffe/test/test_spp_layer.cpp b/src/caffe/test/test_spp_layer.cpp index 1b48a842d..59a3af2ae 100644 --- a/src/caffe/test/test_spp_layer.cpp +++ b/src/caffe/test/test_spp_layer.cpp @@ -5,7 +5,12 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/concat_layer.hpp" +#include "caffe/layers/flatten_layer.hpp" +#include "caffe/layers/pooling_layer.hpp" +#include "caffe/layers/split_layer.hpp" +#include "caffe/layers/spp_layer.hpp" + #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_stochastic_pooling.cpp b/src/caffe/test/test_stochastic_pooling.cpp index 5a412bd4e..cd5db8383 100644 --- a/src/caffe/test/test_stochastic_pooling.cpp +++ b/src/caffe/test/test_stochastic_pooling.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/pooling_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_tanh_layer.cpp b/src/caffe/test/test_tanh_layer.cpp index f31579cac..bb8699a8e 100644 --- a/src/caffe/test/test_tanh_layer.cpp +++ b/src/caffe/test/test_tanh_layer.cpp @@ -6,7 +6,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/tanh_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/test/test_threshold_layer.cpp b/src/caffe/test/test_threshold_layer.cpp index 903a9bc81..1e84cc5ab 100644 --- a/src/caffe/test/test_threshold_layer.cpp +++ b/src/caffe/test/test_threshold_layer.cpp @@ -5,7 +5,7 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" -#include "caffe/neuron_layers.hpp" +#include "caffe/layers/threshold_layer.hpp" #include "caffe/test/test_caffe_main.hpp" diff --git a/src/caffe/test/test_tile_layer.cpp b/src/caffe/test/test_tile_layer.cpp index 5c459604a..7ff75520e 100644 --- a/src/caffe/test/test_tile_layer.cpp +++ b/src/caffe/test/test_tile_layer.cpp @@ -4,8 +4,8 @@ #include "caffe/blob.hpp" #include "caffe/common.hpp" -#include "caffe/common_layers.hpp" #include "caffe/filler.hpp" +#include "caffe/layers/tile_layer.hpp" #include "caffe/test/test_caffe_main.hpp" #include "caffe/test/test_gradient_check_util.hpp" diff --git a/src/caffe/util/blocking_queue.cpp b/src/caffe/util/blocking_queue.cpp index d1d1fa864..058668fe2 100644 --- a/src/caffe/util/blocking_queue.cpp +++ b/src/caffe/util/blocking_queue.cpp @@ -1,8 +1,8 @@ #include #include -#include "caffe/data_layers.hpp" #include "caffe/data_reader.hpp" +#include "caffe/layers/base_data_layer.hpp" #include "caffe/parallel.hpp" #include "caffe/util/blocking_queue.hpp" diff --git a/tools/extract_features.cpp b/tools/extract_features.cpp index b94dbb980..1ef132660 100644 --- a/tools/extract_features.cpp +++ b/tools/extract_features.cpp @@ -11,7 +11,6 @@ #include "caffe/util/db.hpp" #include "caffe/util/format.hpp" #include "caffe/util/io.hpp" -#include "caffe/vision_layers.hpp" using caffe::Blob; using caffe::Caffe; From 36bf811574a0787910d80d12fd9ea186481d7939 Mon Sep 17 00:00:00 2001 From: Tea Date: Wed, 2 Dec 2015 15:39:19 +0800 Subject: [PATCH 123/458] Remove hamming_distance and popcount --- include/caffe/util/math_functions.hpp | 7 ---- src/caffe/test/test_math_functions.cpp | 41 ----------------------- src/caffe/util/math_functions.cpp | 22 ------------- src/caffe/util/math_functions.cu | 45 -------------------------- 4 files changed, 115 deletions(-) diff --git a/include/caffe/util/math_functions.hpp b/include/caffe/util/math_functions.hpp index 2cacd8e72..6f6d3feea 100644 --- a/include/caffe/util/math_functions.hpp +++ b/include/caffe/util/math_functions.hpp @@ -101,9 +101,6 @@ template Dtype caffe_cpu_strided_dot(const int n, const Dtype* x, const int incx, const Dtype* y, const int incy); -template -int caffe_cpu_hamming_distance(const int n, const Dtype* x, const Dtype* y); - // Returns the sum of the absolute values of the elements of vector x template Dtype caffe_cpu_asum(const int n, const Dtype* x); @@ -234,10 +231,6 @@ void caffe_gpu_rng_bernoulli(const int n, const Dtype p, int* r); template void caffe_gpu_dot(const int n, const Dtype* x, const Dtype* y, Dtype* out); -template -uint32_t caffe_gpu_hamming_distance(const int n, const Dtype* x, - const Dtype* y); - template void caffe_gpu_asum(const int n, const Dtype* x, Dtype* y); diff --git a/src/caffe/test/test_math_functions.cpp b/src/caffe/test/test_math_functions.cpp index fbee3f9c3..efc5a2784 100644 --- a/src/caffe/test/test_math_functions.cpp +++ b/src/caffe/test/test_math_functions.cpp @@ -39,27 +39,6 @@ class MathFunctionsTest : public MultiDeviceTest { delete blob_top_; } - // http://en.wikipedia.org/wiki/Hamming_distance - int ReferenceHammingDistance(const int n, const Dtype* x, const Dtype* y) { - int dist = 0; - uint64_t val; - for (int i = 0; i < n; ++i) { - if (sizeof(Dtype) == 8) { - val = static_cast(x[i]) ^ static_cast(y[i]); - } else if (sizeof(Dtype) == 4) { - val = static_cast(x[i]) ^ static_cast(y[i]); - } else { - LOG(FATAL) << "Unrecognized Dtype size: " << sizeof(Dtype); - } - // Count the number of set bits - while (val) { - ++dist; - val &= val - 1; - } - } - return dist; - } - Blob* const blob_bottom_; Blob* const blob_top_; }; @@ -76,14 +55,6 @@ TYPED_TEST(CPUMathFunctionsTest, TestNothing) { // due to the set up overhead. } -TYPED_TEST(CPUMathFunctionsTest, TestHammingDistance) { - int n = this->blob_bottom_->count(); - const TypeParam* x = this->blob_bottom_->cpu_data(); - const TypeParam* y = this->blob_top_->cpu_data(); - EXPECT_EQ(this->ReferenceHammingDistance(n, x, y), - caffe_cpu_hamming_distance(n, x, y)); -} - TYPED_TEST(CPUMathFunctionsTest, TestAsum) { int n = this->blob_bottom_->count(); const TypeParam* x = this->blob_bottom_->cpu_data(); @@ -156,18 +127,6 @@ class GPUMathFunctionsTest : public MathFunctionsTest > { TYPED_TEST_CASE(GPUMathFunctionsTest, TestDtypes); -// TODO: Fix caffe_gpu_hamming_distance and re-enable this test. -TYPED_TEST(GPUMathFunctionsTest, DISABLED_TestHammingDistance) { - int n = this->blob_bottom_->count(); - const TypeParam* x = this->blob_bottom_->cpu_data(); - const TypeParam* y = this->blob_top_->cpu_data(); - int reference_distance = this->ReferenceHammingDistance(n, x, y); - x = this->blob_bottom_->gpu_data(); - y = this->blob_top_->gpu_data(); - int computed_distance = caffe_gpu_hamming_distance(n, x, y); - EXPECT_EQ(reference_distance, computed_distance); -} - TYPED_TEST(GPUMathFunctionsTest, TestAsum) { int n = this->blob_bottom_->count(); const TypeParam* x = this->blob_bottom_->cpu_data(); diff --git a/src/caffe/util/math_functions.cpp b/src/caffe/util/math_functions.cpp index 0aab6b17b..71c02274a 100644 --- a/src/caffe/util/math_functions.cpp +++ b/src/caffe/util/math_functions.cpp @@ -348,28 +348,6 @@ float caffe_cpu_dot(const int n, const float* x, const float* y); template double caffe_cpu_dot(const int n, const double* x, const double* y); -template <> -int caffe_cpu_hamming_distance(const int n, const float* x, - const float* y) { - int dist = 0; - for (int i = 0; i < n; ++i) { - dist += __builtin_popcount(static_cast(x[i]) ^ - static_cast(y[i])); - } - return dist; -} - -template <> -int caffe_cpu_hamming_distance(const int n, const double* x, - const double* y) { - int dist = 0; - for (int i = 0; i < n; ++i) { - dist += __builtin_popcountl(static_cast(x[i]) ^ - static_cast(y[i])); - } - return dist; -} - template <> float caffe_cpu_asum(const int n, const float* x) { return cblas_sasum(n, x, 1); diff --git a/src/caffe/util/math_functions.cu b/src/caffe/util/math_functions.cu index e4d0c4b04..4c5875374 100644 --- a/src/caffe/util/math_functions.cu +++ b/src/caffe/util/math_functions.cu @@ -371,51 +371,6 @@ DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(sign, y[index] = (Dtype(0) < x[index]) - (x[index] < Dtype(0))); DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(sgnbit, y[index] = signbit(x[index])); -__global__ void popc_kernel(const int n, const float* a, - const float* b, uint8_t* y) { - CUDA_KERNEL_LOOP(index, n) { - y[index] = __popc(static_cast(a[index]) ^ - static_cast(b[index])); - } -} - -__global__ void popcll_kernel(const int n, const double* a, - const double* b, uint8_t* y) { - CUDA_KERNEL_LOOP(index, n) { - y[index] = __popcll(static_cast(a[index]) ^ - static_cast(b[index])); - } -} - -template <> -uint32_t caffe_gpu_hamming_distance(const int n, const float* x, - const float* y) { - // TODO: Fix caffe_gpu_hamming_distance (see failing unit test - // TestHammingDistanceGPU in test_math_functions.cpp). - NOT_IMPLEMENTED; - thrust::device_vector popcounts(n); - // NOLINT_NEXT_LINE(whitespace/operators) - popc_kernel<<>>( - n, x, y, thrust::raw_pointer_cast(popcounts.data())); - return thrust::reduce(popcounts.begin(), popcounts.end(), - (uint32_t) 0, thrust::plus()); -} - -template <> -uint32_t caffe_gpu_hamming_distance(const int n, const double* x, - const double* y) { - // TODO: Fix caffe_gpu_hamming_distance (see failing unit test - // TestHammingDistanceGPU in test_math_functions.cpp). - NOT_IMPLEMENTED; - thrust::device_vector popcounts(n); - // NOLINT_NEXT_LINE(whitespace/operators) - popcll_kernel<<>>( - n, x, y, thrust::raw_pointer_cast(popcounts.data())); - return thrust::reduce(popcounts.begin(), popcounts.end(), - /* NOLINT_NEXT_LINE(build/include_what_you_use) */ - (uint32_t) 0, thrust::plus()); -} - void caffe_gpu_rng_uniform(const int n, unsigned int* r) { CURAND_CHECK(curandGenerate(Caffe::curand_generator(), r, n)); } From 52dcf4801dddf05df3ddef238895cabbc6c4384a Mon Sep 17 00:00:00 2001 From: Azat Date: Thu, 3 Dec 2015 13:56:48 +0300 Subject: [PATCH 124/458] sigmoid fix (cu) Previous implementation caused FP overflow for x less than -90 --- src/caffe/layers/sigmoid_layer.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/sigmoid_layer.cu b/src/caffe/layers/sigmoid_layer.cu index 184c61ede..8a4ea6616 100644 --- a/src/caffe/layers/sigmoid_layer.cu +++ b/src/caffe/layers/sigmoid_layer.cu @@ -8,7 +8,7 @@ namespace caffe { template __global__ void SigmoidForward(const int n, const Dtype* in, Dtype* out) { CUDA_KERNEL_LOOP(index, n) { - out[index] = 1. / (1. + exp(-in[index])); + out[index] = 0.5 * tanh(0.5 * in[index]) + 0.5; } } From 0f61cc09467afa35835dc09617f1042e4f77c9fb Mon Sep 17 00:00:00 2001 From: Azat Date: Thu, 3 Dec 2015 14:00:08 +0300 Subject: [PATCH 125/458] sigmoid fix (cpp) Previous implementation caused FP overflow for x less than -90 --- src/caffe/layers/sigmoid_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/sigmoid_layer.cpp b/src/caffe/layers/sigmoid_layer.cpp index 85fd96768..f8aa769a1 100644 --- a/src/caffe/layers/sigmoid_layer.cpp +++ b/src/caffe/layers/sigmoid_layer.cpp @@ -7,7 +7,7 @@ namespace caffe { template inline Dtype sigmoid(Dtype x) { - return 1. / (1. + exp(-x)); + return 0.5 * tanh(0.5 * x) + 0.5; } template From 99571c471d493c650c53be1416bb26d5b984f178 Mon Sep 17 00:00:00 2001 From: "T.E.A de Souza" Date: Sun, 29 Nov 2015 14:24:09 +0800 Subject: [PATCH 126/458] Correct type of device_id; disambiguate shared_ptr --- tools/extract_features.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/extract_features.cpp b/tools/extract_features.cpp index 1ef132660..d6562f980 100644 --- a/tools/extract_features.cpp +++ b/tools/extract_features.cpp @@ -16,7 +16,6 @@ using caffe::Blob; using caffe::Caffe; using caffe::Datum; using caffe::Net; -using boost::shared_ptr; using std::string; namespace db = caffe::db; @@ -51,7 +50,7 @@ int feature_extraction_pipeline(int argc, char** argv) { arg_pos = num_required_args; if (argc > arg_pos && strcmp(argv[arg_pos], "GPU") == 0) { LOG(ERROR)<< "Using GPU"; - uint device_id = 0; + int device_id = 0; if (argc > arg_pos + 1) { device_id = atoi(argv[arg_pos + 1]); CHECK_GE(device_id, 0); @@ -95,7 +94,7 @@ int feature_extraction_pipeline(int argc, char** argv) { } */ std::string feature_extraction_proto(argv[++arg_pos]); - shared_ptr > feature_extraction_net( + boost::shared_ptr > feature_extraction_net( new Net(feature_extraction_proto, caffe::TEST)); feature_extraction_net->CopyTrainedLayersFrom(pretrained_binary_proto); @@ -119,15 +118,15 @@ int feature_extraction_pipeline(int argc, char** argv) { int num_mini_batches = atoi(argv[++arg_pos]); - std::vector > feature_dbs; - std::vector > txns; + std::vector > feature_dbs; + std::vector > txns; const char* db_type = argv[++arg_pos]; for (size_t i = 0; i < num_features; ++i) { LOG(INFO)<< "Opening dataset " << dataset_names[i]; - shared_ptr db(db::GetDB(db_type)); + boost::shared_ptr db(db::GetDB(db_type)); db->Open(dataset_names.at(i), db::NEW); feature_dbs.push_back(db); - shared_ptr txn(db->NewTransaction()); + boost::shared_ptr txn(db->NewTransaction()); txns.push_back(txn); } @@ -139,8 +138,8 @@ int feature_extraction_pipeline(int argc, char** argv) { for (int batch_index = 0; batch_index < num_mini_batches; ++batch_index) { feature_extraction_net->Forward(input_vec); for (int i = 0; i < num_features; ++i) { - const shared_ptr > feature_blob = feature_extraction_net - ->blob_by_name(blob_names[i]); + const boost::shared_ptr > feature_blob = + feature_extraction_net->blob_by_name(blob_names[i]); int batch_size = feature_blob->num(); int dim_features = feature_blob->count() / batch_size; const Dtype* feature_blob_data; From a6681945be4736a584adadfaf2bffe43ad31422e Mon Sep 17 00:00:00 2001 From: Mohamed Omran Date: Thu, 26 Nov 2015 01:46:42 +0100 Subject: [PATCH 127/458] ELU layer with basic tests --- include/caffe/layers/elu_layer.hpp | 86 ++++++++++++++++++++++++++++ src/caffe/layers/elu_layer.cpp | 47 +++++++++++++++ src/caffe/layers/elu_layer.cu | 62 ++++++++++++++++++++ src/caffe/proto/caffe.proto | 11 +++- src/caffe/test/test_neuron_layer.cpp | 59 +++++++++++++++++++ 5 files changed, 264 insertions(+), 1 deletion(-) create mode 100644 include/caffe/layers/elu_layer.hpp create mode 100644 src/caffe/layers/elu_layer.cpp create mode 100644 src/caffe/layers/elu_layer.cu diff --git a/include/caffe/layers/elu_layer.hpp b/include/caffe/layers/elu_layer.hpp new file mode 100644 index 000000000..0796e8980 --- /dev/null +++ b/include/caffe/layers/elu_layer.hpp @@ -0,0 +1,86 @@ +#ifndef CAFFE_ELU_LAYER_HPP_ +#define CAFFE_ELU_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/neuron_layer.hpp" + +namespace caffe { + +/** + * @brief Exponential Linear Unit non-linearity @f$ + * y = \left\{ + * \begin{array}{lr} + * x & \mathrm{if} \; x > 0 \\ + * \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 + * \end{array} \right. + * @f$. + */ +template +class ELULayer : public NeuronLayer { + public: + /** + * @param param provides ELUParameter elu_param, + * with ELULayer options: + * - alpha (\b optional, default 1). + * the value @f$ \alpha @f$ by which controls saturation for negative inputs. + */ + explicit ELULayer(const LayerParameter& param) + : NeuronLayer(param) {} + + virtual inline const char* type() const { return "ELU"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the computed outputs @f$ + * y = \left\{ + * \begin{array}{lr} + * x & \mathrm{if} \; x > 0 \\ + * \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 + * \end{array} \right. + * @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the ELU inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times H \times W) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times H \times W) @f$ + * the inputs @f$ x @f$; Backward fills their diff with + * gradients @f$ + * \frac{\partial E}{\partial x} = \left\{ + * \begin{array}{lr} + * 1 & \mathrm{if} \; x > 0 \\ + * y + \alpha & \mathrm{if} \; x \le 0 + * \end{array} \right. + * @f$ if propagate_down[0]. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); +}; + + +} // namespace caffe + +#endif // CAFFE_ELU_LAYER_HPP_ diff --git a/src/caffe/layers/elu_layer.cpp b/src/caffe/layers/elu_layer.cpp new file mode 100644 index 000000000..a0f87635a --- /dev/null +++ b/src/caffe/layers/elu_layer.cpp @@ -0,0 +1,47 @@ +#include +#include + +#include "caffe/layers/elu_layer.hpp" + +namespace caffe { + +template +void ELULayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + for (int i = 0; i < count; ++i) { + top_data[i] = std::max(bottom_data[i], Dtype(0)) + + alpha * (exp(std::min(bottom_data[i], Dtype(0))) - Dtype(1)); + } +} + +template +void ELULayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* top_data = top[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + for (int i = 0; i < count; ++i) { + bottom_diff[i] = top_diff[i] * ((bottom_data[i] > 0) + + (alpha + top_data[i]) * (bottom_data[i] <= 0)); + } + } +} + + +#ifdef CPU_ONLY +STUB_GPU(ELULayer); +#endif + +INSTANTIATE_CLASS(ELULayer); +REGISTER_LAYER_CLASS(ELU); + +} // namespace caffe diff --git a/src/caffe/layers/elu_layer.cu b/src/caffe/layers/elu_layer.cu new file mode 100644 index 000000000..12545aa82 --- /dev/null +++ b/src/caffe/layers/elu_layer.cu @@ -0,0 +1,62 @@ +#include +#include + +#include "caffe/layers/elu_layer.hpp" + +namespace caffe { + +template +__global__ void ELUForward(const int n, const Dtype* in, Dtype* out, + Dtype alpha) { + CUDA_KERNEL_LOOP(index, n) { + out[index] = in[index] > 0 ? in[index] : + alpha * (exp(in[index]) - 1); + } +} + +template +void ELULayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + // NOLINT_NEXT_LINE(whitespace/operators) + ELUForward<<>>( + count, bottom_data, top_data, alpha); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void ELUBackward(const int n, const Dtype* in_diff, + const Dtype* out_data, const Dtype* in_data, + Dtype* out_diff, Dtype alpha) { + CUDA_KERNEL_LOOP(index, n) { + out_diff[index] = in_data[index] > 0 ? in_diff[index] : + in_diff[index] * (out_data[index] + alpha); + } +} + +template +void ELULayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + if (propagate_down[0]) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* top_data = top[0]->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int count = bottom[0]->count(); + Dtype alpha = this->layer_param_.elu_param().alpha(); + // NOLINT_NEXT_LINE(whitespace/operators) + ELUBackward<<>>( + count, top_diff, top_data, bottom_data, bottom_diff, alpha); + CUDA_POST_KERNEL_CHECK; + } +} + + +INSTANTIATE_LAYER_GPU_FUNCS(ELULayer); + + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 787369f7c..1daf148d3 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 140 (last added: batch_norm_param) +// LayerParameter next available layer-specific ID: 141 (last added: elu_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -363,6 +363,7 @@ message LayerParameter { optional DropoutParameter dropout_param = 108; optional DummyDataParameter dummy_data_param = 109; optional EltwiseParameter eltwise_param = 110; + optional ELUParameter elu_param = 140; optional EmbedParameter embed_param = 137; optional ExpParameter exp_param = 111; optional FlattenParameter flatten_param = 135; @@ -629,6 +630,14 @@ message EltwiseParameter { optional bool stable_prod_grad = 3 [default = true]; } +// Message that stores parameters used by ELULayer +message ELUParameter { + // Described in: + // Clevert, D.-A., Unterthiner, T., & Hochreiter, S. (2015). Fast and Accurate + // Deep Network Learning by Exponential Linear Units (ELUs). arXiv + optional float alpha = 1 [default = 1]; +} + // Message that stores parameters used by EmbedLayer message EmbedParameter { optional uint32 num_output = 1; // The number of outputs for the layer diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index 21441b412..dd591f7d2 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -11,6 +11,7 @@ #include "caffe/layers/absval_layer.hpp" #include "caffe/layers/bnll_layer.hpp" #include "caffe/layers/dropout_layer.hpp" +#include "caffe/layers/elu_layer.hpp" #include "caffe/layers/exp_layer.hpp" #include "caffe/layers/inner_product_layer.hpp" #include "caffe/layers/log_layer.hpp" @@ -259,6 +260,64 @@ TYPED_TEST(NeuronLayerTest, TestReLUGradientWithNegativeSlope) { this->blob_top_vec_); } +TYPED_TEST(NeuronLayerTest, TestELU) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "elu_param { alpha: 0.5 }", &layer_param)); + ELULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype kDelta = 2e-4; + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + if (bottom_data[i] > 0) { + EXPECT_FLOAT_EQ(top_data[i], bottom_data[i]); + } else { + EXPECT_NEAR(top_data[i], 0.5 * (exp(bottom_data[i]) - 1), kDelta); + } + } +} + +TYPED_TEST(NeuronLayerTest, TestELUasReLU) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "elu_param { alpha: 0 }", &layer_param)); + ELULayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_GE(top_data[i], 0.); + EXPECT_TRUE(top_data[i] == 0 || top_data[i] == bottom_data[i]); + } +} + +TYPED_TEST(NeuronLayerTest, TestELUGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ELULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(NeuronLayerTest, TestELUasReLUGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CHECK(google::protobuf::TextFormat::ParseFromString( + "elu_param { alpha: 0 }", &layer_param)); + ELULayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + TYPED_TEST(NeuronLayerTest, TestSigmoid) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; From b13bda2fcc984ce916d4911c90f5466056f25092 Mon Sep 17 00:00:00 2001 From: Ian Hunter Date: Wed, 9 Dec 2015 13:29:01 +0000 Subject: [PATCH 128/458] Update interfaces.md typo --- docs/tutorial/interfaces.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/interfaces.md b/docs/tutorial/interfaces.md index 9006179d0..d7ff37823 100644 --- a/docs/tutorial/interfaces.md +++ b/docs/tutorial/interfaces.md @@ -61,7 +61,7 @@ For a full example of fine-tuning, see examples/finetuning_on_flickr_style, but The Python interface -- pycaffe -- is the `caffe` module and its scripts in caffe/python. `import caffe` to load models, do forward and backward, handle IO, visualize networks, and even instrument model solving. All model data, derivatives, and parameters are exposed for reading and writing. -- `caffe.Net` is the central interface for loading, configuring, and running models. `caffe.Classsifier` and `caffe.Detector` provide convenience interfaces for common tasks. +- `caffe.Net` is the central interface for loading, configuring, and running models. `caffe.Classifier` and `caffe.Detector` provide convenience interfaces for common tasks. - `caffe.SGDSolver` exposes the solving interface. - `caffe.io` handles input / output with preprocessing and protocol buffers. - `caffe.draw` visualizes network architectures. From eb2b848df173f7a07eb0d76a432c5d4badca7ba6 Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Thu, 10 Dec 2015 15:11:51 -0800 Subject: [PATCH 129/458] Fix CuDNNConvolutionLayer for cuDNN v4 Add a macro to check the current cuDNN version --- include/caffe/util/cudnn.hpp | 3 +++ src/caffe/layers/cudnn_conv_layer.cu | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/include/caffe/util/cudnn.hpp b/include/caffe/util/cudnn.hpp index b531dd5fa..8a7e17c6c 100644 --- a/include/caffe/util/cudnn.hpp +++ b/include/caffe/util/cudnn.hpp @@ -7,6 +7,9 @@ #include "caffe/common.hpp" #include "caffe/proto/caffe.pb.h" +#define CUDNN_VERSION_MIN(major, minor, patch) \ + (CUDNN_VERSION >= (major * 1000 + minor * 100 + patch)) + #define CUDNN_CHECK(condition) \ do { \ cudnnStatus_t status = condition; \ diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index 1990e932a..42c4fd026 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -30,11 +30,19 @@ void CuDNNConvolutionLayer::Forward_gpu( // Bias. if (this->bias_term_) { const Dtype* bias_data = this->blobs_[1]->gpu_data(); +#if CUDNN_VERSION_MIN(4, 0, 0) + CUDNN_CHECK(cudnnAddTensor(handle_[g], + cudnn::dataType::one, + bias_desc_, bias_data + bias_offset_ * g, + cudnn::dataType::one, + top_descs_[i], top_data + top_offset_ * g)); +#else CUDNN_CHECK(cudnnAddTensor(handle_[g], CUDNN_ADD_SAME_C, cudnn::dataType::one, bias_desc_, bias_data + bias_offset_ * g, cudnn::dataType::one, top_descs_[i], top_data + top_offset_ * g)); +#endif } } From 12f85982c4599734a43d95e2c4b7565aad410530 Mon Sep 17 00:00:00 2001 From: Jacek Czaja Date: Mon, 14 Dec 2015 16:45:59 +0100 Subject: [PATCH 130/458] - Fix to cmake build for clang --- CMakeLists.txt | 2 ++ cmake/Targets.cmake | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c446c6089..f1ab1936f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,8 @@ if(UNIX OR APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall") endif() +caffe_set_caffe_link() + if(USE_libstdcpp) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++") message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)") diff --git a/cmake/Targets.cmake b/cmake/Targets.cmake index 2401f252e..a796d0054 100644 --- a/cmake/Targets.cmake +++ b/cmake/Targets.cmake @@ -1,16 +1,17 @@ ################################################################################################ # Defines global Caffe_LINK flag, This flag is required to prevent linker from excluding # some objects which are not addressed directly but are registered via static constructors -if(BUILD_SHARED_LIBS) - set(Caffe_LINK caffe) -else() - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(Caffe_LINK -Wl,-force_load caffe) - elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - set(Caffe_LINK -Wl,--whole-archive caffe -Wl,--no-whole-archive) +macro(caffe_set_caffe_link) + if(BUILD_SHARED_LIBS) + set(Caffe_LINK caffe) + else() + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(Caffe_LINK -Wl,-force_load caffe) + elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(Caffe_LINK -Wl,--whole-archive caffe -Wl,--no-whole-archive) + endif() endif() -endif() - +endmacro() ################################################################################################ # Convenient command to setup source group for IDEs that support this feature (VS, XCode) # Usage: From f19896ccca23f091abb82d77a2f281a9c954a147 Mon Sep 17 00:00:00 2001 From: Muneyuki Noguchi Date: Sun, 20 Dec 2015 19:12:09 +0900 Subject: [PATCH 131/458] Replace blobs_lr with lr_mult in readme.md. models/finetune_flickr_style/deploy.prototxt uses lr_mult now. --- examples/finetune_flickr_style/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/finetune_flickr_style/readme.md b/examples/finetune_flickr_style/readme.md index ecb9d3d2e..4e9d41f13 100644 --- a/examples/finetune_flickr_style/readme.md +++ b/examples/finetune_flickr_style/readme.md @@ -22,10 +22,10 @@ Because we are predicting 20 classes instead of a 1,000, we do need to change th Therefore, we change the name of the last layer from `fc8` to `fc8_flickr` in our prototxt. Since there is no layer named that in the `bvlc_reference_caffenet`, that layer will begin training with random weights. -We will also decrease the overall learning rate `base_lr` in the solver prototxt, but boost the `blobs_lr` on the newly introduced layer. +We will also decrease the overall learning rate `base_lr` in the solver prototxt, but boost the `lr_mult` on the newly introduced layer. The idea is to have the rest of the model change very slowly with new data, but let the new layer learn fast. Additionally, we set `stepsize` in the solver to a lower value than if we were training from scratch, since we're virtually far along in training and therefore want the learning rate to go down faster. -Note that we could also entirely prevent fine-tuning of all layers other than `fc8_flickr` by setting their `blobs_lr` to 0. +Note that we could also entirely prevent fine-tuning of all layers other than `fc8_flickr` by setting their `lr_mult` to 0. ## Procedure From 93bfcb53120416255d6d7261b638f0b38ff9e9bf Mon Sep 17 00:00:00 2001 From: Fisher Yu Date: Sun, 6 Dec 2015 20:04:43 -0500 Subject: [PATCH 132/458] add support for 2D dilated convolution --- include/caffe/layers/base_conv_layer.hpp | 14 ++-- include/caffe/layers/conv_layer.hpp | 3 + include/caffe/layers/im2col_layer.hpp | 2 + include/caffe/util/im2col.hpp | 12 ++-- src/caffe/layer_factory.cpp | 17 ++++- src/caffe/layers/base_conv_layer.cpp | 20 +++++- src/caffe/layers/conv_layer.cpp | 4 +- src/caffe/layers/im2col_layer.cpp | 21 +++++- src/caffe/layers/im2col_layer.cu | 2 + src/caffe/proto/caffe.proto | 1 + src/caffe/test/test_convolution_layer.cpp | 14 ++-- src/caffe/test/test_im2col_kernel.cu | 17 ++++- src/caffe/test/test_im2col_layer.cpp | 3 +- src/caffe/util/im2col.cpp | 34 ++++++---- src/caffe/util/im2col.cu | 80 ++++++++++++----------- 15 files changed, 170 insertions(+), 74 deletions(-) diff --git a/include/caffe/layers/base_conv_layer.hpp b/include/caffe/layers/base_conv_layer.hpp index f3def16c0..db471b586 100644 --- a/include/caffe/layers/base_conv_layer.hpp +++ b/include/caffe/layers/base_conv_layer.hpp @@ -68,6 +68,8 @@ class BaseConvolutionLayer : public Layer { Blob stride_; /// @brief The spatial dimensions of the padding. Blob pad_; + /// @brief The spatial dimensions of the dilation. + Blob dilation_; /// @brief The spatial dimensions of the convolution input. Blob conv_input_shape_; /// @brief The spatial dimensions of the col_buffer. @@ -99,7 +101,8 @@ class BaseConvolutionLayer : public Layer { conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], col_buff); } else { im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(), col_buffer_shape_.data(), kernel_shape_.cpu_data(), @@ -112,7 +115,8 @@ class BaseConvolutionLayer : public Layer { conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], data); + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], data); } else { col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(), col_buffer_shape_.data(), kernel_shape_.cpu_data(), @@ -126,7 +130,8 @@ class BaseConvolutionLayer : public Layer { conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff); + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], col_buff); } else { im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_, conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), @@ -140,7 +145,8 @@ class BaseConvolutionLayer : public Layer { conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2], kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], - stride_.cpu_data()[0], stride_.cpu_data()[1], data); + stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], data); } else { col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_, conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), diff --git a/include/caffe/layers/conv_layer.hpp b/include/caffe/layers/conv_layer.hpp index 15574766d..93a618ddd 100644 --- a/include/caffe/layers/conv_layer.hpp +++ b/include/caffe/layers/conv_layer.hpp @@ -44,6 +44,9 @@ class ConvolutionLayer : public BaseConvolutionLayer { * convolution, given by pad for equal dimensions or pad_h and pad_w for * different padding. Input padding is computed implicitly instead of * actually padding. + * - dilation (\b optional, default 1). The filter + * dilation, given by dilation_size for equal dimensions for different + * dilation. By default the convolution has dilation 1. * - group (\b optional, default 1). The number of filter groups. Group * convolution is a method for reducing parameterization by selectively * connecting input and output channels. The input and output channel dimensions must be divisible diff --git a/include/caffe/layers/im2col_layer.hpp b/include/caffe/layers/im2col_layer.hpp index 1d3b2eb67..71e32f742 100644 --- a/include/caffe/layers/im2col_layer.hpp +++ b/include/caffe/layers/im2col_layer.hpp @@ -46,6 +46,8 @@ class Im2colLayer : public Layer { Blob stride_; /// @brief The spatial dimensions of the padding. Blob pad_; + /// @brief The spatial dimensions of the dilation. + Blob dilation_; int num_spatial_axes_; int bottom_dim_; diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index d3eb6ccd6..748b65c4f 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -13,7 +13,8 @@ template void im2col_cpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, Dtype* data_col); + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_col); template void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, @@ -25,7 +26,8 @@ template void col2im_cpu(const Dtype* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, Dtype* data_im); + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_im); template void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, @@ -37,7 +39,8 @@ template void im2col_gpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, Dtype* data_col); + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_col); template void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, @@ -49,7 +52,8 @@ template void col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, Dtype* data_im); + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_im); } // namespace caffe diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 76d851af9..6b1d1c1a5 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -37,17 +37,30 @@ namespace caffe { template shared_ptr > GetConvolutionLayer( const LayerParameter& param) { - ConvolutionParameter_Engine engine = param.convolution_param().engine(); + ConvolutionParameter conv_param = param.convolution_param(); + ConvolutionParameter_Engine engine = conv_param.engine(); + bool use_dilation = false; + for (int i = 0; i < conv_param.dilation_size(); ++i) { + if (conv_param.dilation(i) > 1) { + use_dilation = true; + } + } if (engine == ConvolutionParameter_Engine_DEFAULT) { engine = ConvolutionParameter_Engine_CAFFE; #ifdef USE_CUDNN - engine = ConvolutionParameter_Engine_CUDNN; + if (!use_dilation) { + engine = ConvolutionParameter_Engine_CUDNN; + } #endif } if (engine == ConvolutionParameter_Engine_CAFFE) { return shared_ptr >(new ConvolutionLayer(param)); #ifdef USE_CUDNN } else if (engine == ConvolutionParameter_Engine_CUDNN) { + if (use_dilation) { + LOG(FATAL) << "CuDNN doesn't support the dilated convolution at Layer " + << param.name(); + } return shared_ptr >(new CuDNNConvolutionLayer(param)); #endif } else { diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index f6f14cd0f..4a4c68e00 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -36,7 +36,7 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, CHECK(num_kernel_dims == 1 || num_kernel_dims == num_spatial_axes_) << "kernel_size must be specified once, or once per spatial dimension " << "(kernel_size specified " << num_kernel_dims << " times; " - << num_spatial_axes_ << " spatial dims);"; + << num_spatial_axes_ << " spatial dims)."; for (int i = 0; i < num_spatial_axes_; ++i) { kernel_shape_data[i] = conv_param.kernel_size((num_kernel_dims == 1) ? 0 : i); @@ -61,7 +61,7 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, num_stride_dims == num_spatial_axes_) << "stride must be specified once, or once per spatial dimension " << "(stride specified " << num_stride_dims << " times; " - << num_spatial_axes_ << " spatial dims);"; + << num_spatial_axes_ << " spatial dims)."; const int kDefaultStride = 1; for (int i = 0; i < num_spatial_axes_; ++i) { stride_data[i] = (num_stride_dims == 0) ? kDefaultStride : @@ -85,13 +85,27 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, num_pad_dims == num_spatial_axes_) << "pad must be specified once, or once per spatial dimension " << "(pad specified " << num_pad_dims << " times; " - << num_spatial_axes_ << " spatial dims);"; + << num_spatial_axes_ << " spatial dims)."; const int kDefaultPad = 0; for (int i = 0; i < num_spatial_axes_; ++i) { pad_data[i] = (num_pad_dims == 0) ? kDefaultPad : conv_param.pad((num_pad_dims == 1) ? 0 : i); } } + // Setup dilation dimensions (dilation_). + dilation_.Reshape(spatial_dim_blob_shape); + int* dilation_data = dilation_.mutable_cpu_data(); + const int num_dilation_dims = conv_param.dilation_size(); + CHECK(num_dilation_dims == 0 || num_dilation_dims == 1 || + num_dilation_dims == num_spatial_axes_) + << "dilation must be specified once, or once per spatial dimension " + << "(dilation specified " << num_dilation_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + const int kDefaultDilation = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + dilation_data[i] = (num_dilation_dims == 0) ? kDefaultDilation : + conv_param.dilation((num_dilation_dims == 1) ? 0 : i); + } // Special case: im2col is the identity for 1x1 convolution with stride 1 // and no padding, so flag for skipping the buffer and transformation. is_1x1_ = true; diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index cff097839..5d522ab31 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -9,11 +9,13 @@ void ConvolutionLayer::compute_output_shape() { const int* kernel_shape_data = this->kernel_shape_.cpu_data(); const int* stride_data = this->stride_.cpu_data(); const int* pad_data = this->pad_.cpu_data(); + const int* dilation_data = this->dilation_.cpu_data(); this->output_shape_.clear(); for (int i = 0; i < this->num_spatial_axes_; ++i) { // i + 1 to skip channel axis const int input_dim = this->input_shape(i + 1); - const int output_dim = (input_dim + 2 * pad_data[i] - kernel_shape_data[i]) + const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1; + const int output_dim = (input_dim + 2 * pad_data[i] - kernel_extent) / stride_data[i] + 1; this->output_shape_.push_back(output_dim); } diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index c12e4f52a..19ae30195 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -87,6 +87,20 @@ void Im2colLayer::LayerSetUp(const vector*>& bottom, conv_param.pad((num_pad_dims == 1) ? 0 : i); } } + // Setup dilation dimensions (dilation_). + dilation_.Reshape(dim_blob_shape); + int* dilation_data = dilation_.mutable_cpu_data(); + const int num_dilation_dims = conv_param.dilation_size(); + CHECK(num_dilation_dims == 0 || num_dilation_dims == 1 || + num_dilation_dims == num_spatial_axes_) + << "dilation must be specified once, or once per spatial dimension " + << "(dilation specified " << num_dilation_dims << " times; " + << num_spatial_axes_ << " spatial dims)."; + const int kDefaultDilation = 1; + for (int i = 0; i < num_spatial_axes_; ++i) { + dilation_data[i] = (num_dilation_dims == 0) ? kDefaultDilation : + conv_param.dilation((num_dilation_dims == 1) ? 0 : i); + } } template @@ -96,10 +110,12 @@ void Im2colLayer::Reshape(const vector*>& bottom, const int* kernel_shape_data = kernel_shape_.cpu_data(); const int* stride_data = stride_.cpu_data(); const int* pad_data = pad_.cpu_data(); + const int* dilation_data = dilation_.cpu_data(); for (int i = 0; i < num_spatial_axes_; ++i) { top_shape[channel_axis_] *= kernel_shape_data[i]; const int input_dim = bottom[0]->shape(channel_axis_ + i + 1); - const int output_dim = (input_dim + 2 * pad_data[i] - kernel_shape_data[i]) + const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1; + const int output_dim = (input_dim + 2 * pad_data[i] - kernel_extent) / stride_data[i] + 1; top_shape[channel_axis_ + i + 1] = output_dim; } @@ -122,6 +138,7 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, DCHECK_EQ(kernel_shape_.count(), num_spatial_axes_); DCHECK_EQ(pad_.count(), num_spatial_axes_); DCHECK_EQ(stride_.count(), num_spatial_axes_); + DCHECK_EQ(dilation_.count(), num_spatial_axes_); if (!force_nd_im2col_ && num_spatial_axes_ == 2) { im2col_cpu(bottom_data + n * bottom_dim_, channels_, bottom[0]->shape(channel_axis_ + 1), @@ -129,6 +146,7 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], top_data + n * top_dim_); } else { im2col_nd_cpu(bottom_data + n * bottom_dim_, num_spatial_axes_, @@ -153,6 +171,7 @@ void Im2colLayer::Backward_cpu(const vector*>& top, kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], bottom_diff + n * bottom_dim_); } else { col2im_nd_cpu(top_diff + n * top_dim_, num_spatial_axes_, diff --git a/src/caffe/layers/im2col_layer.cu b/src/caffe/layers/im2col_layer.cu index 517b4220c..d90075d43 100644 --- a/src/caffe/layers/im2col_layer.cu +++ b/src/caffe/layers/im2col_layer.cu @@ -19,6 +19,7 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], top_data + n * top_dim_); } else { im2col_nd_gpu(bottom_data + n * bottom_dim_, num_spatial_axes_, @@ -43,6 +44,7 @@ void Im2colLayer::Backward_gpu(const vector*>& top, kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1], pad_.cpu_data()[0], pad_.cpu_data()[1], stride_.cpu_data()[0], stride_.cpu_data()[1], + dilation_.cpu_data()[0], dilation_.cpu_data()[1], bottom_diff + n * bottom_dim_); } else { col2im_nd_gpu(top_diff + n * top_dim_, num_spatial_axes_, bottom_dim_, diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 787369f7c..87c46629b 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -518,6 +518,7 @@ message ConvolutionParameter { repeated uint32 pad = 3; // The padding size; defaults to 0 repeated uint32 kernel_size = 4; // The kernel size repeated uint32 stride = 6; // The stride; defaults to 1 + repeated uint32 dilation = 18; // The dilation; defaults to 1 // For 2D convolution only, the *_h and *_w versions may also be used to // specify both spatial dimensions. diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index e2d43f31b..95c3c80c5 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -46,13 +46,17 @@ void caffe_conv(const Blob* in, ConvolutionParameter* conv_param, } else { stride_h = stride_w = conv_param->stride_size() ? conv_param->stride(0) : 1; } - int kernel_d, pad_d, stride_d; + int dilation_h, dilation_w; + dilation_h = dilation_w = conv_param->dilation_size() ? + conv_param->dilation(0) : 1; + int kernel_d, pad_d, stride_d, dilation_d; if (has_depth) { kernel_d = kernel_h; stride_d = stride_h; pad_d = pad_h; + dilation_d = dilation_h; } else { - kernel_d = stride_d = 1; + kernel_d = stride_d = dilation_d = 1; pad_d = 0; } // Groups @@ -77,9 +81,9 @@ void caffe_conv(const Blob* in, ConvolutionParameter* conv_param, for (int r = 0; r < kernel_d; r++) { for (int p = 0; p < kernel_h; p++) { for (int q = 0; q < kernel_w; q++) { - int in_z = z * stride_d - pad_d + r; - int in_y = y * stride_h - pad_h + p; - int in_x = x * stride_w - pad_w + q; + int in_z = z * stride_d - pad_d + r * dilation_d; + int in_y = y * stride_h - pad_h + p * dilation_h; + int in_x = x * stride_w - pad_w + q * dilation_w; if (in_z >= 0 && in_z < (has_depth ? in->shape(2) : 1) && in_y >= 0 && in_y < in->shape(2 + has_depth) && in_x >= 0 && in_x < in->shape(3 + has_depth)) { diff --git a/src/caffe/test/test_im2col_kernel.cu b/src/caffe/test/test_im2col_kernel.cu index 3f97cf6d5..15e06aa85 100644 --- a/src/caffe/test/test_im2col_kernel.cu +++ b/src/caffe/test/test_im2col_kernel.cu @@ -18,6 +18,7 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, const int height_col, const int width_col, Dtype* data_col); @@ -38,6 +39,7 @@ class Im2colKernelTest : public GPUDeviceTest { blob_kernel_shape_(new Blob()), blob_stride_(new Blob()), blob_pad_(new Blob()), + blob_dilation_(new Blob()), blob_top_(new Blob()), blob_top_cpu_(new Blob()) { FillerParameter filler_param; @@ -47,20 +49,25 @@ class Im2colKernelTest : public GPUDeviceTest { blob_kernel_shape_->Reshape(dim_blob_shape); blob_stride_->Reshape(dim_blob_shape); blob_pad_->Reshape(dim_blob_shape); + blob_dilation_->Reshape(dim_blob_shape); height_ = blob_bottom_->height(); width_ = blob_bottom_->width(); channels_ = blob_bottom_->channels(); pad_ = 0; stride_ = 2; + dilation_ = 1; kernel_size_ = 3; - height_col_ = (height_ + 2 * pad_ - kernel_size_) / stride_ + 1; - width_col_ = (width_ + 2 * pad_ - kernel_size_) / stride_ + 1; + height_col_ = (height_ + 2 * pad_ - + (dilation_ * (kernel_size_ - 1) + 1)) / stride_ + 1; + width_col_ = (width_ + 2 * pad_ - + (dilation_ * (kernel_size_ - 1) + 1)) / stride_ + 1; for (int i = 0; i < 2; ++i) { blob_kernel_shape_->mutable_cpu_data()[i] = kernel_size_; blob_stride_->mutable_cpu_data()[i] = stride_; blob_pad_->mutable_cpu_data()[i] = pad_; + blob_dilation_->mutable_cpu_data()[i] = dilation_; } } @@ -71,11 +78,13 @@ class Im2colKernelTest : public GPUDeviceTest { delete blob_kernel_shape_; delete blob_stride_; delete blob_pad_; + delete blob_dilation_; } Blob* const blob_kernel_shape_; Blob* const blob_stride_; Blob* const blob_pad_; + Blob* const blob_dilation_; Blob* const blob_bottom_; Blob* const blob_top_; Blob* const blob_top_cpu_; @@ -84,6 +93,7 @@ class Im2colKernelTest : public GPUDeviceTest { int channels_; int pad_; int stride_; + int dilation_; int kernel_size_; int height_col_; int width_col_; @@ -112,7 +122,7 @@ TYPED_TEST(Im2colKernelTest, Test2D) { im2col_cpu(this->blob_bottom_->cpu_data() + this->blob_bottom_->offset(n), this->channels_, this->height_, this->width_, this->kernel_size_, this->kernel_size_, this->pad_, this->pad_, - this->stride_, this->stride_, + this->stride_, this->stride_, this->dilation_, this->dilation_, cpu_data + this->blob_top_cpu_->offset(n)); } @@ -129,6 +139,7 @@ TYPED_TEST(Im2colKernelTest, Test2D) { num_kernels, bottom_data + this->blob_bottom_->offset(n), this->height_, this->width_, this->kernel_size_, this->kernel_size_, this->pad_, this->pad_, this->stride_, this->stride_, + this->dilation_, this->dilation_, this->height_col_, this->width_col_, top_data + this->blob_top_->offset(n)); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index 8274dd489..932d3f21a 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -17,7 +17,7 @@ class Im2colLayerTest : public MultiDeviceTest { typedef typename TypeParam::Dtype Dtype; protected: Im2colLayerTest() - : blob_bottom_(new Blob(2, 3, 6, 5)), + : blob_bottom_(new Blob(2, 3, 10, 9)), blob_top_(new Blob()) { // fill the values Caffe::set_random_seed(1701); @@ -75,6 +75,7 @@ TYPED_TEST(Im2colLayerTest, TestGradient) { layer_param.mutable_convolution_param(); convolution_param->add_kernel_size(3); convolution_param->add_stride(2); + convolution_param->add_dilation(3); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index 27e5b7c09..1e578e7c9 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -10,9 +10,12 @@ void im2col_cpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, Dtype* data_col) { - const int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; - const int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + const int height_col = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + const int width_col = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; const int channels_col = channels * kernel_h * kernel_w; for (int c_col = 0; c_col < channels_col; ++c_col) { int w_offset = c_col % kernel_w; @@ -20,8 +23,8 @@ void im2col_cpu(const Dtype* data_im, const int channels, int c_im = c_col / kernel_h / kernel_w; for (int h_col = 0; h_col < height_col; ++h_col) { for (int w_col = 0; w_col < width_col; ++w_col) { - int h_im = h_col * stride_h - pad_h + h_offset; - int w_im = w_col * stride_w - pad_w + w_offset; + int h_im = h_col * stride_h - pad_h + h_offset * dilation_h; + int w_im = w_col * stride_w - pad_w + w_offset * dilation_w; data_col[(c_col * height_col + h_col) * width_col + w_col] = (h_im >= 0 && w_im >= 0 && h_im < height && w_im < width) ? data_im[(c_im * height + h_im) * width + w_im] : 0; @@ -34,11 +37,13 @@ void im2col_cpu(const Dtype* data_im, const int channels, template void im2col_cpu(const float* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, float* data_col); + const int stride_w, const int dilation_h, const int dilation_w, + float* data_col); template void im2col_cpu(const double* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, double* data_col); + const int stride_w, const int dilation_h, const int dilation_w, + double* data_col); template inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, @@ -137,10 +142,13 @@ void col2im_cpu(const Dtype* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, Dtype* data_im) { caffe_set(height * width * channels, Dtype(0), data_im); - const int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; - const int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + const int height_col = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + const int width_col = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; const int channels_col = channels * kernel_h * kernel_w; for (int c_col = 0; c_col < channels_col; ++c_col) { int w_offset = c_col % kernel_w; @@ -148,8 +156,8 @@ void col2im_cpu(const Dtype* data_col, const int channels, int c_im = c_col / kernel_h / kernel_w; for (int h_col = 0; h_col < height_col; ++h_col) { for (int w_col = 0; w_col < width_col; ++w_col) { - int h_im = h_col * stride_h - pad_h + h_offset; - int w_im = w_col * stride_w - pad_w + w_offset; + int h_im = h_col * stride_h - pad_h + h_offset * dilation_h; + int w_im = w_col * stride_w - pad_w + w_offset * dilation_w; if (h_im >= 0 && h_im < height && w_im >= 0 && w_im < width) data_im[(c_im * height + h_im) * width + w_im] += data_col[(c_col * height_col + h_col) * width_col + w_col]; @@ -162,11 +170,13 @@ void col2im_cpu(const Dtype* data_col, const int channels, template void col2im_cpu(const float* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, float* data_im); + const int stride_w, const int dilation_h, const int dilation_w, + float* data_im); template void col2im_cpu(const double* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, double* data_im); + const int stride_w, const int dilation_h, const int dilation_w, + double* data_im); template void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 49354ab7a..cdcaac5bc 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -10,6 +10,7 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, const int height_col, const int width_col, Dtype* data_col) { CUDA_KERNEL_LOOP(index, n) { @@ -26,11 +27,11 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, data_im_ptr += (c_im * height + h_offset) * width + w_offset; for (int i = 0; i < kernel_h; ++i) { for (int j = 0; j < kernel_w; ++j) { - int h_im = h_offset + i; - int w_im = w_offset + j; + int h_im = h_offset + i * dilation_h; + int w_im = w_offset + j * dilation_w; *data_col_ptr = (h_im >= 0 && w_im >= 0 && h_im < height && w_im < width) ? - data_im_ptr[i * width + j] : 0; + data_im_ptr[i * dilation_h * width + j * dilation_w] : 0; data_col_ptr += height_col * width_col; } } @@ -42,17 +43,20 @@ void im2col_gpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, Dtype* data_col) { // We are going to launch channels * height_col * width_col kernels, each // kernel responsible for copying a single-channel grid. - int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; - int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + int height_col = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + int width_col = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; int num_kernels = channels * height_col * width_col; // NOLINT_NEXT_LINE(whitespace/operators) im2col_gpu_kernel<<>>( num_kernels, data_im, height, width, kernel_h, kernel_w, pad_h, - pad_w, stride_h, stride_w, height_col, + pad_w, stride_h, stride_w, dilation_h, dilation_w, height_col, width_col, data_col); CUDA_POST_KERNEL_CHECK; } @@ -61,11 +65,11 @@ void im2col_gpu(const Dtype* data_im, const int channels, template void im2col_gpu(const float* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, - float* data_col); + const int dilation_h, const int dilation_w, float* data_col); template void im2col_gpu(const double* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, - double* data_col); + const int dilation_h, const int dilation_w, double* data_col); template __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, @@ -223,6 +227,7 @@ __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, const int stride_w, + const int dilation_h, const int dilation_w, const int height_col, const int width_col, Dtype* data_im) { CUDA_KERNEL_LOOP(index, n) { @@ -230,33 +235,27 @@ __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, const int w_im = index % width + pad_w; const int h_im = (index / width) % height + pad_h; const int c_im = index / (width * height); + int kernel_extent_w = (kernel_w - 1) * dilation_w + 1; + int kernel_extent_h = (kernel_h - 1) * dilation_h + 1; // compute the start and end of the output const int w_col_start = - (w_im < kernel_w) ? 0 : (w_im - kernel_w) / stride_w + 1; - const int w_col_end = - min(w_im / stride_w + 1, width_col); + (w_im < kernel_extent_w) ? 0 : (w_im - kernel_extent_w) / stride_w + 1; + const int w_col_end = min(w_im / stride_w + 1, width_col); const int h_col_start = - (h_im < kernel_h) ? 0 : (h_im - kernel_h) / stride_h + 1; - const int h_col_end = - min(h_im / stride_h + 1, height_col); - /* - for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { - for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { - // the col location: [c * width * height + h_out, w_out] - int c_col = c_im * kernel_h * kernel_w - + (h_im - h_col * stride_h) * kernel_w + (w_im - w_col * stride_w); - val += data_col[(c_col * height_col + h_col) * width_col + w_col]; - } - } - */ - // equivalent implementation - int offset = (c_im * kernel_h * kernel_w + h_im * kernel_w + w_im) - * height_col * width_col; - int coeff_h_col = (1 - stride_h * kernel_w * height_col) * width_col; - int coeff_w_col = (1 - stride_w * height_col * width_col); - for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { - for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { - val += data_col[offset + h_col * coeff_h_col + w_col * coeff_w_col]; + (h_im < kernel_extent_h) ? 0 : (h_im - kernel_extent_h) / stride_h + 1; + const int h_col_end = min(h_im / stride_h + 1, height_col); + // TODO: use LCM of stride and dilation to avoid unnecessary loops + for (int h_col = h_col_start; h_col < h_col_end; h_col += 1) { + for (int w_col = w_col_start; w_col < w_col_end; w_col += 1) { + int h_k = (h_im - h_col * stride_h); + int w_k = (w_im - w_col * stride_w); + if (h_k % dilation_h == 0 && w_k % dilation_w == 0) { + h_k /= dilation_h; + w_k /= dilation_w; + int data_col_index = (((c_im * kernel_h + h_k) * kernel_w + w_k) * + height_col + h_col) * width_col + w_col; + val += data_col[data_col_index]; + } } } data_im[index] = val; @@ -267,9 +266,12 @@ template void col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, Dtype* data_im) { - int height_col = (height + 2 * pad_h - kernel_h) / stride_h + 1; - int width_col = (width + 2 * pad_w - kernel_w) / stride_w + 1; + const int stride_w, const int dilation_h, const int dilation_w, + Dtype* data_im) { + int height_col = (height + 2 * pad_h - (dilation_h * (kernel_h - 1) + 1)) / + stride_h + 1; + int width_col = (width + 2 * pad_w - (dilation_w * (kernel_w - 1) + 1)) / + stride_w + 1; int num_kernels = channels * height * width; // To avoid involving atomic operations, we will launch one kernel per // bottom dimension, and then in the kernel add up the top dimensions. @@ -277,7 +279,7 @@ void col2im_gpu(const Dtype* data_col, const int channels, col2im_gpu_kernel<<>>( num_kernels, data_col, height, width, channels, kernel_h, kernel_w, - pad_h, pad_w, stride_h, stride_w, + pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w, height_col, width_col, data_im); CUDA_POST_KERNEL_CHECK; } @@ -286,11 +288,13 @@ void col2im_gpu(const Dtype* data_col, const int channels, template void col2im_gpu(const float* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, float* data_im); + const int stride_w, const int dilation_h, const int dilation_w, + float* data_im); template void col2im_gpu(const double* data_col, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, const int pad_h, const int pad_w, const int stride_h, - const int stride_w, double* data_im); + const int stride_w, const int dilation_h, const int dilation_w, + double* data_im); template __global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, From 18c795ebe8401cb82c9f8350664de665f1ec8733 Mon Sep 17 00:00:00 2001 From: Fisher Yu Date: Sun, 27 Dec 2015 20:48:30 -0800 Subject: [PATCH 133/458] add support for N-D dilated convolution --- include/caffe/layers/base_conv_layer.hpp | 8 +- include/caffe/util/im2col.hpp | 8 +- src/caffe/layer_factory.cpp | 2 + src/caffe/layers/im2col_layer.cpp | 4 +- src/caffe/layers/im2col_layer.cu | 4 +- src/caffe/test/test_im2col_kernel.cu | 9 +- src/caffe/test/test_im2col_layer.cpp | 8 +- src/caffe/util/im2col.cpp | 21 +-- src/caffe/util/im2col.cu | 166 +++++++++++++++-------- 9 files changed, 148 insertions(+), 82 deletions(-) diff --git a/include/caffe/layers/base_conv_layer.hpp b/include/caffe/layers/base_conv_layer.hpp index db471b586..0160a833d 100644 --- a/include/caffe/layers/base_conv_layer.hpp +++ b/include/caffe/layers/base_conv_layer.hpp @@ -106,7 +106,7 @@ class BaseConvolutionLayer : public Layer { } else { im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(), col_buffer_shape_.data(), kernel_shape_.cpu_data(), - pad_.cpu_data(), stride_.cpu_data(), col_buff); + pad_.cpu_data(), stride_.cpu_data(), dilation_.cpu_data(), col_buff); } } inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) { @@ -120,7 +120,7 @@ class BaseConvolutionLayer : public Layer { } else { col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(), col_buffer_shape_.data(), kernel_shape_.cpu_data(), - pad_.cpu_data(), stride_.cpu_data(), data); + pad_.cpu_data(), stride_.cpu_data(), dilation_.cpu_data(), data); } } #ifndef CPU_ONLY @@ -136,7 +136,7 @@ class BaseConvolutionLayer : public Layer { im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_, conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), kernel_shape_.gpu_data(), pad_.gpu_data(), - stride_.gpu_data(), col_buff); + stride_.gpu_data(), dilation_.gpu_data(), col_buff); } } inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) { @@ -151,7 +151,7 @@ class BaseConvolutionLayer : public Layer { col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_, conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(), kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), - data); + dilation_.gpu_data(), data); } } #endif diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index 748b65c4f..a35bc6e0b 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -7,7 +7,7 @@ template void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_col); + const int* dilation, Dtype* data_col); template void im2col_cpu(const Dtype* data_im, const int channels, @@ -20,7 +20,7 @@ template void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_im); + const int* dilation, Dtype* data_im); template void col2im_cpu(const Dtype* data_col, const int channels, @@ -33,7 +33,7 @@ template void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, const int col_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_col); + const int* dilation, Dtype* data_col); template void im2col_gpu(const Dtype* data_im, const int channels, @@ -46,7 +46,7 @@ template void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, const int im_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_im); + const int* dilation, Dtype* data_im); template void col2im_gpu(const Dtype* data_col, const int channels, diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 6b1d1c1a5..4d912d283 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -39,12 +39,14 @@ shared_ptr > GetConvolutionLayer( const LayerParameter& param) { ConvolutionParameter conv_param = param.convolution_param(); ConvolutionParameter_Engine engine = conv_param.engine(); +#ifdef USE_CUDNN bool use_dilation = false; for (int i = 0; i < conv_param.dilation_size(); ++i) { if (conv_param.dilation(i) > 1) { use_dilation = true; } } +#endif if (engine == ConvolutionParameter_Engine_DEFAULT) { engine = ConvolutionParameter_Engine_CAFFE; #ifdef USE_CUDNN diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index 19ae30195..2fb9b3c10 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -153,7 +153,7 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, bottom[0]->shape().data() + channel_axis_, top[0]->shape().data() + channel_axis_, kernel_shape_.cpu_data(), pad_.cpu_data(), stride_.cpu_data(), - top_data + n * top_dim_); + dilation_.cpu_data(), top_data + n * top_dim_); } } } @@ -178,7 +178,7 @@ void Im2colLayer::Backward_cpu(const vector*>& top, bottom[0]->shape().data() + channel_axis_, top[0]->shape().data() + channel_axis_, kernel_shape_.cpu_data(), pad_.cpu_data(), stride_.cpu_data(), - bottom_diff + n * bottom_dim_); + dilation_.cpu_data(), bottom_diff + n * bottom_dim_); } } } diff --git a/src/caffe/layers/im2col_layer.cu b/src/caffe/layers/im2col_layer.cu index d90075d43..792c97f70 100644 --- a/src/caffe/layers/im2col_layer.cu +++ b/src/caffe/layers/im2col_layer.cu @@ -26,7 +26,7 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, num_kernels, bottom[0]->gpu_shape() + channel_axis_, top[0]->gpu_shape() + channel_axis_, kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), - top_data + n * top_dim_); + dilation_.gpu_data(), top_data + n * top_dim_); } } } @@ -51,7 +51,7 @@ void Im2colLayer::Backward_gpu(const vector*>& top, bottom[0]->gpu_shape() + channel_axis_, top[0]->gpu_shape() + channel_axis_, kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(), - bottom_diff + n * bottom_dim_); + dilation_.gpu_data(), bottom_diff + n * bottom_dim_); } } } diff --git a/src/caffe/test/test_im2col_kernel.cu b/src/caffe/test/test_im2col_kernel.cu index 15e06aa85..5d8f01f17 100644 --- a/src/caffe/test/test_im2col_kernel.cu +++ b/src/caffe/test/test_im2col_kernel.cu @@ -26,7 +26,7 @@ template __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_col); + const int* dilation, Dtype* data_col); extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; @@ -35,7 +35,7 @@ class Im2colKernelTest : public GPUDeviceTest { protected: Im2colKernelTest() // big so launches > 1024 threads - : blob_bottom_(new Blob(5, 500, 10, 10)), + : blob_bottom_(new Blob(5, 500, 15, 15)), blob_kernel_shape_(new Blob()), blob_stride_(new Blob()), blob_pad_(new Blob()), @@ -56,7 +56,7 @@ class Im2colKernelTest : public GPUDeviceTest { channels_ = blob_bottom_->channels(); pad_ = 0; stride_ = 2; - dilation_ = 1; + dilation_ = 3; kernel_size_ = 3; height_col_ = (height_ + 2 * pad_ - (dilation_ * (kernel_size_ - 1) + 1)) / stride_ + 1; @@ -176,6 +176,7 @@ TYPED_TEST(Im2colKernelTest, TestND) { this->blob_top_cpu_->shape().data() + 1, this->blob_kernel_shape_->cpu_data(), this->blob_pad_->cpu_data(), this->blob_stride_->cpu_data(), + this->blob_dilation_->cpu_data(), top_data_cpu + this->blob_top_cpu_->offset(n)); } @@ -194,7 +195,7 @@ TYPED_TEST(Im2colKernelTest, TestND) { num_kernels, bottom_data_gpu + this->blob_bottom_->offset(n), this->blob_bottom_->gpu_shape() + 1, this->blob_top_->gpu_shape() + 1, this->blob_kernel_shape_->gpu_data(), this->blob_pad_->gpu_data(), - this->blob_stride_->gpu_data(), + this->blob_stride_->gpu_data(), this->blob_dilation_->gpu_data(), top_data_gpu + this->blob_top_->offset(n)); CUDA_POST_KERNEL_CHECK; } diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index 932d3f21a..24885e6b7 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -17,7 +17,7 @@ class Im2colLayerTest : public MultiDeviceTest { typedef typename TypeParam::Dtype Dtype; protected: Im2colLayerTest() - : blob_bottom_(new Blob(2, 3, 10, 9)), + : blob_bottom_(new Blob(2, 3, 10, 11)), blob_top_(new Blob()) { // fill the values Caffe::set_random_seed(1701); @@ -43,12 +43,13 @@ TYPED_TEST(Im2colLayerTest, TestSetup) { layer_param.mutable_convolution_param(); convolution_param->add_kernel_size(3); convolution_param->add_stride(2); + convolution_param->add_dilation(3); Im2colLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); EXPECT_EQ(this->blob_top_->num(), 2); EXPECT_EQ(this->blob_top_->channels(), 27); EXPECT_EQ(this->blob_top_->height(), 2); - EXPECT_EQ(this->blob_top_->width(), 2); + EXPECT_EQ(this->blob_top_->width(), 3); } TYPED_TEST(Im2colLayerTest, TestForward) { @@ -89,6 +90,7 @@ TYPED_TEST(Im2colLayerTest, TestGradientForceND) { layer_param.mutable_convolution_param(); convolution_param->add_kernel_size(3); convolution_param->add_stride(2); + convolution_param->add_dilation(3); convolution_param->set_force_nd_im2col(true); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); @@ -123,6 +125,8 @@ TYPED_TEST(Im2colLayerTest, TestRectGradient) { convolution_param->set_kernel_h(5); convolution_param->set_kernel_w(3); convolution_param->add_stride(2); + convolution_param->add_dilation(1); + convolution_param->add_dilation(3); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index 1e578e7c9..6e5ea8757 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -49,7 +49,7 @@ template inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_output) { + const int* dilation, Dtype* data_output) { if (!im2col) { int im_size = im_shape[0]; for (int i = 0; i < num_spatial_axes; ++i) { @@ -81,7 +81,8 @@ inline void im2col_nd_core_cpu(const Dtype* data_input, const bool im2col, bool is_padding = false; for (int d_i = 0; d_i < num_spatial_axes; ++d_i) { const int d = d_iter[d_i]; - const int d_im = d * stride[d_i] - pad[d_i] + d_offset[d_i]; + const int d_im = d * stride[d_i] - pad[d_i] + + d_offset[d_i] * dilation[d_i]; is_padding |= d_im < 0 || d_im >= im_shape[d_i + 1]; index_col *= col_shape[d_i + 1]; index_col += d; @@ -119,10 +120,10 @@ template void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_col) { + const int* dilation, Dtype* data_col) { const bool kIm2Col = true; im2col_nd_core_cpu(data_im, kIm2Col, num_spatial_axes, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); } // Explicit instantiation @@ -130,12 +131,12 @@ template void im2col_nd_cpu(const float* data_im, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - float* data_col); + const int* dilation, float* data_col); template void im2col_nd_cpu(const double* data_im, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - double* data_col); + const int* dilation, double* data_col); template void col2im_cpu(const Dtype* data_col, const int channels, @@ -182,10 +183,10 @@ template void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_im) { + const int* dilation, Dtype* data_im) { const bool kIm2Col = false; im2col_nd_core_cpu(data_col, kIm2Col, num_spatial_axes, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); } // Explicit instantiation @@ -193,12 +194,12 @@ template void col2im_nd_cpu(const float* data_col, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - float* data_im); + const int* dilation, float* data_im); template void col2im_nd_cpu(const double* data_col, const int num_spatial_axes, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - double* data_im); + const int* dilation, double* data_im); } // namespace caffe diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index cdcaac5bc..a8f30a024 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -75,9 +75,29 @@ template __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_col) { + const int* dilation, Dtype* data_col) { int d_temp[num_axes]; // NOLINT(runtime/arrays) int d_iter[num_axes]; // NOLINT(runtime/arrays) + + __shared__ int shared_dilation[num_axes]; + __shared__ int shared_kernel_shape[num_axes]; + __shared__ int shared_pad[num_axes]; + __shared__ int shared_stride[num_axes]; + __shared__ int shared_col_shape[num_axes + 1]; + __shared__ int shared_im_shape[num_axes + 1]; + + if (threadIdx.x < num_axes) { + shared_dilation[threadIdx.x] = dilation[threadIdx.x]; + shared_kernel_shape[threadIdx.x] = kernel_shape[threadIdx.x]; + shared_pad[threadIdx.x] = pad[threadIdx.x]; + shared_stride[threadIdx.x] = stride[threadIdx.x]; + } + if (threadIdx.x < num_axes + 1) { + shared_col_shape[threadIdx.x] = col_shape[threadIdx.x]; + shared_im_shape[threadIdx.x] = im_shape[threadIdx.x]; + } + __syncthreads(); + int i; CUDA_KERNEL_LOOP(index, n) { // Initialize channel_in, computed in the loop below, with intermediate @@ -85,19 +105,19 @@ __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, int channel_in = index; int channel_out = 1; for (i = num_axes - 1; i >= 0; --i) { - d_temp[i] = channel_in % col_shape[i + 1]; - channel_in /= col_shape[i + 1]; - channel_out *= kernel_shape[i]; + d_temp[i] = channel_in % shared_col_shape[i + 1]; + channel_in /= shared_col_shape[i + 1]; + channel_out *= shared_kernel_shape[i]; } channel_out *= channel_in; int data_col_inc = 1; for (i = 0; i < num_axes; ++i) { - channel_out *= col_shape[i + 1]; + channel_out *= shared_col_shape[i + 1]; channel_out += d_temp[i]; - d_temp[i] = d_temp[i] * stride[i] - pad[i]; - channel_in *= im_shape[i + 1]; + d_temp[i] = d_temp[i] * shared_stride[i] - shared_pad[i]; + channel_in *= shared_im_shape[i + 1]; channel_in += d_temp[i]; - data_col_inc *= col_shape[i + 1]; + data_col_inc *= shared_col_shape[i + 1]; d_iter[i] = 0; } Dtype* data_col_ptr = data_col + channel_out; @@ -106,15 +126,15 @@ __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, do { bool in_range = true; for (i = 0; i < num_axes; ++i) { - const int d_iter_im = d_iter[i] + d_temp[i]; - in_range &= d_iter_im >= 0 && d_iter_im < im_shape[i + 1]; + const int d_iter_im = d_iter[i] * shared_dilation[i] + d_temp[i]; + in_range &= d_iter_im >= 0 && d_iter_im < shared_im_shape[i + 1]; if (!in_range) { break; } } if (in_range) { - int data_im_offset = d_iter[0]; + int data_im_offset = d_iter[0] * shared_dilation[0]; for (i = 1; i < num_axes; ++i) { - data_im_offset *= im_shape[i + 1]; - data_im_offset += d_iter[i]; + data_im_offset *= shared_im_shape[i + 1]; + data_im_offset += d_iter[i] * shared_dilation[i]; } *data_col_ptr = data_im_ptr[data_im_offset]; } else { @@ -123,7 +143,7 @@ __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, data_col_ptr += data_col_inc; incremented = false; for (i = num_axes - 1; i >= 0; --i) { - const int d_max = kernel_shape[i]; + const int d_max = shared_kernel_shape[i]; if (d_iter[i] == d_max - 1) { d_iter[i] = 0; } else { // d_iter[i] < d_max - 1 @@ -140,67 +160,69 @@ template void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes, const int num_kernels, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_col) { + const int* dilation, Dtype* data_col) { + // num_axes should be smaller than block size + DCHECK_LT(num_spatial_axes, CAFFE_CUDA_NUM_THREADS); switch (num_spatial_axes) { case 1: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 2: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 3: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 4: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 5: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 6: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 7: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 8: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 9: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; case 10: im2col_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( num_kernels, data_im, im_shape, col_shape, - kernel_shape, pad, stride, data_col); + kernel_shape, pad, stride, dilation, data_col); break; default: LOG(FATAL) << "im2col_nd_gpu does not support computation with " @@ -214,12 +236,12 @@ template void im2col_nd_gpu(const float* data_im, const int num_spatial_axes, const int col_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - float* data_col); + const int* dilation, float* data_col); template void im2col_nd_gpu(const double* data_im, const int num_spatial_axes, const int col_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - double* data_col); + const int* dilation, double* data_col); template __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, @@ -300,27 +322,50 @@ template __global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_im) { + const int* dilation, Dtype* data_im) { int d_im[num_axes]; // NOLINT(runtime/arrays) int d_col_iter[num_axes]; // NOLINT(runtime/arrays) int d_col_start[num_axes]; // NOLINT(runtime/arrays) int d_col_end[num_axes]; // NOLINT(runtime/arrays) + + __shared__ int shared_dilation[num_axes]; + __shared__ int shared_kernel_shape[num_axes]; + __shared__ int shared_pad[num_axes]; + __shared__ int shared_stride[num_axes]; + __shared__ int shared_col_shape[num_axes + 1]; + __shared__ int shared_im_shape[num_axes + 1]; + + if (threadIdx.x < num_axes) { + shared_dilation[threadIdx.x] = dilation[threadIdx.x]; + shared_kernel_shape[threadIdx.x] = kernel_shape[threadIdx.x]; + shared_pad[threadIdx.x] = pad[threadIdx.x]; + shared_stride[threadIdx.x] = stride[threadIdx.x]; + } + if (threadIdx.x < num_axes + 1) { + shared_col_shape[threadIdx.x] = col_shape[threadIdx.x]; + shared_im_shape[threadIdx.x] = im_shape[threadIdx.x]; + } + __syncthreads(); + CUDA_KERNEL_LOOP(index, n) { // Initialize channel_in, computed in the loop below, with intermediate // computations used to compute the spatial indices. int c_im = index; // Calculate d_im (image dimensions). for (int i = num_axes - 1; i >= 0; --i) { - d_im[i] = c_im % im_shape[i + 1] + pad[i]; - c_im /= im_shape[i + 1]; + d_im[i] = c_im % shared_im_shape[i + 1] + shared_pad[i]; + c_im /= shared_im_shape[i + 1]; } // Calculate col start/end indices. bool done = false; for (int i = 0; i < num_axes; ++i) { + const int kernel_extent = + shared_dilation[i] * (shared_kernel_shape[i] - 1) + 1; d_col_start[i] = d_col_iter[i] = - (d_im[i] < kernel_shape[i]) ? - 0 : (d_im[i] - kernel_shape[i]) / stride[i] + 1; - d_col_end[i] = min(d_im[i] / stride[i] + 1, col_shape[i + 1]); + (d_im[i] < kernel_extent) ? 0 : + (d_im[i] - kernel_extent) / shared_stride[i] + 1; + d_col_end[i] = + min(d_im[i] / shared_stride[i] + 1, shared_col_shape[i + 1]); if (d_col_start[i] >= d_col_end[i]) { // Skip computation if the dimension is 0 at any spatial axis -- // final val will be 0. @@ -335,21 +380,32 @@ __global__ void col2im_nd_gpu_kernel(const int n, const Dtype* data_col, // Loop over the col to compute the output val. Dtype val = 0; bool incremented = true; + bool skip = false; do { // Compute the final offset. int final_offset = 0; int kernel_shape_prod = 1; + int kernel_index; for (int i = num_axes - 1; i >= 0; --i) { - final_offset += - (d_im[i] - d_col_iter[i] * stride[i]) * kernel_shape_prod; - kernel_shape_prod *= kernel_shape[i]; + kernel_index = d_im[i] - d_col_iter[i] * shared_stride[i]; + if (kernel_index % shared_dilation[i]) { + skip = true; + break; + } else { + kernel_index /= shared_dilation[i]; + final_offset += kernel_index * kernel_shape_prod; + kernel_shape_prod *= shared_kernel_shape[i]; + } } - final_offset += kernel_shape_prod * c_im; - for (int i = 0; i < num_axes; ++i) { - final_offset *= col_shape[i + 1]; - final_offset += d_col_iter[i]; + if (!skip) { + final_offset += kernel_shape_prod * c_im; + for (int i = 0; i < num_axes; ++i) { + final_offset *= shared_col_shape[i + 1]; + final_offset += d_col_iter[i]; + } + val += data_col[final_offset]; } - val += data_col[final_offset]; + skip = false; incremented = false; for (int i = num_axes - 1; i >= 0; --i) { const int d_max = d_col_end[i]; @@ -370,67 +426,69 @@ template void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes, const int im_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - Dtype* data_im) { + const int* dilation, Dtype* data_im) { + // num_axes should be smaller than block size + DCHECK_LT(num_spatial_axes, CAFFE_CUDA_NUM_THREADS); switch (num_spatial_axes) { case 1: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 2: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 3: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 4: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 5: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 6: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 7: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 8: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 9: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; case 10: col2im_nd_gpu_kernel // NOLINT_NEXT_LINE(whitespace/operators) <<>>( im_size, data_col, im_shape, col_shape, - kernel_shape, pad, stride, data_im); + kernel_shape, pad, stride, dilation, data_im); break; default: LOG(FATAL) << "col2im_nd_gpu does not support computation with " @@ -444,11 +502,11 @@ template void col2im_nd_gpu(const float* data_col, const int num_spatial_axes, const int im_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - float* data_im); + const int* dilation, float* data_im); template void col2im_nd_gpu(const double* data_col, const int num_spatial_axes, const int im_size, const int* im_shape, const int* col_shape, const int* kernel_shape, const int* pad, const int* stride, - double* data_im); + const int* dilation, double* data_im); } // namespace caffe From 7674799475598fcb0494c83d93a46b41f8261a11 Mon Sep 17 00:00:00 2001 From: Fisher Yu Date: Sat, 26 Dec 2015 13:04:25 -0800 Subject: [PATCH 134/458] add and improve tests for dilated convolution/im2col --- src/caffe/test/test_convolution_layer.cpp | 115 ++++++++++++++++++++++ src/caffe/test/test_im2col_layer.cpp | 54 ++++++++-- 2 files changed, 163 insertions(+), 6 deletions(-) diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index 95c3c80c5..9bb19d135 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -264,6 +264,50 @@ TYPED_TEST(ConvolutionLayerTest, TestSimpleConvolution) { } } +TYPED_TEST(ConvolutionLayerTest, TestDilatedConvolution) { + typedef typename TypeParam::Dtype Dtype; + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(8); + bottom_shape.push_back(7); + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_dilation(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("constant"); + convolution_param->mutable_bias_filler()->set_value(0.1); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + TYPED_TEST(ConvolutionLayerTest, Test0DConvolution) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; @@ -349,6 +393,53 @@ TYPED_TEST(ConvolutionLayerTest, TestSimple3DConvolution) { } } +TYPED_TEST(ConvolutionLayerTest, TestDilated3DConvolution) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_2_); + this->blob_top_vec_.push_back(this->blob_top_2_); + vector bottom_shape(5); + bottom_shape[0] = this->blob_bottom_vec_[0]->shape(0); + bottom_shape[1] = this->blob_bottom_vec_[0]->shape(1); + bottom_shape[2] = 6; + bottom_shape[3] = 7; + bottom_shape[4] = 8; + FillerParameter filler_param; + GaussianFiller filler(filler_param); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + filler.Fill(this->blob_bottom_vec_[i]); + } + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_dilation(2); + convolution_param->set_num_output(4); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer( + new ConvolutionLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Check against reference convolution. + const Dtype* top_data; + const Dtype* ref_top_data; + caffe_conv(this->blob_bottom_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_)); + top_data = this->blob_top_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } + caffe_conv(this->blob_bottom_2_, convolution_param, layer->blobs(), + this->MakeReferenceTop(this->blob_top_2_)); + top_data = this->blob_top_2_->cpu_data(); + ref_top_data = this->ref_blob_top_->cpu_data(); + for (int i = 0; i < this->blob_top_->count(); ++i) { + EXPECT_NEAR(top_data[i], ref_top_data[i], 1e-4); + } +} + TYPED_TEST(ConvolutionLayerTest, Test1x1Convolution) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; @@ -633,6 +724,30 @@ TYPED_TEST(ConvolutionLayerTest, TestGradient) { this->blob_top_vec_); } +TYPED_TEST(ConvolutionLayerTest, TestDilatedGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(5); + bottom_shape.push_back(6); + for (int i = 0; i < this->blob_bottom_vec_.size(); ++i) { + this->blob_bottom_vec_[i]->Reshape(bottom_shape); + } + convolution_param->add_kernel_size(3); + convolution_param->add_dilation(2); + convolution_param->set_num_output(2); + convolution_param->mutable_weight_filler()->set_type("gaussian"); + convolution_param->mutable_bias_filler()->set_type("gaussian"); + ConvolutionLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + TYPED_TEST(ConvolutionLayerTest, TestGradient3D) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index 24885e6b7..a7faf18f9 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -17,7 +17,7 @@ class Im2colLayerTest : public MultiDeviceTest { typedef typename TypeParam::Dtype Dtype; protected: Im2colLayerTest() - : blob_bottom_(new Blob(2, 3, 10, 11)), + : blob_bottom_(new Blob(2, 3, 6, 5)), blob_top_(new Blob()) { // fill the values Caffe::set_random_seed(1701); @@ -41,6 +41,12 @@ TYPED_TEST(Im2colLayerTest, TestSetup) { LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(10); + bottom_shape.push_back(11); + this->blob_bottom_->Reshape(bottom_shape); convolution_param->add_kernel_size(3); convolution_param->add_stride(2); convolution_param->add_dilation(3); @@ -76,21 +82,39 @@ TYPED_TEST(Im2colLayerTest, TestGradient) { layer_param.mutable_convolution_param(); convolution_param->add_kernel_size(3); convolution_param->add_stride(2); - convolution_param->add_dilation(3); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, this->blob_top_vec_); } -TYPED_TEST(Im2colLayerTest, TestGradientForceND) { +TYPED_TEST(Im2colLayerTest, TestDilatedGradient) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; ConvolutionParameter* convolution_param = layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(10); + bottom_shape.push_back(9); + this->blob_bottom_->Reshape(bottom_shape); convolution_param->add_kernel_size(3); convolution_param->add_stride(2); convolution_param->add_dilation(3); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(Im2colLayerTest, TestGradientForceND) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); convolution_param->set_force_nd_im2col(true); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); @@ -98,6 +122,27 @@ TYPED_TEST(Im2colLayerTest, TestGradientForceND) { this->blob_top_vec_); } +TYPED_TEST(Im2colLayerTest, TestDilatedGradientForceND) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ConvolutionParameter* convolution_param = + layer_param.mutable_convolution_param(); + vector bottom_shape; + bottom_shape.push_back(2); + bottom_shape.push_back(3); + bottom_shape.push_back(10); + bottom_shape.push_back(9); + this->blob_bottom_->Reshape(bottom_shape); + convolution_param->add_kernel_size(3); + convolution_param->add_stride(2); + convolution_param->add_dilation(3); + convolution_param->set_force_nd_im2col(true); + Im2colLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-2); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + TYPED_TEST(Im2colLayerTest, TestRect) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; @@ -116,7 +161,6 @@ TYPED_TEST(Im2colLayerTest, TestRect) { } } - TYPED_TEST(Im2colLayerTest, TestRectGradient) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; @@ -125,8 +169,6 @@ TYPED_TEST(Im2colLayerTest, TestRectGradient) { convolution_param->set_kernel_h(5); convolution_param->set_kernel_w(3); convolution_param->add_stride(2); - convolution_param->add_dilation(1); - convolution_param->add_dilation(3); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, From c25c5796385eda485a743cae6222845ca8eb52bb Mon Sep 17 00:00:00 2001 From: Fisher Yu Date: Sat, 26 Dec 2015 13:10:02 -0800 Subject: [PATCH 135/458] disable dilated deconvolution --- src/caffe/layers/base_conv_layer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index 4a4c68e00..deb58a714 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -105,6 +105,9 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, for (int i = 0; i < num_spatial_axes_; ++i) { dilation_data[i] = (num_dilation_dims == 0) ? kDefaultDilation : conv_param.dilation((num_dilation_dims == 1) ? 0 : i); + if (reverse_dimensions()) { + CHECK_EQ(dilation_data[i], 1) << "Deconvolution doesn't support dilation"; + } } // Special case: im2col is the identity for 1x1 convolution with stride 1 // and no padding, so flag for skipping the buffer and transformation. From 3e3e9ce17636f813c80b5b22afc069d3c1c802cb Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sat, 26 Dec 2015 13:10:11 -0800 Subject: [PATCH 136/458] add short description of dilation to caffe.proto --- src/caffe/proto/caffe.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 87c46629b..019aa6143 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -518,6 +518,9 @@ message ConvolutionParameter { repeated uint32 pad = 3; // The padding size; defaults to 0 repeated uint32 kernel_size = 4; // The kernel size repeated uint32 stride = 6; // The stride; defaults to 1 + // Factor used to dilate the kernel, (implicitly) zero-filling the resulting + // holes. (Kernel dilation is sometimes referred to by its use in the + // algorithme à trous from Holschneider et al. 1987.) repeated uint32 dilation = 18; // The dilation; defaults to 1 // For 2D convolution only, the *_h and *_w versions may also be used to From bbc4e578a54546bbc41ce9e959386dbba6e269c2 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sun, 27 Dec 2015 20:56:24 -0800 Subject: [PATCH 137/458] enable dilated deconvolution Since the underlying routines are shared, we need only upgrade compute_output_shape. --- src/caffe/layers/base_conv_layer.cpp | 3 --- src/caffe/layers/deconv_layer.cpp | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index deb58a714..4a4c68e00 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -105,9 +105,6 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, for (int i = 0; i < num_spatial_axes_; ++i) { dilation_data[i] = (num_dilation_dims == 0) ? kDefaultDilation : conv_param.dilation((num_dilation_dims == 1) ? 0 : i); - if (reverse_dimensions()) { - CHECK_EQ(dilation_data[i], 1) << "Deconvolution doesn't support dilation"; - } } // Special case: im2col is the identity for 1x1 convolution with stride 1 // and no padding, so flag for skipping the buffer and transformation. diff --git a/src/caffe/layers/deconv_layer.cpp b/src/caffe/layers/deconv_layer.cpp index 275c05626..20a460fbd 100644 --- a/src/caffe/layers/deconv_layer.cpp +++ b/src/caffe/layers/deconv_layer.cpp @@ -9,12 +9,14 @@ void DeconvolutionLayer::compute_output_shape() { const int* kernel_shape_data = this->kernel_shape_.cpu_data(); const int* stride_data = this->stride_.cpu_data(); const int* pad_data = this->pad_.cpu_data(); + const int* dilation_data = this->dilation_.cpu_data(); this->output_shape_.clear(); for (int i = 0; i < this->num_spatial_axes_; ++i) { // i + 1 to skip channel axis const int input_dim = this->input_shape(i + 1); + const int kernel_extent = dilation_data[i] * (kernel_shape_data[i] - 1) + 1; const int output_dim = stride_data[i] * (input_dim - 1) - + kernel_shape_data[i] - 2 * pad_data[i]; + + kernel_extent - 2 * pad_data[i]; this->output_shape_.push_back(output_dim); } } From 708c1a122c33bd35b0d53630fb74965488e1947a Mon Sep 17 00:00:00 2001 From: Fisher Yu Date: Mon, 28 Dec 2015 22:46:49 -0500 Subject: [PATCH 138/458] remove extra space before + --- src/caffe/solvers/adam_solver.cpp | 2 +- tools/caffe.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/solvers/adam_solver.cpp b/src/caffe/solvers/adam_solver.cpp index cb0fbfe2f..c3378d389 100644 --- a/src/caffe/solvers/adam_solver.cpp +++ b/src/caffe/solvers/adam_solver.cpp @@ -30,7 +30,7 @@ void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { Blob* val_v = this->history_[param_id + update_history_offset].get(); Blob* val_t = this->temp_[param_id].get(); - const int t = this->iter_ + 1; + const int t = this->iter_ + 1; const Dtype correction = std::sqrt(Dtype(1) - pow(beta2, t)) / (Dtype(1.) - pow(beta1, t)); const int N = net_params[param_id]->count(); diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 305cfc363..6b342ace0 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -164,7 +164,7 @@ int train() { if (FLAGS_gpu.size() == 0 && solver_param.solver_mode() == caffe::SolverParameter_SolverMode_GPU) { if (solver_param.has_device_id()) { - FLAGS_gpu = "" + + FLAGS_gpu = "" + boost::lexical_cast(solver_param.device_id()); } else { // Set default GPU if unspecified FLAGS_gpu = "" + boost::lexical_cast(0); From 6320d8d2663aa80b54e74e374a34441124f88c24 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 29 Dec 2015 21:10:14 -0800 Subject: [PATCH 139/458] TestDataTransformer: fix some memory leaks caused by use of 'new' --- src/caffe/test/test_data_transformer.cpp | 136 +++++++++++------------ 1 file changed, 62 insertions(+), 74 deletions(-) diff --git a/src/caffe/test/test_data_transformer.cpp b/src/caffe/test/test_data_transformer.cpp index 8a1013744..6103918fd 100644 --- a/src/caffe/test/test_data_transformer.cpp +++ b/src/caffe/test/test_data_transformer.cpp @@ -40,23 +40,21 @@ class DataTransformTest : public ::testing::Test { int NumSequenceMatches(const TransformationParameter transform_param, const Datum& datum, Phase phase) { // Get crop sequence with Caffe seed 1701. - DataTransformer* transformer = - new DataTransformer(transform_param, phase); + DataTransformer transformer(transform_param, phase); const int crop_size = transform_param.crop_size(); Caffe::set_random_seed(seed_); - transformer->InitRand(); - Blob* blob = - new Blob(1, datum.channels(), datum.height(), datum.width()); + transformer.InitRand(); + Blob blob(1, datum.channels(), datum.height(), datum.width()); if (transform_param.crop_size() > 0) { - blob->Reshape(1, datum.channels(), crop_size, crop_size); + blob.Reshape(1, datum.channels(), crop_size, crop_size); } vector > crop_sequence; for (int iter = 0; iter < this->num_iter_; ++iter) { vector iter_crop_sequence; - transformer->Transform(datum, blob); - for (int j = 0; j < blob->count(); ++j) { - iter_crop_sequence.push_back(blob->cpu_data()[j]); + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + iter_crop_sequence.push_back(blob.cpu_data()[j]); } crop_sequence.push_back(iter_crop_sequence); } @@ -64,17 +62,14 @@ class DataTransformTest : public ::testing::Test { int num_sequence_matches = 0; for (int iter = 0; iter < this->num_iter_; ++iter) { vector iter_crop_sequence = crop_sequence[iter]; - transformer->Transform(datum, blob); - for (int j = 0; j < blob->count(); ++j) { - num_sequence_matches += - (crop_sequence[iter][j] == blob->cpu_data()[j]); + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + num_sequence_matches += (crop_sequence[iter][j] == blob.cpu_data()[j]); } } return num_sequence_matches; } - virtual ~DataTransformTest() { } - int seed_; int num_iter_; }; @@ -91,17 +86,16 @@ TYPED_TEST(DataTransformTest, TestEmptyTransform) { Datum datum; FillDatum(label, channels, height, width, unique_pixels, &datum); - Blob* blob = new Blob(1, channels, height, width); - DataTransformer* transformer = - new DataTransformer(transform_param, TEST); - transformer->InitRand(); - transformer->Transform(datum, blob); - EXPECT_EQ(blob->num(), 1); - EXPECT_EQ(blob->channels(), datum.channels()); - EXPECT_EQ(blob->height(), datum.height()); - EXPECT_EQ(blob->width(), datum.width()); - for (int j = 0; j < blob->count(); ++j) { - EXPECT_EQ(blob->cpu_data()[j], label); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + EXPECT_EQ(blob.num(), 1); + EXPECT_EQ(blob.channels(), datum.channels()); + EXPECT_EQ(blob.height(), datum.height()); + EXPECT_EQ(blob.width(), datum.width()); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], label); } } @@ -115,17 +109,16 @@ TYPED_TEST(DataTransformTest, TestEmptyTransformUniquePixels) { Datum datum; FillDatum(label, channels, height, width, unique_pixels, &datum); - Blob* blob = new Blob(1, 3, 4, 5); - DataTransformer* transformer = - new DataTransformer(transform_param, TEST); - transformer->InitRand(); - transformer->Transform(datum, blob); - EXPECT_EQ(blob->num(), 1); - EXPECT_EQ(blob->channels(), datum.channels()); - EXPECT_EQ(blob->height(), datum.height()); - EXPECT_EQ(blob->width(), datum.width()); - for (int j = 0; j < blob->count(); ++j) { - EXPECT_EQ(blob->cpu_data()[j], j); + Blob blob(1, 3, 4, 5); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + EXPECT_EQ(blob.num(), 1); + EXPECT_EQ(blob.channels(), datum.channels()); + EXPECT_EQ(blob.height(), datum.height()); + EXPECT_EQ(blob.width(), datum.width()); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], j); } } @@ -141,19 +134,17 @@ TYPED_TEST(DataTransformTest, TestCropSize) { transform_param.set_crop_size(crop_size); Datum datum; FillDatum(label, channels, height, width, unique_pixels, &datum); - DataTransformer* transformer = - new DataTransformer(transform_param, TEST); - transformer->InitRand(); - Blob* blob = - new Blob(1, channels, crop_size, crop_size); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + Blob blob(1, channels, crop_size, crop_size); for (int iter = 0; iter < this->num_iter_; ++iter) { - transformer->Transform(datum, blob); - EXPECT_EQ(blob->num(), 1); - EXPECT_EQ(blob->channels(), datum.channels()); - EXPECT_EQ(blob->height(), crop_size); - EXPECT_EQ(blob->width(), crop_size); - for (int j = 0; j < blob->count(); ++j) { - EXPECT_EQ(blob->cpu_data()[j], label); + transformer.Transform(datum, &blob); + EXPECT_EQ(blob.num(), 1); + EXPECT_EQ(blob.channels(), datum.channels()); + EXPECT_EQ(blob.height(), crop_size); + EXPECT_EQ(blob.width(), crop_size); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], label); } } } @@ -280,13 +271,12 @@ TYPED_TEST(DataTransformTest, TestMeanValue) { transform_param.add_mean_value(mean_value); Datum datum; FillDatum(label, channels, height, width, unique_pixels, &datum); - Blob* blob = new Blob(1, channels, height, width); - DataTransformer* transformer = - new DataTransformer(transform_param, TEST); - transformer->InitRand(); - transformer->Transform(datum, blob); - for (int j = 0; j < blob->count(); ++j) { - EXPECT_EQ(blob->cpu_data()[j], label - mean_value); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], label - mean_value); } } @@ -303,14 +293,13 @@ TYPED_TEST(DataTransformTest, TestMeanValues) { transform_param.add_mean_value(2); Datum datum; FillDatum(label, channels, height, width, unique_pixels, &datum); - Blob* blob = new Blob(1, channels, height, width); - DataTransformer* transformer = - new DataTransformer(transform_param, TEST); - transformer->InitRand(); - transformer->Transform(datum, blob); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); for (int c = 0; c < channels; ++c) { for (int j = 0; j < height * width; ++j) { - EXPECT_EQ(blob->cpu_data()[blob->offset(0, c) + j], label - c); + EXPECT_EQ(blob.cpu_data()[blob.offset(0, c) + j], label - c); } } } @@ -325,8 +314,8 @@ TYPED_TEST(DataTransformTest, TestMeanFile) { const int size = channels * height * width; // Create a mean file - string* mean_file = new string(); - MakeTempFilename(mean_file); + string mean_file; + MakeTempFilename(&mean_file); BlobProto blob_mean; blob_mean.set_num(1); blob_mean.set_channels(channels); @@ -337,19 +326,18 @@ TYPED_TEST(DataTransformTest, TestMeanFile) { blob_mean.add_data(j); } - LOG(INFO) << "Using temporary mean_file " << *mean_file; - WriteProtoToBinaryFile(blob_mean, *mean_file); + LOG(INFO) << "Using temporary mean_file " << mean_file; + WriteProtoToBinaryFile(blob_mean, mean_file); - transform_param.set_mean_file(*mean_file); + transform_param.set_mean_file(mean_file); Datum datum; FillDatum(label, channels, height, width, unique_pixels, &datum); - Blob* blob = new Blob(1, channels, height, width); - DataTransformer* transformer = - new DataTransformer(transform_param, TEST); - transformer->InitRand(); - transformer->Transform(datum, blob); - for (int j = 0; j < blob->count(); ++j) { - EXPECT_EQ(blob->cpu_data()[j], 0); + Blob blob(1, channels, height, width); + DataTransformer transformer(transform_param, TEST); + transformer.InitRand(); + transformer.Transform(datum, &blob); + for (int j = 0; j < blob.count(); ++j) { + EXPECT_EQ(blob.cpu_data()[j], 0); } } From 1137e89fef767c68e9368779a57dfc61c6d8d834 Mon Sep 17 00:00:00 2001 From: philkr Date: Wed, 5 Aug 2015 11:54:08 -0700 Subject: [PATCH 140/458] Exposing layer top and bottom names to python --- include/caffe/net.hpp | 12 ++++++++++++ python/caffe/_caffe.cpp | 4 ++++ python/caffe/pycaffe.py | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 1bf07d28d..3b56f3070 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -149,6 +149,18 @@ class Net { inline const vector*> >& top_vecs() const { return top_vecs_; } + /// @brief returns the ids of the top blobs of layer i + inline const vector & top_ids(int i) const { + CHECK_GE(i, 0) << "Invalid layer id"; + CHECK_LT(i, top_id_vecs_.size()) << "Invalid layer id"; + return top_id_vecs_[i]; + } + /// @brief returns the ids of the bottom blobs of layer i + inline const vector & bottom_ids(int i) const { + CHECK_GE(i, 0) << "Invalid layer id"; + CHECK_LT(i, bottom_id_vecs_.size()) << "Invalid layer id"; + return bottom_id_vecs_[i]; + } inline const vector >& bottom_need_backward() const { return bottom_need_backward_; } diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 69d553328..4ea2ec60b 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -232,6 +232,10 @@ BOOST_PYTHON_MODULE(_caffe) { .def("share_with", &Net::ShareTrainedLayersWith) .add_property("_blob_loss_weights", bp::make_function( &Net::blob_loss_weights, bp::return_internal_reference<>())) + .def("_bottom_ids", bp::make_function(&Net::bottom_ids, + bp::return_value_policy())) + .def("_top_ids", bp::make_function(&Net::top_ids, + bp::return_value_policy())) .add_property("_blobs", bp::make_function(&Net::blobs, bp::return_internal_reference<>())) .add_property("layers", bp::make_function(&Net::layers, diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 31dc702f6..305411077 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -276,6 +276,22 @@ def _Net_batch(self, blobs): padding]) yield padded_batch + +class _Net_IdNameWrapper: + """ + A simple wrapper that allows the ids propery to be accessed as a dict + indexed by names. Used for top and bottom names + """ + def __init__(self, net, func): + self.net, self.func = net, func + + def __getitem__(self, name): + # Map the layer name to id + ids = self.func(self.net, list(self.net._layer_names).index(name)) + # Map the blob id to name + id_to_name = list(self.net.blobs) + return [id_to_name[i] for i in ids] + # Attach methods to Net. Net.blobs = _Net_blobs Net.blob_loss_weights = _Net_blob_loss_weights @@ -288,3 +304,5 @@ def _Net_batch(self, blobs): Net._batch = _Net_batch Net.inputs = _Net_inputs Net.outputs = _Net_outputs +Net.top_names = property(lambda n: _Net_IdNameWrapper(n, Net._top_ids)) +Net.bottom_names = property(lambda n: _Net_IdNameWrapper(n, Net._bottom_ids)) From 6d09ca2829dad0c7ae4ba1474fd351f41125ab2a Mon Sep 17 00:00:00 2001 From: philkr Date: Tue, 5 Jan 2016 12:45:52 -0800 Subject: [PATCH 141/458] Speeding up the GPU solvers --- src/caffe/solvers/adadelta_solver.cpp | 66 +++++---------------------- src/caffe/solvers/adadelta_solver.cu | 30 ++++++++++++ src/caffe/solvers/adagrad_solver.cpp | 37 ++++----------- src/caffe/solvers/adagrad_solver.cu | 26 +++++++++++ src/caffe/solvers/adam_solver.cpp | 37 ++++----------- src/caffe/solvers/adam_solver.cu | 29 ++++++++++++ src/caffe/solvers/nesterov_solver.cpp | 29 ++++-------- src/caffe/solvers/nesterov_solver.cu | 27 +++++++++++ src/caffe/solvers/rmsprop_solver.cpp | 35 ++++---------- src/caffe/solvers/rmsprop_solver.cu | 28 ++++++++++++ src/caffe/solvers/sgd_solver.cpp | 16 ++++--- src/caffe/solvers/sgd_solver.cu | 24 ++++++++++ 12 files changed, 223 insertions(+), 161 deletions(-) create mode 100644 src/caffe/solvers/adadelta_solver.cu create mode 100644 src/caffe/solvers/adagrad_solver.cu create mode 100644 src/caffe/solvers/adam_solver.cu create mode 100644 src/caffe/solvers/nesterov_solver.cu create mode 100644 src/caffe/solvers/rmsprop_solver.cu create mode 100644 src/caffe/solvers/sgd_solver.cu diff --git a/src/caffe/solvers/adadelta_solver.cpp b/src/caffe/solvers/adadelta_solver.cpp index a37899ebb..fd30f19ac 100644 --- a/src/caffe/solvers/adadelta_solver.cpp +++ b/src/caffe/solvers/adadelta_solver.cpp @@ -16,6 +16,12 @@ void AdaDeltaSolver::AdaDeltaPreSolve() { } } +#ifndef CPU_ONLY +template +void adadelta_update_gpu(int N, Dtype* g, Dtype* h, Dtype* h2, Dtype momentum, + Dtype delta, Dtype local_rate); +#endif + template void AdaDeltaSolver::ComputeUpdateValue(int param_id, Dtype rate) { const vector*>& net_params = this->net_->learnable_params(); @@ -85,61 +91,11 @@ void AdaDeltaSolver::ComputeUpdateValue(int param_id, Dtype rate) { } case Caffe::GPU: { #ifndef CPU_ONLY - // compute square of gradient in update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history of gradients - caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, - this->update_[param_id]->gpu_data(), momentum, - this->history_[param_id]->mutable_gpu_data()); - - // add delta to history to guard against dividing by zero later - caffe_gpu_set(net_params[param_id]->count(), delta, - this->temp_[param_id]->mutable_gpu_data()); - - caffe_gpu_add(net_params[param_id]->count(), - this->temp_[param_id]->gpu_data(), - this->history_[update_history_offset + param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_add(net_params[param_id]->count(), - this->temp_[param_id]->gpu_data(), - this->history_[param_id]->gpu_data(), - this->temp_[param_id]->mutable_gpu_data()); - - // divide history of updates by history of gradients - caffe_gpu_div(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), - this->temp_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - // jointly compute the RMS of both for update and gradient history - caffe_gpu_powx(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_gpu_data()); - - // compute the update and copy to net_diff - caffe_gpu_mul(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), - this->update_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); - - // compute square of update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history of updates - caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) - momentum, - this->update_[param_id]->gpu_data(), momentum, - this->history_[update_history_offset + param_id]->mutable_gpu_data()); - - // apply learning rate - caffe_gpu_scale(net_params[param_id]->count(), local_rate, - net_params[param_id]->gpu_diff(), - net_params[param_id]->mutable_gpu_diff()); + adadelta_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), + this->history_[update_history_offset + param_id]->mutable_gpu_data(), + momentum, delta, local_rate); #else NO_GPU; #endif diff --git a/src/caffe/solvers/adadelta_solver.cu b/src/caffe/solvers/adadelta_solver.cu new file mode 100644 index 000000000..6c94585b8 --- /dev/null +++ b/src/caffe/solvers/adadelta_solver.cu @@ -0,0 +1,30 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void AdaDeltaUpdate(int N, Dtype* g, Dtype* h, Dtype* h2, + Dtype momentum, Dtype delta, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float hi = h[i] = momentum * h[i] + (1-momentum) * gi * gi; + gi = gi * sqrt((h2[i] + delta) / (hi + delta)); + h2[i] = momentum * h2[i] + (1-momentum) * gi * gi; + g[i] = local_rate * gi; + } +} +template +void adadelta_update_gpu(int N, Dtype* g, Dtype* h, Dtype* h2, Dtype momentum, + Dtype delta, Dtype local_rate) { + AdaDeltaUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, h2, momentum, delta, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void adadelta_update_gpu(int , float*, float*, float*, + float, float, float); +template void adadelta_update_gpu(int, double*, double*, double*, + double, double, double); + +} // namespace caffe diff --git a/src/caffe/solvers/adagrad_solver.cpp b/src/caffe/solvers/adagrad_solver.cpp index 5e4063260..e78eadca1 100644 --- a/src/caffe/solvers/adagrad_solver.cpp +++ b/src/caffe/solvers/adagrad_solver.cpp @@ -4,6 +4,12 @@ namespace caffe { +#ifndef CPU_ONLY +template +void adagrad_update_gpu(int N, Dtype* g, Dtype* h, Dtype delta, + Dtype local_rate); +#endif + template void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { CHECK(Caffe::root_solver()); @@ -45,34 +51,9 @@ void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { } case Caffe::GPU: { #ifndef CPU_ONLY - // compute square of gradient in update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history - caffe_gpu_add(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), - this->history_[param_id]->gpu_data(), - this->history_[param_id]->mutable_gpu_data()); - - // prepare update - caffe_gpu_powx(net_params[param_id]->count(), - this->history_[param_id]->gpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_div(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), - this->update_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - // scale and copy - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->gpu_data(), Dtype(0), - net_params[param_id]->mutable_gpu_diff()); + adagrad_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), delta, local_rate); #else NO_GPU; #endif diff --git a/src/caffe/solvers/adagrad_solver.cu b/src/caffe/solvers/adagrad_solver.cu new file mode 100644 index 000000000..adefd554b --- /dev/null +++ b/src/caffe/solvers/adagrad_solver.cu @@ -0,0 +1,26 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void AdaGradUpdate(int N, Dtype* g, Dtype* h, Dtype delta, + Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float hi = h[i] = h[i] + gi*gi; + g[i] = local_rate * gi / (sqrt(hi) + delta); + } +} +template +void adagrad_update_gpu(int N, Dtype* g, Dtype* h, Dtype delta, + Dtype local_rate) { + AdaGradUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, delta, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void adagrad_update_gpu(int, float*, float*, float, float); +template void adagrad_update_gpu(int, double*, double*, double, double); + +} // namespace caffe diff --git a/src/caffe/solvers/adam_solver.cpp b/src/caffe/solvers/adam_solver.cpp index c3378d389..4a91f00bd 100644 --- a/src/caffe/solvers/adam_solver.cpp +++ b/src/caffe/solvers/adam_solver.cpp @@ -16,6 +16,12 @@ void AdamSolver::AdamPreSolve() { } } +#ifndef CPU_ONLY +template +void adam_update_gpu(int N, Dtype* g, Dtype* m, Dtype* v, Dtype beta1, + Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate); +#endif + template void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { const vector*>& net_params = this->net_->learnable_params(); @@ -69,34 +75,9 @@ void AdamSolver::ComputeUpdateValue(int param_id, Dtype rate) { } case Caffe::GPU: { #ifndef CPU_ONLY - // update m <- \beta_1 m_{t-1} + (1-\beta_1)g_t - caffe_gpu_axpby(N, Dtype(1)-beta1, - net_params[param_id]->gpu_diff(), beta1, - val_m->mutable_gpu_data()); - - // update v <- \beta_2 m_{t-1} + (1-\beta_2)g_t^2 - caffe_gpu_mul(N, - net_params[param_id]->gpu_diff(), - net_params[param_id]->gpu_diff(), - val_t->mutable_gpu_data()); - caffe_gpu_axpby(N, Dtype(1)-beta2, - val_t->gpu_data(), beta2, - val_v->mutable_gpu_data()); - - // set update - caffe_gpu_powx(N, - val_v->gpu_data(), Dtype(0.5), - val_t->mutable_gpu_data()); - caffe_gpu_add_scalar(N, eps_hat, - val_t->mutable_gpu_data()); - caffe_gpu_div(N, - val_m->gpu_data(), - val_t->gpu_data(), - val_t->mutable_gpu_data()); - - caffe_gpu_scale(N, local_rate*correction, - val_t->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); + adam_update_gpu(N, net_params[param_id]->mutable_gpu_diff(), + val_m->mutable_gpu_data(), val_v->mutable_gpu_data(), beta1, beta2, + eps_hat, local_rate*correction); #else NO_GPU; #endif diff --git a/src/caffe/solvers/adam_solver.cu b/src/caffe/solvers/adam_solver.cu new file mode 100644 index 000000000..917ae1002 --- /dev/null +++ b/src/caffe/solvers/adam_solver.cu @@ -0,0 +1,29 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void AdamUpdate(int N, Dtype* g, Dtype* m, Dtype* v, + Dtype beta1, Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float mi = m[i] = m[i]*beta1 + gi*(1-beta1); + float vi = v[i] = v[i]*beta2 + gi*gi*(1-beta2); + g[i] = corrected_local_rate * mi / (sqrt(vi) + eps_hat); + } +} +template +void adam_update_gpu(int N, Dtype* g, Dtype* m, Dtype* v, Dtype beta1, + Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate) { + AdamUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, m, v, beta1, beta2, eps_hat, corrected_local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void adam_update_gpu(int, float*, float*, float*, + float, float, float, float); +template void adam_update_gpu(int, double*, double*, double*, + double, double, double, double); + +} // namespace caffe diff --git a/src/caffe/solvers/nesterov_solver.cpp b/src/caffe/solvers/nesterov_solver.cpp index 34bf01ebf..23ab2d436 100644 --- a/src/caffe/solvers/nesterov_solver.cpp +++ b/src/caffe/solvers/nesterov_solver.cpp @@ -4,6 +4,12 @@ namespace caffe { +#ifndef CPU_ONLY +template +void nesterov_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate); +#endif + template void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { CHECK(Caffe::root_solver()); @@ -36,25 +42,10 @@ void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { } case Caffe::GPU: { #ifndef CPU_ONLY - // save history momentum for stepping back - caffe_copy(net_params[param_id]->count(), - this->history_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - // update history - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - net_params[param_id]->gpu_diff(), momentum, - this->history_[param_id]->mutable_gpu_data()); - - // compute update: step back then over step - caffe_gpu_axpby(net_params[param_id]->count(), Dtype(1) + momentum, - this->history_[param_id]->gpu_data(), -momentum, - this->update_[param_id]->mutable_gpu_data()); - - // copy - caffe_copy(net_params[param_id]->count(), - this->update_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); + nesterov_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), + momentum, local_rate); #else NO_GPU; #endif diff --git a/src/caffe/solvers/nesterov_solver.cu b/src/caffe/solvers/nesterov_solver.cu new file mode 100644 index 000000000..57a456b82 --- /dev/null +++ b/src/caffe/solvers/nesterov_solver.cu @@ -0,0 +1,27 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void NesterovUpdate(int N, Dtype* g, Dtype* h, + Dtype momentum, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float hi = h[i]; + float hi_new = h[i] = momentum * hi + local_rate * g[i]; + g[i] = (1+momentum) * hi_new - momentum * hi; + } +} +template +void nesterov_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate) { + NesterovUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, momentum, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void nesterov_update_gpu(int, float*, float*, float, float); +template void nesterov_update_gpu(int, double*, double*, double, + double); + +} // namespace caffe diff --git a/src/caffe/solvers/rmsprop_solver.cpp b/src/caffe/solvers/rmsprop_solver.cpp index c62476760..3251ee423 100644 --- a/src/caffe/solvers/rmsprop_solver.cpp +++ b/src/caffe/solvers/rmsprop_solver.cpp @@ -4,6 +4,12 @@ namespace caffe { +#ifndef CPU_ONLY +template +void rmsprop_update_gpu(int N, Dtype* g, Dtype* h, Dtype rms_decay, + Dtype delta, Dtype local_rate); +#endif + template void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { const vector*>& net_params = this->net_->learnable_params(); @@ -45,31 +51,10 @@ void RMSPropSolver::ComputeUpdateValue(int param_id, Dtype rate) { break; case Caffe::GPU: #ifndef CPU_ONLY - // compute square of gradient in update - caffe_gpu_powx(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), Dtype(2), - this->update_[param_id]->mutable_gpu_data()); - - // update history - caffe_gpu_axpby(net_params[param_id] -> count(), - Dtype(1-rms_decay), this->update_[param_id]->gpu_data(), - rms_decay, this->history_[param_id]-> mutable_gpu_data()); - - // prepare update - caffe_gpu_powx(net_params[param_id]->count(), - this->history_[param_id]->gpu_data(), Dtype(0.5), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_add_scalar(net_params[param_id]->count(), - delta, this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_div(net_params[param_id]->count(), - net_params[param_id]->gpu_diff(), this->update_[param_id]->gpu_data(), - this->update_[param_id]->mutable_gpu_data()); - - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - this->update_[param_id]->gpu_data(), Dtype(0), - net_params[param_id]->mutable_gpu_diff()); + rmsprop_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + this->history_[param_id]->mutable_gpu_data(), + rms_decay, delta, local_rate); #else NO_GPU; #endif diff --git a/src/caffe/solvers/rmsprop_solver.cu b/src/caffe/solvers/rmsprop_solver.cu new file mode 100644 index 000000000..c5ffd329d --- /dev/null +++ b/src/caffe/solvers/rmsprop_solver.cu @@ -0,0 +1,28 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void RMSPropUpdate(int N, Dtype* g, Dtype* h, + Dtype rms_decay, Dtype delta, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + float gi = g[i]; + float hi = h[i] = rms_decay*h[i] + (1-rms_decay)*gi*gi; + g[i] = local_rate * g[i] / (sqrt(hi) + delta); + } +} +template +void rmsprop_update_gpu(int N, Dtype* g, Dtype* h, Dtype rms_decay, + Dtype delta, Dtype local_rate) { + RMSPropUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, rms_decay, delta, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void rmsprop_update_gpu(int, float*, float*, float, float, + float); +template void rmsprop_update_gpu(int, double*, double*, double, double, + double); + +} // namespace caffe diff --git a/src/caffe/solvers/sgd_solver.cpp b/src/caffe/solvers/sgd_solver.cpp index 32bf19b17..f30f316d1 100644 --- a/src/caffe/solvers/sgd_solver.cpp +++ b/src/caffe/solvers/sgd_solver.cpp @@ -203,6 +203,12 @@ void SGDSolver::Regularize(int param_id) { } } +#ifndef CPU_ONLY +template +void sgd_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate); +#endif + template void SGDSolver::ComputeUpdateValue(int param_id, Dtype rate) { const vector*>& net_params = this->net_->learnable_params(); @@ -222,12 +228,10 @@ void SGDSolver::ComputeUpdateValue(int param_id, Dtype rate) { } case Caffe::GPU: { #ifndef CPU_ONLY - caffe_gpu_axpby(net_params[param_id]->count(), local_rate, - net_params[param_id]->gpu_diff(), momentum, - history_[param_id]->mutable_gpu_data()); - caffe_copy(net_params[param_id]->count(), - history_[param_id]->gpu_data(), - net_params[param_id]->mutable_gpu_diff()); + sgd_update_gpu(net_params[param_id]->count(), + net_params[param_id]->mutable_gpu_diff(), + history_[param_id]->mutable_gpu_data(), + momentum, local_rate); #else NO_GPU; #endif diff --git a/src/caffe/solvers/sgd_solver.cu b/src/caffe/solvers/sgd_solver.cu new file mode 100644 index 000000000..e54103521 --- /dev/null +++ b/src/caffe/solvers/sgd_solver.cu @@ -0,0 +1,24 @@ +#include "caffe/util/math_functions.hpp" + + +namespace caffe { + +template +__global__ void SGDUpdate(int N, Dtype* g, Dtype* h, + Dtype momentum, Dtype local_rate) { + CUDA_KERNEL_LOOP(i, N) { + g[i] = h[i] = momentum*h[i] + local_rate*g[i]; + } +} +template +void sgd_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, + Dtype local_rate) { + SGDUpdate // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + N, g, h, momentum, local_rate); + CUDA_POST_KERNEL_CHECK; +} +template void sgd_update_gpu(int, float*, float*, float, float); +template void sgd_update_gpu(int, double*, double*, double, double); + +} // namespace caffe From 672f30ece38b41c0133d83501882551c53610885 Mon Sep 17 00:00:00 2001 From: philkr Date: Wed, 6 Jan 2016 07:23:35 -0800 Subject: [PATCH 142/458] CMake python version fix --- cmake/Dependencies.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 51a803c1a..c7b6a17aa 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -114,14 +114,14 @@ if(BUILD_python) # Find the matching boost python implementation set(version ${PYTHONLIBS_VERSION_STRING}) - STRING( REPLACE "." "" boost_py_version ${version} ) + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) while(NOT "${version}" STREQUAL "" AND NOT Boost_PYTHON_FOUND) STRING( REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version ${version} ) - STRING( REPLACE "." "" boost_py_version ${version} ) + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) From 581c1cc3fd6c04640c4b89e5ed003a40cd67e855 Mon Sep 17 00:00:00 2001 From: Mariusz Moczala Date: Wed, 20 Jan 2016 09:28:35 +0100 Subject: [PATCH 143/458] Performance related update of im2col() and col2im() functions --- src/caffe/util/im2col.cpp | 93 +++++++++++++++++++++++++-------------- 1 file changed, 61 insertions(+), 32 deletions(-) diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index 6e5ea8757..114a86cb8 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -5,6 +5,16 @@ namespace caffe { +// Function uses casting from int to unsigned to compare if value of +// parameter a is greater or equal to zero and lower than value of +// parameter b. The b parameter is of type signed and is always positive, +// therefore its value is always lower than 0x800... where casting +// negative value of a parameter converts it to value higher than 0x800... +// The casting allows to use one condition instead of two. +inline bool is_a_ge_zero_and_a_lt_b(int a, int b) { + return static_cast(a) < static_cast(b); +} + template void im2col_cpu(const Dtype* data_im, const int channels, const int height, const int width, const int kernel_h, const int kernel_w, @@ -12,22 +22,33 @@ void im2col_cpu(const Dtype* data_im, const int channels, const int stride_h, const int stride_w, const int dilation_h, const int dilation_w, Dtype* data_col) { - const int height_col = (height + 2 * pad_h - - (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; - const int width_col = (width + 2 * pad_w - - (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; - const int channels_col = channels * kernel_h * kernel_w; - for (int c_col = 0; c_col < channels_col; ++c_col) { - int w_offset = c_col % kernel_w; - int h_offset = (c_col / kernel_w) % kernel_h; - int c_im = c_col / kernel_h / kernel_w; - for (int h_col = 0; h_col < height_col; ++h_col) { - for (int w_col = 0; w_col < width_col; ++w_col) { - int h_im = h_col * stride_h - pad_h + h_offset * dilation_h; - int w_im = w_col * stride_w - pad_w + w_offset * dilation_w; - data_col[(c_col * height_col + h_col) * width_col + w_col] = - (h_im >= 0 && w_im >= 0 && h_im < height && w_im < width) ? - data_im[(c_im * height + h_im) * width + w_im] : 0; + const int output_h = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + const int output_w = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; + const int channel_size = height * width; + for (int channel = channels; channel--; data_im += channel_size) { + for (int kernel_row = 0; kernel_row < kernel_h; kernel_row++) { + for (int kernel_col = 0; kernel_col < kernel_w; kernel_col++) { + int input_row = -pad_h + kernel_row * dilation_h; + for (int output_rows = output_h; output_rows; output_rows--) { + if (!is_a_ge_zero_and_a_lt_b(input_row, height)) { + for (int output_cols = output_w; output_cols; output_cols--) { + *(data_col++) = 0; + } + } else { + int input_col = -pad_w + kernel_col * dilation_w; + for (int output_col = output_w; output_col; output_col--) { + if (is_a_ge_zero_and_a_lt_b(input_col, width)) { + *(data_col++) = data_im[input_row * width + input_col]; + } else { + *(data_col++) = 0; + } + input_col += stride_w; + } + } + input_row += stride_h; + } } } } @@ -146,22 +167,30 @@ void col2im_cpu(const Dtype* data_col, const int channels, const int dilation_h, const int dilation_w, Dtype* data_im) { caffe_set(height * width * channels, Dtype(0), data_im); - const int height_col = (height + 2 * pad_h - - (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; - const int width_col = (width + 2 * pad_w - - (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; - const int channels_col = channels * kernel_h * kernel_w; - for (int c_col = 0; c_col < channels_col; ++c_col) { - int w_offset = c_col % kernel_w; - int h_offset = (c_col / kernel_w) % kernel_h; - int c_im = c_col / kernel_h / kernel_w; - for (int h_col = 0; h_col < height_col; ++h_col) { - for (int w_col = 0; w_col < width_col; ++w_col) { - int h_im = h_col * stride_h - pad_h + h_offset * dilation_h; - int w_im = w_col * stride_w - pad_w + w_offset * dilation_w; - if (h_im >= 0 && h_im < height && w_im >= 0 && w_im < width) - data_im[(c_im * height + h_im) * width + w_im] += - data_col[(c_col * height_col + h_col) * width_col + w_col]; + const int output_h = (height + 2 * pad_h - + (dilation_h * (kernel_h - 1) + 1)) / stride_h + 1; + const int output_w = (width + 2 * pad_w - + (dilation_w * (kernel_w - 1) + 1)) / stride_w + 1; + const int channel_size = height * width; + for (int channel = channels; channel--; data_im += channel_size) { + for (int kernel_row = 0; kernel_row < kernel_h; kernel_row++) { + for (int kernel_col = 0; kernel_col < kernel_w; kernel_col++) { + int input_row = -pad_h + kernel_row * dilation_h; + for (int output_rows = output_h; output_rows; output_rows--) { + if (!is_a_ge_zero_and_a_lt_b(input_row, height)) { + data_col += output_w; + } else { + int input_col = -pad_w + kernel_col * dilation_w; + for (int output_col = output_w; output_col; output_col--) { + if (is_a_ge_zero_and_a_lt_b(input_col, width)) { + data_im[input_row * width + input_col] += *data_col; + } + data_col++; + input_col += stride_w; + } + } + input_row += stride_h; + } } } } From de31e034e5570056666d161ce10078011b0f1601 Mon Sep 17 00:00:00 2001 From: biluochun Date: Wed, 20 Jan 2016 17:53:24 +0800 Subject: [PATCH 144/458] fixbug #issues/3494 No to_python (by-value) converter found for C++ type: boost::shared_ptr > --- python/caffe/_caffe.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 4ea2ec60b..bd3128cbd 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -271,6 +271,7 @@ BOOST_PYTHON_MODULE(_caffe) { NdarrayCallPolicies())) .add_property("diff", bp::make_function(&Blob::mutable_cpu_diff, NdarrayCallPolicies())); + bp::register_ptr_to_python > >(); bp::class_, shared_ptr >, boost::noncopyable>("Layer", bp::init()) From d0100ba632b767d2242c10fd1bd3e5782494c079 Mon Sep 17 00:00:00 2001 From: thatguymike Date: Tue, 19 Jan 2016 17:01:34 -0800 Subject: [PATCH 145/458] Workaround for inplace max pooling issue --- src/caffe/layer_factory.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 4d912d283..e967bd618 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -91,7 +91,16 @@ shared_ptr > GetPoolingLayer(const LayerParameter& param) { << "Using Caffe's own pooling layer."; return shared_ptr >(new PoolingLayer(param)); } - return shared_ptr >(new CuDNNPoolingLayer(param)); + // CuDNN assumes layers are not being modified in place, thus + // breaking our index tracking for updates in some cases in Caffe. + // Until there is a workaround in Caffe (index management) or + // cuDNN, use Caffe layer to max pooling, or don't use in place + // layers after max pooling layers + if (param.pooling_param().pool() == PoolingParameter_PoolMethod_MAX) { + return shared_ptr >(new PoolingLayer(param)); + } else { + return shared_ptr >(new CuDNNPoolingLayer(param)); + } #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; From 8fea1f580933f9e1130d3713e993f156dda3116d Mon Sep 17 00:00:00 2001 From: biluochun Date: Thu, 21 Jan 2016 13:16:47 +0800 Subject: [PATCH 146/458] add register Net and Solver --- python/caffe/_caffe.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index bd3128cbd..0421c1c65 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -252,6 +252,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("_set_input_arrays", &Net_SetInputArrays, bp::with_custodian_and_ward<1, 2, bp::with_custodian_and_ward<1, 3> >()) .def("save", &Net_Save); + bp::register_ptr_to_python > >(); bp::class_, shared_ptr >, boost::noncopyable>( "Blob", bp::no_init) @@ -295,6 +296,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("step", &Solver::Step) .def("restore", &Solver::Restore) .def("snapshot", &Solver::Snapshot); + bp::register_ptr_to_python > >(); bp::class_, bp::bases >, shared_ptr >, boost::noncopyable>( From d95998129d4a306693a7228905688ddfcffa2f49 Mon Sep 17 00:00:00 2001 From: Robbie Cooper Date: Thu, 21 Jan 2016 14:11:00 -0500 Subject: [PATCH 147/458] Add makefile config option for linking Python 3 libraries --- Makefile | 2 +- Makefile.config.example | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 985fffd6c..ac7d12e29 100644 --- a/Makefile +++ b/Makefile @@ -191,7 +191,7 @@ ifeq ($(USE_OPENCV), 1) endif endif -PYTHON_LIBRARIES := boost_python python2.7 +PYTHON_LIBRARIES ?= boost_python python2.7 WARNINGS := -Wall -Wno-sign-compare ############################## diff --git a/Makefile.config.example b/Makefile.config.example index 1dd6a8f7c..8fd49c9c1 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -70,6 +70,11 @@ PYTHON_INCLUDE := /usr/include/python2.7 \ # $(ANACONDA_HOME)/include/python2.7 \ # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ +# Uncomment to use Python 3 (default is Python 2) +# PYTHON_LIBRARIES := boost_python3 python3.5m +# PYTHON_INCLUDE := /usr/include/python3.5m \ +# /usr/lib/python3.5/dist-packages/numpy/core/include + # We need to be able to find libpythonX.X.so or .dylib. PYTHON_LIB := /usr/lib # PYTHON_LIB := $(ANACONDA_HOME)/lib From 1954f0f76eb9129c8bf9f34814750dbd5b5e46c9 Mon Sep 17 00:00:00 2001 From: Jun Shi Date: Fri, 22 Jan 2016 05:09:21 -0800 Subject: [PATCH 148/458] copy proto to distribute directory --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 985fffd6c..5a6e74f61 100644 --- a/Makefile +++ b/Makefile @@ -651,6 +651,8 @@ superclean: clean supercleanfiles $(DIST_ALIASES): $(DISTRIBUTE_DIR) $(DISTRIBUTE_DIR): all py | $(DISTRIBUTE_SUBDIRS) + # add proto + cp -r src/caffe/proto $(DISTRIBUTE_DIR)/ # add include cp -r include $(DISTRIBUTE_DIR)/ mkdir -p $(DISTRIBUTE_DIR)/include/caffe/proto From ec04197479d263d1c4801639f5635ceb3e7dcef1 Mon Sep 17 00:00:00 2001 From: Dmytro Mishkin Date: Thu, 14 Jan 2016 17:10:11 +0200 Subject: [PATCH 149/458] Add ChannelwiseAffine for batch norm --- .../caffe/layers/channelwise_affine_layer.hpp | 103 ++++++++++ src/caffe/layers/channelwise_affine_layer.cpp | 189 ++++++++++++++++++ src/caffe/layers/channelwise_affine_layer.cu | 144 +++++++++++++ src/caffe/proto/caffe.proto | 14 +- .../test/test_channelwise_affine_layer.cpp | 105 ++++++++++ 5 files changed, 554 insertions(+), 1 deletion(-) create mode 100644 include/caffe/layers/channelwise_affine_layer.hpp create mode 100644 src/caffe/layers/channelwise_affine_layer.cpp create mode 100644 src/caffe/layers/channelwise_affine_layer.cu create mode 100644 src/caffe/test/test_channelwise_affine_layer.cpp diff --git a/include/caffe/layers/channelwise_affine_layer.hpp b/include/caffe/layers/channelwise_affine_layer.hpp new file mode 100644 index 000000000..6d8ac98b6 --- /dev/null +++ b/include/caffe/layers/channelwise_affine_layer.hpp @@ -0,0 +1,103 @@ +#ifndef CAFFE_CHANNELWISE_AFFINE_LAYER_HPP_ +#define CAFFE_CHANNELWISE_AFFINE_LAYER_HPP_ + +#include +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/neuron_layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + /** + * @brief Affine non-linearity function @f$ + * y = ax+b + * @f$, could be used after batch normalization layer + * + */ +template +class ChannelwiseAffineLayer : public NeuronLayer { + public: + /** + * @param param provides ChannelwiseAffineParameter ChannelwiseAffine_param, + * with ChannelwiseAffineLayer options: + * - slope_filler (\b optional, FillerParameter, + * default {'type': constant 'value':1.0001}). + * - bias_filler (\b optional, FillerParameter, + * default {'type': constant 'value':0.0001}). + * - channel_shared (\b optional, default false). + * slopes and biases are shared across channels. + */ + explicit ChannelwiseAffineLayer(const LayerParameter& param) + : NeuronLayer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual inline const char* type() const { return "ChannelwiseAffine"; } + + protected: + /** + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the inputs @f$ x @f$ + * @param top output Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the computed outputs for each channel @f$i@f$ @f$ + * y_i = a_i x_i + b_i + * @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + /** + * @brief Computes the error gradient w.r.t. the ChannelwiseAffine inputs. + * + * @param top output Blob vector (length 1), providing the error gradient with + * respect to the outputs + * -# @f$ (N \times C \times ...) @f$ + * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ + * with respect to computed outputs @f$ y @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 1) + * -# @f$ (N \times C \times ...) @f$ + * the inputs @f$ x @f$; For each channel @f$i@f$, backward fills their + * diff with gradients @f$ + * \frac{\partial E}{\partial x_i} = \left\{ + * \begin{array}{lr} + * a_i \frac{\partial E}{\partial y_i} + * \end{array} \right. + * @f$. + * If param_propagate_down_[0] is true, it fills the diff with gradients + * @f$ + * \frac{\partial E}{\partial a_i} = \left\{ + * \begin{array}{lr} + * \sum_{x_i} x_i \frac{\partial E}{\partial y_i} + * \end{array} \right. + * @f$. + * If param_propagate_down_[1] is true, it fills the diff with gradients + * @f$ + * \frac{\partial E}{\partial b_i} = \left\{ + * \begin{array}{lr} + * frac{\partial E}{\partial y_i} + * \end{array} \right. + * @f$. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom); + bool channel_shared_; + Blob multiplier_; + // dot multiplier for backward computation of params + Blob bias_multiplier_; + Blob backward_buff_; + // temporary buffer for backward computation + Blob bottom_memory_; + // memory for in-place computation +}; +} // namespace caffe + +#endif // CAFFE_CHANNELWISE_AFFINE_LAYER_HPP_ diff --git a/src/caffe/layers/channelwise_affine_layer.cpp b/src/caffe/layers/channelwise_affine_layer.cpp new file mode 100644 index 000000000..e9f31fb10 --- /dev/null +++ b/src/caffe/layers/channelwise_affine_layer.cpp @@ -0,0 +1,189 @@ +#include +#include + +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/channelwise_affine_layer.hpp" + +namespace caffe { + +template +void ChannelwiseAffineLayer::LayerSetUp( + const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "Number of axes of bottom blob must be >=2."; + ChannelwiseAffineParameter channelwise_affine_param = + this->layer_param().channelwise_affine_param(); + int channels = bottom[0]->channels(); + channel_shared_ = channelwise_affine_param.channel_shared(); + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(2); + if (channel_shared_) { + this->blobs_[0].reset(new Blob(vector(0))); + this->blobs_[1].reset(new Blob(vector(0))); + + } else { + this->blobs_[0].reset(new Blob(vector(1, channels))); + this->blobs_[1].reset(new Blob(vector(1, channels))); + } + shared_ptr > filler; + if (channelwise_affine_param.has_slope_filler()) { + filler.reset(GetFiller(channelwise_affine_param.slope_filler())); + } else { + FillerParameter filler_param; + filler_param.set_type("constant"); + filler_param.set_value(1.0001); + filler.reset(GetFiller(filler_param)); + } + filler->Fill(this->blobs_[0].get()); + + if (channelwise_affine_param.has_bias_filler()) { + filler.reset(GetFiller(channelwise_affine_param.bias_filler())); + } else { + FillerParameter filler_param; + filler_param.set_type("constant"); + filler_param.set_value(0.0001); + filler.reset(GetFiller(filler_param)); + } + filler->Fill(this->blobs_[1].get()); + } + if (channel_shared_) { + CHECK_EQ(this->blobs_[0]->count(), 1) + << "Slope size is inconsistent with prototxt config"; + } else { + CHECK_EQ(this->blobs_[0]->count(), channels) + << "Slope size is inconsistent with prototxt config"; + } + + // Propagate gradients to the parameters (as directed by backward pass). + this->param_propagate_down_.resize(this->blobs_.size(), true); + multiplier_.Reshape(vector(1, bottom[0]->count(1))); + bias_multiplier_.Reshape(vector(1, bottom[0]->count(1))); + backward_buff_.Reshape(vector(1, bottom[0]->count(1))); + caffe_set(multiplier_.count(), Dtype(1.0), + multiplier_.mutable_cpu_data()); + caffe_set(bias_multiplier_.count(), Dtype(1.0), + bias_multiplier_.mutable_cpu_data()); +} + +template +void ChannelwiseAffineLayer::Reshape( + const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "Number of axes of bottom blob must be >=2."; + top[0]->ReshapeLike(*bottom[0]); + if (bottom[0] == top[0]) { + // For in-place computation + bottom_memory_.ReshapeLike(*bottom[0]); + } + int height = 1; + int width = 1; + if (bottom[0]->num_axes() > 2) { + height = bottom[0]->shape(2); + width = bottom[0]->shape(3); + } + vector bias_multiplier_shape(1, height * width); + bias_multiplier_.Reshape(bias_multiplier_shape); + caffe_set(bias_multiplier_.count(), Dtype(1), + bias_multiplier_.mutable_cpu_data()); +} + +template +void ChannelwiseAffineLayer::Forward_cpu( + const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->channels(); + const Dtype* slope_data = this->blobs_[0]->cpu_data(); + const Dtype* bias_data = this->blobs_[1]->cpu_data(); + // For in-place computation + if (bottom[0] == top[0]) { + caffe_copy(count, bottom_data, bottom_memory_.mutable_cpu_data()); + } + // if channel_shared, channel index in the following computation becomes + // always zero. + const int div_factor = channel_shared_ ? channels : 1; + for (int i = 0; i < count; ++i) { + int c = (i / dim) % channels / div_factor; + top_data[i] = bottom_data[i] * slope_data[c] + bias_data[c]; + } +} + +template +void ChannelwiseAffineLayer::Backward_cpu( + const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* slope_data = this->blobs_[0]->cpu_data(); + + const Dtype* top_diff = top[0]->cpu_diff(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->shape(1); + const int num = bottom[0]->shape(0); + int height = 1; + int width = 1; + if (bottom[0]->num_axes() > 2) { + height = bottom[0]->shape(2); + width = bottom[0]->shape(3); + } + + // For in-place computation + if (top[0] == bottom[0]) { + bottom_data = bottom_memory_.cpu_data(); + } + + // if channel_shared, channel index in the following computation becomes + // always zero. + const int div_factor = channel_shared_ ? channels : 1; + + // Propagte to param + // Since to write bottom diff will affect top diff if top and bottom blobs + // are identical (in-place computaion), we first compute param backward to + // keep top_diff unchanged. + + if (this->param_propagate_down_[1]) { + Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); + caffe_set(this->blobs_[1]->count(), Dtype(0), bias_diff); + for (int n = 0; n < num; ++n) { + caffe_cpu_gemv(CblasNoTrans, channels, height * width, 1., + top_diff + top[0]->offset(n), + bias_multiplier_.cpu_data(), 1., bias_diff); + } + } + if (this->param_propagate_down_[0]) { + Dtype* slope_diff = this->blobs_[0]->mutable_cpu_diff(); + caffe_set(this->blobs_[0]->count(), Dtype(0), slope_diff); + for (int i = 0; i < count; ++i) { + int c = (i / dim) % channels / div_factor; + slope_diff[c] += top_diff[i] * bottom_data[i]; + } + } + + // Propagate to bottom + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int i = 0; i < count; ++i) { + int c = (i / dim) % channels / div_factor; + bottom_diff[i] = slope_data[c] * top_diff[i]; + } + } +} + + +#ifdef CPU_ONLY +STUB_GPU(ChannelwiseAffineLayer); +#endif + +INSTANTIATE_CLASS(ChannelwiseAffineLayer); +REGISTER_LAYER_CLASS(ChannelwiseAffine); + +} // namespace caffe diff --git a/src/caffe/layers/channelwise_affine_layer.cu b/src/caffe/layers/channelwise_affine_layer.cu new file mode 100644 index 000000000..2066b2656 --- /dev/null +++ b/src/caffe/layers/channelwise_affine_layer.cu @@ -0,0 +1,144 @@ +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/channelwise_affine_layer.hpp" + +namespace caffe { + +// CUDA kernel for forward +template +__global__ void ChannelwiseAffineForward(const int n, const int channels, + const int dim, const Dtype* in, Dtype* out, const Dtype* slope_data, + const Dtype* bias_data, const int div_factor) { + CUDA_KERNEL_LOOP(index, n) { + int c = (index / dim) % channels / div_factor; + out[index] = in[index] * slope_data[c] + bias_data[c]; + } +} + +// CUDA kernel for bottom backward +template +__global__ void ChannelwiseAffineBackward(const int n, + const int channels, const int dim, const Dtype* in_diff, + Dtype* out_diff, const Dtype* slope_data, const int div_factor) { + CUDA_KERNEL_LOOP(index, n) { + int c = (index / dim) % channels / div_factor; + out_diff[index] = slope_data[c] * in_diff[index]; + } +} + +// CUDA kernel for element-wise parameter backward +template +__global__ void ChannelwiseAffineParamSlopeBackward(const int n, + const int rows, const int rowPitch, const Dtype* in_diff, + const Dtype* in_data, Dtype* out_diff) { + CUDA_KERNEL_LOOP(index, n) { + out_diff[index] = in_diff[index] * in_data[index]; + for ( int k = 1; k < rows; k++ ) { + out_diff[index] += in_diff[index + k*rowPitch] + * in_data[index + k*rowPitch]; + } + } +} + +template +void ChannelwiseAffineLayer::Forward_gpu( + const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->channels(); + const Dtype* slope_data = this->blobs_[0]->gpu_data(); + const Dtype* bias_data = this->blobs_[1]->gpu_data(); + const int div_factor = channel_shared_ ? channels : 1; + + // For in-place computation + if (top[0] == bottom[0]) { + caffe_copy(count, bottom_data, bottom_memory_.mutable_gpu_data()); + } + // NOLINT_NEXT_LINE(whitespace/operators) + ChannelwiseAffineForward<<>>( + count, channels, dim, bottom_data, top_data, + slope_data, bias_data, div_factor); + CUDA_POST_KERNEL_CHECK; +} + +template +void ChannelwiseAffineLayer::Backward_gpu( + const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* top_diff = top[0]->gpu_diff(); + const int count = bottom[0]->count(); + const int num = bottom[0]->shape(0); + const int dim = bottom[0]->count(2); + const int channels = bottom[0]->shape(1); + int height = 1; + int width = 1; + if (bottom[0]->num_axes() > 2) { + height = bottom[0]->shape(2); + width = bottom[0]->shape(3); + } + + // For in-place computation + if (top[0] == bottom[0]) { + bottom_data = bottom_memory_.gpu_data(); + } + // Propagate to param + // Since to write bottom diff will affect top diff if top and bottom blobs + // are identical (in-place computaion), we first compute param backward to + // keep top_diff unchanged. + if (this->param_propagate_down_[1]) { + Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); + caffe_gpu_set(this->blobs_[1]->count(), Dtype(0.0), bias_diff); + // Gradient with respect to bias + for (int n = 0; n < num; ++n) { + caffe_gpu_gemv( + CblasNoTrans, channels, height * width, (Dtype)1., + top_diff + top[0]->offset(n), bias_multiplier_.gpu_data(), + (Dtype)1., bias_diff); + } + } + if (this->param_propagate_down_[0]) { + Dtype* slope_diff = this->blobs_[0]->mutable_gpu_diff(); + int cdim = channels * dim; + // compute element-wise diff + // NOLINT_NEXT_LINE(whitespace/operators) + ChannelwiseAffineParamSlopeBackward<<>>( + cdim, num, top[0]->offset(1), top_diff , + bottom_data, + backward_buff_.mutable_gpu_diff()); + CUDA_POST_KERNEL_CHECK; + if (channel_shared_) { + Dtype d = 0; + caffe_gpu_dot(cdim, backward_buff_.gpu_diff(), + multiplier_.gpu_data(), &d); + caffe_gpu_add_scalar(this->blobs_[0]->count(), Dtype(d), slope_diff); + } else { + caffe_gpu_gemv(CblasNoTrans, channels, dim, Dtype(1.), + backward_buff_.gpu_diff(), multiplier_.gpu_data(), Dtype(1.), + slope_diff); + } + } + // Propagate to bottom + if (propagate_down[0]) { + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const Dtype* slope_data = this->blobs_[0]->gpu_data(); + int div_factor = channel_shared_ ? channels : 1; + // NOLINT_NEXT_LINE(whitespace/operators) + ChannelwiseAffineBackward<<>>( + count, channels, dim, top_diff, bottom_diff, slope_data, div_factor); + CUDA_POST_KERNEL_CHECK; + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ChannelwiseAffineLayer); + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index f873deba1..fe6209cf6 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 141 (last added: elu_param) +// LayerParameter next available layer-specific ID: 142 (last added: channelwise_affine_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -356,6 +356,7 @@ message LayerParameter { optional AccuracyParameter accuracy_param = 102; optional ArgMaxParameter argmax_param = 103; optional BatchNormParameter batch_norm_param = 139; + optional ChannelwiseAffineParameter channelwise_affine_param = 141; optional ConcatParameter concat_param = 104; optional ContrastiveLossParameter contrastive_loss_param = 105; optional ConvolutionParameter convolution_param = 106; @@ -498,6 +499,17 @@ message BatchNormParameter { optional float eps = 3 [default = 1e-5]; } +message ChannelwiseAffineParameter { + + // Initial value of a_i. Default is a_i=1.0 for all i. + optional FillerParameter slope_filler = 1; + + optional FillerParameter bias_filler = 2; + + // Whether or not slope paramters are shared across channels. + optional bool channel_shared = 3 [default = false]; +} + message ContrastiveLossParameter { // margin for dissimilar pair optional float margin = 1 [default = 1.0]; diff --git a/src/caffe/test/test_channelwise_affine_layer.cpp b/src/caffe/test/test_channelwise_affine_layer.cpp new file mode 100644 index 000000000..a3e2544f7 --- /dev/null +++ b/src/caffe/test/test_channelwise_affine_layer.cpp @@ -0,0 +1,105 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/channelwise_affine_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ChannelwiseAffineLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ChannelwiseAffineLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~ChannelwiseAffineLayerTest() { + delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + + void TestChannelwiseAffine(ChannelwiseAffineLayer *layer) { + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* bottom_data = this->blob_bottom_->cpu_data(); + const Dtype* top_data = this->blob_top_->cpu_data(); + const Dtype* slope_data = layer->blobs()[0]->cpu_data(); + const Dtype* bias_data = layer->blobs()[1]->cpu_data(); + const Dtype kDelta = 2e-5; + int hw = this->blob_bottom_->height() * this->blob_bottom_->width(); + int channels = this->blob_bottom_->channels(); + bool channel_shared = + layer->layer_param().channelwise_affine_param().channel_shared(); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + int c = channel_shared ? 0 : (i / hw) % channels; + EXPECT_NEAR(top_data[i], + bottom_data[i]* slope_data[c] + bias_data[c], kDelta); + } + } +}; +TYPED_TEST_CASE(ChannelwiseAffineLayerTest, TestDtypesAndDevices); + + +TYPED_TEST(ChannelwiseAffineLayerTest, TestChannelwiseAffineForward) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ChannelwiseAffineLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(layer.blobs()[0].get()); + filler.Fill(layer.blobs()[1].get()); + this->TestChannelwiseAffine(&layer); +} + +TYPED_TEST(ChannelwiseAffineLayerTest, + TestChannelwiseAffineForwardChannelShared) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_channelwise_affine_param()->set_channel_shared(true); + ChannelwiseAffineLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + this->TestChannelwiseAffine(&layer); +} + +TYPED_TEST(ChannelwiseAffineLayerTest, TestChannelwiseAffineGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_channelwise_affine_param()->set_channel_shared(false); + ChannelwiseAffineLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ChannelwiseAffineLayerTest, + TestChannelwiseAffineGradientChannelShared) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_channelwise_affine_param()->set_channel_shared(true); + ChannelwiseAffineLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe From 67b497d4ec70018b168639df1e4342f78fb44bb0 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 22 Jan 2016 15:30:35 -0800 Subject: [PATCH 150/458] Version 1.0.0-rc3 --- CMakeLists.txt | 5 +++++ Makefile | 30 +++++++++++++++++++++--------- cmake/Summary.cmake | 2 +- include/caffe/common.hpp | 4 ++++ python/caffe/__init__.py | 1 + python/caffe/_caffe.cpp | 3 +++ src/caffe/CMakeLists.txt | 4 ++++ tools/caffe.cpp | 3 +++ 8 files changed, 42 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c446c6089..32cc42ac9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,11 @@ endif() # ---[ Caffe project project(Caffe C CXX) +# ---[ Caffe version +set(CAFFE_TARGET_VERSION "1.0.0-rc3") +set(CAFFE_TARGET_SOVERSION "1.0.0-rc3") +add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) + # ---[ Using cmake scripts and modules list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) diff --git a/Makefile b/Makefile index 985fffd6c..f3135d350 100644 --- a/Makefile +++ b/Makefile @@ -29,9 +29,17 @@ SRC_DIRS := $(shell find * -type d -exec bash -c "find {} -maxdepth 1 \ \( -name '*.cpp' -o -name '*.proto' \) | grep -q ." \; -print) # The target shared library name +LIBRARY_NAME := $(PROJECT) LIB_BUILD_DIR := $(BUILD_DIR)/lib -STATIC_NAME := $(LIB_BUILD_DIR)/lib$(PROJECT).a -DYNAMIC_NAME := $(LIB_BUILD_DIR)/lib$(PROJECT).so +STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a +DYNAMIC_VERSION_MAJOR := 1 +DYNAMIC_VERSION_MINOR := 0 +DYNAMIC_VERSION_REVISION := 0-rc3 +DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so +#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) +DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) +DYNAMIC_NAME := $(LIB_BUILD_DIR)/$(DYNAMIC_VERSIONED_NAME_SHORT) +COMMON_FLAGS += -DCAFFE_VERSION=$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) ############################## # Get all source files @@ -253,6 +261,7 @@ ifeq ($(LINUX), 1) # boost::thread is reasonably called boost_thread (compare OS X) # We will also explicitly add stdc++ to the link target. LIBRARIES += boost_thread stdc++ + VERSIONFLAGS += -Wl,-soname,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../lib endif # OS X: @@ -276,6 +285,7 @@ ifeq ($(OSX), 1) # we need to explicitly ask for the rpath to be obeyed DYNAMIC_FLAGS := -install_name @rpath/libcaffe.so ORIGIN := @loader_path + VERSIONFLAGS += -Wl,-install_name,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib else ORIGIN := \$$ORIGIN endif @@ -478,7 +488,7 @@ py: $(PY$(PROJECT)_SO) $(PROTO_GEN_PY) $(PY$(PROJECT)_SO): $(PY$(PROJECT)_SRC) $(PY$(PROJECT)_HXX) | $(DYNAMIC_NAME) @ echo CXX/LD -o $@ $< $(Q)$(CXX) -shared -o $@ $(PY$(PROJECT)_SRC) \ - -o $@ $(LINKFLAGS) -l$(PROJECT) $(PYTHON_LDFLAGS) \ + -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(PYTHON_LDFLAGS) \ -Wl,-rpath,$(ORIGIN)/../../build/lib mat$(PROJECT): mat @@ -542,7 +552,8 @@ $(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK) $(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) @ echo LD -o $@ - $(Q)$(CXX) -shared -o $@ $(OBJS) $(LINKFLAGS) $(LDFLAGS) $(DYNAMIC_FLAGS) + $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) $(DYNAMIC_FLAGS) + @ cd $(BUILD_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) $(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) @ echo AR -o $@ @@ -573,19 +584,19 @@ $(TEST_ALL_BIN): $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \ | $(DYNAMIC_NAME) $(TEST_BIN_DIR) @ echo CXX/LD -o $@ $< $(Q)$(CXX) $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) \ - -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(PROJECT) -Wl,-rpath,$(ORIGIN)/../lib + -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib $(TEST_CU_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CU_BUILD_DIR)/%.o \ $(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR) @ echo LD $< $(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \ - -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(PROJECT) -Wl,-rpath,$(ORIGIN)/../lib + -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib $(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o \ $(GTEST_OBJ) | $(DYNAMIC_NAME) $(TEST_BIN_DIR) @ echo LD $< $(Q)$(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) \ - -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(PROJECT) -Wl,-rpath,$(ORIGIN)/../lib + -o $@ $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/../lib # Target for extension-less symlinks to tool binaries with extension '*.bin'. $(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR) @@ -594,12 +605,12 @@ $(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR) $(TOOL_BINS): %.bin : %.o | $(DYNAMIC_NAME) @ echo CXX/LD -o $@ - $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(PROJECT) $(LDFLAGS) \ + $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \ -Wl,-rpath,$(ORIGIN)/../lib $(EXAMPLE_BINS): %.bin : %.o | $(DYNAMIC_NAME) @ echo CXX/LD -o $@ - $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(PROJECT) $(LDFLAGS) \ + $(Q)$(CXX) $< -o $@ $(LINKFLAGS) -l$(LIBRARY_NAME) $(LDFLAGS) \ -Wl,-rpath,$(ORIGIN)/../../lib proto: $(PROTO_GEN_CC) $(PROTO_GEN_HEADER) @@ -661,6 +672,7 @@ $(DISTRIBUTE_DIR): all py | $(DISTRIBUTE_SUBDIRS) # add libraries cp $(STATIC_NAME) $(DISTRIBUTE_DIR)/lib install -m 644 $(DYNAMIC_NAME) $(DISTRIBUTE_DIR)/lib + cd $(DISTRIBUTE_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) # add python - it's not the standard way, indeed... cp -r python $(DISTRIBUTE_DIR)/python diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index 557a6f04e..ba025cf81 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -101,7 +101,7 @@ function(caffe_print_configuration_summary) caffe_status("") caffe_status("******************* Caffe Configuration Summary *******************") caffe_status("General:") - caffe_status(" Version : ${Caffe_VERSION}") + caffe_status(" Version : ${CAFFE_TARGET_VERSION}") caffe_status(" Git : ${Caffe_GIT_VERSION}") caffe_status(" System : ${CMAKE_SYSTEM_NAME}") caffe_status(" C++ compiler : ${CMAKE_CXX_COMPILER}") diff --git a/include/caffe/common.hpp b/include/caffe/common.hpp index 1df6b9a14..6b902a42e 100644 --- a/include/caffe/common.hpp +++ b/include/caffe/common.hpp @@ -18,6 +18,10 @@ #include "caffe/util/device_alternate.hpp" +// Convert macro to string +#define STRINGIFY(m) #m +#define AS_STRING(m) STRINGIFY(m) + // gflags 2.1 issue: namespace google was changed to gflags without warning. // Luckily we will be able to use GFLAGS_GFLAGS_H_ to detect if it is version // 2.1. If yes, we will add a temporary solution to redirect the namespace. diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index ccda1bcae..e2881b89c 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,6 @@ from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list +from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier from .detector import Detector diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 4ea2ec60b..12a574556 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -212,6 +212,9 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(SolveOverloads, Solve, 0, 1); BOOST_PYTHON_MODULE(_caffe) { // below, we prepend an underscore to methods that will be replaced // in Python + + bp::scope().attr("__version__") = AS_STRING(CAFFE_VERSION); + // Caffe utility functions bp::def("set_mode_cpu", &set_mode_cpu); bp::def("set_mode_gpu", &set_mode_gpu); diff --git a/src/caffe/CMakeLists.txt b/src/caffe/CMakeLists.txt index 40e6c11f5..8a80c9404 100644 --- a/src/caffe/CMakeLists.txt +++ b/src/caffe/CMakeLists.txt @@ -20,6 +20,10 @@ endif() add_library(caffe ${srcs}) target_link_libraries(caffe proto ${Caffe_LINKER_LIBS}) caffe_default_properties(caffe) +set_target_properties(caffe PROPERTIES + VERSION ${CAFFE_TARGET_VERSION} + SOVERSION ${CAFFE_TARGET_SOVERSION} + ) # ---[ Tests add_subdirectory(test) diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 6b342ace0..470165add 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -3,6 +3,7 @@ namespace bp = boost::python; #endif +#include #include #include @@ -378,6 +379,8 @@ RegisterBrewFunction(time); int main(int argc, char** argv) { // Print output to stderr (while still logging). FLAGS_alsologtostderr = 1; + // Set version + gflags::SetVersionString(AS_STRING(CAFFE_VERSION)); // Usage message. gflags::SetUsageMessage("command line brew\n" "usage: caffe \n\n" From 081690709e4a199824f433cc196c55c47731073f Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Fri, 22 Jan 2016 15:57:47 -0800 Subject: [PATCH 151/458] Separation and generalization of ChannelwiseAffineLayer into BiasLayer and ScaleLayer. The behavior of ChannelwiseAffineLayer can be reproduced by a ScaleLayer with `scale_param { bias_term: true }`. BiasLayer and ScaleLayer each take 1 or 2 bottoms, with the output having the same shape as the first. The second input -- either another bottom or a learned parameter -- will have its axes (virtually) broadcast and tiled to have the same shape as the first, after which elementwise addition (Bias) or multiplication (Scale) is performed. --- include/caffe/layers/bias_layer.hpp | 54 ++ .../caffe/layers/channelwise_affine_layer.hpp | 103 ---- include/caffe/layers/scale_layer.hpp | 83 +++ src/caffe/layers/bias_layer.cpp | 121 +++++ src/caffe/layers/bias_layer.cu | 59 ++ src/caffe/layers/channelwise_affine_layer.cpp | 189 ------- src/caffe/layers/channelwise_affine_layer.cu | 144 ----- src/caffe/layers/scale_layer.cpp | 219 ++++++++ src/caffe/layers/scale_layer.cu | 135 +++++ src/caffe/proto/caffe.proto | 79 ++- src/caffe/test/test_bias_layer.cpp | 467 ++++++++++++++++ .../test/test_channelwise_affine_layer.cpp | 105 ---- src/caffe/test/test_scale_layer.cpp | 507 ++++++++++++++++++ 13 files changed, 1714 insertions(+), 551 deletions(-) create mode 100644 include/caffe/layers/bias_layer.hpp delete mode 100644 include/caffe/layers/channelwise_affine_layer.hpp create mode 100644 include/caffe/layers/scale_layer.hpp create mode 100644 src/caffe/layers/bias_layer.cpp create mode 100644 src/caffe/layers/bias_layer.cu delete mode 100644 src/caffe/layers/channelwise_affine_layer.cpp delete mode 100644 src/caffe/layers/channelwise_affine_layer.cu create mode 100644 src/caffe/layers/scale_layer.cpp create mode 100644 src/caffe/layers/scale_layer.cu create mode 100644 src/caffe/test/test_bias_layer.cpp delete mode 100644 src/caffe/test/test_channelwise_affine_layer.cpp create mode 100644 src/caffe/test/test_scale_layer.cpp diff --git a/include/caffe/layers/bias_layer.hpp b/include/caffe/layers/bias_layer.hpp new file mode 100644 index 000000000..eedc3aaa3 --- /dev/null +++ b/include/caffe/layers/bias_layer.hpp @@ -0,0 +1,54 @@ +#ifndef CAFFE_BIAS_LAYER_HPP_ +#define CAFFE_BIAS_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Computes a sum of two input Blobs, with the shape of the + * latter Blob "broadcast" to match the shape of the former. + * Equivalent to tiling the latter Blob, then computing the elementwise + * sum. + * + * The second input may be omitted, in which case it's learned as a parameter + * of the layer. + */ +template +class BiasLayer : public Layer { + public: + explicit BiasLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Bias"; } + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int MaxBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + private: + Blob bias_multiplier_; + int outer_dim_, bias_dim_, inner_dim_, dim_; +}; + + + +} // namespace caffe + +#endif // CAFFE_BIAS_LAYER_HPP_ diff --git a/include/caffe/layers/channelwise_affine_layer.hpp b/include/caffe/layers/channelwise_affine_layer.hpp deleted file mode 100644 index 6d8ac98b6..000000000 --- a/include/caffe/layers/channelwise_affine_layer.hpp +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef CAFFE_CHANNELWISE_AFFINE_LAYER_HPP_ -#define CAFFE_CHANNELWISE_AFFINE_LAYER_HPP_ - -#include -#include "caffe/blob.hpp" -#include "caffe/layer.hpp" -#include "caffe/layers/neuron_layer.hpp" -#include "caffe/proto/caffe.pb.h" - -namespace caffe { - /** - * @brief Affine non-linearity function @f$ - * y = ax+b - * @f$, could be used after batch normalization layer - * - */ -template -class ChannelwiseAffineLayer : public NeuronLayer { - public: - /** - * @param param provides ChannelwiseAffineParameter ChannelwiseAffine_param, - * with ChannelwiseAffineLayer options: - * - slope_filler (\b optional, FillerParameter, - * default {'type': constant 'value':1.0001}). - * - bias_filler (\b optional, FillerParameter, - * default {'type': constant 'value':0.0001}). - * - channel_shared (\b optional, default false). - * slopes and biases are shared across channels. - */ - explicit ChannelwiseAffineLayer(const LayerParameter& param) - : NeuronLayer(param) {} - virtual void LayerSetUp(const vector*>& bottom, - const vector*>& top); - virtual void Reshape(const vector*>& bottom, - const vector*>& top); - virtual inline const char* type() const { return "ChannelwiseAffine"; } - - protected: - /** - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times ...) @f$ - * the inputs @f$ x @f$ - * @param top output Blob vector (length 1) - * -# @f$ (N \times C \times ...) @f$ - * the computed outputs for each channel @f$i@f$ @f$ - * y_i = a_i x_i + b_i - * @f$. - */ - virtual void Forward_cpu(const vector*>& bottom, - const vector*>& top); - virtual void Forward_gpu(const vector*>& bottom, - const vector*>& top); - /** - * @brief Computes the error gradient w.r.t. the ChannelwiseAffine inputs. - * - * @param top output Blob vector (length 1), providing the error gradient with - * respect to the outputs - * -# @f$ (N \times C \times ...) @f$ - * containing error gradients @f$ \frac{\partial E}{\partial y} @f$ - * with respect to computed outputs @f$ y @f$ - * @param propagate_down see Layer::Backward. - * @param bottom input Blob vector (length 1) - * -# @f$ (N \times C \times ...) @f$ - * the inputs @f$ x @f$; For each channel @f$i@f$, backward fills their - * diff with gradients @f$ - * \frac{\partial E}{\partial x_i} = \left\{ - * \begin{array}{lr} - * a_i \frac{\partial E}{\partial y_i} - * \end{array} \right. - * @f$. - * If param_propagate_down_[0] is true, it fills the diff with gradients - * @f$ - * \frac{\partial E}{\partial a_i} = \left\{ - * \begin{array}{lr} - * \sum_{x_i} x_i \frac{\partial E}{\partial y_i} - * \end{array} \right. - * @f$. - * If param_propagate_down_[1] is true, it fills the diff with gradients - * @f$ - * \frac{\partial E}{\partial b_i} = \left\{ - * \begin{array}{lr} - * frac{\partial E}{\partial y_i} - * \end{array} \right. - * @f$. - */ - virtual void Backward_cpu(const vector*>& top, - const vector& propagate_down, - const vector*>& bottom); - virtual void Backward_gpu(const vector*>& top, - const vector& propagate_down, - const vector*>& bottom); - bool channel_shared_; - Blob multiplier_; - // dot multiplier for backward computation of params - Blob bias_multiplier_; - Blob backward_buff_; - // temporary buffer for backward computation - Blob bottom_memory_; - // memory for in-place computation -}; -} // namespace caffe - -#endif // CAFFE_CHANNELWISE_AFFINE_LAYER_HPP_ diff --git a/include/caffe/layers/scale_layer.hpp b/include/caffe/layers/scale_layer.hpp new file mode 100644 index 000000000..924df2e51 --- /dev/null +++ b/include/caffe/layers/scale_layer.hpp @@ -0,0 +1,83 @@ +#ifndef CAFFE_SCALE_LAYER_HPP_ +#define CAFFE_SCALE_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +#include "caffe/layers/bias_layer.hpp" + +namespace caffe { + +/** + * @brief Computes a product of two input Blobs, with the shape of the + * latter Blob "broadcast" to match the shape of the former. + * Equivalent to tiling the latter Blob, then computing the elementwise + * product. + * + * The second input may be omitted, in which case it's learned as a parameter + * of the layer. + */ +template +class ScaleLayer: public Layer { + public: + explicit ScaleLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Scale"; } + // Scale + virtual inline int MinBottomBlobs() const { return 1; } + virtual inline int MaxBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + /** + * In the below shape specifications, @f$ i @f$ denotes the value of the + * `axis` field given by `this->layer_param_.scale_param().axis()`, after + * canonicalization (i.e., conversion from negative to positive index, + * if applicable). + * + * @param bottom input Blob vector (length 2) + * -# @f$ (d_0 \times ... \times + * d_i \times ... \times d_j \times ... \times d_n) @f$ + * the first factor @f$ x @f$ + * -# @f$ (d_i \times ... \times d_j) @f$ + * the second factor @f$ y @f$ + * @param top output Blob vector (length 1) + * -# @f$ (d_0 \times ... \times + * d_i \times ... \times d_j \times ... \times d_n) @f$ + * the product @f$ z = x y @f$ computed after "broadcasting" y. + * Equivalent to tiling @f$ y @f$ to have the same shape as @f$ x @f$, + * then computing the elementwise product. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + shared_ptr > bias_layer_; + vector*> bias_bottom_vec_; + vector bias_propagate_down_; + int bias_param_id_; + + Blob sum_multiplier_; + Blob sum_result_; + Blob temp_; + int axis_; + int outer_dim_, scale_dim_, inner_dim_; +}; + + +} // namespace caffe + +#endif // CAFFE_SCALE_LAYER_HPP_ diff --git a/src/caffe/layers/bias_layer.cpp b/src/caffe/layers/bias_layer.cpp new file mode 100644 index 000000000..0a786b5db --- /dev/null +++ b/src/caffe/layers/bias_layer.cpp @@ -0,0 +1,121 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/bias_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void BiasLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + if (bottom.size() == 1 && this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else if (bottom.size() == 1) { + // bias is a learned parameter; initialize it + const BiasParameter& param = this->layer_param_.bias_param(); + const int axis = bottom[0]->CanonicalAxisIndex(param.axis()); + const int num_axes = param.num_axes(); + CHECK_GE(num_axes, -1) << "num_axes must be non-negative, " + << "or -1 to extend to the end of bottom[0]"; + if (num_axes >= 0) { + CHECK_GE(bottom[0]->num_axes(), axis + num_axes) + << "bias blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis; + } + this->blobs_.resize(1); + const vector::const_iterator& shape_start = + bottom[0]->shape().begin() + axis; + const vector::const_iterator& shape_end = + (num_axes == -1) ? bottom[0]->shape().end() : (shape_start + num_axes); + vector bias_shape(shape_start, shape_end); + this->blobs_[0].reset(new Blob(bias_shape)); + shared_ptr > filler(GetFiller(param.filler())); + filler->Fill(this->blobs_[0].get()); + } + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void BiasLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const BiasParameter& param = this->layer_param_.bias_param(); + Blob* bias = (bottom.size() > 1) ? bottom[1] : this->blobs_[0].get(); + // Always set axis == 0 in special case where bias is a scalar + // (num_axes == 0). Mathematically equivalent for any choice of axis, so the + // actual setting can be safely ignored; and computation is most efficient + // with axis == 0 and (therefore) outer_dim_ == 1. + const int axis = (bias->num_axes() == 0) ? + 0 : bottom[0]->CanonicalAxisIndex(param.axis()); + CHECK_GE(bottom[0]->num_axes(), axis + bias->num_axes()) + << "bias blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis; + for (int i = 0; i < bias->num_axes(); ++i) { + CHECK_EQ(bottom[0]->shape(axis + i), bias->shape(i)) + << "dimension mismatch between bottom[0]->shape(" << axis + i + << ") and bias->shape(" << i << ")"; + } + outer_dim_ = bottom[0]->count(0, axis); + bias_dim_ = bias->count(); + inner_dim_ = bottom[0]->count(axis + bias->num_axes()); + dim_ = bias_dim_ * inner_dim_; + if (bottom[0] != top[0]) { + top[0]->ReshapeLike(*bottom[0]); + } + bias_multiplier_.Reshape(vector(1, inner_dim_)); + if (bias_multiplier_.cpu_data()[inner_dim_ - 1] != Dtype(1)) { + caffe_set(inner_dim_, Dtype(1), bias_multiplier_.mutable_cpu_data()); + } +} + +template +void BiasLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bias_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + if (bottom[0] != top[0]) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + caffe_copy(bottom[0]->count(), bottom_data, top_data); + } + for (int n = 0; n < outer_dim_; ++n) { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, bias_dim_, + inner_dim_, Dtype(1), Dtype(1), bias_data, + bias_multiplier_.cpu_data(), Dtype(1), top_data); + top_data += dim_; + } +} + +template +void BiasLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[0] && bottom[0] != top[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + caffe_copy(bottom[0]->count(), top_diff, bottom_diff); + } + // in-place, we don't need to do anything with the data diff + const bool bias_param = (bottom.size() == 1); + if ((!bias_param && propagate_down[1]) || + (bias_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bias_diff = (bias_param ? this->blobs_[0].get() : bottom[1]) + ->mutable_cpu_diff(); + bool accum = bias_param; + for (int n = 0; n < outer_dim_; ++n) { + caffe_cpu_gemv(CblasNoTrans, bias_dim_, inner_dim_, Dtype(1), + top_diff, bias_multiplier_.cpu_data(), Dtype(accum), bias_diff); + top_diff += dim_; + accum = true; + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(BiasLayer); +#endif + +INSTANTIATE_CLASS(BiasLayer); +REGISTER_LAYER_CLASS(Bias); + +} // namespace caffe diff --git a/src/caffe/layers/bias_layer.cu b/src/caffe/layers/bias_layer.cu new file mode 100644 index 000000000..8ac913a5d --- /dev/null +++ b/src/caffe/layers/bias_layer.cu @@ -0,0 +1,59 @@ +#include + +#include "caffe/filler.hpp" +#include "caffe/layers/bias_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void BiasForward(const int n, const Dtype* in, + const Dtype* bias, const int bias_dim, const int inner_dim, + Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + const int bias_index = (index / inner_dim) % bias_dim; + out[index] = in[index] + bias[bias_index]; + } +} + +template +void BiasLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int count = top[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + const Dtype* bias_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + BiasForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, bias_data, bias_dim_, inner_dim_, top_data); +} + +template +void BiasLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (propagate_down[0] && bottom[0] != top[0]) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + caffe_copy(bottom[0]->count(), top_diff, bottom_diff); + } + // in-place, we don't need to do anything with the data diff + const bool bias_param = (bottom.size() == 1); + if ((!bias_param && propagate_down[1]) || + (bias_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bias_diff = (bias_param ? this->blobs_[0].get() : bottom[1]) + ->mutable_gpu_diff(); + bool accum = bias_param; + for (int n = 0; n < outer_dim_; ++n) { + caffe_gpu_gemv(CblasNoTrans, bias_dim_, inner_dim_, Dtype(1), + top_diff, bias_multiplier_.gpu_data(), Dtype(accum), bias_diff); + top_diff += dim_; + accum = true; + } + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(BiasLayer); + +} // namespace caffe diff --git a/src/caffe/layers/channelwise_affine_layer.cpp b/src/caffe/layers/channelwise_affine_layer.cpp deleted file mode 100644 index e9f31fb10..000000000 --- a/src/caffe/layers/channelwise_affine_layer.cpp +++ /dev/null @@ -1,189 +0,0 @@ -#include -#include - -#include "caffe/filler.hpp" -#include "caffe/layer.hpp" -#include "caffe/layers/channelwise_affine_layer.hpp" - -namespace caffe { - -template -void ChannelwiseAffineLayer::LayerSetUp( - const vector*>& bottom, - const vector*>& top) { - CHECK_GE(bottom[0]->num_axes(), 2) - << "Number of axes of bottom blob must be >=2."; - ChannelwiseAffineParameter channelwise_affine_param = - this->layer_param().channelwise_affine_param(); - int channels = bottom[0]->channels(); - channel_shared_ = channelwise_affine_param.channel_shared(); - if (this->blobs_.size() > 0) { - LOG(INFO) << "Skipping parameter initialization"; - } else { - this->blobs_.resize(2); - if (channel_shared_) { - this->blobs_[0].reset(new Blob(vector(0))); - this->blobs_[1].reset(new Blob(vector(0))); - - } else { - this->blobs_[0].reset(new Blob(vector(1, channels))); - this->blobs_[1].reset(new Blob(vector(1, channels))); - } - shared_ptr > filler; - if (channelwise_affine_param.has_slope_filler()) { - filler.reset(GetFiller(channelwise_affine_param.slope_filler())); - } else { - FillerParameter filler_param; - filler_param.set_type("constant"); - filler_param.set_value(1.0001); - filler.reset(GetFiller(filler_param)); - } - filler->Fill(this->blobs_[0].get()); - - if (channelwise_affine_param.has_bias_filler()) { - filler.reset(GetFiller(channelwise_affine_param.bias_filler())); - } else { - FillerParameter filler_param; - filler_param.set_type("constant"); - filler_param.set_value(0.0001); - filler.reset(GetFiller(filler_param)); - } - filler->Fill(this->blobs_[1].get()); - } - if (channel_shared_) { - CHECK_EQ(this->blobs_[0]->count(), 1) - << "Slope size is inconsistent with prototxt config"; - } else { - CHECK_EQ(this->blobs_[0]->count(), channels) - << "Slope size is inconsistent with prototxt config"; - } - - // Propagate gradients to the parameters (as directed by backward pass). - this->param_propagate_down_.resize(this->blobs_.size(), true); - multiplier_.Reshape(vector(1, bottom[0]->count(1))); - bias_multiplier_.Reshape(vector(1, bottom[0]->count(1))); - backward_buff_.Reshape(vector(1, bottom[0]->count(1))); - caffe_set(multiplier_.count(), Dtype(1.0), - multiplier_.mutable_cpu_data()); - caffe_set(bias_multiplier_.count(), Dtype(1.0), - bias_multiplier_.mutable_cpu_data()); -} - -template -void ChannelwiseAffineLayer::Reshape( - const vector*>& bottom, - const vector*>& top) { - CHECK_GE(bottom[0]->num_axes(), 2) - << "Number of axes of bottom blob must be >=2."; - top[0]->ReshapeLike(*bottom[0]); - if (bottom[0] == top[0]) { - // For in-place computation - bottom_memory_.ReshapeLike(*bottom[0]); - } - int height = 1; - int width = 1; - if (bottom[0]->num_axes() > 2) { - height = bottom[0]->shape(2); - width = bottom[0]->shape(3); - } - vector bias_multiplier_shape(1, height * width); - bias_multiplier_.Reshape(bias_multiplier_shape); - caffe_set(bias_multiplier_.count(), Dtype(1), - bias_multiplier_.mutable_cpu_data()); -} - -template -void ChannelwiseAffineLayer::Forward_cpu( - const vector*>& bottom, - const vector*>& top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = top[0]->mutable_cpu_data(); - const int count = bottom[0]->count(); - const int dim = bottom[0]->count(2); - const int channels = bottom[0]->channels(); - const Dtype* slope_data = this->blobs_[0]->cpu_data(); - const Dtype* bias_data = this->blobs_[1]->cpu_data(); - // For in-place computation - if (bottom[0] == top[0]) { - caffe_copy(count, bottom_data, bottom_memory_.mutable_cpu_data()); - } - // if channel_shared, channel index in the following computation becomes - // always zero. - const int div_factor = channel_shared_ ? channels : 1; - for (int i = 0; i < count; ++i) { - int c = (i / dim) % channels / div_factor; - top_data[i] = bottom_data[i] * slope_data[c] + bias_data[c]; - } -} - -template -void ChannelwiseAffineLayer::Backward_cpu( - const vector*>& top, - const vector& propagate_down, - const vector*>& bottom) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - const Dtype* slope_data = this->blobs_[0]->cpu_data(); - - const Dtype* top_diff = top[0]->cpu_diff(); - const int count = bottom[0]->count(); - const int dim = bottom[0]->count(2); - const int channels = bottom[0]->shape(1); - const int num = bottom[0]->shape(0); - int height = 1; - int width = 1; - if (bottom[0]->num_axes() > 2) { - height = bottom[0]->shape(2); - width = bottom[0]->shape(3); - } - - // For in-place computation - if (top[0] == bottom[0]) { - bottom_data = bottom_memory_.cpu_data(); - } - - // if channel_shared, channel index in the following computation becomes - // always zero. - const int div_factor = channel_shared_ ? channels : 1; - - // Propagte to param - // Since to write bottom diff will affect top diff if top and bottom blobs - // are identical (in-place computaion), we first compute param backward to - // keep top_diff unchanged. - - if (this->param_propagate_down_[1]) { - Dtype* bias_diff = this->blobs_[1]->mutable_cpu_diff(); - caffe_set(this->blobs_[1]->count(), Dtype(0), bias_diff); - for (int n = 0; n < num; ++n) { - caffe_cpu_gemv(CblasNoTrans, channels, height * width, 1., - top_diff + top[0]->offset(n), - bias_multiplier_.cpu_data(), 1., bias_diff); - } - } - if (this->param_propagate_down_[0]) { - Dtype* slope_diff = this->blobs_[0]->mutable_cpu_diff(); - caffe_set(this->blobs_[0]->count(), Dtype(0), slope_diff); - for (int i = 0; i < count; ++i) { - int c = (i / dim) % channels / div_factor; - slope_diff[c] += top_diff[i] * bottom_data[i]; - } - } - - // Propagate to bottom - if (propagate_down[0]) { - Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); - for (int i = 0; i < count; ++i) { - int c = (i / dim) % channels / div_factor; - bottom_diff[i] = slope_data[c] * top_diff[i]; - } - } -} - - -#ifdef CPU_ONLY -STUB_GPU(ChannelwiseAffineLayer); -#endif - -INSTANTIATE_CLASS(ChannelwiseAffineLayer); -REGISTER_LAYER_CLASS(ChannelwiseAffine); - -} // namespace caffe diff --git a/src/caffe/layers/channelwise_affine_layer.cu b/src/caffe/layers/channelwise_affine_layer.cu deleted file mode 100644 index 2066b2656..000000000 --- a/src/caffe/layers/channelwise_affine_layer.cu +++ /dev/null @@ -1,144 +0,0 @@ -#include -#include - -#include "caffe/layer.hpp" -#include "caffe/layers/channelwise_affine_layer.hpp" - -namespace caffe { - -// CUDA kernel for forward -template -__global__ void ChannelwiseAffineForward(const int n, const int channels, - const int dim, const Dtype* in, Dtype* out, const Dtype* slope_data, - const Dtype* bias_data, const int div_factor) { - CUDA_KERNEL_LOOP(index, n) { - int c = (index / dim) % channels / div_factor; - out[index] = in[index] * slope_data[c] + bias_data[c]; - } -} - -// CUDA kernel for bottom backward -template -__global__ void ChannelwiseAffineBackward(const int n, - const int channels, const int dim, const Dtype* in_diff, - Dtype* out_diff, const Dtype* slope_data, const int div_factor) { - CUDA_KERNEL_LOOP(index, n) { - int c = (index / dim) % channels / div_factor; - out_diff[index] = slope_data[c] * in_diff[index]; - } -} - -// CUDA kernel for element-wise parameter backward -template -__global__ void ChannelwiseAffineParamSlopeBackward(const int n, - const int rows, const int rowPitch, const Dtype* in_diff, - const Dtype* in_data, Dtype* out_diff) { - CUDA_KERNEL_LOOP(index, n) { - out_diff[index] = in_diff[index] * in_data[index]; - for ( int k = 1; k < rows; k++ ) { - out_diff[index] += in_diff[index + k*rowPitch] - * in_data[index + k*rowPitch]; - } - } -} - -template -void ChannelwiseAffineLayer::Forward_gpu( - const vector*>& bottom, - const vector*>& top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* top_data = top[0]->mutable_gpu_data(); - const int count = bottom[0]->count(); - const int dim = bottom[0]->count(2); - const int channels = bottom[0]->channels(); - const Dtype* slope_data = this->blobs_[0]->gpu_data(); - const Dtype* bias_data = this->blobs_[1]->gpu_data(); - const int div_factor = channel_shared_ ? channels : 1; - - // For in-place computation - if (top[0] == bottom[0]) { - caffe_copy(count, bottom_data, bottom_memory_.mutable_gpu_data()); - } - // NOLINT_NEXT_LINE(whitespace/operators) - ChannelwiseAffineForward<<>>( - count, channels, dim, bottom_data, top_data, - slope_data, bias_data, div_factor); - CUDA_POST_KERNEL_CHECK; -} - -template -void ChannelwiseAffineLayer::Backward_gpu( - const vector*>& top, - const vector& propagate_down, - const vector*>& bottom) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - const Dtype* top_diff = top[0]->gpu_diff(); - const int count = bottom[0]->count(); - const int num = bottom[0]->shape(0); - const int dim = bottom[0]->count(2); - const int channels = bottom[0]->shape(1); - int height = 1; - int width = 1; - if (bottom[0]->num_axes() > 2) { - height = bottom[0]->shape(2); - width = bottom[0]->shape(3); - } - - // For in-place computation - if (top[0] == bottom[0]) { - bottom_data = bottom_memory_.gpu_data(); - } - // Propagate to param - // Since to write bottom diff will affect top diff if top and bottom blobs - // are identical (in-place computaion), we first compute param backward to - // keep top_diff unchanged. - if (this->param_propagate_down_[1]) { - Dtype* bias_diff = this->blobs_[1]->mutable_gpu_diff(); - caffe_gpu_set(this->blobs_[1]->count(), Dtype(0.0), bias_diff); - // Gradient with respect to bias - for (int n = 0; n < num; ++n) { - caffe_gpu_gemv( - CblasNoTrans, channels, height * width, (Dtype)1., - top_diff + top[0]->offset(n), bias_multiplier_.gpu_data(), - (Dtype)1., bias_diff); - } - } - if (this->param_propagate_down_[0]) { - Dtype* slope_diff = this->blobs_[0]->mutable_gpu_diff(); - int cdim = channels * dim; - // compute element-wise diff - // NOLINT_NEXT_LINE(whitespace/operators) - ChannelwiseAffineParamSlopeBackward<<>>( - cdim, num, top[0]->offset(1), top_diff , - bottom_data, - backward_buff_.mutable_gpu_diff()); - CUDA_POST_KERNEL_CHECK; - if (channel_shared_) { - Dtype d = 0; - caffe_gpu_dot(cdim, backward_buff_.gpu_diff(), - multiplier_.gpu_data(), &d); - caffe_gpu_add_scalar(this->blobs_[0]->count(), Dtype(d), slope_diff); - } else { - caffe_gpu_gemv(CblasNoTrans, channels, dim, Dtype(1.), - backward_buff_.gpu_diff(), multiplier_.gpu_data(), Dtype(1.), - slope_diff); - } - } - // Propagate to bottom - if (propagate_down[0]) { - Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); - const Dtype* slope_data = this->blobs_[0]->gpu_data(); - int div_factor = channel_shared_ ? channels : 1; - // NOLINT_NEXT_LINE(whitespace/operators) - ChannelwiseAffineBackward<<>>( - count, channels, dim, top_diff, bottom_diff, slope_data, div_factor); - CUDA_POST_KERNEL_CHECK; - } -} - -INSTANTIATE_LAYER_GPU_FUNCS(ChannelwiseAffineLayer); - -} // namespace caffe diff --git a/src/caffe/layers/scale_layer.cpp b/src/caffe/layers/scale_layer.cpp new file mode 100644 index 000000000..ecdbb123e --- /dev/null +++ b/src/caffe/layers/scale_layer.cpp @@ -0,0 +1,219 @@ +#include +#include + +#include "caffe/filler.hpp" +#include "caffe/layer_factory.hpp" +#include "caffe/layers/scale_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ScaleLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const ScaleParameter& param = this->layer_param_.scale_param(); + if (bottom.size() == 1 && this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else if (bottom.size() == 1) { + // scale is a learned parameter; initialize it + axis_ = bottom[0]->CanonicalAxisIndex(param.axis()); + const int num_axes = param.num_axes(); + CHECK_GE(num_axes, -1) << "num_axes must be non-negative, " + << "or -1 to extend to the end of bottom[0]"; + if (num_axes >= 0) { + CHECK_GE(bottom[0]->num_axes(), axis_ + num_axes) + << "scale blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis_; + } + this->blobs_.resize(1); + const vector::const_iterator& shape_start = + bottom[0]->shape().begin() + axis_; + const vector::const_iterator& shape_end = + (num_axes == -1) ? bottom[0]->shape().end() : (shape_start + num_axes); + vector scale_shape(shape_start, shape_end); + this->blobs_[0].reset(new Blob(scale_shape)); + FillerParameter filler_param(param.filler()); + if (!param.has_filler()) { + // Default to unit (1) filler for identity operation. + filler_param.set_type("constant"); + filler_param.set_value(1); + } + shared_ptr > filler(GetFiller(filler_param)); + filler->Fill(this->blobs_[0].get()); + } + if (param.bias_term()) { + LayerParameter layer_param(this->layer_param_); + layer_param.set_type("Bias"); + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(param.axis()); + if (bottom.size() > 1) { + bias_param->set_num_axes(bottom[1]->num_axes()); + } else { + bias_param->set_num_axes(param.num_axes()); + } + bias_param->mutable_filler()->CopyFrom(param.bias_filler()); + bias_layer_ = LayerRegistry::CreateLayer(layer_param); + bias_bottom_vec_.resize(1); + bias_bottom_vec_[0] = bottom[0]; + bias_layer_->SetUp(bias_bottom_vec_, top); + bias_param_id_ = this->blobs_.size(); + this->blobs_.resize(bias_param_id_ + 1); + this->blobs_[bias_param_id_] = bias_layer_->blobs()[0]; + bias_propagate_down_.resize(1, false); + } + this->param_propagate_down_.resize(this->blobs_.size(), true); +} + +template +void ScaleLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const ScaleParameter& param = this->layer_param_.scale_param(); + Blob* scale = (bottom.size() > 1) ? bottom[1] : this->blobs_[0].get(); + // Always set axis_ == 0 in special case where scale is a scalar + // (num_axes == 0). Mathematically equivalent for any choice of axis_, so the + // actual setting can be safely ignored; and computation is most efficient + // with axis_ == 0 and (therefore) outer_dim_ == 1. (Setting axis_ to + // bottom[0]->num_axes() - 1, giving inner_dim_ == 1, would be equally + // performant.) + axis_ = (scale->num_axes() == 0) ? + 0 : bottom[0]->CanonicalAxisIndex(param.axis()); + CHECK_GE(bottom[0]->num_axes(), axis_ + scale->num_axes()) + << "scale blob's shape extends past bottom[0]'s shape when applied " + << "starting with bottom[0] axis = " << axis_; + for (int i = 0; i < scale->num_axes(); ++i) { + CHECK_EQ(bottom[0]->shape(axis_ + i), scale->shape(i)) + << "dimension mismatch between bottom[0]->shape(" << axis_ + i + << ") and scale->shape(" << i << ")"; + } + outer_dim_ = bottom[0]->count(0, axis_); + scale_dim_ = scale->count(); + inner_dim_ = bottom[0]->count(axis_ + scale->num_axes()); + if (bottom[0] == top[0]) { // in-place computation + temp_.ReshapeLike(*bottom[0]); + } else { + top[0]->ReshapeLike(*bottom[0]); + } + sum_result_.Reshape(vector(1, outer_dim_ * scale_dim_)); + const int sum_mult_size = std::max(outer_dim_, inner_dim_); + sum_multiplier_.Reshape(vector(1, sum_mult_size)); + if (sum_multiplier_.cpu_data()[sum_mult_size - 1] != Dtype(1)) { + caffe_set(sum_mult_size, Dtype(1), sum_multiplier_.mutable_cpu_data()); + } + if (bias_layer_) { + bias_bottom_vec_[0] = top[0]; + bias_layer_->Reshape(bias_bottom_vec_, top); + } +} + +template +void ScaleLayer::Forward_cpu( + const vector*>& bottom, const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + if (bottom[0] == top[0]) { + // In-place computation; need to store bottom data before overwriting it. + // Note that this is only necessary for Backward; we could skip this if not + // doing Backward, but Caffe currently provides no way of knowing whether + // we'll need to do Backward at the time of the Forward call. + caffe_copy(bottom[0]->count(), bottom[0]->cpu_data(), + temp_.mutable_cpu_data()); + } + const Dtype* scale_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int n = 0; n < outer_dim_; ++n) { + for (int d = 0; d < scale_dim_; ++d) { + const Dtype factor = scale_data[d]; + caffe_cpu_scale(inner_dim_, factor, bottom_data, top_data); + bottom_data += inner_dim_; + top_data += inner_dim_; + } + } + if (bias_layer_) { + bias_layer_->Forward(bias_bottom_vec_, top); + } +} + +template +void ScaleLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (bias_layer_ && + this->param_propagate_down_[this->param_propagate_down_.size() - 1]) { + bias_layer_->Backward(top, bias_propagate_down_, bias_bottom_vec_); + } + const bool scale_param = (bottom.size() == 1); + Blob* scale = scale_param ? this->blobs_[0].get() : bottom[1]; + if ((!scale_param && propagate_down[1]) || + (scale_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->cpu_diff(); + const bool in_place = (bottom[0] == top[0]); + const Dtype* bottom_data = (in_place ? &temp_ : bottom[0])->cpu_data(); + // Hack: store big eltwise product in bottom[0] diff, except in the special + // case where this layer itself does the eltwise product, in which case we + // can store it directly in the scale diff, and we're done. + // If we're computing in-place (and not doing eltwise computation), this + // hack doesn't work and we store the product in temp_. + const bool is_eltwise = (bottom[0]->count() == scale->count()); + Dtype* product = (is_eltwise ? scale->mutable_cpu_diff() : + (in_place ? temp_.mutable_cpu_data() : bottom[0]->mutable_cpu_diff())); + caffe_mul(top[0]->count(), top_diff, bottom_data, product); + if (!is_eltwise) { + Dtype* sum_result = NULL; + if (inner_dim_ == 1) { + sum_result = product; + } else if (sum_result_.count() == 1) { + const Dtype* sum_mult = sum_multiplier_.cpu_data(); + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_param) { + Dtype result = caffe_cpu_dot(inner_dim_, product, sum_mult); + *scale_diff += result; + } else { + *scale_diff = caffe_cpu_dot(inner_dim_, product, sum_mult); + } + } else { + const Dtype* sum_mult = sum_multiplier_.cpu_data(); + sum_result = (outer_dim_ == 1) ? + scale->mutable_cpu_diff() : sum_result_.mutable_cpu_data(); + caffe_cpu_gemv(CblasNoTrans, sum_result_.count(), inner_dim_, + Dtype(1), product, sum_mult, Dtype(0), sum_result); + } + if (outer_dim_ != 1) { + const Dtype* sum_mult = sum_multiplier_.cpu_data(); + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_dim_ == 1) { + if (scale_param) { + Dtype result = caffe_cpu_dot(outer_dim_, sum_mult, sum_result); + *scale_diff += result; + } else { + *scale_diff = caffe_cpu_dot(outer_dim_, sum_mult, sum_result); + } + } else { + caffe_cpu_gemv(CblasTrans, outer_dim_, scale_dim_, + Dtype(1), sum_result, sum_mult, Dtype(scale_param), + scale_diff); + } + } + } + } + if (propagate_down[0]) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* scale_data = scale->cpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + for (int n = 0; n < outer_dim_; ++n) { + for (int d = 0; d < scale_dim_; ++d) { + const Dtype factor = scale_data[d]; + caffe_cpu_scale(inner_dim_, factor, top_diff, bottom_diff); + bottom_diff += inner_dim_; + top_diff += inner_dim_; + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(ScaleLayer); +#endif + +INSTANTIATE_CLASS(ScaleLayer); +REGISTER_LAYER_CLASS(Scale); + +} // namespace caffe diff --git a/src/caffe/layers/scale_layer.cu b/src/caffe/layers/scale_layer.cu new file mode 100644 index 000000000..fc9a8064d --- /dev/null +++ b/src/caffe/layers/scale_layer.cu @@ -0,0 +1,135 @@ +#include +#include + +#include "caffe/layers/scale_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +__global__ void ScaleForward(const int n, const Dtype* in, + const Dtype* scale, const int scale_dim, const int inner_dim, + Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + const int scale_index = (index / inner_dim) % scale_dim; + out[index] = in[index] * scale[scale_index]; + } +} + +template +__global__ void ScaleBiasForward(const int n, const Dtype* in, + const Dtype* scale, const Dtype* bias, + const int scale_dim, const int inner_dim, Dtype* out) { + CUDA_KERNEL_LOOP(index, n) { + const int scale_index = (index / inner_dim) % scale_dim; + out[index] = in[index] * scale[scale_index] + bias[scale_index]; + } +} + +template +void ScaleLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + const int count = top[0]->count(); + const Dtype* bottom_data = bottom[0]->gpu_data(); + if (bottom[0] == top[0]) { + // in-place computation; need to store bottom data before overwriting it. + // Note that this is only necessary for Backward; we could skip this if not + // doing Backward, but Caffe currently provides no way of knowing whether + // we'll need to do Backward at the time of the Forward call. + caffe_copy(bottom[0]->count(), bottom[0]->gpu_data(), + temp_.mutable_gpu_data()); + } + const Dtype* scale_data = + ((bottom.size() > 1) ? bottom[1] : this->blobs_[0].get())->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + if (bias_layer_) { + const Dtype* bias_data = this->blobs_[bias_param_id_]->gpu_data(); + ScaleBiasForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, scale_data, bias_data, scale_dim_, inner_dim_, + top_data); + } else { + ScaleForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, bottom_data, scale_data, scale_dim_, inner_dim_, top_data); + } +} + +template +void ScaleLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + if (bias_layer_ && + this->param_propagate_down_[this->param_propagate_down_.size() - 1]) { + bias_layer_->Backward(top, bias_propagate_down_, bias_bottom_vec_); + } + const bool scale_param = (bottom.size() == 1); + Blob* scale = scale_param ? this->blobs_[0].get() : bottom[1]; + if ((!scale_param && propagate_down[1]) || + (scale_param && this->param_propagate_down_[0])) { + const Dtype* top_diff = top[0]->gpu_diff(); + const bool in_place = (bottom[0] == top[0]); + const Dtype* bottom_data = (in_place ? &temp_ : bottom[0])->gpu_data(); + // Hack: store big eltwise product in bottom[0] diff, except in the special + // case where this layer itself does the eltwise product, in which case we + // can store it directly in the scale diff, and we're done. + // If we're computing in-place (and not doing eltwise computation), this + // hack doesn't work and we store the product in temp_. + const bool is_eltwise = (bottom[0]->count() == scale->count()); + Dtype* product = (is_eltwise ? scale->mutable_gpu_diff() : + (in_place ? temp_.mutable_gpu_data() : bottom[0]->mutable_gpu_diff())); + caffe_gpu_mul(top[0]->count(), top_diff, bottom_data, product); + if (!is_eltwise) { + Dtype* sum_result = NULL; + if (inner_dim_ == 1) { + sum_result = product; + } else if (sum_result_.count() == 1) { + const Dtype* sum_mult = sum_multiplier_.gpu_data(); + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_param) { + Dtype result; + caffe_gpu_dot(inner_dim_, product, sum_mult, &result); + *scale_diff += result; + } else { + caffe_gpu_dot(inner_dim_, product, sum_mult, scale_diff); + } + } else { + const Dtype* sum_mult = sum_multiplier_.gpu_data(); + sum_result = (outer_dim_ == 1) ? + scale->mutable_gpu_diff() : sum_result_.mutable_gpu_data(); + caffe_gpu_gemv(CblasNoTrans, sum_result_.count(), inner_dim_, + Dtype(1), product, sum_mult, Dtype(0), sum_result); + } + if (outer_dim_ != 1) { + const Dtype* sum_mult = sum_multiplier_.gpu_data(); + if (scale_dim_ == 1) { + Dtype* scale_diff = scale->mutable_cpu_diff(); + if (scale_param) { + Dtype result; + caffe_gpu_dot(outer_dim_, sum_mult, sum_result, &result); + *scale_diff += result; + } else { + caffe_gpu_dot(outer_dim_, sum_mult, sum_result, scale_diff); + } + } else { + Dtype* scale_diff = scale->mutable_gpu_diff(); + caffe_gpu_gemv(CblasTrans, outer_dim_, scale_dim_, + Dtype(1), sum_result, sum_mult, Dtype(scale_param), + scale_diff); + } + } + } + } + if (propagate_down[0]) { + const int count = top[0]->count(); + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* scale_data = scale->gpu_data(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + ScaleForward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + count, top_diff, scale_data, scale_dim_, inner_dim_, bottom_diff); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(ScaleLayer); + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index fe6209cf6..6493a72d7 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 142 (last added: channelwise_affine_param) +// LayerParameter next available layer-specific ID: 143 (last added: scale_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -356,7 +356,7 @@ message LayerParameter { optional AccuracyParameter accuracy_param = 102; optional ArgMaxParameter argmax_param = 103; optional BatchNormParameter batch_norm_param = 139; - optional ChannelwiseAffineParameter channelwise_affine_param = 141; + optional BiasParameter bias_param = 141; optional ConcatParameter concat_param = 104; optional ContrastiveLossParameter contrastive_loss_param = 105; optional ConvolutionParameter convolution_param = 106; @@ -385,6 +385,7 @@ message LayerParameter { optional ReductionParameter reduction_param = 136; optional ReLUParameter relu_param = 123; optional ReshapeParameter reshape_param = 133; + optional ScaleParameter scale_param = 142; optional SigmoidParameter sigmoid_param = 124; optional SoftmaxParameter softmax_param = 125; optional SPPParameter spp_param = 132; @@ -499,15 +500,36 @@ message BatchNormParameter { optional float eps = 3 [default = 1e-5]; } -message ChannelwiseAffineParameter { - - // Initial value of a_i. Default is a_i=1.0 for all i. - optional FillerParameter slope_filler = 1; - - optional FillerParameter bias_filler = 2; +message BiasParameter { + // The first axis of bottom[0] (the first input Blob) along which to apply + // bottom[1] (the second input Blob). May be negative to index from the end + // (e.g., -1 for the last axis). + // + // For example, if bottom[0] is 4D with shape 100x3x40x60, the output + // top[0] will have the same shape, and bottom[1] may have any of the + // following shapes (for the given value of axis): + // (axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60 + // (axis == 1 == -3) 3; 3x40; 3x40x60 + // (axis == 2 == -2) 40; 40x60 + // (axis == 3 == -1) 60 + // Furthermore, bottom[1] may have the empty shape (regardless of the value of + // "axis") -- a scalar bias. + optional int32 axis = 1 [default = 1]; - // Whether or not slope paramters are shared across channels. - optional bool channel_shared = 3 [default = false]; + // (num_axes is ignored unless just one bottom is given and the bias is + // a learned parameter of the layer. Otherwise, num_axes is determined by the + // number of axes by the second bottom.) + // The number of axes of the input (bottom[0]) covered by the bias + // parameter, or -1 to cover all axes of bottom[0] starting from `axis`. + // Set num_axes := 0, to add a zero-axis Blob: a scalar. + optional int32 num_axes = 2 [default = 1]; + + // (filler is ignored unless just one bottom is given and the bias is + // a learned parameter of the layer.) + // The initialization for the learned bias parameter. + // Default is the zero (0) initialization, resulting in the BiasLayer + // initially performing the identity operation. + optional FillerParameter filler = 3; } message ContrastiveLossParameter { @@ -972,6 +994,43 @@ message ReshapeParameter { optional int32 num_axes = 3 [default = -1]; } +message ScaleParameter { + // The first axis of bottom[0] (the first input Blob) along which to apply + // bottom[1] (the second input Blob). May be negative to index from the end + // (e.g., -1 for the last axis). + // + // For example, if bottom[0] is 4D with shape 100x3x40x60, the output + // top[0] will have the same shape, and bottom[1] may have any of the + // following shapes (for the given value of axis): + // (axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60 + // (axis == 1 == -3) 3; 3x40; 3x40x60 + // (axis == 2 == -2) 40; 40x60 + // (axis == 3 == -1) 60 + // Furthermore, bottom[1] may have the empty shape (regardless of the value of + // "axis") -- a scalar multiplier. + optional int32 axis = 1 [default = 1]; + + // (num_axes is ignored unless just one bottom is given and the scale is + // a learned parameter of the layer. Otherwise, num_axes is determined by the + // number of axes by the second bottom.) + // The number of axes of the input (bottom[0]) covered by the scale + // parameter, or -1 to cover all axes of bottom[0] starting from `axis`. + // Set num_axes := 0, to multiply with a zero-axis Blob: a scalar. + optional int32 num_axes = 2 [default = 1]; + + // (filler is ignored unless just one bottom is given and the scale is + // a learned parameter of the layer.) + // The initialization for the learned scale parameter. + // Default is the unit (1) initialization, resulting in the ScaleLayer + // initially performing the identity operation. + optional FillerParameter filler = 3; + + // Whether to also learn a bias (equivalent to a ScaleLayer+BiasLayer, but + // may be more efficient). Initialized with bias_filler (defaults to 0). + optional bool bias_term = 4 [default = false]; + optional FillerParameter bias_filler = 5; +} + message SigmoidParameter { enum Engine { DEFAULT = 0; diff --git a/src/caffe/test/test_bias_layer.cpp b/src/caffe/test/test_bias_layer.cpp new file mode 100644 index 000000000..3862e763e --- /dev/null +++ b/src/caffe/test/test_bias_layer.cpp @@ -0,0 +1,467 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/bias_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class BiasLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + BiasLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_bottom_eltwise_(new Blob(2, 3, 4, 5)), + blob_bottom_broadcast_0_(new Blob()), + blob_bottom_broadcast_1_(new Blob()), + blob_bottom_broadcast_2_(new Blob()), + blob_bottom_bias_(new Blob(vector())), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + vector broadcast_shape(2); + broadcast_shape[0] = 2; broadcast_shape[1] = 3; + this->blob_bottom_broadcast_0_->Reshape(broadcast_shape); + broadcast_shape[0] = 3; broadcast_shape[1] = 4; + this->blob_bottom_broadcast_1_->Reshape(broadcast_shape); + broadcast_shape[0] = 4; broadcast_shape[1] = 5; + this->blob_bottom_broadcast_2_->Reshape(broadcast_shape); + FillerParameter filler_param; + filler_param.set_min(1); + filler_param.set_max(10); + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_eltwise_); + filler.Fill(this->blob_bottom_broadcast_0_); + filler.Fill(this->blob_bottom_broadcast_1_); + filler.Fill(this->blob_bottom_broadcast_2_); + filler.Fill(this->blob_bottom_bias_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~BiasLayerTest() { + delete blob_bottom_; + delete blob_bottom_eltwise_; + delete blob_bottom_broadcast_0_; + delete blob_bottom_broadcast_1_; + delete blob_bottom_broadcast_2_; + delete blob_bottom_bias_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_eltwise_; + Blob* const blob_bottom_broadcast_0_; + Blob* const blob_bottom_broadcast_1_; + Blob* const blob_bottom_broadcast_2_; + Blob* const blob_bottom_bias_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(BiasLayerTest, TestDtypesAndDevices); + +TYPED_TEST(BiasLayerTest, TestForwardEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_bottom_->cpu_data(); + const int count = this->blob_bottom_->count(); + const Dtype* in_data_a = orig_bottom.cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestBackwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_bias_diff; + orig_bias_diff.CopyFrom(*this->blob_bottom_eltwise_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_eltwise_->count(); ++i) { + EXPECT_NEAR(orig_bias_diff.cpu_diff()[i], + this->blob_bottom_eltwise_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(0); + bias_param->set_num_axes(-1); + bias_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = layer->blobs()[0]->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] + in_data_b[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + this->blob_bottom_broadcast_0_->data_at(n, c, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_bottom_->data_at(n, c, h, w), + orig_bottom.data_at(n, c, h, w) + + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestBackwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + shared_ptr > layer(new BiasLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_bias_diff; + orig_bias_diff.CopyFrom(*this->blob_bottom_broadcast_1_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_broadcast_1_->count(); ++i) { + EXPECT_NEAR(orig_bias_diff.cpu_diff()[i], + this->blob_bottom_broadcast_1_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(1); + bias_param->set_num_axes(2); + bias_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + layer->blobs()[0]->data_at(c, h, 0, 0), 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) + + this->blob_bottom_broadcast_2_->data_at(h, w, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBias) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype bias = *this->blob_bottom_bias_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] + bias, 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestForwardBiasAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + shared_ptr > layer(new BiasLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype bias = *this->blob_bottom_bias_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] + bias, 1e-5); + } +} + +TYPED_TEST(BiasLayerTest, TestGradientEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(0); + bias_param->set_num_axes(-1); + bias_param->mutable_filler()->set_type("gaussian"); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(0); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(1); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + BiasParameter* bias_param = layer_param.mutable_bias_param(); + bias_param->set_axis(1); + bias_param->set_num_axes(2); + bias_param->mutable_filler()->set_type("gaussian"); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBias) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(BiasLayerTest, TestGradientBiasAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_bias_); + LayerParameter layer_param; + layer_param.mutable_bias_param()->set_axis(2); + BiasLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe diff --git a/src/caffe/test/test_channelwise_affine_layer.cpp b/src/caffe/test/test_channelwise_affine_layer.cpp deleted file mode 100644 index a3e2544f7..000000000 --- a/src/caffe/test/test_channelwise_affine_layer.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include - -#include "gtest/gtest.h" - -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/filler.hpp" -#include "caffe/layers/channelwise_affine_layer.hpp" - -#include "caffe/test/test_caffe_main.hpp" -#include "caffe/test/test_gradient_check_util.hpp" - -namespace caffe { - -template -class ChannelwiseAffineLayerTest : public MultiDeviceTest { - typedef typename TypeParam::Dtype Dtype; - - protected: - ChannelwiseAffineLayerTest() - : blob_bottom_(new Blob(2, 3, 4, 5)), - blob_top_(new Blob()) { - Caffe::set_random_seed(1701); - // fill the values - FillerParameter filler_param; - GaussianFiller filler(filler_param); - filler.Fill(this->blob_bottom_); - blob_bottom_vec_.push_back(blob_bottom_); - blob_top_vec_.push_back(blob_top_); - } - virtual ~ChannelwiseAffineLayerTest() { - delete blob_bottom_; delete blob_top_; } - Blob* const blob_bottom_; - Blob* const blob_top_; - vector*> blob_bottom_vec_; - vector*> blob_top_vec_; - - void TestChannelwiseAffine(ChannelwiseAffineLayer *layer) { - layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); - // Now, check values - const Dtype* bottom_data = this->blob_bottom_->cpu_data(); - const Dtype* top_data = this->blob_top_->cpu_data(); - const Dtype* slope_data = layer->blobs()[0]->cpu_data(); - const Dtype* bias_data = layer->blobs()[1]->cpu_data(); - const Dtype kDelta = 2e-5; - int hw = this->blob_bottom_->height() * this->blob_bottom_->width(); - int channels = this->blob_bottom_->channels(); - bool channel_shared = - layer->layer_param().channelwise_affine_param().channel_shared(); - for (int i = 0; i < this->blob_bottom_->count(); ++i) { - int c = channel_shared ? 0 : (i / hw) % channels; - EXPECT_NEAR(top_data[i], - bottom_data[i]* slope_data[c] + bias_data[c], kDelta); - } - } -}; -TYPED_TEST_CASE(ChannelwiseAffineLayerTest, TestDtypesAndDevices); - - -TYPED_TEST(ChannelwiseAffineLayerTest, TestChannelwiseAffineForward) { - typedef typename TypeParam::Dtype Dtype; - LayerParameter layer_param; - ChannelwiseAffineLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); - FillerParameter filler_param; - GaussianFiller filler(filler_param); - filler.Fill(layer.blobs()[0].get()); - filler.Fill(layer.blobs()[1].get()); - this->TestChannelwiseAffine(&layer); -} - -TYPED_TEST(ChannelwiseAffineLayerTest, - TestChannelwiseAffineForwardChannelShared) { - typedef typename TypeParam::Dtype Dtype; - LayerParameter layer_param; - layer_param.mutable_channelwise_affine_param()->set_channel_shared(true); - ChannelwiseAffineLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); - this->TestChannelwiseAffine(&layer); -} - -TYPED_TEST(ChannelwiseAffineLayerTest, TestChannelwiseAffineGradient) { - typedef typename TypeParam::Dtype Dtype; - LayerParameter layer_param; - layer_param.mutable_channelwise_affine_param()->set_channel_shared(false); - ChannelwiseAffineLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); - GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, - this->blob_top_vec_); -} - -TYPED_TEST(ChannelwiseAffineLayerTest, - TestChannelwiseAffineGradientChannelShared) { - typedef typename TypeParam::Dtype Dtype; - LayerParameter layer_param; - layer_param.mutable_channelwise_affine_param()->set_channel_shared(true); - ChannelwiseAffineLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); - GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, - this->blob_top_vec_); -} - -} // namespace caffe diff --git a/src/caffe/test/test_scale_layer.cpp b/src/caffe/test/test_scale_layer.cpp new file mode 100644 index 000000000..ad116795f --- /dev/null +++ b/src/caffe/test/test_scale_layer.cpp @@ -0,0 +1,507 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/scale_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class ScaleLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + ScaleLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_bottom_eltwise_(new Blob(2, 3, 4, 5)), + blob_bottom_broadcast_0_(new Blob()), + blob_bottom_broadcast_1_(new Blob()), + blob_bottom_broadcast_2_(new Blob()), + blob_bottom_scale_(new Blob(vector())), + blob_top_(new Blob()) { + Caffe::set_random_seed(1701); + vector broadcast_shape(2); + broadcast_shape[0] = 2; broadcast_shape[1] = 3; + this->blob_bottom_broadcast_0_->Reshape(broadcast_shape); + broadcast_shape[0] = 3; broadcast_shape[1] = 4; + this->blob_bottom_broadcast_1_->Reshape(broadcast_shape); + broadcast_shape[0] = 4; broadcast_shape[1] = 5; + this->blob_bottom_broadcast_2_->Reshape(broadcast_shape); + FillerParameter filler_param; + filler_param.set_min(1); + filler_param.set_max(10); + UniformFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + filler.Fill(this->blob_bottom_eltwise_); + filler.Fill(this->blob_bottom_broadcast_0_); + filler.Fill(this->blob_bottom_broadcast_1_); + filler.Fill(this->blob_bottom_broadcast_2_); + filler.Fill(this->blob_bottom_scale_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~ScaleLayerTest() { + delete blob_bottom_; + delete blob_bottom_eltwise_; + delete blob_bottom_broadcast_0_; + delete blob_bottom_broadcast_1_; + delete blob_bottom_broadcast_2_; + delete blob_bottom_scale_; + delete blob_top_; + } + Blob* const blob_bottom_; + Blob* const blob_bottom_eltwise_; + Blob* const blob_bottom_broadcast_0_; + Blob* const blob_bottom_broadcast_1_; + Blob* const blob_bottom_broadcast_2_; + Blob* const blob_bottom_scale_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(ScaleLayerTest, TestDtypesAndDevices); + +TYPED_TEST(ScaleLayerTest, TestForwardEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_bottom_->cpu_data(); + const int count = this->blob_bottom_->count(); + const Dtype* in_data_a = orig_bottom.cpu_data(); + const Dtype* in_data_b = this->blob_bottom_eltwise_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestBackwardEltwiseInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_scale_diff; + orig_scale_diff.CopyFrom(*this->blob_bottom_eltwise_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_eltwise_->count(); ++i) { + EXPECT_NEAR(orig_scale_diff.cpu_diff()[i], + this->blob_bottom_eltwise_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(0); + scale_param->set_num_axes(-1); + scale_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data_a = this->blob_bottom_->cpu_data(); + const Dtype* in_data_b = layer->blobs()[0]->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data_a[i] * in_data_b[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + this->blob_bottom_broadcast_0_->data_at(n, c, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_bottom_->data_at(n, c, h, w), + orig_bottom.data_at(n, c, h, w) * + this->blob_bottom_broadcast_1_->data_at(c, h, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestBackwardBroadcastMiddleInPlace) { + typedef typename TypeParam::Dtype Dtype; + Blob orig_bottom(this->blob_bottom_->shape()); + orig_bottom.CopyFrom(*this->blob_bottom_); + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + shared_ptr > layer(new ScaleLayer(layer_param)); + Blob top_diff(this->blob_bottom_->shape()); + FillerParameter filler_param; + filler_param.set_type("gaussian"); + filler_param.set_std(1); + GaussianFiller filler(filler_param); + filler.Fill(&top_diff); + vector propagate_down(2, true); + // Run forward + backward without in-place computation; + // save resulting bottom diffs. + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_top_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const bool kReshape = true; + const bool kCopyDiff = true; + Blob orig_bottom_diff; + orig_bottom_diff.CopyFrom(*this->blob_bottom_, kCopyDiff, kReshape); + Blob orig_scale_diff; + orig_scale_diff.CopyFrom(*this->blob_bottom_broadcast_1_, + kCopyDiff, kReshape); + // Rerun forward + backward with in-place computation; + // check that resulting bottom diffs are the same. + this->blob_top_vec_[0] = this->blob_bottom_; // in-place computation + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(top_diff.count(), top_diff.cpu_data(), + this->blob_bottom_->mutable_cpu_diff()); + layer->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + for (int i = 0; i < this->blob_bottom_->count(); ++i) { + EXPECT_NEAR(orig_bottom_diff.cpu_diff()[i], + this->blob_bottom_->cpu_diff()[i], 1e-5); + } + for (int i = 0; i < this->blob_bottom_broadcast_1_->count(); ++i) { + EXPECT_NEAR(orig_scale_diff.cpu_diff()[i], + this->blob_bottom_broadcast_1_->cpu_diff()[i], 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(1); + scale_param->set_num_axes(2); + scale_param->mutable_filler()->set_type("gaussian"); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + layer->blobs()[0]->data_at(c, h, 0, 0), 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastMiddleWithParamAndBias) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(1); + scale_param->set_num_axes(2); + scale_param->mutable_filler()->set_type("gaussian"); + scale_param->set_bias_term(true); + scale_param->mutable_bias_filler()->set_type("gaussian"); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + layer->blobs()[0]->data_at(c, h, 0, 0) + + layer->blobs()[1]->data_at(c, h, 0, 0), 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_->width(); ++w) { + EXPECT_NEAR(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_->data_at(n, c, h, w) * + this->blob_bottom_broadcast_2_->data_at(h, w, 0, 0), + 1e-5); + } + } + } + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardScale) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype scale = *this->blob_bottom_scale_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] * scale, 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestForwardScaleAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + shared_ptr > layer(new ScaleLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + ASSERT_EQ(this->blob_bottom_->shape(), this->blob_top_->shape()); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const Dtype* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + const Dtype* in_data = this->blob_bottom_->cpu_data(); + const Dtype scale = *this->blob_bottom_scale_->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_NEAR(data[i], in_data[i] * scale, 1e-5); + } +} + +TYPED_TEST(ScaleLayerTest, TestGradientEltwise) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_eltwise_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientEltwise(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientEltwiseWithParam) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(0); + scale_param->set_num_axes(-1); + scale_param->mutable_filler()->set_type("gaussian"); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastBegin) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_0_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(0); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastMiddle) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(1); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastMiddleWithParam) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_1_); + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_axis(1); + scale_param->set_num_axes(2); + scale_param->mutable_filler()->set_type("gaussian"); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientBroadcastEnd) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_broadcast_2_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientScale) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientScaleAndBias) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + ScaleParameter* scale_param = layer_param.mutable_scale_param(); + scale_param->set_bias_term(true); + scale_param->mutable_bias_filler()->set_type("gaussian"); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(ScaleLayerTest, TestGradientScaleAxis2) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_scale_); + LayerParameter layer_param; + layer_param.mutable_scale_param()->set_axis(2); + ScaleLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +} // namespace caffe From e94065efd516668e5168ed82669063b69315595d Mon Sep 17 00:00:00 2001 From: Ronghang Hu Date: Sat, 23 Jan 2016 01:22:04 -0800 Subject: [PATCH 152/458] show Caffe's version from MatCaffe --- matlab/+caffe/private/caffe_.cpp | 8 ++++++++ matlab/+caffe/version.m | 7 +++++++ 2 files changed, 15 insertions(+) create mode 100644 matlab/+caffe/version.m diff --git a/matlab/+caffe/private/caffe_.cpp b/matlab/+caffe/private/caffe_.cpp index 1641e14b5..1b1b2bff8 100644 --- a/matlab/+caffe/private/caffe_.cpp +++ b/matlab/+caffe/private/caffe_.cpp @@ -504,6 +504,13 @@ static void write_mean(MEX_ARGS) { mxFree(mean_proto_file); } +// Usage: caffe_('version') +static void version(MEX_ARGS) { + mxCHECK(nrhs == 0, "Usage: caffe_('version')"); + // Return version string + plhs[0] = mxCreateString(AS_STRING(CAFFE_VERSION)); +} + /** ----------------------------------------------------------------- ** Available commands. **/ @@ -542,6 +549,7 @@ static handler_registry handlers[] = { { "reset", reset }, { "read_mean", read_mean }, { "write_mean", write_mean }, + { "version", version }, // The end. { "END", NULL }, }; diff --git a/matlab/+caffe/version.m b/matlab/+caffe/version.m new file mode 100644 index 000000000..61cae4f76 --- /dev/null +++ b/matlab/+caffe/version.m @@ -0,0 +1,7 @@ +function version_str = version() +% version() +% show Caffe's version. + +version_str = caffe_('version'); + +end From 407050e02790b3738cc42fbbf1b51c35ee7c3021 Mon Sep 17 00:00:00 2001 From: Hugo Serrat Date: Thu, 21 Jan 2016 14:34:01 +0100 Subject: [PATCH 153/458] Updated import to make it work with pydotplus --- python/caffe/draw.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index f8bf5722a..cfa3fc5b1 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -10,7 +10,16 @@ """ from caffe.proto import caffe_pb2 -import pydot + +""" +pydot is not supported under python 3 and pydot2 doesn't work properly. +pydotplus works nicely (pip install pydotplus) +""" +try: + # Try to load pydotplus + import pydotplus as pydot +except ImportError: + import pydot # Internal layer and blob styles. LAYER_STYLE_DEFAULT = {'shape': 'record', From ca402f6d15b8f36c2e53f7de7f9817a6b73ac04d Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Fri, 27 Nov 2015 21:57:51 +0900 Subject: [PATCH 154/458] Prevent in-place computation in ReshapeLayer and FlattenLayer --- src/caffe/layers/flatten_layer.cpp | 2 ++ src/caffe/layers/reshape_layer.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/caffe/layers/flatten_layer.cpp b/src/caffe/layers/flatten_layer.cpp index 651507e2e..d4ab39357 100644 --- a/src/caffe/layers/flatten_layer.cpp +++ b/src/caffe/layers/flatten_layer.cpp @@ -7,6 +7,8 @@ namespace caffe { template void FlattenLayer::Reshape(const vector*>& bottom, const vector*>& top) { + CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; const int start_axis = bottom[0]->CanonicalAxisIndex( this->layer_param_.flatten_param().axis()); const int end_axis = bottom[0]->CanonicalAxisIndex( diff --git a/src/caffe/layers/reshape_layer.cpp b/src/caffe/layers/reshape_layer.cpp index 82339f76d..45dd0902d 100644 --- a/src/caffe/layers/reshape_layer.cpp +++ b/src/caffe/layers/reshape_layer.cpp @@ -7,6 +7,8 @@ namespace caffe { template void ReshapeLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { + CHECK_NE(top[0], bottom[0]) << this->type() << " Layer does not " + "allow in-place computation."; inferred_axis_ = -1; copy_axes_.clear(); const BlobShape& top_blob_shape = this->layer_param_.reshape_param().shape(); From 9a43dcf0c738fa799256318162d29a3969446efb Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 26 Jan 2016 13:58:58 -0800 Subject: [PATCH 155/458] Remove unnecessary CAFFE_TEST_CUDA_PROP declarations --- src/caffe/test/test_embed_layer.cpp | 4 ---- src/caffe/test/test_im2col_kernel.cu | 2 -- 2 files changed, 6 deletions(-) diff --git a/src/caffe/test/test_embed_layer.cpp b/src/caffe/test/test_embed_layer.cpp index acd4b0f63..dc7f5c4aa 100644 --- a/src/caffe/test/test_embed_layer.cpp +++ b/src/caffe/test/test_embed_layer.cpp @@ -12,10 +12,6 @@ namespace caffe { -#ifndef CPU_ONLY -extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; -#endif - template class EmbedLayerTest : public MultiDeviceTest { typedef typename TypeParam::Dtype Dtype; diff --git a/src/caffe/test/test_im2col_kernel.cu b/src/caffe/test/test_im2col_kernel.cu index 5d8f01f17..e3a9791bc 100644 --- a/src/caffe/test/test_im2col_kernel.cu +++ b/src/caffe/test/test_im2col_kernel.cu @@ -28,8 +28,6 @@ __global__ void im2col_nd_gpu_kernel(const int n, const Dtype* data_im, const int* kernel_shape, const int* pad, const int* stride, const int* dilation, Dtype* data_col); -extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; - template class Im2colKernelTest : public GPUDeviceTest { protected: From 91c02f3b3bc48af1ab24a4687331492cf0171815 Mon Sep 17 00:00:00 2001 From: Madan Ram Date: Thu, 23 Jul 2015 16:42:15 +0530 Subject: [PATCH 156/458] Update mnist readme.md: scale moved to transform_param --- examples/mnist/readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/mnist/readme.md b/examples/mnist/readme.md index 413d4a1f4..b87a0f53c 100644 --- a/examples/mnist/readme.md +++ b/examples/mnist/readme.md @@ -41,11 +41,13 @@ Currently, we will read the MNIST data from the lmdb we created earlier in the d layer { name: "mnist" type: "Data" + transform_param { + scale: 0.00390625 + } data_param { source: "mnist_train_lmdb" backend: LMDB batch_size: 64 - scale: 0.00390625 } top: "data" top: "label" From ae31adcdca0bc12e33e691ee7cd9c4ad75c229bb Mon Sep 17 00:00:00 2001 From: Keir Mierle Date: Fri, 26 Jun 2015 00:10:21 -0700 Subject: [PATCH 157/458] Make the two separate build systems clearer in the documentation --- docs/installation.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index cce7ec358..ef781e8d6 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -87,15 +87,20 @@ There is an unofficial Windows port of Caffe at [niuzhiheng/caffe:windows](https ## Compilation -Now that you have the prerequisites, edit your `Makefile.config` to change the paths for your setup The defaults should work, but uncomment the relevant lines if using Anaconda Python. +Caffe can be compiled with either Make or CMake. Make is officially supported while CMake is supported by the community. + +### Compilation with Make + +Configure the build by copying and modifying the example `Makefile.config` for your setup. The defaults should work, but uncomment the relevant lines if using Anaconda Python. cp Makefile.config.example Makefile.config - # Adjust Makefile.config (for example, if using Anaconda Python) + # Adjust Makefile.config (for example, if using Anaconda Python, or if cuDNN is desired) make all make test make runtest -- For cuDNN acceleration, you should uncomment the `USE_CUDNN := 1` switch in `Makefile.config`. +- For CPU & GPU accelerated Caffe, no changes are needed. +- For cuDNN acceleration using NVIDIA's proprietary cuDNN software, uncomment the `USE_CUDNN := 1` switch in `Makefile.config`. cuDNN is sometimes but not always faster than Caffe's GPU acceleration. - For CPU-only Caffe, uncomment `CPU_ONLY := 1` in `Makefile.config`. To compile the Python and MATLAB wrappers do `make pycaffe` and `make matcaffe` respectively. @@ -107,7 +112,7 @@ Be sure to set your MATLAB and Python paths in `Makefile.config` first! Now that you have installed Caffe, check out the [MNIST tutorial](gathered/examples/mnist.html) and the [reference ImageNet model tutorial](gathered/examples/imagenet.html). -### CMake Compilation +### Compilation with CMake In lieu of manually editing `Makefile.config` to configure the build, Caffe offers an unofficial CMake build thanks to @Nerei, @akosiorek, and other members of the community. It requires CMake version >= 2.8.7. The basic steps are as follows: @@ -116,6 +121,7 @@ The basic steps are as follows: cd build cmake .. make all + make install make runtest See [PR #1667](https://github.com/BVLC/caffe/pull/1667) for options and details. From afcaf253daa942821250db3f9a6afbe1d955bdf1 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 26 Jan 2016 23:09:27 -0800 Subject: [PATCH 158/458] Remove incorrect cast of gemm int arg to Dtype in BiasLayer --- src/caffe/layers/bias_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/bias_layer.cpp b/src/caffe/layers/bias_layer.cpp index 0a786b5db..4726a7298 100644 --- a/src/caffe/layers/bias_layer.cpp +++ b/src/caffe/layers/bias_layer.cpp @@ -80,7 +80,7 @@ void BiasLayer::Forward_cpu(const vector*>& bottom, } for (int n = 0; n < outer_dim_; ++n) { caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, bias_dim_, - inner_dim_, Dtype(1), Dtype(1), bias_data, + inner_dim_, 1, Dtype(1), bias_data, bias_multiplier_.cpu_data(), Dtype(1), top_data); top_data += dim_; } From 14d0bb4767cba22b826eae03a6e5cfa4c1cd4287 Mon Sep 17 00:00:00 2001 From: gdh1995 Date: Wed, 13 Jan 2016 18:20:41 +0800 Subject: [PATCH 159/458] use relative paths on making build/tools/ links The old uses `abspath`, which I think is so harmful: * If I `cp -a` the whole project, `build/tools/caffe` still refer to the old file, until `make clean`, making debugging very hard * For `tar` and `scp`, the soft links can not work unless the target project folder has the same path --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 787b0e8d0..76d51ad8b 100644 --- a/Makefile +++ b/Makefile @@ -601,7 +601,7 @@ $(TEST_CXX_BINS): $(TEST_BIN_DIR)/%.testbin: $(TEST_CXX_BUILD_DIR)/%.o \ # Target for extension-less symlinks to tool binaries with extension '*.bin'. $(TOOL_BUILD_DIR)/%: $(TOOL_BUILD_DIR)/%.bin | $(TOOL_BUILD_DIR) @ $(RM) $@ - @ ln -s $(abspath $<) $@ + @ ln -s $(notdir $<) $@ $(TOOL_BINS): %.bin : %.o | $(DYNAMIC_NAME) @ echo CXX/LD -o $@ From dd2099786f11033ded6e9f46bc772ef9b2166399 Mon Sep 17 00:00:00 2001 From: Sergei Nikolaev Date: Tue, 2 Feb 2016 13:48:18 -0800 Subject: [PATCH 160/458] Nicely prints GPU names --- src/caffe/test/test_caffe_main.cpp | 1 + tools/caffe.cpp | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/caffe/test/test_caffe_main.cpp b/src/caffe/test/test_caffe_main.cpp index c8caf5ac5..fccf6f161 100644 --- a/src/caffe/test/test_caffe_main.cpp +++ b/src/caffe/test/test_caffe_main.cpp @@ -34,6 +34,7 @@ int main(int argc, char** argv) { cudaGetDevice(&device); cout << "Current device id: " << device << endl; cudaGetDeviceProperties(&CAFFE_TEST_CUDA_PROP, device); + cout << "Current device name: " << CAFFE_TEST_CUDA_PROP.name << endl; #endif // invoke the test. return RUN_ALL_TESTS(); diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 470165add..ebe95d61e 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -183,7 +183,13 @@ int train() { s << (i ? ", " : "") << gpus[i]; } LOG(INFO) << "Using GPUs " << s.str(); - +#ifndef CPU_ONLY + cudaDeviceProp device_prop; + for (int i = 0; i < gpus.size(); ++i) { + cudaGetDeviceProperties(&device_prop, gpus[i]); + LOG(INFO) << "GPU " << gpus[i] << ": " << device_prop.name; + } +#endif solver_param.set_device_id(gpus[0]); Caffe::SetDevice(gpus[0]); Caffe::set_mode(Caffe::GPU); @@ -229,6 +235,11 @@ int test() { get_gpus(&gpus); if (gpus.size() != 0) { LOG(INFO) << "Use GPU with device ID " << gpus[0]; +#ifndef CPU_ONLY + cudaDeviceProp device_prop; + cudaGetDeviceProperties(&device_prop, gpus[0]); + LOG(INFO) << "GPU device name: " << device_prop.name; +#endif Caffe::SetDevice(gpus[0]); Caffe::set_mode(Caffe::GPU); } else { From 68c751c6f7a521994ccdc9330b89aef9c9024a0a Mon Sep 17 00:00:00 2001 From: Abhijit Kundu Date: Tue, 9 Feb 2016 02:45:46 -0500 Subject: [PATCH 161/458] bugfix for incorrect behaviour in caffe_parse_linker_libs function while extracting libflags from absolute library path with multiple (dots) --- cmake/Utils.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index a1bde1ae9..653de5fdf 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -346,10 +346,11 @@ function(caffe_parse_linker_libs Caffe_LINKER_LIBS_variable folders_var flags_va elseif(lib MATCHES "^-l.*") list(APPEND libflags ${lib}) elseif(IS_ABSOLUTE ${lib}) - get_filename_component(name_we ${lib} NAME_WE) get_filename_component(folder ${lib} PATH) + get_filename_component(filename ${lib} NAME) + string(REGEX REPLACE "\\.[^.]*$" "" filename_without_shortest_ext ${filename}) - string(REGEX MATCH "^lib(.*)" __match ${name_we}) + string(REGEX MATCH "^lib(.*)" __match ${filename_without_shortest_ext}) list(APPEND libflags -l${CMAKE_MATCH_1}) list(APPEND folders ${folder}) else() From 8800e4b42d621a843d99a431186bdfbc9271a3eb Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Mon, 15 Feb 2016 16:52:32 -0800 Subject: [PATCH 162/458] Remove useless LevelDB include The tests could not compile with USE_LEVELDB=0 and LevelDB missing from the system --- src/caffe/test/test_data_transformer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/caffe/test/test_data_transformer.cpp b/src/caffe/test/test_data_transformer.cpp index 6103918fd..31bf1c1fb 100644 --- a/src/caffe/test/test_data_transformer.cpp +++ b/src/caffe/test/test_data_transformer.cpp @@ -3,7 +3,6 @@ #include #include "gtest/gtest.h" -#include "leveldb/db.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" From d957481d072a434dfd116ac2255180e09c86fac5 Mon Sep 17 00:00:00 2001 From: Prayag Verma Date: Thu, 18 Feb 2016 10:13:34 +0530 Subject: [PATCH 163/458] Fix a typo in docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `peformance` → `performance` --- docs/multigpu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/multigpu.md b/docs/multigpu.md index 01cfb8938..d91acef98 100644 --- a/docs/multigpu.md +++ b/docs/multigpu.md @@ -17,7 +17,7 @@ updated model, 0\-\>2, and then 0\-\>1, 2\-\>3. For best performance, P2P DMA access between devices is needed. Without P2P access, for example crossing PCIe root complex, data is copied through host and effective exchange bandwidth is greatly reduced. -Current implementation has a "soft" assumption that the devices being used are homogeneous. In practice, any devices of the same general class should work together, but performance and total size is limited by the smallest device being used. e.g. if you combine a TitanX and a GTX980, peformance will be limited by the 980. Mixing vastly different levels of boards, e.g. Kepler and Fermi, is not supported. +Current implementation has a "soft" assumption that the devices being used are homogeneous. In practice, any devices of the same general class should work together, but performance and total size is limited by the smallest device being used. e.g. if you combine a TitanX and a GTX980, performance will be limited by the 980. Mixing vastly different levels of boards, e.g. Kepler and Fermi, is not supported. "nvidia-smi topo -m" will show you the connectivity matrix. You can do P2P through PCIe bridges, but not across socket level links at this time, e.g. across CPU sockets on a multi-socket motherboard. From 8f847fa8fae0460c6bf8e8d7a9bcf96a44305033 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Fri, 29 Jan 2016 19:21:48 +0100 Subject: [PATCH 164/458] tranpose parameter added to IP layer to support tied weights in an autoencoder. Arguments to matrix multiplication function are conditioned on this parameter, no actual transposing takes place. test ip gradient computation with transpose on --- include/caffe/layers/inner_product_layer.hpp | 1 + src/caffe/layers/inner_product_layer.cpp | 42 +++- src/caffe/layers/inner_product_layer.cu | 31 ++- src/caffe/proto/caffe.proto | 5 + src/caffe/test/test_inner_product_layer.cpp | 240 +++++++++++++++++++ 5 files changed, 304 insertions(+), 15 deletions(-) diff --git a/include/caffe/layers/inner_product_layer.hpp b/include/caffe/layers/inner_product_layer.hpp index 250576a48..18d0d6192 100644 --- a/include/caffe/layers/inner_product_layer.hpp +++ b/include/caffe/layers/inner_product_layer.hpp @@ -44,6 +44,7 @@ class InnerProductLayer : public Layer { int N_; bool bias_term_; Blob bias_multiplier_; + bool transpose_; ///< if true, assume transposed weights }; } // namespace caffe diff --git a/src/caffe/layers/inner_product_layer.cpp b/src/caffe/layers/inner_product_layer.cpp index d90888055..e65349f00 100644 --- a/src/caffe/layers/inner_product_layer.cpp +++ b/src/caffe/layers/inner_product_layer.cpp @@ -11,6 +11,7 @@ void InnerProductLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { const int num_output = this->layer_param_.inner_product_param().num_output(); bias_term_ = this->layer_param_.inner_product_param().bias_term(); + transpose_ = this->layer_param_.inner_product_param().transpose(); N_ = num_output; const int axis = bottom[0]->CanonicalAxisIndex( this->layer_param_.inner_product_param().axis()); @@ -27,10 +28,15 @@ void InnerProductLayer::LayerSetUp(const vector*>& bottom, } else { this->blobs_.resize(1); } - // Intialize the weight + // Initialize the weights vector weight_shape(2); - weight_shape[0] = N_; - weight_shape[1] = K_; + if (transpose_) { + weight_shape[0] = K_; + weight_shape[1] = N_; + } else { + weight_shape[0] = N_; + weight_shape[1] = K_; + } this->blobs_[0].reset(new Blob(weight_shape)); // fill the weights shared_ptr > weight_filler(GetFiller( @@ -80,7 +86,8 @@ void InnerProductLayer::Forward_cpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = top[0]->mutable_cpu_data(); const Dtype* weight = this->blobs_[0]->cpu_data(); - caffe_cpu_gemm(CblasNoTrans, CblasTrans, M_, N_, K_, (Dtype)1., + caffe_cpu_gemm(CblasNoTrans, transpose_ ? CblasNoTrans : CblasTrans, + M_, N_, K_, (Dtype)1., bottom_data, weight, (Dtype)0., top_data); if (bias_term_) { caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., @@ -97,8 +104,17 @@ void InnerProductLayer::Backward_cpu(const vector*>& top, const Dtype* top_diff = top[0]->cpu_diff(); const Dtype* bottom_data = bottom[0]->cpu_data(); // Gradient with respect to weight - caffe_cpu_gemm(CblasTrans, CblasNoTrans, N_, K_, M_, (Dtype)1., - top_diff, bottom_data, (Dtype)1., this->blobs_[0]->mutable_cpu_diff()); + if (transpose_) { + caffe_cpu_gemm(CblasTrans, CblasNoTrans, + K_, N_, M_, + (Dtype)1., bottom_data, top_diff, + (Dtype)1., this->blobs_[0]->mutable_cpu_diff()); + } else { + caffe_cpu_gemm(CblasTrans, CblasNoTrans, + N_, K_, M_, + (Dtype)1., top_diff, bottom_data, + (Dtype)1., this->blobs_[0]->mutable_cpu_diff()); + } } if (bias_term_ && this->param_propagate_down_[1]) { const Dtype* top_diff = top[0]->cpu_diff(); @@ -110,9 +126,17 @@ void InnerProductLayer::Backward_cpu(const vector*>& top, if (propagate_down[0]) { const Dtype* top_diff = top[0]->cpu_diff(); // Gradient with respect to bottom data - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, M_, K_, N_, (Dtype)1., - top_diff, this->blobs_[0]->cpu_data(), (Dtype)0., - bottom[0]->mutable_cpu_diff()); + if (transpose_) { + caffe_cpu_gemm(CblasNoTrans, CblasTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->cpu_data(), + (Dtype)0., bottom[0]->mutable_cpu_diff()); + } else { + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->cpu_data(), + (Dtype)0., bottom[0]->mutable_cpu_diff()); + } } } diff --git a/src/caffe/layers/inner_product_layer.cu b/src/caffe/layers/inner_product_layer.cu index dc25aa33b..a58b56e32 100644 --- a/src/caffe/layers/inner_product_layer.cu +++ b/src/caffe/layers/inner_product_layer.cu @@ -19,7 +19,9 @@ void InnerProductLayer::Forward_gpu(const vector*>& bottom, caffe_gpu_axpy(N_, bias_multiplier_.cpu_data()[0], this->blobs_[1]->gpu_data(), top_data); } else { - caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, N_, K_, (Dtype)1., + caffe_gpu_gemm(CblasNoTrans, + transpose_ ? CblasNoTrans : CblasTrans, + M_, N_, K_, (Dtype)1., bottom_data, weight, (Dtype)0., top_data); if (bias_term_) caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., @@ -36,8 +38,17 @@ void InnerProductLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); const Dtype* bottom_data = bottom[0]->gpu_data(); // Gradient with respect to weight - caffe_gpu_gemm(CblasTrans, CblasNoTrans, N_, K_, M_, (Dtype)1., - top_diff, bottom_data, (Dtype)1., this->blobs_[0]->mutable_gpu_diff()); + if (transpose_) { + caffe_gpu_gemm(CblasTrans, CblasNoTrans, + K_, N_, M_, + (Dtype)1., bottom_data, top_diff, + (Dtype)1., this->blobs_[0]->mutable_gpu_diff()); + } else { + caffe_gpu_gemm(CblasTrans, CblasNoTrans, + N_, K_, M_, + (Dtype)1., top_diff, bottom_data, + (Dtype)1., this->blobs_[0]->mutable_gpu_diff()); + } } if (bias_term_ && this->param_propagate_down_[1]) { const Dtype* top_diff = top[0]->gpu_diff(); @@ -49,9 +60,17 @@ void InnerProductLayer::Backward_gpu(const vector*>& top, if (propagate_down[0]) { const Dtype* top_diff = top[0]->gpu_diff(); // Gradient with respect to bottom data - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, K_, N_, (Dtype)1., - top_diff, this->blobs_[0]->gpu_data(), (Dtype)0., - bottom[0]->mutable_gpu_diff()); + if (transpose_) { + caffe_gpu_gemm(CblasNoTrans, CblasTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->gpu_data(), + (Dtype)0., bottom[0]->mutable_gpu_diff()); + } else { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, + M_, K_, N_, + (Dtype)1., top_diff, this->blobs_[0]->gpu_data(), + (Dtype)0., bottom[0]->mutable_gpu_diff()); + } } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 6493a72d7..7edb6ae87 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -786,6 +786,11 @@ message InnerProductParameter { // all preceding axes are retained in the output. // May be negative to index from the end (e.g., -1 for the last axis). optional int32 axis = 5 [default = 1]; + // Specify whether to transpose the weight matrix or not. + // If transpose == true, any operations will be performed on the transpose + // of the weight matrix. The weight matrix itself is not going to be transposed + // but rather the transfer flag of operations will be toggled accordingly. + optional bool transpose = 6 [default = false]; } // Message that stores parameters used by LogLayer diff --git a/src/caffe/test/test_inner_product_layer.cpp b/src/caffe/test/test_inner_product_layer.cpp index b888b5103..f1ec2333f 100644 --- a/src/caffe/test/test_inner_product_layer.cpp +++ b/src/caffe/test/test_inner_product_layer.cpp @@ -60,6 +60,50 @@ TYPED_TEST(InnerProductLayerTest, TestSetUp) { EXPECT_EQ(this->blob_top_->channels(), 10); } +/** @brief TestSetUp while toggling tranpose flag + */ +TYPED_TEST(InnerProductLayerTest, TestSetUpTranposeFalse) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->set_transpose(false); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(2, this->blob_top_->num()); + EXPECT_EQ(1, this->blob_top_->height()); + EXPECT_EQ(1, this->blob_top_->width()); + EXPECT_EQ(10, this->blob_top_->channels()); + EXPECT_EQ(2, layer->blobs()[0]->num_axes()); + EXPECT_EQ(10, layer->blobs()[0]->shape(0)); + EXPECT_EQ(60, layer->blobs()[0]->shape(1)); +} + +/** @brief TestSetUp while toggling tranpose flag + */ +TYPED_TEST(InnerProductLayerTest, TestSetUpTranposeTrue) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->set_transpose(true); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(2, this->blob_top_->num()); + EXPECT_EQ(1, this->blob_top_->height()); + EXPECT_EQ(1, this->blob_top_->width()); + EXPECT_EQ(10, this->blob_top_->channels()); + EXPECT_EQ(2, layer->blobs()[0]->num_axes()); + EXPECT_EQ(60, layer->blobs()[0]->shape(0)); + EXPECT_EQ(10, layer->blobs()[0]->shape(1)); +} + TYPED_TEST(InnerProductLayerTest, TestForward) { typedef typename TypeParam::Dtype Dtype; this->blob_bottom_vec_.push_back(this->blob_bottom_); @@ -91,6 +135,79 @@ TYPED_TEST(InnerProductLayerTest, TestForward) { } } +/** + * @brief Init. an IP layer without transpose + random weights, + * run Forward, save the result. + * Init. another IP layer with transpose. + * manually copy and transpose the weights from the first IP layer, + * then run Forward on the same input and check that the result is the same + */ +TYPED_TEST(InnerProductLayerTest, TestForwardTranspose) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + inner_product_param->set_transpose(false); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + const int count = this->blob_top_->count(); + Blob* const top = new Blob(); + top->ReshapeLike(*this->blob_top_); + caffe_copy(count, this->blob_top_->cpu_data(), top->mutable_cpu_data()); + this->blob_top_vec_.clear(); + this->blob_top_vec_.push_back(new Blob()); + inner_product_param->set_transpose(true); + shared_ptr > ip_t( + new InnerProductLayer(layer_param)); + ip_t->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const int count_w = layer->blobs()[0]->count(); + EXPECT_EQ(count_w, ip_t->blobs()[0]->count()); + // manually copy and transpose the weights from 1st IP layer into 2nd + const Dtype* w = layer->blobs()[0]->cpu_data(); + Dtype* w_t = ip_t->blobs()[0]->mutable_cpu_data(); + const int width = layer->blobs()[0]->shape(1); + const int width_t = ip_t->blobs()[0]->shape(1); + for (int i = 0; i < count_w; ++i) { + int r = i / width; + int c = i % width; + w_t[c*width_t+r] = w[r*width+c]; // copy while transposing + } + // copy bias from 1st IP layer to 2nd IP layer + ASSERT_EQ(layer->blobs()[1]->count(), ip_t->blobs()[1]->count()); + caffe_copy(layer->blobs()[1]->count(), layer->blobs()[1]->cpu_data(), + ip_t->blobs()[1]->mutable_cpu_data()); + ip_t->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(count, this->blob_top_->count()) + << "Invalid count for top blob for IP with transpose."; + Blob* const top_t = new Blob();\ + top_t->ReshapeLike(*this->blob_top_vec_[0]); + caffe_copy(count, + this->blob_top_vec_[0]->cpu_data(), + top_t->mutable_cpu_data()); + const Dtype* data = top->cpu_data(); + const Dtype* data_t = top_t->cpu_data(); + for (int i = 0; i < count; ++i) { + EXPECT_FLOAT_EQ(data[i], data_t[i]); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + TYPED_TEST(InnerProductLayerTest, TestForwardNoBatch) { typedef typename TypeParam::Dtype Dtype; this->blob_bottom_vec_.push_back(this->blob_bottom_nobatch_); @@ -148,4 +265,127 @@ TYPED_TEST(InnerProductLayerTest, TestGradient) { } } +TYPED_TEST(InnerProductLayerTest, TestGradientTranspose) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(11); + inner_product_param->mutable_weight_filler()->set_type("gaussian"); + inner_product_param->mutable_bias_filler()->set_type("gaussian"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + inner_product_param->set_transpose(true); + InnerProductLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + +TYPED_TEST(InnerProductLayerTest, TestBackwardTranspose) { + typedef typename TypeParam::Dtype Dtype; + this->blob_bottom_vec_.push_back(this->blob_bottom_); + bool IS_VALID_CUDA = false; +#ifndef CPU_ONLY + IS_VALID_CUDA = CAFFE_TEST_CUDA_PROP.major >= 2; +#endif + if (Caffe::mode() == Caffe::CPU || + sizeof(Dtype) == 4 || IS_VALID_CUDA) { + LayerParameter layer_param; + InnerProductParameter* inner_product_param = + layer_param.mutable_inner_product_param(); + inner_product_param->set_num_output(10); + inner_product_param->mutable_weight_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_type("uniform"); + inner_product_param->mutable_bias_filler()->set_min(1); + inner_product_param->mutable_bias_filler()->set_max(2); + inner_product_param->set_transpose(false); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // copy top blob + Blob* const top = new Blob(); + top->CopyFrom(*this->blob_top_, false, true); + // fake top diff + Blob* const diff = new Blob(); + diff->ReshapeLike(*this->blob_top_); + { + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(diff); + } + caffe_copy(this->blob_top_vec_[0]->count(), + diff->cpu_data(), + this->blob_top_vec_[0]->mutable_cpu_diff()); + vector propagate_down(1, true); + layer->Backward(this->blob_top_vec_, + propagate_down, + this->blob_bottom_vec_); + // copy first ip's weights and their diffs + Blob* const w = new Blob(); + w->CopyFrom(*layer->blobs()[0], false, true); + w->CopyFrom(*layer->blobs()[0], true, true); + // copy bottom diffs + Blob* const bottom_diff = new Blob(); + bottom_diff->CopyFrom(*this->blob_bottom_vec_[0], true, true); + // repeat original top with tranposed ip + this->blob_top_vec_.clear(); + this->blob_top_vec_.push_back(new Blob()); + inner_product_param->set_transpose(true); + shared_ptr > ip_t( + new InnerProductLayer(layer_param)); + ip_t->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + // manually copy and transpose the weights from 1st IP layer into 2nd + { + const Dtype* w_src = w->cpu_data(); + Dtype* w_t = ip_t->blobs()[0]->mutable_cpu_data(); + const int width = layer->blobs()[0]->shape(1); + const int width_t = ip_t->blobs()[0]->shape(1); + for (int i = 0; i < layer->blobs()[0]->count(); ++i) { + int r = i / width; + int c = i % width; + w_t[c*width_t+r] = w_src[r*width+c]; // copy while transposing + } + // copy bias from 1st IP layer to 2nd IP layer + ASSERT_EQ(layer->blobs()[1]->count(), ip_t->blobs()[1]->count()); + caffe_copy(layer->blobs()[1]->count(), layer->blobs()[1]->cpu_data(), + ip_t->blobs()[1]->mutable_cpu_data()); + } + ip_t->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + caffe_copy(this->blob_top_vec_[0]->count(), + diff->cpu_data(), + this->blob_top_vec_[0]->mutable_cpu_diff()); + ip_t->Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const Dtype* data = w->cpu_diff(); + const Dtype* data_t = ip_t->blobs()[0]->cpu_diff(); + const int WIDTH = layer->blobs()[0]->shape(1); + const int WIDTH_T = ip_t->blobs()[0]->shape(1); + for (int i = 0; i < layer->blobs()[0]->count(); ++i) { + int r = i / WIDTH; + int c = i % WIDTH; + EXPECT_NE(Dtype(0.), data[r*WIDTH+c]); + EXPECT_FLOAT_EQ(data[r*WIDTH+c], data_t[c*WIDTH_T+r]); + } + data = bottom_diff->cpu_diff(); + data_t = this->blob_bottom_vec_[0]->cpu_diff(); + for (int i = 0; i < this->blob_bottom_vec_[0]->count(); ++i) { + EXPECT_NE(Dtype(0.), data[i]); + EXPECT_FLOAT_EQ(data[i], data_t[i]); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } +} + } // namespace caffe From b46133aff47d5ac9d2f0f1289c6d5a9c57b3c2c5 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 20 Feb 2016 15:45:31 -0800 Subject: [PATCH 165/458] fix library install name on OSX for relative path linking for linking of the caffe tools, tests, etc. the library install name needs to include the @rpath set for the executables and interfaces this was broken on OSX by #3311 --- Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 598d28d5b..38635038d 100644 --- a/Makefile +++ b/Makefile @@ -283,9 +283,8 @@ ifeq ($(OSX), 1) # boost::thread is called boost_thread-mt to mark multithreading on OS X LIBRARIES += boost_thread-mt # we need to explicitly ask for the rpath to be obeyed - DYNAMIC_FLAGS := -install_name @rpath/libcaffe.so ORIGIN := @loader_path - VERSIONFLAGS += -Wl,-install_name,$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib + VERSIONFLAGS += -Wl,-install_name,@rpath/$(DYNAMIC_VERSIONED_NAME_SHORT) -Wl,-rpath,$(ORIGIN)/../../build/lib else ORIGIN := \$$ORIGIN endif @@ -552,7 +551,7 @@ $(ALL_BUILD_DIRS): | $(BUILD_DIR_LINK) $(DYNAMIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) @ echo LD -o $@ - $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) $(DYNAMIC_FLAGS) + $(Q)$(CXX) -shared -o $@ $(OBJS) $(VERSIONFLAGS) $(LINKFLAGS) $(LDFLAGS) @ cd $(BUILD_DIR)/lib; rm -f $(DYNAMIC_NAME_SHORT); ln -s $(DYNAMIC_VERSIONED_NAME_SHORT) $(DYNAMIC_NAME_SHORT) $(STATIC_NAME): $(OBJS) | $(LIB_BUILD_DIR) From dac4d0962dffb11f9fb670e70126aebe31ddae5a Mon Sep 17 00:00:00 2001 From: Mohamed Ezz Date: Fri, 5 Feb 2016 01:54:31 +0100 Subject: [PATCH 166/458] Fix OSX El Capitan CUDA incompatibility, by adding lib to rpath --- Makefile | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Makefile b/Makefile index 598d28d5b..9b5ffb960 100644 --- a/Makefile +++ b/Makefile @@ -248,6 +248,8 @@ ifeq ($(UNAME), Linux) LINUX := 1 else ifeq ($(UNAME), Darwin) OSX := 1 + OSX_MAJOR_VERSION := $(shell sw_vers -productVersion | cut -f 1 -d .) + OSX_MINOR_VERSION := $(shell sw_vers -productVersion | cut -f 2 -d .) endif # Linux @@ -277,6 +279,14 @@ ifeq ($(OSX), 1) endif # clang throws this warning for cuda headers WARNINGS += -Wno-unneeded-internal-declaration + # 10.11 strips DYLD_* env vars so link CUDA (rpath is available on 10.5+) + OSX_10_OR_LATER := $(shell [ $(OSX_MAJOR_VERSION) -ge 10 ] && echo true) + OSX_10_5_OR_LATER := $(shell [ $(OSX_MINOR_VERSION) -ge 5 ] && echo true) + ifeq ($(OSX_10_OR_LATER),true) + ifeq ($(OSX_10_5_OR_LATER),true) + LDFLAGS += -Wl,-rpath,$(CUDA_LIB_DIR) + endif + endif endif # gtest needs to use its own tuple to not conflict with clang COMMON_FLAGS += -DGTEST_USE_OWN_TR1_TUPLE=1 From 29bb23fc92c5b71c0bf8af0b9e580015da9aedda Mon Sep 17 00:00:00 2001 From: shai Date: Tue, 23 Feb 2016 10:42:54 +0200 Subject: [PATCH 167/458] removing all references to Blob.num property (that assumes Blob is 4D). Replacing it with accessing Blob.shape[0] - for Blobs with num_axes() != 4 --- python/caffe/pycaffe.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 305411077..5020ecedb 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -98,7 +98,7 @@ def _Net_forward(self, blobs=None, start=None, end=None, **kwargs): # Set input according to defined shapes and make arrays single and # C-contiguous as Caffe expects. for in_, blob in kwargs.iteritems(): - if blob.shape[0] != self.blobs[in_].num: + if blob.shape[0] != self.blobs[in_].shape[0]: raise Exception('Input is not batch sized') self.blobs[in_].data[...] = blob @@ -146,7 +146,7 @@ def _Net_backward(self, diffs=None, start=None, end=None, **kwargs): # Set top diffs according to defined shapes and make arrays single and # C-contiguous as Caffe expects. for top, diff in kwargs.iteritems(): - if diff.shape[0] != self.blobs[top].num: + if diff.shape[0] != self.blobs[top].shape[0]: raise Exception('Diff is not batch sized') self.blobs[top].diff[...] = diff @@ -257,7 +257,7 @@ def _Net_batch(self, blobs): batch: {blob name: list of blobs} dict for a single batch. """ num = len(blobs.itervalues().next()) - batch_size = self.blobs.itervalues().next().num + batch_size = self.blobs.itervalues().next().shape[0] remainder = num % batch_size num_batches = num / batch_size From bd6b03f15ee7d299b9106759aa3f01f18d79ced8 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Tue, 23 Feb 2016 23:34:46 -0800 Subject: [PATCH 168/458] [example] improve classification notebook - add subheadings and list steps - edit text, add comments, and try to make the code more understandable - add new section for summary and encouragement to try your own image --- examples/00-classification.ipynb | 13031 +---------------------------- 1 file changed, 312 insertions(+), 12719 deletions(-) diff --git a/examples/00-classification.ipynb b/examples/00-classification.ipynb index 89b7dd34f..1950f08f6 100644 --- a/examples/00-classification.ipynb +++ b/examples/00-classification.ipynb @@ -4,54 +4,72 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Instant Recognition with Caffe\n", + "# Classification: Instant Recognition with Caffe\n", "\n", - "In this example we'll classify an image with the bundled CaffeNet model based on the network architecture of Krizhevsky et al. for ImageNet. We'll compare CPU and GPU operation then reach into the model to inspect features and the output.\n", + "In this example we'll classify an image with the bundled CaffeNet model (which is based on the network architecture of Krizhevsky et al. for ImageNet).\n", "\n", - "(These feature visualizations follow the DeCAF visualizations originally by Yangqing Jia.)" + "We'll compare CPU and GPU modes and then dig into the model to inspect features and the output." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "First, import required modules, set plotting parameters, and run `./scripts/download_model_binary.py models/bvlc_reference_caffenet` to get the pretrained CaffeNet model if it hasn't already been fetched." + "### 1. Setup\n", + "\n", + "* First, set up Python, `numpy`, and `matplotlib`." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ + "# set up Python environment: numpy for numerical routines, and matplotlib for plotting\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", + "# display plots in this notebook\n", "%matplotlib inline\n", "\n", - "# Make sure that caffe is on the python path:\n", - "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", + "# set display defaults\n", + "plt.rcParams['figure.figsize'] = (10, 10) # large images\n", + "plt.rcParams['image.interpolation'] = 'nearest' # don't interpolate: show square pixels\n", + "plt.rcParams['image.cmap'] = 'gray' # use grayscale output rather than a (potentially misleading) color heatmap" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Load `caffe`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# The caffe module needs to be on the Python path;\n", + "# we'll add it here explicitly.\n", "import sys\n", + "caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)\n", "sys.path.insert(0, caffe_root + 'python')\n", "\n", "import caffe\n", - "\n", - "plt.rcParams['figure.figsize'] = (10, 10)\n", - "plt.rcParams['image.interpolation'] = 'nearest'\n", - "plt.rcParams['image.cmap'] = 'gray'\n", - "\n", - "import os\n", - "if not os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", - " print(\"Downloading pre-trained CaffeNet model...\")\n", - " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet" + "# If you get \"No module named _caffe\", either you have not built pycaffe or you have the wrong path." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Set Caffe to CPU mode, load the net in the test phase for inference, and configure input preprocessing." + "* If needed, download the reference model (\"CaffeNet\", a variant of AlexNet)." ] }, { @@ -60,50 +78,65 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CaffeNet found.\n" + ] + } + ], "source": [ - "caffe.set_mode_cpu()\n", - "net = caffe.Net(caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt',\n", - " caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel',\n", - " caffe.TEST)\n", - "\n", - "# input preprocessing: 'data' is the name of the input blob == net.inputs[0]\n", - "transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})\n", - "transformer.set_transpose('data', (2,0,1))\n", - "transformer.set_mean('data', np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1)) # mean pixel\n", - "transformer.set_raw_scale('data', 255) # the reference model operates on images in [0,255] range instead of [0,1]\n", - "transformer.set_channel_swap('data', (2,1,0)) # the reference model has channels in BGR order instead of RGB" + "import os\n", + "if os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", + " print 'CaffeNet found.'\n", + "else:\n", + " print 'Downloading pre-trained CaffeNet model...'\n", + " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's start with a simple classification. We'll set a batch of 50 to demonstrate batch processing, even though we'll only be classifying one image. (Note that the batch size can also be changed on-the-fly.)" + "### 2. Load net and set up input preprocessing\n", + "\n", + "* Set Caffe to CPU mode and load the net from disk." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "# set net to batch size of 50\n", - "net.blobs['data'].reshape(50,3,227,227)" + "caffe.set_mode_cpu()\n", + "\n", + "model_def = caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'\n", + "model_weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'\n", + "\n", + "net = caffe.Net(model_def, # defines the structure of the model\n", + " model_weights, # contains the trained weights\n", + " caffe.TEST) # use test mode (e.g., don't perform dropout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Feed in the image (with some preprocessing) and classify with a forward pass." + "* Set up input preprocessing. (We'll use Caffe's `caffe.io.Transformer` to do this, but this step is independent of other parts of Caffe, so any custom preprocessing code may be used).\n", + "\n", + " Our default CaffeNet is configured to take images in BGR format. Values are expected to start in the range [0, 255] and then have the mean ImageNet pixel value subtracted from them. In addition, the channel dimension is expected as the first (_outermost_) dimension.\n", + " \n", + " As matplotlib will load images with values in the range [0, 1] in RGB format with the channel as the _innermost_ dimension, we are arranging for the needed transformations here." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -112,21 +145,54 @@ "name": "stdout", "output_type": "stream", "text": [ - "Predicted class is #281.\n" + "mean-subtracted values: [('B', 104.0069879317889), ('G', 116.66876761696767), ('R', 122.6789143406786)]\n" ] } ], "source": [ - "net.blobs['data'].data[...] = transformer.preprocess('data', caffe.io.load_image(caffe_root + 'examples/images/cat.jpg'))\n", - "out = net.forward()\n", - "print(\"Predicted class is #{}.\".format(out['prob'][0].argmax()))" + "# load the mean ImageNet image (as distributed with Caffe) for subtraction\n", + "mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy')\n", + "mu = mu.mean(1).mean(1) # average over pixels to obtain the mean (BGR) pixel values\n", + "print 'mean-subtracted values:', zip('BGR', mu)\n", + "\n", + "# create transformer for the input called 'data'\n", + "transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})\n", + "\n", + "transformer.set_transpose('data', (2,0,1)) # move image channels to outermost dimension\n", + "transformer.set_mean('data', mu) # subtract the dataset-mean value in each channel\n", + "transformer.set_raw_scale('data', 255) # rescale from [0, 1] to [0, 255]\n", + "transformer.set_channel_swap('data', (2,1,0)) # swap channels from RGB to BGR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. CPU classification\n", + "\n", + "* Now we're ready to perform classification. Even though we'll only classify one image, we'll set a batch size of 50 to demonstrate batching." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set the size of the input (we can skip this if we're happy\n", + "# with the default; we can also change it later, e.g., for different batch sizes)\n", + "net.blobs['data'].reshape(50, # batch size\n", + " 3, # 3-channel (BGR) images\n", + " 227, 227) # image size is 227x227" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "What did the input look like?" + "* Load an image (that comes with Caffe) and perform the preprocessing we've set up." ] }, { @@ -139,7 +205,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -148,2843 +214,9 @@ }, { "data": { - "image/png": [ - "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\n", - "IBAI7BP/B0EEnTIvM42+AAAAAElFTkSuQmCC\n" - ], + "image/png": "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\n3gAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2992,14 +224,16 @@ } ], "source": [ - "plt.imshow(transformer.deprocess('data', net.blobs['data'].data[0]))" + "image = caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')\n", + "transformed_image = transformer.preprocess('data', image)\n", + "plt.imshow(image)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Adorable, but was our classification correct?" + "* Adorable! Let's classify it!" ] }, { @@ -3013,31 +247,27 @@ "name": "stdout", "output_type": "stream", "text": [ - "['n02123045 tabby, tabby cat' 'n02123159 tiger cat'\n", - " 'n02124075 Egyptian cat' 'n02119022 red fox, Vulpes vulpes'\n", - " 'n02127052 lynx, catamount']\n" + "predicted class is: 281\n" ] } ], "source": [ - "# load labels\n", - "imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'\n", - "try:\n", - " labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\\t')\n", - "except:\n", - " !../data/ilsvrc12/get_ilsvrc_aux.sh\n", - " labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\\t')\n", + "# copy the image data into the memory allocated for the net\n", + "net.blobs['data'].data[...] = transformed_image\n", + "\n", + "### perform classification\n", + "output = net.forward()\n", + "\n", + "output_prob = output['prob'][0] # the output probability vector for the first image in the batch\n", "\n", - "# sort top k predictions from softmax output\n", - "top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1]\n", - "print labels[top_k]" + "print 'predicted class is:', output_prob.argmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Indeed! But how long did it take?" + "* The net gives us a vector of probabilities; the most probable class was the 281st one. But is that correct? Let's check the ImageNet labels..." ] }, { @@ -3051,26 +281,31 @@ "name": "stdout", "output_type": "stream", "text": [ - "1 loops, best of 3: 7.14 s per loop\n" + "output label: n02123045 tabby, tabby cat\n" ] } ], "source": [ - "# CPU mode\n", - "net.forward() # call once for allocation\n", - "%timeit net.forward()" + "# load ImageNet labels\n", + "labels_file = caffe_root + 'data/ilsvrc12/synset_words.txt'\n", + "if not os.path.exists(labels_file):\n", + " !../data/ilsvrc12/get_ilsvrc_aux.sh\n", + " \n", + "labels = np.loadtxt(labels_file, str, delimiter='\\t')\n", + "\n", + "print 'output label:', labels[output_prob.argmax()]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "That's a while, even for a batch size of 50 images. Let's switch to GPU mode." + "* \"Tabby cat\" is correct! But let's also look at other top (but less confident predictions)." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -3079,8706 +314,244 @@ "name": "stdout", "output_type": "stream", "text": [ - "10 loops, best of 3: 90.9 ms per loop\n" + "probabilities and labels:\n" ] - } - ], - "source": [ - "# GPU mode\n", - "caffe.set_device(0)\n", - "caffe.set_mode_gpu()\n", - "net.forward() # call once for allocation\n", - "%timeit net.forward()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Much better. Now let's look at the net in more detail.\n", - "\n", - "First, the layer features and their shapes (1 is the batch size, corresponding to the single input image in this example)." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[('data', (50, 3, 227, 227)),\n", - " ('conv1', (50, 96, 55, 55)),\n", - " ('pool1', (50, 96, 27, 27)),\n", - " ('norm1', (50, 96, 27, 27)),\n", - " ('conv2', (50, 256, 27, 27)),\n", - " ('pool2', (50, 256, 13, 13)),\n", - " ('norm2', (50, 256, 13, 13)),\n", - " ('conv3', (50, 384, 13, 13)),\n", - " ('conv4', (50, 384, 13, 13)),\n", - " ('conv5', (50, 256, 13, 13)),\n", - " ('pool5', (50, 256, 6, 6)),\n", - " ('fc6', (50, 4096)),\n", - " ('fc7', (50, 4096)),\n", - " ('fc8', (50, 1000)),\n", - " ('prob', (50, 1000))]" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[(k, v.data.shape) for k, v in net.blobs.items()]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The parameters and their shapes. The parameters are `net.params['name'][0]` while biases are `net.params['name'][1]`." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ + }, { "data": { "text/plain": [ - "[('conv1', (96, 3, 11, 11)),\n", - " ('conv2', (256, 48, 5, 5)),\n", - " ('conv3', (384, 256, 3, 3)),\n", - " ('conv4', (384, 192, 3, 3)),\n", - " ('conv5', (256, 192, 3, 3)),\n", - " ('fc6', (4096, 9216)),\n", - " ('fc7', (4096, 4096)),\n", - " ('fc8', (1000, 4096))]" + "[(0.31243637, 'n02123045 tabby, tabby cat'),\n", + " (0.2379719, 'n02123159 tiger cat'),\n", + " (0.12387239, 'n02124075 Egyptian cat'),\n", + " (0.10075711, 'n02119022 red fox, Vulpes vulpes'),\n", + " (0.070957087, 'n02127052 lynx, catamount')]" ] }, - "execution_count": 26, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "[(k, v[0].data.shape) for k, v in net.params.items()]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Helper functions for visualization" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# take an array of shape (n, height, width) or (n, height, width, channels)\n", - "# and visualize each (height, width) thing in a grid of size approx. sqrt(n) by sqrt(n)\n", - "def vis_square(data, padsize=1, padval=0):\n", - " data -= data.min()\n", - " data /= data.max()\n", - " \n", - " # force the number of filters to be square\n", - " n = int(np.ceil(np.sqrt(data.shape[0])))\n", - " padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)\n", - " data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))\n", - " \n", - " # tile the filters into an image\n", - " data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))\n", - " data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])\n", - " \n", - " plt.imshow(data)" + "# sort top five predictions from softmax output\n", + "top_inds = output_prob.argsort()[::-1][:5] # reverse sort and take five largest items\n", + "\n", + "print 'probabilities and labels:'\n", + "zip(output_prob[top_inds], labels[top_inds])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The input image" + "* We see that less confident predictions are sensible." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The first layer filters, `conv1`" + "### 4. Switching to GPU mode\n", + "\n", + "* Let's see how long classification took, and compare it to GPU mode." ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "1 loop, best of 3: 1.42 s per loop\n" + ] } ], "source": [ - "# the parameters are a list of [weights, biases]\n", - "filters = net.params['conv1'][0].data\n", - "vis_square(filters.transpose(0, 2, 3, 1))" + "%timeit net.forward()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The first layer output, `conv1` (rectified responses of the filters above, first 36 only)" + "* That's a while, even for a batch of 50 images. Let's switch to GPU mode." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "image/png": [ - "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\n", - "IiIiIvaI/w/CAMCOMj3yxQAAAABJRU5ErkJggg==\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 70.2 ms per loop\n" + ] } ], "source": [ - "feat = net.blobs['conv1'].data[0, :36]\n", - "vis_square(feat, padval=1)" + "caffe.set_device(0) # if we have multiple GPUs, pick the first one\n", + "caffe.set_mode_gpu()\n", + "net.forward() # run once before timing to set up memory\n", + "%timeit net.forward()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The second layer filters, `conv2`\n", - "\n", - "There are 256 filters, each of which has dimension 5 x 5 x 48. We show only the first 48 filters, with each channel shown separately, so that each filter is a row." - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAlIAAAJOCAYAAAB8y+mTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvWmsbldxv1nvOb7zgCc8GwMGMxkIMyKgRCgk/+RDuiMl\n", - "6UQBOg4eZQYj7GADRg42wthGcMEoHkCOlaB0R1GCWpGSNJmDiIAEOYAx4BHPxsb25frOZ+gPl2fv\n", - "9T57132dg92n8+/6fTnnPWe9a9eqVWvtVbVqmCwvL0ehUCgUCoVC4b+OudUmoFAoFAqFQuG/K+og\n", - "VSgUCoVCobBC1EGqUCgUCoVCYYWog1ShUCgUCoXCClEHqUKhUCgUCoUVog5ShUKhUCgUCivE03KQ\n", - "mkwm/2MymXx3MpncOplM3v90PKNQKBQKhUJhtTF5qvNITSaT+Yj4XkT8QkTcFxFfj4jfXl5evuUp\n", - "fVChUCgUCoXCKuPpsEi9NiJuW15evmt5eXl/RPwfEfG/PA3PKRQKhUKhUFhVPB0HqeMj4p7m870/\n", - "+VuhUCgUCoXC/1Q45Gnoc+Zd4WQyqbo0hUKhUCgU/ttgeXl5Mvb3p+MgdV9EnNh8PjEOWKWmcNxx\n", - "x8Wzn/3siIg44YQT4sQTT4w9e/ZERMTatWsjIuKTn/xkRESceeaZERGxtLQUERGLi4tx6KGHRkTE\n", - "3NwBo9onPvGJiIj4tV/7tYiIePzxxyMi4phjjjlAxIknTvVx1VVXRUTE2972tql29Pvoo49GRMTC\n", - "wkJERGzbti0iIt7+9rdHRMTOnTvjsMMOi4iIjRs3RkTE3r17IyLi2muvjYiIc845JyIidu/eHRER\n", - "8/PzERGxadOmiIhYs2bNFO3vec97IiLiiSeeiIiIQw45ZKrdli1bIiLiYx/7WEREvP/974/FxcUp\n", - "Ojdv3jz1TPqGFvqem5uLm266Kd785jd3PI2I+PSnPx0REe9973un+MX/4fdkMun4cu655079Db87\n", - "xstP5vP888+f4hf/53v8hJbzzjsvIiKe8YxnTH1vx44dEXFAXuj7wgsvnOrjxz/+8dQz4OmnPvWp\n", - "qXH62evWrZsaN3z84Ac/GBER+/fvn6Jl586d3Tz94R/+YUT084lcb9iwYeoZi4uL8dWvfjW+/vWv\n", - "R0TE+973vqlnAvjKuvj4xz8eEQfmPyJi37593TPWr18/9V348s53vnPq2fQJGC/jvOSSS6ZofvDB\n", - "B6fGsm/fvoiI+PznPx8RB+SLv/EdZGXnzp1TbZkjaGCOkDX4yPzDF8siaNfRb/3Wb0VExJFHHnnQ\n", - "vm+44YaIiHjDG94QP/uzP9vRwrpBTuDL5ZdfHhER7373uyMi4u677556DutucXExPvOZz0RExLve\n", - "9a6pPpAV+MJP5ujss8+e4h80w1fmlvYXXXTRVDv6n0wmg32RNcT+xjj52a7niH6/QM4B36f9lVde\n", - "OTXWI444oqPFvGTPZT9/+OGHI+KAbL3hDW+YWksR/Ryxjhj/rl27pvhH/4yV/WXz5s0d/ewV3ovY\n", - "u7Zv3959J6Jfa/D26quvjoiICy64YGr89J+tiw9/+MPd++GRRx6JiOGexH7x1re+NSIijj766Ijo\n", - "ZZW+eSa0wxf64znQTv9XXXVVt8/xDmG8zNHXvva1eMUrXtHxnPcizzSvvdedddZZU7T4nbW0tNS1\n", - "/e3f/u2IiHjWs54VERGHH354RPTvbN5lyBbtGRd9Amhjv/jd3/3diOjXETS364L9n/mHx7Sdm5uL\n", - "++67r1vnN910UxwMT8dB6t8j4vmTyeTZEXF/RPxvEfHbbnTCCSfEG9/4xogYboyFQqFQKBQKq4Xj\n", - "jz++Uwz+Xz9ILS8vL0wmk3dGxN9GxHxEfH4sYm/NmjXdaR9twSdwwKmYE/bCwkKnlXAKB3wXbYf/\n", - "8yxOnOCFL3xhREQcddRREdFrVN///vcjoj+5m5YdO3Z0fWJh4rTbjrGliZN2FikJrWg1jIFx0x+Y\n", - "m5sbWAHcB0DLQeN65JFHpqwS7ptnts9qfzL2iJ4nT/ZADG3wDU0DTdTzby0RLWoM0A19nn+DcaNZ\n", - "0o7PnlPkg++hgd15552DZ0AvYLytZaLlM+1/9KMfTbVDAzMtyNPi4mLXD234H2BubLHK+ILlgX6t\n", - "BXodrVmzpqMfntvC7HFCKzRlFiePibnhOS1fjj322Ig4sAlG9JY0tF3L9cLCQuzZs6ebG8bFs8wf\n", - "ZB2LNXKAjLb8pS+vd75jWmyx5lmeS/fD2NgvNm/e3NEDmD8s7+xrjGOW7PJ9yw+AZp47Pz+friHA\n", - "emcO6Htsn2sBX5h/LH6A72/cuLF7Ribn8Jxns4/y2XsRc8qzmVu/J8Bhhx3WteG7ln/A3oKVk2cg\n", - "wwb7oG8LPHdtXx4XP9esWdPNYUQ/j4899lhEDN/B5ift2z1prF1Eb4HinYRs8V7werFlljll3lu6\n", - "I/o5NE1zc3MD2WJc8IW+bImdhafDIhXLy8t/HRF/fbA2mPUKqwc21cLq4YQTTlhtEv5/DQ5chdVD\n", - "zcHqo+bgp8PTcpB6MnjmM5/ZnSyB774Bp8j2/tLaHMCPhtMrp1K0e34CrGGcYqEJ7Q6aQKtFc4rN\n", - "NEZotL9N6yMzBtpzWoY2W2J27do1OGEzHluk0Cz4+9zcXBx//PHdydsWBvjE2BirfWsONo5MC7SG\n", - "Zs3bWmCruUbEgOaWB8yXtRrzHvhZs7RotH9ohp9btmwZ9MVnW8VazQsLSksb47GFxnyG1t27d3da\n", - "KPPk+beM0h5+WQO7//77I6KXPcZtnxqwuLg4sAJapgBWPICsQZNph0bGYN63z6ENz+Azbbxv+CCL\n", - "dmzfQ8AzsR7YMtHuL/4uPLY/nvHDH/5wilbkIZNJW2aYsxb4RsIX1lRmBWCeobn1AWu/D/g7z9m1\n", - "a9fABxIgJ/iYchuQ7SPw0b6mtn4A5GX9+vUdDfDGcp7tC/DF7aHdVlLae8978MEHB5ZD9wHgHVZC\n", - "5goaPE768TPH/m4/Kz4z7qOPPnpqrKwXLDT2MfR7Bz741mVsP0V2sLwzXs8v8DPpi74ti9DgvW1p\n", - "aWlgvcz8LRlvds4wqkRMoVAoFAqFwgqxahapiP60hybKadCanC0X7anSp3q0MbQd+ylk1i5HjnGK\n", - "zXyHNm7c2GmvmSZtH5FZFilHGNn/y6fp9s6XPjNfMGvB8IHP5jnP8r3+fwWmqaW7Bf93dBqANt/P\n", - "ewwtrHllsGbJ50w7Zo5tkVlaWhr4j9hiZh8Gy4s1eL7HXGS+I/Pz84MoI/ME2ujblgjPyZg21/40\n", - "lpaWOu3V85TJYuZ3Yd76/16zLe3217OlKKOFcTqy0nyxr1nWrgX/81odk6G2b8u3tWM08TZaj7FY\n", - "fhk3ba1xZ35p0ML3+Z73ojELaOZPAw22Ym3dunW0Pc+2pS2zprf/p022br3XMEdjlvcWtuiY1rad\n", - "LamZlYP/OyLQtyim1Xv42A1J5o+XjdfvrmxtAq8LaPB7JGJo3QSWIeBnel1ke7V9x+bn5wfz4/cb\n", - "9DLe7LbJKItUoVAoFAqFwgrxlNfae1IPrYSchUKhUCgU/hshS8hZFqlCoVAoFAqFFWLVfKQ+9KEP\n", - "dT5ARJrhvc89K1l2ycqK38ZkMulybXD/+ZGPfCQiIt7xjndERH+/jN+Gc7OQNZXswNwJO7sqtFx/\n", - "/fUR0WeT3rx5c3eP6igbZ+QmOoH7WCKFuJ/+8Ic/HBF9ZmNHmhCJyJ0vGYLf//73D6Jr8LPiWTfe\n", - "eGNEHOB324d9wPhM32SHhW/O3s5z/uiP/qjLVGwfJ99Hk5GX+YTn8IfvwR+ySZOp+L777ouIfk6e\n", - "85zndM/5wAc+EBF9Bu82n01En+eFeb3mmmsios+yDa38RNaQTbLy0r+zNm/ZsqW742f+4TnPfuCB\n", - "B7q2EX36CTLVI4sAueIZ5F+hPdmHN2/e3EWRsR6gz3LOeJx1HFkmszGySDZmfA6hAf6QxfvCCy8c\n", - "+HYwB/TNGoUWaEAOoAU5gI+nn376VH/2lUEWP/vZzw6y7FvO+ens0I6wZJzg4osvjoiI3//93596\n", - "piNs9+/fH5/97Gen2iKvrD32OYBskcEdvhA5zHid8R3aHdU5Pz/fPZP1TOZpeOx8aMgo+xxzxHph\n", - "X0QW8Wciyz4Z37nh2LVrVzeP7F+sZ9Y/42Td2H/rc5/73FTf8JwoP8YI7bwvWNM7d+7s6EZ2yI/G\n", - "GmJvAawb5+HyOJF/eM5zwF/+5V9GxAEZQAbJB8W42QfYi3i3ME7a2XcMWni/OIcXc8Bcf/SjH+3W\n", - "M/PJHvvQQw9NPfMLX/hCRPTr375DznTOnFIJAX835qSVF+hGzu07BphX7//w2n6v0MK6g4/OU9n6\n", - "UiHnZ5xxRkT0vIPXjJdxQHuGskgVCoVCoVAorBCrZpHasGFD3HrrrRER8R//8R8RcSC3VETE61//\n", - "+qm2aMVoi29+85u7U+uXv/zlqbacQtFaOHmTR8l5oaxJOHO3o3E4uT744INx1113RUR/gnaSUUc+\n", - "nHrqqVN98n3A6RdLBf3RjzXZH//4xx1PXLcMix3gNE7tIJ4Fz9HUADRDi62HrW+doy6xAmU5meA5\n", - "8wotxx133NT3getgkY0eviNHEb32S1vXUHIkJNo+tH73u9+NiF47ph4kQIuCvySye/TRR+POO++c\n", - "aotF6Xvf+15E9Nraa17zmogYRuHB03vuuScieg32lFNOiYhepgFzs3Xr1q4v5NyZlpEdxsP/sXoY\n", - "1uLIdwUfnbtlMpkM8sA4EhbAc2T2Bz/4wdSzXvCCF0y1t5WI70HDWMQcfTkSyNYs5APrQJvXK6LP\n", - "p+X2aK7IINbGVrt2RFhb57IdD4BfyBF9QlO2pp3z7dBDDx1Yg+HVS1/60oiIeNOb3hQR/d77ne98\n", - "Z6o9fGONsmaRwSyyEpnduXNnt54d4Yc8IGPOnu29iP+/+MUvjojoSov9+7//e0T0VhUAHx544IGO\n", - "R6wVR2GxbphnngXtjsT1XsWcspf7HbBv376uDbKDNdDVAti7ac9e5mz7wFYz9puxrNzMD2uLNcV4\n", - "kWfDlt0s4pCxcWuAHMCnlnbn+sOihjxYXoCty1n29Kwyytzc3CDCDx7yTFfwmBW9CcoiVSgUCoVC\n", - "obBCrJpF6tFHH+1OoJzisY5Y2+VEjvZ/1113xb333hsRw9M3p31Owpx+OaU6O7jr9aCBoOXYgoHm\n", - "8uCDD3anWVfrBs5Rg9YylgU5otc4TzrppIjoNRK0RWv2z3jGMzoN47bbbpv6rjUpZ5Hl/2h/bo+2\n", - "7DqCrgLe/o5mAK/H2kb0c+D7aLRGWxiYA+bkm9/8ZkQMs9ZHDP2zrNXZAomG0mrSEb1PkHnOXCNn\n", - "rXZtTRrZwwqCZQGaLLu0dwZk/k79R9Bm+KYN47flBWsoNPIMPtt64mziyD08t6w//vjjHe9cp89W\n", - "IXiLNcy5ZmwlgzZrh6540LbN8mhZzpFBxvn1r389Ivq9xtqufUXYw+w70v6OjCE7WU1J1ia0QwP7\n", - "ojV1+/3xnF27dnX7H2D+seZgicD6abBfYCVBnphbr2nkhbW9bt26bi6wlADTyzhd9wxwq4BF6qtf\n", - "/WpE9NZ1rzto37lzZ7d3MA5bJFgH/B+as/qpz33ucyOi3x/vuOOOiOitxqxtsHbt2oF/LvPo2xF4\n", - "Zz/XLCs/8uOM+Yy57R9LIvLKnLR1CVu4/iV9tT6hLbyv8v2x/cL532xp8jua/d2+hq6QAcyvtrqB\n", - "9xDX7+MdlOVAy7BqB6mlpaVugbBIfegBDIrDwvr169MkhXx22nkmLStwyOTwss4KjjLpRx55ZPdC\n", - "YBLGSri0z7ajtzdGFiFCycHLNILDDz+8WxD8z4n3AAKEoFgo3Tffh49sMGMlaOjbz8ySvTEeXmJO\n", - "iulFyfUCm7+d9dtDALzFPA6PkSkvDMbDs5/3vOdFRM9HyyLj5tqF52zatGkwTjZ4Fx22TAJo43u8\n", - "YPzyBtC2b9++bj6zvtmcmU/Ggcx5U7cDqw8zXnetczHP5kXvgxQ8Q+Y4/DN3zAmwjLImXQzcv7dt\n", - "M0dVZAv+wPOs/JOTHzrpX8sXxu0ErIzfQE7YV2hvZ2zgQ2N2WIzoeftP//RPEdEfoHwt777ZL5BN\n", - "aM/4grKwfv36tOQHMoQyYgUse3n94z/+49T/WReWL553/PHHD65sDNr66i9z7YBG3AnYy1wEGGza\n", - "tGlQlDdL5sn8unCyDwQAmfVhaCyZNIoQz0TGZpXOgib6npVMlL2LvT27Mozo+eGrfoNnZnuy4Su/\n", - "1tXA77ksaTb7pPeiDHW1VygUCoVCobBCrJpFam5uLi2g6GsJl9ZotR2b9ThRurhqdqr3s50OwP1D\n", - "y4YNGzotPiuzYLOmna99teNQdLQATu5jJSJsSXDRSGCHXVvPsoKY0IQmiobS0u4SFrMc9bB2ZM/M\n", - "LFiYz32V2PKF+YTn1qwyjcRzlcmii5m2VibTDc9dMDQrnQMww9tpPyuF0Y4vuzbG8oK8YInKylYg\n", - "J/x0WhBbMFrN01YbWwzoK7PUZg7hdl7PClRHDMvTZLKIxYLrM/aYTF4A/WI1aK2DAPqy8jSZBdNu\n", - "CNl6gjb41RZ191UtFglft7sEELC1COtiZpGAj22BYej1uGnr8jqZFZA9iPGyf0B7doOxdu3agSya\n", - "fqfoyMqxAFvkXJjeWFpa6tr6u7YcuiQUa4pxZ+VtzM+xIA/kEvcRWzuzEjLsEw4g8fpnn4B//GTM\n", - "Y3tXViLK+wXjZL79vUy+PPaIoYWRPpgLLFDZushQFqlCoVAoFAqFFaJKxBQKhUKhUCjMQJWIKRQK\n", - "hUKhUHiKsWo+UmeeeeYgxJK7YKfxJ+V/G2JsHxXSyV9wwQVTfTrqjL5J+f6ud70rIvp7a0f34edw\n", - "9dVXR0TEOeecExEH7mG5XyeC4yUveUlE9CVfKBHhchzcO3N//KlPfSoioitvYV8Bvg8t1157bUQc\n", - "KBHgKCrupvkOpTCgG18Z/HDok/EyTtLsO4WD/RQ+9rGPdSn/ocH+BtxRUwqD0gb4YcAH+zwxp8yR\n", - "y7e04e/wkHFC98te9rKIiPjWt74VEb0/BaVQTjvttKlnE95MWDNzRVkO2uP/RNTk1q1bO3mgVAU8\n", - "ZD6zsGbknDIeTjWBTxFpQmhPCZq7776786dAxvgMLZT8IVoHwA/8CuAjpTDsz+fIQ8p4XHrppZ28\n", - "En7OPBK1dNlll0VEP0fwFjkhBQURVC4pBP/wx0BuWNvbtm3rSlt4XfCTaLU/+7M/i4i+XIXDvx1x\n", - "5v0CfkF7u46QFdaz03y4VBBlXBinS3wgP9AILYyVtYif1ze+8Y3ud8pmME7WL3PlCEH6piQO4yKa\n", - "GR8bxkJ79jrGtLCwMJB3yhW5/Aj0k8yRfcF7F7IKP7yH0T/vi4hhYlqXtqEUDmvMSV5JWUF7ymE5\n", - "xYcjyqDl/PPPH/Dc/riM06W26NNRn8wp8sKeztzg5wNft23b1vXN+B3NyjOhBTkHPJt1wRxcd911\n", - "U7QA7xebNm3q9i3aOsLc/lqME3nh76T2YL+AdpdmA/S/adOm7pm8Wz760Y9GxDBBMeNjHVHeKkNZ\n", - "pAqFQqFQKBRWiFXNI4UVgHIFX/ziFyNiGIXhAsQPPPBAd7J0MjYnXiR5I9YiNAzAyZNncOLmp33I\n", - "OBU/9thj8Ru/8RsRMcxB5bZE1WAVIQ8S+XMAGidag0vnOGpjeXm5Gy/J6WjjhGmOAEMThS/f+MY3\n", - "ptqjHZDL6ld/9Vcjoi+h0ubCcR4pR7Jk0UYA2qHt+c9//igt8Ovmm2+OiD6v1Mknn9y1ZT5ddgLr\n", - "B9obgFZkDn5g/fmrv/qrqfbwFVnE4rlz585BCRfn/7n99tsjotccmVeA5kk/jPfP//zPI6LX2AFa\n", - "1G233Rave93rIiLi53/+5yOizxcEGD/yT5JX+GOLDEAWKeOCNci0//CHP+wsA9DpPGGA+YeXv/AL\n", - "vxAREZ///Ocjotc0ATIODZQIotzJP/zDP3RtnVvIuWpMN3sQcoPFClnEOmZa6A++MafIcsRwHZBj\n", - "6ZZbbpl6JmCvQUZ5NhaGLOoPfqKpP+tZz4q/+Iu/mGoLvVhNWe/IEHsScB45xgWN5gtgX9i9e3e3\n", - "d1BcHNjC8vKXv3yKfpf9cvke1naWM63dX2gDXS6z4wSV0ITsuiwX6x6a4At89b67sLDQjRdZyRKJ\n", - "Opku42K8WckhSgq9+c1vjohepv/5n/+5a4v1i32Ad5VLpABHpTpSNuM58sR+ynpzlHjEMDrTUaiA\n", - "z06qSs439gVga3R7Q+JoQ9Ya7zXvg7ZoZiiLVKFQKBQKhcIKsWoWqWOOOaYr8/K1r30tIvoTqi1S\n", - "nIL5+cgjjwxKwQAsUZws0ZycgRg494Z9H3w65kS7a9euzo/mxBNPjIiIv/mbvxml2yVTOCH7dGy/\n", - "LDQQ+OSCmHNzc92JH62FcbpvNA+sN84H5AKYaCLOcMxYvvKVr3RtXSDWmoUtUtbqsHJkpTPoD0sH\n", - "c8VYWr8fjwc6XeIAOIvwt7/97Yjo5cdao3PXkNvq0UcfHVgvbZHhs/0NALxGrlwawbLIWJ7//Od3\n", - "PMXHyxZGaGA8tGe9OIMvz8bfyXwbs3jC+za7dcSw5BNaMdYfKhagYdtqzHxjNbGvTGvZcZkMWz+t\n", - "1TOfzmTsPDoG7fg/66nlCzTQNz/hqS1S9MEeBB9Y42jNoLWOR0T8/d//fUREvOIVrxhYgZwF25ZY\n", - "58uxfxZ7j3NdZbQ88MADg4LhwNUleBbf9R7tvZi1jTXB/cPHnTt3dn3yXc8/8oJssSYp7n3TTTdN\n", - "tYdP9u8as7hEHOAf8411IyuQDdgffFtiwHOqMTjfWCtf7H/QMusZyAlyjizCe68rZ1dHhnlPt3uA\n", - "88aBsYzs7bgYLz6GliPgPFqtf6/n33LOO4XxshfPQlmkCoVCoVAoFFaIVbNIPfbYY919tX2LOMUC\n", - "Tqicoo8//vju1Ok7bOBMrs68C1yDy1piVt/shBNOiC996UsR0fv0OCLKWXUpMMzf0RIBp2M0Fyw1\n", - "PuWDXbt2dRoD1g744npeaFK0Q4PC38gaKZ/RbP/u7/5u6u8+2UfkWbINrCBomsw3Vi/PqS0x8GXM\n", - "4mHt1RnKTZt9xqANP52sgPJYNntbXlwIFa0+swLRjvFhgcNnypoac3Hsscd2fTFPWe0s/Cno09E1\n", - "wAWhXTMLTR+0RWp5Nhqj/dJsveEZaOi2SCGr/B1LFvxp1zTjccZiF3gF0GDLBOPzOHkWcuAo2Fa+\n", - "nG2etnzXVj3a2RJtvx6AJQZ5Yd3ceuutAx4ybjKcY+Vir8kyekML6wN+en9hv4Wmo48+ehARDJhP\n", - "5BnfUdrZT4W+WU+usejqDvS7adOmbv/yrYDb2i+JZ/pdBA3wiz2LNe2s3BFDvzqseplfIjxmblyI\n", - "HbD+uRHBCu0xtH3AM/t4el90NnHGB22uh0o7xub3bPse5Xffgrh+peHqJOYPcDSgq120wKLMeoB3\n", - "yHdWo9Eoi1ShUCgUCoXCCrFqFqn9+/d3J0lOhZz+s9Ns+5NTq7V6W5TQ1lzXy/BpFeuPrQxgbm6u\n", - "65NTvf21fJp1HqTMzwBtgfbOOwU2bNjQ/c0WGJ/SrZGbf9a80BrttwXGKsxnd9u2djmyks9ZDTrP\n", - "HWMj0qbVppAR+4Bl1ct5tnOYOIcLcD3BVjv2fDIOeIcGBu8sH/DcPnS2DoG2Uj19YXHIfN5cnw65\n", - "Mc95li2ytia0f4c3rBmeYUsqz6IvtNhZPiG2dNnvp/3dedUctQqYd+YOWlpfyDHYAkO7ll+WV9aY\n", - "6xwCPmP9Q+Omb0ccMjb653t79+5NrZ2Mk33RtSMBc+GIXGBriq3Ra9euHVgDAfMOTbaWQJvB/DvP\n", - "nq1ALV+9H5ovjJv/O/rM1jR4jAw776D5tLS01MkIa5LPttQ64tQ8NS2+8eDZyG5r8bT/FM/C4ur9\n", - "HD5Aq2vXZvui55o12u51zovoCPzM34xn+jbAtMAP+oUPe/bsGcg5PITnzDv88W1IhrJIFQqFQqFQ\n", - "KKwQVWuvUCgUCoVCYQaq1l6hUCgUCoXCU4xV85E677zzuntZ5yHi/vkzn/lMRPS1efj7IYccMogQ\n", - "cq097mozX4as1pprqHEnTHZpahZF9He9jqagXh21tuyv42gzatDR3vfT3Am7Zh31rdrvOLcK2aKp\n", - "+8Z48OuCf9xPUyOK2mzwGZoZA/1cddVVg/kBzjBL3+985zsjoueffSkYL3WfGCf3265Vt2fPnkFd\n", - "Lvs4tXUaIyKuuOKKiBjWiALwhX6oh0YdJ9fDeuKJJzofCMZJ35lflcdJ+yzfGJ+hhbHOzc0N/AS4\n", - "42ddwENkyD4jPDOrzZb5ClA/693vfvfAz8S526jjR+0s+3F5nNQ3o+6fc6TZT+vKK6/sZGtW5A9r\n", - "lPls6zZG9H4a9MNe5Dpx7BftXnbppZdO0W2fF+cTY/7POOOMiOj5Bc/t++Jafq6Xtn79+u5vtEW2\n", - "7FMJ3cgBewv7qPc22rlOHHzkua1fHH+jrefIvm88k/lnnPap9R7GHMH31lfK/ojQwjjhsWsnEq3o\n", - "Om6OPIMvrll3xhlndDzOsoWzRqmd2ebBaj9bdlnTzg3GGPjeJz7xiXjPe94z9TfvF6w5anPCQ9aB\n", - "91PkiPcL/UMLc4sf7KZNmzq6aeu9xX1DC+39LncEqWu5usrHrl27Bu9c1jM0OOIPOWZPz1AWqUKh\n", - "UCgUCoUVYtUsUmvWrBlkHnX0Qds2otcq9u7d2510M83TGY6JBKG6M+AkzsmTzK9ktH3Zy1421b7N\n", - "6eHoAEcsOFLC43W0SRbFheblfDLLy8tdX/CME3eW0woQrYEW6Gg2TujwxRp7G1npquaONvGzrUEx\n", - "brS6rAaZs84jA632y3w6AhA5sBXDuUlsHTUt8Jv+0FxvvfXWrmaY+4YW5oa+HYUzxtuWJkeQte1p\n", - "Y60UwAfmBt6Rk8lZ8/0MZDvLtzY3NzeoKM98OsLLVk3mz5ZXAM95ptvbEtr+z2swyzkDnGU7q2xg\n", - "6xIRde0eAA1oxI7CdR0v/o9c8Azy7Lm+HWMZqw/qvYi5ceRoFpUM7cwdWj/ts1p77X7hmnoZyHnl\n", - "6gnAlllcuERSAAAgAElEQVRoIEKVPEpuPzc3N7Byem3ZWuh3kNeRI4ydtd7Rz/Pz84ObiyzPHnLu\n", - "aDyQRdYZyFUr2/DB0ZuuomFa4I9vVbK8g9BIHj7qLbZ1ZRkffGHes70ri85EJh3N7uhOsGfPnvTW\n", - "BHjeZ+VEBGWRKhQKhUKhUFghVs0itXv37oEvhevdgdYSFXFAm+ZE7ezArr+FZQYt0KddV4mn7ldW\n", - "Dwva1q9f352UnXMF8NmnYLRYa17QwHjxd4I/9ilZu3btQGtBg3SNMGs7PMtZwo3MR6rNyu48X87F\n", - "lNU35O+2aGW02EJnGlsa7KthGQLOfWQ+2YJlPz4yhU8mk4HF0ONmvqHXfcMHaIAmW0FAy1+P020N\n", - "fACBawqaj1nOs7a9LUTOEwQY31juobG+x57VYiz7cNanrYDOq+baW27PZyxVWEP43FoN7WfnCgVe\n", - "u/yd9s55Y+sZsK/Rli1bBpY0W+jQ4llLzlxPn7OyTQP7Q27cuLEbj7/rig0veclLpmggYz3w/LIv\n", - "+tYBtNZo3xpk68I0znoXmY/szd6jJ5PJwOqVzWObF6796fckcBZ/W51bvnkunF8rq1vX+iW3/WTv\n", - "OmjCosv32hsSrwvotD8r8Dvelk6/X72/tjcl5n3mz2l/z1koi1ShUCgUCoXCCrGqPlKZZuYTpk+L\n", - "W7Zs6TRoa6v4ftAnmjR/t4+UI0XwdUA7smWnPXk7+7H9Dawx0B7asrpPnLT5jNZr7WjHjh2DZ8I7\n", - "a7PWRNAQGLf9NezP5dN9a9mxJuTveo7sIzUry3br+xExtJK12pStW7agWcNwpXR47AzgwJYftKWj\n", - "jz46zZoL+I6tgsA+UtCELHqdtJadzK8CeP7RnFlH1khZN55TPpv2dqzW2s0H1zWjT+Y5qwrvDPdj\n", - "Y4aH9omxpdHtLUvMs2lBLpD/22+/fap9a5GyVY+fyGLm22H/Pme8Nu3wpY0gdAZvZ5t3VnjPP89m\n", - "nOaD+/cYInoZ8h7Fd+mTWwC+69qrjmJjvPZHAu1eZR/PzCJlntvfD2SVE5AfW7z37NkziE73nupx\n", - "ZhUhsooPIItmjRj6V9oqZIuz4UzumRWI57C3s7+07XkWz2a+4YtvHDKrkG80APLlDOl79+5NeWZL\n", - "m31lZ6EsUoVCoVAoFAorxKpZpNauXTvw9M/u432KXLdu3WiF64jhSRsNgWfZd8B3x9zfZ9pUG73m\n", - "O21rAozLp3nf2wPfdaNhMiZXop+fnx/UbXN0HcgiR+zbAKzt23+r1VBttXBeG2uBmZXHz/D/wcG0\n", - "S7QQ123LIgjtj2B/t8w6yk+sRYuLiwNrJ3AElOXGcJ4sR86YluXl5YFFLYs24plYWjN/nMy6Zmsj\n", - "mEwmA5653p37ck6btm7hWHueyRjHaIEnmb+IZWuWNdXr3/nroNWWijFaDPuOOc+YLbWZrxlo9wlb\n", - "jBy1iCXVUasgq0mZ+dLYx2xpaamjL/P1crSuLY/AtNki7Tlq29On6zu6L++P/gm8p3lvGpNd95FZ\n", - "OVgnjpj2s/3ZkcR8v+WLI2JnWbt8W2S5Ny1ek1iixtad59+WOs+/93JbDc1fZNQ+Zu2ZA/ida95l\n", - "a9coi1ShUCgUCoXCClG19gqFQqFQKBRmoGrtFQqFQqFQKDzFWDUfqQsuuGAQWeM6PVmtteXl5S7i\n", - "hbva66+/PiL6mlK+q3YklPvmDth5ZLj7veSSSyKir0G2d+/eQf4S10K76KKLpsbD/x0h4dpJ3Nva\n", - "Z4Q79Ouuuy4iIs4///w06sI14s4///xRftiPhZpS1FpynS9HWm3btm1Qa4+fzicFLdS3csZvR/Mx\n", - "R/DcERV8b35+vqud9K53vWuKTt/DA9cgs38XNLjWGnxBLtrIK8bpGpH2jYM/RM5Rr44aUfbbsV8W\n", - "Y21l3f5ljOeaa64ZpYXoGuQGXy/qW1EPzb4yfI+xtrRYlhxtC8+ZI/tU2QfKc+Q17bm9+uqrB7UT\n", - "bXF3LTTLrnnOZ2hhHWX5Z9asWTOotQiyqCtooR4mPGZ/8ZxSmw0+2v/tkEMO6eQBWWQNAeSWZzH/\n", - "1FqEFvvzOLoJ2WVNtzLuSN9PfOITU3xx3Uev/7aOY8TQ18654qCdfXRpaSmNvqPuI3yBd6aJ8cBH\n", - "6r65Lly2js4777yBTxDPgDbXt2PeM38/9lGvC9ei4+/XXnttt7c4Yti57a699tqI6OU88+f1O/rC\n", - "Cy+c+jv9t9GvXnOOlAT4KVFr8ayzzppqx/ecK8777liUZPZu8bsrq82YoSxShUKhUCgUCivEqlmk\n", - "2kgOTqDOswSch2nXrl2jVcYj+tOqNe7jjjsuIoYnTbQcawvkWbHVqY3uIdqECJgs4zI0uCbWWBbc\n", - "lgZ/39aBxcXFjifkgeLzUUcdNdUWPnHibq05Y307sy/zNRbNYsui8/xkmalp7/wpzmwOn+Abc8MY\n", - "zMf22XzHtdGAc3c5CiuLGLSmu3///jQLPjKG9moagCOrbHGx5tZGJNra5UzlzAEySwQo7RwR5rUI\n", - "7Xx2frW5ublBjpmsTlUmF878DSwnzhE2ljfHmmXmC4rsOO8cc5bVfUT+yU9HVvsxWbS12PPrcTrC\n", - "yvXuADQ407MtNxHDdU+uHvYuj9OWKK9pYyx3XJb/x9o/PHzuc5879Xe3935oq4dpXVxcHERu2bLi\n", - "vcefs+hF5oIKGM4/Btp3giPezEvm0Tm8svWUraM2Ss10wDvo57vekxg/4/H7I4sKBZn1qP2b5cM5\n", - "+jweWws5N/jZvB+goa0nm2UEQP5ZF1nUZoZVO0hF9AxhU3fJCGAz5H333dcxnXQFwMm93vjGN0ZE\n", - "v/HfcccdU+1dloFiiwiaC2Kyae/fv787vDgFAWBS2Cig//jjj4+IYep7h7MSTs/ifvaznz3Vfm5u\n", - "rjswcmCg+KwFwJuXrxm9edkE7CRy7Vhtqs7m0e3ZKBgDLyF/j5IQ/OR78KN9ebnkCxh7wUUMzb++\n", - "uvJLmmczRjbSrVu3Dg4vHh8/aec5Yj34oOjit6AN7WccyKIPRmx8yCIbJ0kNnRaE9vyEDxwY/OKd\n", - "n58fJGvNSicBxofsskatvHhTZ90dbJP2S4k15PB39h7mkTV76qmnRkSfoBcwZ8wR/GPdtS8Yv8Sz\n", - "cG3g4sx8D9qy1B2spwceeKD7n4sKM+/8PPnkkyOilymnKHCiQkoKZUmUmcu21BKy4pQJVhgpEcM8\n", - "/uAHP5hqbyWBOeLg5TlijHv37u3GlxUtdlkq9n2XdfE4ec8gm8y/193i4uJAkc5S8diVwwpDdoh1\n", - "CL+TzEb0cs74eG8ee+yxo306zQNyzfizQ7KvFa2At33wN4wc8MMlgpw+Bn7ATx9ePQc+RLbwnmWX\n", - "lzElbQx1tVcoFAqFQqGwQqyaRWphYWFQbsFlNwDaH1rCSSed1GkA1qT4OyVQjj766IjotZx77rln\n", - "qj3aLadbTqRoO7ZkWAtsv+vrDtqiMXHy5rtomqYF7Q9+oD2OFVxFU0AD5ZTvNPs2YZqnPsU7QSUW\n", - "jLGCu9awZ5lFram3pS0ihpqXr2fNR481op+3LPU/4HNbbDWi57UtL3aMR94OP/zwwdWLtV/mCM3L\n", - "1hEnebTzdabZz83NdbKXXTPDcxfxzq6NXJ4Iywvt3H5paWlw3Z4lQfW1CesDWiw3WVkX2rcWLBc+\n", - "dVFy98042Cfe9KY3Tf3/7rvvjjH4yuP++++PiOk17ethW9ZswYYf7IfWkrOSKFhgkJdnPvOZg32L\n", - "/2ENRw4c2ALguUtHuT8AX7F0bNmyZXClDeAL48HSnCW09fdf+cpXTo3Fe3prlXWyZ9M963rV1g5o\n", - "QeZ8A8BYwPz8/GAdQ1OWkNlO99m1qpMr2xrd9k8b76G+6gN2Q7F82Gps/tqy09LO3sP8I4u8k3xt\n", - "6PeCE9b6NsVBL/ycn59P9xb64D2XlfzJUBapQqFQKBQKhRVi1SxSi4uLg/B4TrmZEyoa/datWzst\n", - "LNMY+b99H3yq5xSMtoAlilOzrQatL4qdAG2B8P0z2h0nbp/yrTVAg0Ntwc6dOwdpGrKCjS6sjCY2\n", - "ZmFifO3/bclpi2A6JYIdfLMSMTyDcaPNeJw4ziMH8BHtr/WHssO2NSLz3A6JmY8RQNOnPRrM9u3b\n", - "B5Yx3+3bUdWFRF3M02U87PfV+gPZgdnzT5+2VECzrQFYFly+xU7nYHFxsXtG5kwKoBH5tpO6+WLf\n", - "D3zMsOy1WqPLkthHw7KIxc19UUjXBXTZL6AZn0r7+bV9ISOmwQ7dfLYFAlnLtGOe2Zb98fzb6uuS\n", - "KVmZFcZpfx7DKRh+/OMfD3wngZ8JT3mGZdS+VsgmBaPtU+Mxtr/bItXSG9GvNWiwtcPrnrGxjsZK\n", - "SrmodJayJiuYzLxnKQjY4+CfgxUieqsPbZy2wWvVfIKnyJjbwz/7ZyHr7Z5uHye+ax9Y4LI2LomT\n", - "WVNd/uyQQw4Z9M3/vM9xfsiKwBtlkSoUCoVCoVBYIapETKFQKBQKhcIMVImYQqFQKBQKhacYq+Yj\n", - "9e53v3tQZoH7VZfCoFxFe4fusilXXHFF12/EMHrHfhaknyd1vvPwOAkg6efPPPPMiDhwb0ufPMul\n", - "CignwDN9v4w18CMf+UhERJxzzjkR0d/9Qjt3yTynLSnh/ChO3kn5GVLhc79M39DG3ymFQXvutuEz\n", - "cwAt27ZtG6TZd3kN7qEpbcB82mfI47zhhhsiok/5D1/wHcIf7IknnujKLFAegr4crWUeulyBozj4\n", - "PqUTaM+Y2nb8Ds/PPffcqTa+b3eZFeaf9i4VAVw6ZefOnYPcLMwTJWIo+YG/hv20mKvPfe5zEdGX\n", - "/MAfhcg6/NPwCfnoRz8aEQfWHbyijRPnQQvy4vUPkEW3d84054y6/vrru7Ip/M/+eqxvyrggi14P\n", - "9rtgjij7BCw3+/bt62SL+bevkMsXMU72IuB1RHvKm5x++ukRMfTzmJub635nn6OEBz4+jJP8Qqzv\n", - "trRJxDD3EfsKc8pYzzjjjKl+22hXxuG9xYkp7RvLnk77LMIO2qC9XXfsuY4Mp1wNa860OvINnjP/\n", - "+FCxB+Hfg+zeeOONEXFgHdkHGDDuD3/4wxHRyyJwzq62FFJEP0dt3qyInvfIxXXXXdfxEL9deE3u\n", - "MXyJP//5z0fEcI0CeE3f8JH9gnUDH+Djxo0bu9JGvBfpI4uwZc3xzvX68ZqFL37vtu+ltrRZRP++\n", - "wE/L7yDmuUrEFAqFQqFQKDxNWNXM5o5SsgUD2GK1YcOGQdZn4HxBttSMZWSOGGpFttQYS0tLacbm\n", - "tk07niwqCTgrrMvdmJbl5eWB5cxRfMBlRmxZMhxR4/wgbWSNoylcZsV8gh/0kWXsBln2dTSx9u9o\n", - "Zc6TBVwKwZYneO78U26PRaaNCrRsOTs6spXxBTifVBYFB807duzoeORM/cByArBQWNv3Z2d+H8vH\n", - "ZasPNGSyiOWKvpHJLDrJkYNtNA7wGjKyYubAVpJsjpwR3xUDIvr5gWfeD7x3wSdbRW3BAuYXfN+3\n", - "b98gas9ynln3gOfSz/a+MVbFwGVjQJap2xYm004/rHGX0HH7J1veI2LI46zYOTx3lm34wZ7Ujgke\n", - "w/Msa3ZWCJtx20rqygnmZzsnzCP0Z/nzTEuGbI6c02psH6Ut69iWN/PFORB5RrYX+RaqvQGyLMJT\n", - "fjrC0ntXhrJIFQqFQqFQKKwQq5pHyrlMQJbxl9P0pk2bUu3F96L2L3Df9suyBmpNq81DYeuXc1S4\n", - "EKb/n/nMWJPPata19c3ch8fhHD8gK4hpWp1Ft6WdU76tP7bAACxQzvSbzalpcJ6ltn2WkdeFXYHr\n", - "ODJnY74eLSxH69atG2gvHic/Le/Ac2FLlDW11qfA2lyWeZpnQIt9A0Fm0QVjVkbnjslkkb7wL+FZ\n", - "tgYDa97OPt3CxVUzPyyPA75hocsKC7fjbWkY84NzcV37ujhTvS1Sbp/5ko1Z5b2GzBdbUixb/J2f\n", - "zk2UFdBu62xm8wnsv0Y7r1HvD/TrtQpa/tmabR7al9Z9ex05t5vn0PtrW5PVz8jqf7rOITR6jY7d\n", - "ULQ/27G6CLl9RrOqCUZWIYLvZ8Wh2znNLPKuNWnaLYuuFwts4fJZoIWrMdjS+GRRFqlCoVAoFAqF\n", - "FWLVLFKtRmPLRVYPjZP2E088MajHA+xXAjLLgrU+a8kHw1il77HP9ttwBAngRG5tN4veWlhY6E76\n", - "9GXt17TAY2d+zvKJQYsjJdoTu+mC7kyrt7bH953ZGbgdGogjCds2zsjcWjPHkPlG2MoEjfaNGcsm\n", - "bWtnlnXbtFsjzWSxfbb9sTK6banL6iLiY2bNLPM9Wrt27aBWWGapHKsI38LyklkRnBE9opcJW3Ey\n", - "TRnYCphFkjkKNPOha+mjrWvtuW/Lg/3aMgs2aGnOasS5ooF9J92XrUaZ9d1+oAsLC4M+gK2d9pmy\n", - "vNgf1n44RtvO2cJNi60j0OLoM0CUo3l/MFm3FQiYFvsAeY6ym4lZ/q4R/XvNPoCOygS25NmifTAr\n", - "YEtzNqdtX943sz3G783s3WX5an31Mn89W2Zpl1mkjbJIFQqFQqFQKKwQqxq1Z23XJ3FgL/82EsIa\n", - "oSvLO4IsixThxIxW4FOt+281rlmndEf0ZFWrfdJ2zSjTsry8PNDWZ0WqOKIh8wXIrErmr39vacj8\n", - "0lwpfJYfiy10B7PUMD7aWFuzpu4oRtOcaeq2viwtLaWWF+h0lEnmx2Z/NFsFPNbNmzfP5Ll9Wxyt\n", - "l/ml8T3XQxyruG6raBZtyWf7iGT5dmwddLReK/PZGsvWP33CD9plvmHeFw7mY8nvtpxkfknQ5tpq\n", - "mUXKloqDVao3X8CsKEfLTRbl51uF9v/eH7JI2cxH0pbabD8BLQ2ez8xqY3+bzPLmmxBbycyXubm5\n", - "Qc1U5z8D9lvye8P7nX3LHCHX8gWrnn0ksxsMz9GsSGPftnj9tXzJouzG6I4Y+kTNquXq90krf5kV\n", - "MMtpVrX2CoVCoVAoFJ5mVK29QqFQKBQKhRmoWnuFQqFQKBQKTzFWzUfqvPPOG+SbcZ0r6ttQx4d7\n", - "y8XFxe6uPqvLB7gD5Y64rREX0dcUIj+Ic9bwmXpYbW0m+w+5ptTZZ58dEb3/Dc+AFvp2jSDaZ/f2\n", - "1PI7//zzB//DwuhaWIwzy+wMn6idRG02RwW2EXIREZdddllX3zCLjOEztFx88cUR0fsbOCrniCOO\n", - "iIi+jpv5CN/h38LCQsdD6s/ZJ8IZmi+99NKI6OtVOSLEUV70Dy32c1laWur8h2hLHSfGad83/HKo\n", - "h0bfzr/jGlTUw2KOtm/fPshrw+ePfexjEdHLFshy9bgGoX2vkDfXT7z44osHEa/OzUJNScbZ+ni1\n", - "7aGNWmvUN8tq7PG9yy67rFufzvDO/LKmWEPIrv1QXEeTWpvUcbNctf5vzD99OzIIeJ+jb/sU8Zn2\n", - "7HVnnXVWRAwj8fbs2dP9zW3x14EmZ+KGL661Ce/plzlz3Tf4sXbt2oHcuy00mIesXfZoZLHd/yOG\n", - "PjLwsd0vkAPm3zzk3cL4aMez4Bdr9IMf/OBUO/sQMRbav/e97+14xfw40z1t3/GOd0z15dxdfJ+6\n", - "n/CRPFWmmX6uuuqqrtYiyGrosf9bFu0zxE/4SI1L+0i1/lvUK2Q+Dz300Kk2REQiL55/Rzu7Lh51\n", - "Qv0+an0oXWuR+SRK2f6byA97V4aySBUKhUKhUCisEKtmkdq7d+8gY63zKIExTdTReCCrnQccheNs\n", - "uY4YyrJ1t9/NMhUzPvp0dEJW34p+OBU/9NBDETGMGJlMJoNcGo6AadtGDCMAMyuSa3I5oqatj5dF\n", - "lQDPAc/EEoXWaz65f88FcjEWtWUN1HWd3N7Ra86ID+iP/7dWhiz/FePMtFfT4lp1tqaCdk7R5qDv\n", - "sMMOm2rLOOCDLZdZXpzMgmm+7N27t5sPR2NlWYJdv4/vZ7mrGBvtof3II48c9J1FujoizBFy8N77\n", - "hL/vXEZjdb8c4ej9wjzPaoQ5ehPw/6OOOioi+v3i3nvvHdTzdB6gLALKtDMnyKCjmoErCBwsSstR\n", - "zrYwm/fO3cUaziJI27Vrnhqu4+e9KKsE8aMf/Wjqs3OEgbYOJn1mtVady8r16rJ8fdCOdZF27bpw\n", - "Xixb9by3zMp5lu3RvKPo15adlhbm1XnEkDXgd5XfWVmkutfdunXr0goetlg/2fxRoCxShUKhUCgU\n", - "CivEqlmk1q9fP7BIoQ1YIxmrhp7VcXOeI7RWa8kAfxy0OvrjZO3TLpaYubm5QRX7TDNyllT7NAD7\n", - "I23dujUiek3DfFm/fv3gbjfL+uuq39bUshxYzoQ9ptk5y7OzILtvzzcaiPMQgaw+Ihpeq2XYz8b+\n", - "CKYfPrX+Vu1P59dyhnTkYffu3WnOKVsSs4zM7pNxwZ8sZ9jy8nI3TvtTAGve9jczTeYDc+CcXmD/\n", - "/v2djDhbsi1MPNsyZf8rj5P/28LXartZrSyP330zfvsAes3hf8IzDz/88IjoZb+1Nlju4cusmmL2\n", - "/ck0b1t0kJv169cPrB7O54N/SpZHzHPiNZplCIeWNtu+27KvwWusp5Yx4Lp/fM9+SoDvr1mzZuCf\n", - "luXRynKfMb/AVnSA5WUsp5H97rJcXNlNRTueFq54Ae28L9p1YWux17H3C+fsY3z0bfmy/5qrTrRj\n", - "QvbgLfIATb4VYl+0tQ9aLF+ZBXz9+vXpzQv8sdW4MpsXCoVCoVAoPM1YNYvU/v37B/eRWfVv+zns\n", - "378/zbTKydLRepygfVrlrpsTcxbl0T6b9tby3Nan2cwq4r4fffTRKVqAad+7d+8g03KWkT3L0Jq1\n", - "z3ynxiqLW3O2lSvzkbLPg2tNgawe3NjY3DcaUebbY18g+2OZFmvkbbb9zJ/C2lpWp83yg4UB/hzM\n", - "d8QZer2Gsoz+2fyP1VRsafdczM/PpxnZ3daWF2C/DeDs8/DBUU3tOLy3sP6zvm01pr3lBetzFhXY\n", - "ZsK2hcH+SFmtxazKQLYWsUqDhYWFVLYcAejahO7bGfwzKxNoo6mdFR1Ar32caO9s4rZAOoJ01n7a\n", - "jmdWHUfLrOcCWrwOvP7AM57xjEEkoGkCrYV5bBymlX55Nj+Zq5aPzsTvLOheo/CWn8xZti9aXrJq\n", - "Hm1ftv6ytuwj5Vqsma8c8K1Uu+7cFtiHMFtzGcoiVSgUCoVCobBCrJpFaqw211gkFG0jpk+92YnR\n", - "J2JH5WR3+z6Bc4J3Zeq2f2ucWSRDVt/O4K6Y9vbbcf/79+8faDFZLSn7FWFJyWpE0c5jsL9C2weY\n", - "VQsJWCviHt5WEGvDrho/VkuJvh3x8l/VAj02V2RvLZTW6lwjDFrsAwVcWxHNDTnI+LJ58+aBT1Pm\n", - "82CfkSwiyHNjvz5rk4cccsjgGchQVmvOspdZDegPvjkyteWjfRtMv2XR1d5t6c72IvtSjlWib3OM\n", - "tXRm68GatOfEVkNHuWJF27Vr10w5d/45gz7xT+HZY36J7ec2UmrWus+iMTPreFaz0uuitYzb2mWL\n", - "hNcDfPI8A9o58hbZtH/P+vXrB7XzxuqVtp+zyLrMvxM/X+AcaGN08Tmr++h3rq2H2Z7vPWwsKhTe\n", - "OYIYS5Qt71kUq9+PwPsJaG9wgK1ajjT2ODOURapQKBQKhUJhhahae4VCoVAoFAozULX2CoVCoVAo\n", - "FJ5irJqP1LnnnjvIveFcF9TxoX4W95aHH354d79KW+rbXXLJJRHR55jwnS13otRao29HPJApmpwX\n", - "V155ZUREnHbaaRFx4G75hBNOmHoW96+uKQQcEcgzqYdGjSDX/eMOmM/w5UMf+lAXdQjd+Gw885nP\n", - "jIi+Xhl1mRgXPCcvDnfm0PL2t789IoY5Ph555JGp53zxi1/s6M7yRvGZ+kau++YID+7tqZ1Fe9/D\n", - "t/0zn8wPssWzXdfvT//0TyMi4vTTT4+Insfw3r4V119/fUT0c+rorpZHyKLrPjqiDN4jW65Bxhjs\n", - "vwdfzj///Ig44EuFL4t9Glw7jT5ZP/zE5wnZfdvb3hYRQzmhf/hy3XXXRcSBuoL4dDkSiPlk/qGF\n", - "eYRWfx85P/PMM6f+zpqEBqJcb7zxxsGacy6urKYgPIePrGnmirpf8JwII/teLi4udnU5qfkG71gf\n", - "rFm+i2zRN2vU9S2hzfUT7b+2b9++Ad3IIuscv5q77757ihbaU9/Q+cmcbfvyyy+for39P/NC38g5\n", - "dNM3MmnfF+obIi/OkUf/rrdKjcu5ubmOZ54v6KbuJ9UjkDF4jqzxXmG/4O+0Y85Y48jAaaedNvAr\n", - "Y3ysvS984QsREYN6ePYJZZzeL+iHvEw8B/5u27Yt3vrWt07R7bqv7I833HBDRPQ1CB3FCB8ZE+8X\n", - "1pH3Kt4fGzdu7OQWuhnX0UcfHRH9HLhv6viZf46cZE0z/+xVbS5B79G8/5Fv+GIfWOYzw6odpJaW\n", - "lrqXMsLIguInsBPq7t27u4m3A56dhGE6G6PLuAA7OrKgsjQCrXMtzHcBUCbDyQ95lpO6OTmkFxxC\n", - "OUaPk7I5/J3xOFTavAbHHnvs1P/N1/awZOdfF93Mwrb9osic8RF+Dto+DLZ8YX7tLM/fs2RtzImd\n", - "Te1UDdhQeCnOz893B2uP047LLgAKXPSXeffLC7Q0Ogw/cwZlzfEzc8I+5phjpv7uUhGW9clkMggK\n", - "yNJVOITaSUJ9UGZ92SEYPtmRNmKY3NOOzcDKG3LAC8Y8dyi2Q/zb9eR170NXVgrDJYGyBK5Z8sC1\n", - "a9cO6LYzNPOXlR+ygzPfZ7yWXdZBGzDjg4D7dtJf+OU15wScVjAtZ6zN1tHbBW5NSxZCn6UkYT9x\n", - "gkvvL4ceeuhACWG+2jJbLY0uFZY5PDvgwf22a5r93HLBMzK+OBAsKxnjPastyxIxvUZZY/TBgdhp\n", - "MYADaVyOyPIFzT4MrV27NnU2d+odv8Nmoa72CoVCoVAoFFaIVbNIRQyvALKixZQQaMs4ZMne0LCc\n", - "8j1LOZCVHchKrbzwhS/snnviiSdGRG+S9OnV1hG01bEkZRER99xzzxRNpn3MCgAPXWQzC62nL5/u\n", - "XXVJDFoAACAASURBVOTWpTZc3Lblp0NcbZnKCkv7OjVLSMicuiSArxsi+ivNLMTe5Vp8lYO1i7my\n", - "FfDhhx+OiF7rRc42btw4KJtgLQ/NlGd5juAb/4dWeO91gTa1du3agaXAllfoRPsDTlkAuPpxORM+\n", - "U1KpBTKTWSCBr9s9HgNaLFes1Tb829coY6lTWngembNsXTB+h+wzt23/8Ah+QBvj5JoFQCsyl1nb\n", - "gUvwtPKXpW2Ah1wD2WoOXJaD/9uaAGx93rhxYxoqD22tpaCF5QVafQvh6xjQpmyxZS0r45UlHrVM\n", - "MqfQ7ELEtjJu2bJlUJQZuG+seu2eEtHLltcocpJZWVvrKPui053YegOcgsEWt2y/sLV5rBwasmWr\n", - "HuvBe5dvRXyz4zlFVp3iZ82aNQNZdOk0W3ezRNZGWaQKhUKhUCgUVohVs0ht3LhxUM6CkzRaIkBD\n", - "54S+sLCQFn7E94OTJKf2tthwi8xygXZg/wto27t3b/cdrBTWDPi7HZ8Zt7WXrBSISwCAxx9/vKMX\n", - "bSe7w+bkfdxxx0VExA9/+MOI6Hlufy0+owXYatjOkUs7uFRMpr167rKSD06W5oLUrWaHRYl557vM\n", - "o3nupHaMK6PFpYfo9/DDDx9oUqYXDQo+efzW/v1sa41tQjuewU/kF1iz4hlOvAjggx3e4aetI61P\n", - "nh1UrYnbf9HaoNvbggef0Ipb2YUuW+jg/ayEtU606DVnjdV+Xe0c4fPh8hPQ4mS/LpTdJrdsaQPM\n", - "jf0h9+/fP/gb1m7otGXZvpMOoIHHWaJKj/GJJ54YOOxncCCQZeuuu+6aonWsVFaLNuloVjDdnzP/\n", - "TrfHooulEv6wH5iWHTt2DIprZ+sCWfJ+1/p8jY2bPYg16iLfEf1+b7p5lvd/rx/TZCugE1lDG/tK\n", - "+95F1ux/x3cefPDBqb691lxA2/titnfPz88PeOi+nER3lux2ND6pVoVCoVAoFAqFAVbNItWeUDlR\n", - "cwc+q/zAZDLpTqe2MHGfbP+Z7G4XrdDagX0Kxujnu/bd8bgcnQRmlZ/ItGIwPz8/KKLLd/0saEVb\n", - "wWJjjaMdX0sTn235aseBZmDfN2uv9sugL+bXViM0b7dzeYaWPmSJ/6Fx2Y/JPiPQhBaYzb+tIkce\n", - "eeRAbl0ayOV1rO04gsbWlUwT37Bhw8Camfmd2FrksivAUWnWcu1r1tJm/wiP0xYIl3Exzxkna9tl\n", - "ndr2thghI44iAviO8D1HSmX+XfhzOI1E2z/0mRZ4ajm3BROe07ct1QArA9975JFHBv6UAD5gLR+L\n", - "wm0/Q2tWcgY4bcgznvGM1IcFuPwM1mS3px/2UxcKtjWFtbxv375B0XLPP+OynGQ+dfZj5FmZD+bu\n", - "3bu7Puz7ajlHpkzLWCmkFt6jsfi07yOn/7B/kmmxrLqUkt91meXKJYkihkXtXQrH43ShaL9vvKeP\n", - "FTOnfWYdd/murGh5hrJIFQqFQqFQKKwQVSKmUCgUCoVCYQaqREyhUCgUCoXCU4xV85G66KKLBj4E\n", - "9iX5+Mc/HhF9ivj2jtRRe5QToBSC71/9mRTxpML3Hbr9fUhXTymEvXv3dvfM7ptU+JQ2sM+Qc1Vd\n", - "ddVVETEsKcMYuZ+GNtqfddZZA58wR0JSIoS+M38baKGMx7nnnhsRQ38k+xRcfvnlXd/OTG6/qquv\n", - "vnqKL/CDiBJoghZKPjCnzqeCP8JkMul44vIDziPk0inmOXC0Ylb2p40QQW6RRUphOMO5/dighVI7\n", - "9lvx3EIL7ZeWlgZZnl02g7bILFF90Abt0OLSSbTDNwTfk3aO7OtgvwrKLLhEkOcIIIvwnH4cWYXc\n", - "ffrTn+7mH9g/z2WZaO8IU/vKILvIYrZPrF27ttu3sjIb9umgtAXrwj5CzhDu0kljY4UuZJH1jD8V\n", - "ewv+NMiF5dw+Z/DH5bA++MEPTtG4uLg4kFvKz1A6xzmb7CNHe2QROLrPJaXg+2QyGUSCel343cL/\n", - "7SNnvuBLwx6EnxZ+XND+oQ99qPPxYbzOgci7CL7AL/udMV76hnZnTHdOrE9+8pNd2RRHHcOXtm3L\n", - "Q/vOOnobWlzGx/m71qxZ05Xloa19gpFJy+4ZZ5wx9Wz6zvY6yvi4okS7R0O3S9vYZ4q5gpYMP9VB\n", - "ajKZ3BURP46IxYjYv7y8/NrJZHJ4RPyfEXFSRNwVEb+5vLw87vlYKBQKhUKh8N8YP61Fajkifn55\n", - "eblNl3xhRHxpeXn5islk8v6ffL7QX9yzZ88gC3OW08hRaw8++GB32rRlhc9ozuSkOPnkkyOij9IB\n", - "jk4jc60LooK2iKszrjpiw7WEnFvDuXscpdFmbG77A1u3bu1Ozvfdd9/Ud7J6hWhMzmRMxIyf5UgJ\n", - "5qgda5apHTjCx9EljPdZz3pWRAyjLZgTLFf/+q//GhERz372syMi4sUvfnHX1lYL11xzNJu1OH7y\n", - "PecoAfy/nUNbP3hWazmL6OteZTyHn0RWMceWXWjbvHlz14ZoQ88F833LLbdERM+Pl770pRExzGkE\n", - "DXfccUdE9Nn7TznllIgYyua6deu6eXUxcucoamtmRvTz6jxahiNvWU+t1uxaWdCSRQQ5CzJ56OjT\n", - "2cetBbO2xyJrbUkyvVm9Mv5OMVcsWM6v5+jXNk+V1xzjQKZ+8IMfRERfqYFnAVueiU7Lcv0xNiwd\n", - "CwsLHU+dcwirGP93niCvf2eC59nw3nsdNN53333dfscekkXtIVOME/45Hxv8IC8XNFBn0/3v3Llz\n", - "UBgY+ixbfHbU2QMPPBARwyoL3tPhM+utXdO0/da3vhUR/fvxda97XUQM15ytOV6zniPXJmQsY5HY\n", - "fl/cdtttU8901QTndHrRi140RQtrFjjqEdnev3//4GzhiFqvY1uPMzwVPlJ2vvrViLjxJ7/fGBH/\n", - "61PwjEKhUCgUCoX/z+GpsEj93WQyWYyIa5eXl6+PiKOXl5cf+sn/H4qIo7Mvc2olcy2fbWXiVMjP\n", - "DRs2DHyBAFo+J8vTTjstIvpTq61Gvpf/5je/GRHDjNiAz+vXr++0OmiwtcM5N17ykpdMfTYtfP/I\n", - "I4+MiP4EDu1jNYVuvfXWqe+gtWRVrp0N2TQA57Li9O98VBFD68esmnOMA83JleWdL+fb3/52RETc\n", - "f//9ERFx4403TrX/27/9266t86SggcNzW3UYD3yjvesjAucLav2AbNVx1uAXvOAFEdHzPMsL5Pxa\n", - "0Oz2bRZeLEbWsADr4nnPe15ERLzhDW+IiIjvfve7ETFcRzzrpJNOioiID3zgAxHRWz75XksLWify\n", - "ah9CgBaPjPIsaldmObCYi3vvvTci+jXb1sNz/jgsCvDHfOH/jOtlL3tZRPQWN88ptGFFg2bn22oB\n", - "3exzyLvb2mcI66GtQ4B+4CM0LS8vD2oEuuLD7/3e70VExM033xwREd///vdHx4msss9keadox9o/\n", - "5JBDOtmxnw1tnOkbmbKljv2C/zNe1qgt+3z/la98Zbd2kDlbgXk29DNHtlAD9gf6++Vf/uWI6Hlv\n", - "S93u3bsHuffgi/dNV8iwVdR7EeNn72ddjFUrYK/Fiv/rv/7rERHxla98JSIi7r777gHdEcM8abbg\n", - "AefM+853vhMR/Vy1a5q/sSZZQ1nOPsbBjcV//ud/RkS/dm3xhDb4c/vtt0fEgTVqqx5tXTsTerP6\n", - "n8ZPe5D62eXl5Qcmk8kzI+JLk8lkanddXl5erlQHhUKhUCgU/mfFT3WQWl5efuAnPx+eTCZ/GRGv\n", - "jYiHJpPJMcvLyw9OJpNjI+KHY9/9l3/5l+40uGXLljjmmGO6U621KVfPPuKII9K7y2OOOSYi+tMo\n", - "mgOnX9fxcfSS7699X4vWvX379q6t620BNAX6oM+vf/3rETG0AljbdX0ka16PPfZYp6XwE60my+CN\n", - "ZoL2wjOJiAP294H3Y7SghTjCh76tvXL6Z67gD1qRLW8vf/nLIyLiLW95S0T0mvq1114bEdPaEX37\n", - "J+PH3wAwDuaOOcMiYcsefLalYt++fQPNGx6+5jWviYiIO++8MyJ6WWT8AO0HXsM3/JRskWrr3qFp\n", - "2YcHMD604X/7t3+LiF5zxPcJUJMRfmB9xfrnzNl79+7ttNYsMzPweqCvrHYc/HANLeaulV3WMdZL\n", - "1gE02drFPvHqV796arzsGzfddNNUe1ueGBtjH8vizfign2fYL4W1ydw5A7w1b/Yi9jDWwSmnnNLt\n", - "AwB64TnWnS9/+csR0Wv7AMsNtPNs/E0ySx1je/zxxzs5Nxgn/LCvlK3GjJO5fdWrXhUR/frC4gDa\n", - "CFPkwJFzANlybVHamRb+jm8R/PnGN74REb2vFDj66KPTzOT2v0Ie4GVbNSFieHuAbLNv2g+w3cOR\n", - "c+bvr//6ryMi4qtf/WpE9PuCgdzwfcbn/QU+sD74Pz5nfqdHDK36fNd+TFj5eG/yf+8jAOurfU6P\n", - "PPLItF7hWET1Pffc08nPLKz4IDWZTDZGxPzy8vKOyWSyKSJ+MSL+ICL+r4j43yPi4z/5+cWx77/6\n", - "1a/uJsfOYoVCoVAoFAqrhRNPPLG7CkXxzPDTWKSOjoi//MkJ7pCI+MLy8vL/PZlM/j0i/mwymbwj\n", - "fpL+YOzLW7Zs6U7qnCzRSK3toiXw/x07dnSnVDRnwAmTn2hFjiZo6YjoT8XPf/7zp56Z1RSbTCbd\n", - "6ZwDoaOTsPo40gVLhCOfAFoA0V2u0QQWFha6NoBTvTUjtBf4AN/o2xYs57xijI6KjOhP8WgYWU0o\n", - "9834GRc0mC9oBd/73vciotfk0KKOOuqo+NKXvhQRvYygEdk6YmsHWpw1VqJyDNfLa+t9Wdu19Yrx\n", - "of27jhP/d/4d5/IC7RzRxrlYTDfaK+sCWkw7Fhl4T6Qkc4tfA1heXu7kGgsRMuL6Vq73Bu+xFtvy\n", - "iuwxRteWayOCHMnE3pIpba5nB39oZ4u0rYKseZ7bat7QxV6CXEO3/Wmg0dGPzJ33F/5uK/z9998/\n", - "mH/2OeaC8f3Mz/zMVF+mhf2Sn46KBYwfK/ohhxwyiNxy39DEnst4bcnC2oplhrnCEmVrGvxtoxfh\n", - "va3GtKVvorv5u99F0ML6YLzPec5zpsYGWnlj/ph3W2kcBQ7YF7wuWLOseaxnY7UcHSHHuE499dSI\n", - "GO4t7OWOZkN+HM3O/xk/fISG1oJp32G/Y22ph+fwh8NNex5o4XyDbX5C7/8gy2X3ZCu/rPggtby8\n", - "fGdE/MzI3x+NiF9Yab+FQqFQKBQK/11QtfYKhUKhUCgUZqBq7RUKhUKhUCg8xVi1Wntnn3324O7X\n", - "vjXUt6JOEHfLGzduHNTEohbSRRddFBHDzOS0516emkLUNyJiwlnWoZE6PmeddVZETGcVx2+C+2Da\n", - "Un+KPriHxX/B9aqoKUV/zirO/fOVV14ZEQdqbWV1ijxO+sY3Cr4RnQN/aE9NMWg2X7jvv/7667u6\n", - "TFg36ds10aiHxxzZhwSa6YdxMv+urdVm0/U4HeGFv4br1b3tbW+LiP6+nTmlnWszUifK9dP27NnT\n", - "/Q7d1HFyHTxAH1l9Q/t5MW74SK21Qw89dFAzi3llDb3//e+PiN43wrl4PP/UlHTeoDZ7dkRfs+o9\n", - "73nPwOeL77he5Zlnnjk1fkevmefUCQSuRoBMXn311R3drm+J7CBb8Jz2jhTCf4VnffSjH42IXr4c\n", - "GdVa9uE5e4t9/7I6fsiW/fBcAYC6X/ARtNFerlfKmsNnx/LrenXUIITH9jHk76wj6r6xR69bt67r\n", - "E14xn7R1dQrzkjmCj/Z/s/xcdtllEXGgvl3EAd8ZvkPbrAYhfjjOos3cuTan66B6bcPHiy66qPtf\n", - "67vVgnXBu8W54Jzxnr7ho/NL0Q7foW3btnXzSV/s545WZ47YW7zuac9+41qe7OGOQI/oeci7xXVw\n", - "vVZZF7xf4Af/93vG+67fowsLCx1v6Bsees3Rjn0BOc9QFqlCoVAoFAqFFWLVLFKTyaQ71XL645Ts\n", - "bKL8n9Pinj17BtYLgIZAtBEnYtpnEWX8nbwXRG05molT7lFHHTWI+DNcn4jvOpIMMH5oRvPKImUm\n", - "k0lHN5om2pm1FGhxZB0/M2uC26OZtLQwDveBxuE58rOxGqKx20LRRl1E9FpCVpMtoucZPEd2zBfG\n", - "yd/ps83Q3II5Ycz0v3v37sH80JYoJMuYI0h4lrPIO8s8wFJx7LHHdnRnqUSIZIF3yBh9mpdZBCZ/\n", - "dyTW3NxcZ+3if0S8mS+ed75HjhvTAp+yNdzOUVZlIIvWYTzwmshB5tfygiwi61gy+F47R4wbyyvP\n", - "wtplmpwFmv+7/qMBTccff3xEHJjbjOeuc+loPMO10tps+i0YG1aQHTt2dOvZ0WbQwE+itIjizCLr\n", - "HAXo/EMAPm7fvr1bx8iiZcc1OZ37zHua30XIDVF/Y7U5PW/0nfEQsGYd3QngE892BZCWdujlO7ZI\n", - "Z9HMttBlmc15Fv1AA/xq5zTLcZfVN6Uv18+kGoH3aD5DU/v+8fzbSshP9uhZEeigLFKFQqFQKBQK\n", - "K8SqWaTm5ua6k6jzSPkO2Xkn9uzZ050yne2XkzPWLnIOcdr1SZoTpzUtcnJktejWrFnT5S9Bk/LJ\n", - "2Ll90ALR1KyBME6f6skJNWbBct6sNovrGOjD1eCtHcEvtCJnWW5pyTKbW4sBmSWGv1uDBfAHayPy\n", - "4twtEf18Ih/QndXlQtuB12g7WZZtvocv0sLCQqqlOW8QspVZTewLMqsC+fbt2+O5z31uRPS8sWzR\n", - "NzzEGgQt5ostj7b0jFkZGSfWGdqi3QHmG36Rb825aAA0wHvyDjHW1oLlvQL5RV6dkdsZ8LEe0o/X\n", - "tH2vsNRAQysvtnY6o7l5aOsItDNOt3cNN56zZs2agWWS7/IMrIDwaSzzdETPB/ZRW5Hcrq09mVl1\n", - "4BHj4/9Y1JzDDblivNSLZD153UHL/Px8tz75m2XRfq7kEUN2oQnY58r5loylpaWOD/Ccz5ZzWySd\n", - "T8x7kbOxs5ZZT63s2s/KlibvRfYpazN+t/0Ayz8VJMYqZ/DMjIf2V6RPywlrObPC01+7f/o95zyC\n", - "rDVyVVleMpRFqlAoFAqFQmGFWDWL1Pr16wenYVuXAKfGtl4UliKfXn1v7JpTPpE6OsORAL6vRzt4\n", - "5JFHBpmK3TeneSLl+Mzp15oaz/SJ2/5K7VjpM8sSDjido1m2WW8jhpY3xsJp39XgWy3QEW7A4wPM\n", - "J+NhrujHtLv2HFYjtM3WBwEZyrQeW/Vc/R0tF4udtR1bPFuro8fPOF1xnGd5Ppkj18zi7+YnVqSH\n", - "H3544Itgvwrmm76cDdo8Z13ZeuoIMjA3Nzfww/IcANeOIzs/486y7MM35h0ZbMfKM5EJ16Gz7xDA\n", - "Ku7aeWN+iRFDy5c1/oie12jUaO1YIpw1m76QLSwzWbZ69iLvO5s2bRrwkGdBH+P1ngRscbDPSzZH\n", - "WEVammztYP55pmtyZlGctMfiwrqyLIK26kV2s+CoRWSw9fVqkWVpR97GrIzME20yCwrjbP0uI3Kr\n", - "F3zCigptY+8AWwxd0WKWj5R9A81zt+d5lpu2L1u74WV2a8C6wOKd+QNn/pCLi4uDvQieIktY0jg3\n", - "ZP7PRlmkCoVCoVAoFFaIVbNIzc/Pd6dBTuicZn3CHKs1xknRERHOp4PvyJglJWKYH6nNCxQx1ALb\n", - "vCrf//73I6LXGGy9cmQE9cnsnwAcEUK/zivSjtWRDGNREtDb9o2m4Ht7YCuTtaSxOk7OAzNWhTxi\n", - "Oq9HRM8f500BfIb3RHdh0WitksiKo+8YZxa1B80/+MEPIqK3xHiO7CPVWptcU445sOWN8WTRSfzf\n", - "Fh1btlq5wPKS+QJBG/PvWotuD1/gn+fIluC5ubmOh1g77DsHnB8L65/9T4DXPxo4NJmW9hmMO+vb\n", - "YI3CT1tm6Me54EAr6/zOMz1H7ts+hWjWjMFWI1v0sWBt3rw59dfk76whaLMF01YDLJisI9PiCMP5\n", - "+fmB5Rk4mhd/RO97psVzyp7k/aWdY3xdeMdkEX68B7CoYXn1uvBe5+jWsfcR9LL3OOIX2PICrY5C\n", - "A+xx8Ae/R+/Z7Xd9e8KasqXNkYVZ5HU7zoieH6xp+Nha9rznwkvWsd/RjAeamEvWf5afz1HPc3Nz\n", - "A55DA9Z0zgvQnUXKGmWRKhQKhUKhUFghqtZeoVAoFAqFwgxktfZW7WqPcggRvUkSYBYkFT7p6gnR\n", - "feCBBzqTJD8phUDJB5flcLj6ddddFxF9ing7yblsDWU5KD8Q0Zuk/Z1rr702IvoyC05AyLUKZkNK\n", - "IVAKxY7MgDGRlv/ss8/uzMW+/uJZn/vc56Z4SB/QigmTz9BCWn7ak8AR8zsh6B/4wAe6vl3ywVcU\n", - "lB8ghT/AeZCQape3oPwAcsEVSVvmgPIALptx8803R0TEySefHBERr3zlKyOinxv6Rra4yoJ/0ALP\n", - "KbUydmXk0iaU5WCe4TVXki5XAV983WZHUfpnDBs2bOjM3VzRYKK+/PLLp+gGvl7CyfKP//iPIyLi\n", - "tNNOm6KVK89XvOIVEdFfU7De3ve+93Xy6mt0zObQQskPxsmapB1XoJdccklE9OsCXuMIynOQxcsv\n", - "v7ybT5eRYJzIGH3Dc2SJOTHvKW9BSRE7J/P9Rx99tJMVysnAB3jI+ufnxRdf3PEwYrjukRvLImuU\n", - "vzP3O3fu7J7JPscabVPIRPRrCl5SOoP2dqGgHWHh7NHwkf343nvvHQQquFwNvGbN8V2X2mJOs2SY\n", - "zBHtoaVNf8C1OHJ76aWXRkTPc19lOSCEPd3t2bte8IIXRIuPfOQjERHxO7/zOx2P2VOQb4JmWJsu\n", - "+cK7q02xEhFxzTXXTPERvrFHsz9yHXvFFVd08wlw2H/9618fEf212h/8wR9M8RC4NAzycMMNN0RE\n", - "Xw7NqQq4ht+8eXMnW/QNb7kutpsKe7rf6XahgE/eR12abcOGDR1dyCJ7KH3DO/Y9rnopEZWhrvYK\n", - "hUKhUCgUVohVTcjJSRsnyZ/7uZ+LiOGJk1MuWsLNN98cv/iLvxgRvWOr0Z5CI/qTZuaYaEc+TqR2\n", - "CEZb2rNnT6cRvfzlL4+IodMrnzm9ozG87nWvi4ihI6OfzbMcHgomk0mqeXOSBg6JzUJNAXODNgwt\n", - "v/IrvxIRvbNqxLDoJNoL47eDpwtKo9W95jWviYg+HB44KeDtt98eERFvectbImJ67vxsvvNLv/RL\n", - "EdFbpoBDsWmPdcTyYkdwvr9hw4ZBqg14yN+Zkxe96EVTfAAOTSaY4aSTToqIoaM862RxcTFuu+22\n", - "iIh49atfHRFDDZn5d+Fnxmc5cPoA5uo5z3lORAwdPJ944olBAWysV1lyWLRVtOPf/M3fjIjhWkRm\n", - "oZ2xvupVr4qInp8Rw5B4eITFzikHXGbk1ltvjYjeSdkO/k6vYH62axRZwdoHLaeeeurUM4ETTCKD\n", - "WHbGyvJE9HPI/rJ169YB3ew13kP47BQF5h8/sUS1678Fc3nvvfd247RDvh35oWEshUREv6aRf94D\n", - "XougTbJ61113RUR074ssVN6O+21y0xbsE8g638f6Yyf8hYWFbl5uueWWiOjl/LWvfe1UWyxXLhU1\n", - "5rDd/p+/w1cstG0AEXTRl63jlpe2AHZEPyesI88p/bHv0h+W/lbunAwUuWfNOf0Fcs4eBU3QYvck\n", - "B2cxxr179w6CqtgP2mLbEf1ZJHs/GmWRKhQKhUKhUFghVjX9ASdLNC60AFuBXL5leXl5UJQW2DrS\n", - "au0RQ42M0yynV7Q7F9Y19u/f3526ObWijZlun945tWdlPPieE/GZlrVr13bjsaZkK4DDXF04OUuC\n", - "Sb+MFQvgWFI5l4bx34ETTTJeLJPmi0vIwD+sJGNWSbR5LDP0ifULOESdZ6FhYv0CLoMDn8aSArpv\n", - "+5t5nE6oZz89a7ttoVDkIEskagsUPIR+p9ZwcWY+U0JhrOyL01fwjKyYNZqn/VcyWTQtWMfa0H0n\n", - "b2XcWSoOh4NDG7JmvtBvlqiw3bv4Gxox8wlNWORm0eLUJR6rSwqNlXthHC78jSXBFgmnd/Ca9hy5\n", - "nMmWLVsGBY8B4/B8umAwsP+q90XPUWuR8D7n2w7kwalbgGlBZnnvwEcsmW0pFPp16o2sHA/w+8FF\n", - "fU07NCFffIam9tlt+p6I3m/PNxi20LCv0LflwSka4DNy1bbPyrTYZ87jtMUeGmeVWmr79xpCprye\n", - "oSFLnmqURapQKBQKhUJhhVg1i9Ti4mJ30iZ6BQtDlgQLze6UU07p7oUz7RX49Julwudk6qKe1kha\n", - "KxraHIUu7SPFKd3aO9F+1qRc5JPTPCdvW+q2bNmSljbINEYnw4TnttQ5coSf3/rWtyJi3L/Lifbs\n", - "RwN4li1s0I6WZNrR9vBzQtNtfZPMO2jBEmU/A2tqaIuZLMI3J0vdvn37wNoBDS4VkhUWduQlWqK1\n", - "PMDcr127trPKOcLH8J0/cmKrKX1j2USG4YvX0WQy6dq4xEmWSBReM6933nnnQWlxZB1z2rbPtHbz\n", - "Gnh/wD8v0469HlxgfIxuftLnHXfcERH9XAHWRRa1l5W3Yl9o/cPMw9aXr6Up2+dY/05umCUq5Hns\n", - "0ccff3xnec1KRzGf7G9ZKSQnqnTJLPOljf7Cv5A91/LvAsG22Gb+N/Aamhirad+8efPAssT6z5Lm\n", - "ukyZLTKmBX6wB4wlk2XevRdliapNiwtwe05p5zJvY8mnbb1in0MObDVinzdf4KvfM9DmW6m5ubnB\n", - "OLkNgwbmm/fck00PVRapQqFQKBQKhRVi1SxSrQaEdpMVObU/1ObNm1PfJfrw/7P2Ps3yLFto/P+I\n", - "YTFNn8ZdIsTakLV6nsn3XAjSaKMQ+A40+FTv6BR4aR8SYJ8KMFb2gT6z4sXuA03MpWQcrdGOs30O\n", - "lg9oaPkI3Y6m4hlZyRdb9DJ/E9qN+U5k82QZsy9c1rdLyZiPrYbmKBtbYOyv5AKxlt3M/4R+bZGY\n", - "m5vr5j/zWQFZCYis5Ic1c2Bfu/ZZLj9hSyzgmY70cV4h0zrmr2g47xHWHObT8p6VscEK4P3CI8QD\n", - "tAAAIABJREFUss5YxvY61hzjsf9dNk5byT23YCwaGroy+efZ9pHJrED+O/zLyrjMzc0NrJjmbeZj\n", - "i5x7XI5EZm6xqo4VubV/qiOLgS2MnsesmLPzjPGzXdMuWo6lmXHa2k07z53f1SArAzZWWBrewQfv\n", - "e1mRa/7vtZ29b8b8X7MbqWwdPFmURapQKBQKhUJhhagSMYVCoVAoFAozkJWIKYtUoVAoFAqFwgqx\n", - "aj5S73nPewY5WfjM3eYVV1wREREXXnhhREzfY/o+nbo81MLiPtnPIIqAGlRnnHHGVN++G+cem5p1\n", - "bf0s+1/wmbp81IjyHTn3tK4RBe2OAPKd7/XXXx8RB2oK+X4Y8CzqG7mmoCMgoPFTn/rUVHtHWHgM\n", - "n/3sZ7u2hn0bqBHHOJ01F1pcmw8+Gm0+GuimzpJzN9nPhhph9O2oHcN1H+1DMzc319HN/LjWWpZX\n", - "yjWifG/vqJ2PfexjU7S3NNvPcNu2baN8sZ8KtCAv1BTj/44YNV/e+c53dn9zbiX8KqhXBy2u4+Yo\n", - "LOo+uu4XQPYZ/7Zt27oagYb9MP7kT/4kInoe2g/DPkXZfkH71jeG9UyNMACd9vVAdi0vzmXHHDCn\n", - "XhdtdBJrg7bUK8z4gQ8N46Rvy67zbDGnrIsxfzXmF1k5/fTTI2Lof2O/Pmhv67JGDPcgxkA9PPg+\n", - "Nzc3WGvmIXLrPFKuF+r9xWN0tm6vu3a8tGG+WHPQYl85Ry1mNQizfG2f+tSnUh4aXs/Oq+j3LrS7\n", - "rixo3wG8F6nLh++f/TupBOB9zvLhqiS0px6uc+dF9HJO3U/WnP2ynBeOcWYoi1ShUCgUCoXCCrFq\n", - "FqmI/rSHZsHJ0adDV2RvPe99Auak7XwpjuICsyKqslP+8vLyQEvL8gIRVYFG4dwlwNE3WKagyVF/\n", - "Le2OpssqZPMM509ytEnGV743FqUEMqsO8HcdaWnrhzU4awstH62lmMdGFs2ZZWmHj8wRNM3Pzw+s\n", - "g5ahWXyxVou8O9O5aVxcXBxE42W5eFybMaPN43cEqfk2Fq3kcZkWW5SyqDPLnn+2/TvaNrMCAPiB\n", - "pZrPtgoZzsuU5fpq/2d/VO89WYRZVmUBWtkn4N/i4uIgw7a/O5b1eYxmR7061xmwZWtxcTGVRT5n\n", - "eYAcWWULntd99v3JZJJGaQF/N8vZBMwH36Z472qjWaGF71pW/B6hT0c3eizZ2mzH5vVvHlo+bKGj\n", - "vTPeu3+PxWu8pdO1WR3lbjjy3NYyP9tVTdratKbbcu334yyURapQKBQKhUJhhVg1i9TS0tIgH0T7\n", - "vxa21CwtLQ2yBQNqAmV5oKzV+6TNCTXTSFtfG/vJWLux7xR9WksGZKQlU7dP1GMZ3631ZbmYfI9u\n", - "jcNao2k+mAZijTt7hr+b5XaxFsAYfT8/ZjXMLAgZMh+QjC/OZN1qgabbflmWhyynFT+dTyzTntet\n", - "Wzd4ljUvz4G13mx+7UtzMEtNJtem2zX5Mo0SOHu/LVHt970e7CeRWbvtI+l9ALC/2PI7NqeZf4ll\n", - "zrR7/BmfsKIhi+1+lPHUWn1mYZ6VLTrbL1ofqWz9O9ed92D37e97b3dusINZoWflF/Te5bnILLeZ\n", - "1ShiaAV2tnBgK2eWww84y35mPW7ptDWQNp7/7N2c5XSzLxrrYsy6hLXUay2z2Gf1Hr2ugC2Yrc9p\n", - "ts+ZP9n6z1AWqUKhUCgUCoUVYtUsUm1V7Fm12cb8OTIrkCuNO7pmrEZY2871nty+vTs1XT7tOjLK\n", - "2qDbt/42Eb3m5Wy7oNXE+J8zEnucPvVn7T03pr09qWc+IBns6+R+DGdItsWm1aYclWgtLatBZw3M\n", - "c2faPUdjmc2tYVtm3T6jLfPXGovWcbQZwGphLTbzv3E2eWt5Wd23lp5ZWbOtaWaWF+bEmZ89t+2z\n", - "M1oyS11mTTRcGcD8aL9nS4T7MJxl33Udx/yvWtrbvXBWvbLMN8a024pqeXD7MfnwvpBF3WX7h/1W\n", - "LSfmS/vZlrdMFjPfKNNka5KrEIyN1RGDWd/O7G9LbDb/wOuiXQveM6Epm//MZ87vU9NuC6etjhG9\n", - "LGbvDY9zVpUBf5890JaupaWlwRzYYn0w366DoSxShUKhUCgUCivEqlmk5ufnB/fRsyKtWu3Ip3Xg\n", - "yCcj89dxdEpmNQItDdbWQOY7lI0TbQg/DFvbrAUsLCwMooUyi4FzE7neUTZOWyZAe7K3tpdFOhrm\n", - "W3Yv7/7Q0PnZapH2VXDfs/y1sjp3poUcKK3PXWYFtJxnWg59MTee/4NZD5z3JpN/WyoyHzjLhX0G\n", - "xiw/Hl/G8yy3zyx4TWa+Ey2d1krNeyzQtkxnkUO26HhMLS2ZRdLjB7bqgMx3Ctqximb9tn+z5QV5\n", - "sOXdUY72jXJ7+30tLS2l/lRYDDKfv1mWV8ti5lPZ+opluZYcpWnez7JMZjUcx9qa7iyCDHjODPfj\n", - "uWn5m/l6zapBa8t15jtmC6Yj8trnZFZw+5ABrOmZX57lxRapNoox86fKfOUs5xnKIlUoFAqFQqGw\n", - "QlStvUKhUCgUCoUZqFp7hUKhUCgUCk8xVs1H6pxzzunuT4844oiI6DOAc7/q+mb4BGzYsCEeeuih\n", - "iOh9GaiFRE0h55l69NFHI6K/C6UuE3V/uGclx8W3v/3tiIg4/PDDI6Kv+0b/a9as6XxaHnzwwam+\n", - "3da+DNDe1giL6OsbkUeE9tQe4u+0v+CCC7o7Xt8j85NaWNQUgufQbh8B6pu51h4+QY899thU/5/+\n", - "9KcHNcWyyAfoZj59503kh+uEQTtzTR4a5nTNmjXd/FOXKYvC4zP1qugbwBciS5g7ZNHtkY+HH364\n", - "o5u6TK6Fxf+p3wiYI2qQMReMc/v27VPfpzZfO1b+Z58W+GKewx94zjPdN7TDF3IXwce2vf1QLJOu\n", - "y8bf6XvHjh1Tf4fn1PFyNBNz1I717LPPnmoDHFV0zTXXRMSw7uNhhx0WEf2apm/zJcv8vGbNmm79\n", - "ew3h+0ieOPjl2nn2LWNOkUVoYb+gH/auhx9+ON0X4TXfuffee0f79hzBH+af/k0LYz3uuOPijjvu\n", - "iIh+LswX+63ZNwZ5gXa3Z10wJuQFGdiwYUPHc/ZQ00ItPPuvIS+ef/hiWfS7iz3g3HPP7dqwn/td\n", - "RFvohtdHHXVURETcd999EdHzHHmBj8gJezT7Sytfrm/JT+hmPPCFcUI7/PAcsY+yRgHPhpa5ubmu\n", - "LbXw4PXWrVsjIuKWW26Z+sx8XnTRRVPt2VfaviP6d/oFF1wwNSZXL4iIuOGGGyJiuJ6ZI+/RzH+G\n", - "skgVCoVCoVAorBCrmtnc2s5YXpiIYaTA/v3704igg2V3PVjfWY2dg2U2d1TKrCy5bp9lNnbEQJZl\n", - "O4vMOhgtjnTKIiStac/i4xjGcuu0380ixbK+nQNlLEIzixDLPrtveJ7lOJmVX2usT0fVZPXqsizC\n", - "Gc3tunDU4awswZlMZu3905FSbaWCLLqmbRuRr8WM545yGouUyiKCsohQa9po4AeLworII1Hb586S\n", - "xVn/d2RYJsuW1X379g0i4jLZY7yOUnRUV1a1wGPhuWvXrk3Xc7YPZvtFts9l66P9e/YM052t91lr\n", - "78nsN96vsvxHWV61WbmMHP06FhXuCFJbAbP3BfKR5Q8DGY2O4mv7yLKGZzms3CfIcn2N7QHZecGf\n", - "x6IND4aySBUKhUKhUCisEKtmkVq/fn13ssQXxP4XwJm9169fn2ojrvzMfWqWR8Y1x7hn5p7Wmhp+\n", - "CBs3buzo9n0qMI3W6t03PlBoAXxmDGM5gA6WWbmF65tlOVxAlvNqjI/WIGbl4LLVwH1mmveTsRri\n", - "L5HVObOGQXssE/bzMZ+YA/v3tLmcgPNcub6V4Zwt1pIPVnPMbU13lmdqVm4raLaG6rFu2LBhMK/4\n", - "MGVrznOSWY2cJdmZ4cesBllfhvuEp/hreZxZtmmvzYh+zXn+s1xcXv+uj+dnsP+ANsu+22ZrK6sp\n", - "Zn44q3y2jhjD+vXru98ti+yh0OI+szxSAFrtx2Ta27nPrMCWb2CLrftmbp25e6x/+vL8Wjad4Z19\n", - "P6s+4b2O/nkftf07+322poxZllmAnMBPnm3fsfZ/8Aq68Wez7GYVILL8c5nFr827CPz+h5YnO25Q\n", - "FqlCoVAoFAqFFWLVLFKLi4udpkUUS6bBcqpts0pnvjvWJG0d8YmUyA80S2ggasea2v333x8RB07T\n", - "aCXQb7rpG5qwdpF51VlTf/SjH0XEMArDUR7g8ccfT7OCe5zO2G0tJ7vrt+Y9dlK3BmDfJfPFfkWu\n", - "g5b5irgWlT9H9Lz1OLKsuVmmavrOwHN4NtrjWB+uczVGd8TQekY7vmcLHzTs379/4Ffnvl2DEmTr\n", - "gr8zLtPuelhj/OI7psVzxOeML4zJtI6N1bJkX5as7p0zeWdaLWsUHCyrv3lOG1vJAfscNMIXaLCm\n", - "Tnv7kO3cuXPAYyKFbZHAesEeZdr5CV8d/Qj4PjRF5DcM0AJsYcj4wjixIkCb99G2P78Hshpx5mG2\n", - "LuAXc8g7wBFkoJUB+1V6P8ciYx+fLGM9NDgCd0y+HEHL/HsfA17vnne/d5lr7+FjljreZ4C+23fr\n", - "2P/9OavZ6jls5zazAvo7Y/v5wVAWqUKhUCgUCoUVYtUsUmvWrBnUe8r8Nfz/+fn5mfWHsrpfs6I2\n", - "7EtijbT1b5hVG9D+FLOidtwebSe7v27r/blOV2ZhyjQK89N8yKI6ngyy6Cz71GT30mig9v8Zk5es\n", - "QnxGdxbdlNV3Mh+zGl0Rw4iXWf5I9suyP1bm3zKZTAbznq0hRwJllhfLIuPMKtC3a3KWv57nb1Zk\n", - "jP07wJiPRGaZncUXI+OLZfFg6yiTrQzmg9dF9qxZ+1BE78NinygsEtl3vZ/OwlhNu2zNZdbwbM91\n", - "hHU2B+0el+13bpvtm9m+6HEe7N3lPXRWxN+s9wSYtbe1tNh3KXtPZs/Mojcz2g8mL9BCn8hmZgUE\n", - "/w97bx5seVXdfa9zu+/tgUZo5maeJ0XAeSQxvknqLSsmMZXksZJSKQUhUYSKCJQS8iAEUHiVRKKI\n", - "hjwZXpKUScU8cdZgRA0OiYqRsRFknqG7aejuO5z3D/j8fvt8fr91z+WG1I3Pu79VXafvOfvs39pr\n", - "r73PXmuvIZvnDONquJZ9LNSnMkMtEVNRUVFRUVFRMQa1RExFRUVFRUVFxbOMJbvaO+200zqhkaTE\n", - "51qFciWkfMcMvWLFisZsx/XXBRdc0PRbghBRgPmQ9pQ2yBydXSKAdPXT09Md51/TQukUnAv53E7W\n", - "F110UUS0pRBsRrUjY1lqw6Zmrl4I44QW+qYP+sSsigMffVOuAPM7fKQ9/Lr44oubUgWZ461LfsBz\n", - "zKjwpXRUjWhT/ruMg5Mmrl69Os4///yIaEt+4PzKdyhDBF8uvPDCkb6ROcYHTfAF2l2CCD5OTU01\n", - "z3JpE6e78DUsZRmQc8rwMD7C3Pn+xRdf3OGL5x25+MAHPhARbSkE1hClUOBTJud2NvaVaVnGyaHy\n", - "DipwaQuX2bBDM+2ZU8BYkclSvpBb0pfwDDtuM873vOc9IzQa8Bz5gufwy1fAq1atanhOOSHG43mE\n", - "95SrgecOCAE8k/3ijDPOGOFH6azvvYL5R/ZwbHaJIGinRAhygizagd6lk2i30047NX3yHdqah048\n", - "7DmClmyOWKsf/OAHR9o//vjjnbQ28JTSOdDi0jnsRdAGH5FFxslcwkeXzinLeHmvZq3+/u//fkS0\n", - "c2RncadoQV74fWH+CW6ibBVzfdlll3X2OfgBbfCJ31yvOV/1A/jIXse6g8/M/apVq5rfImTFey40\n", - "8Qz2OdrTJ/wozwMR3f3F7hebNm1q/k9ZHvhilw5ogS/QnqFapCoqKioqKioqFokls0htv/32TWK2\n", - "733vexHRhsUecMABI23RDjgtLl++PHbZZZeI6Ia+OlyfEzGndDuAoiW6bMGPfvSjiIjYfffdR9qX\n", - "JSXok5NxFjLJ51gasI5Y43QyUTQWaCiLLgK0jjJRaEknQJtjvOZplvSO7xGy2pfy34kkQVY+hXYu\n", - "x8IY7NDsgrmmHS2o7Aseo1Ezn05iyDjh9a233jry/X322WekfZbQbdu2bU0fwONAc0ZuHnjggZHP\n", - "bTVjbqFp1113jT6sXr26+c5PfvKTiIg48MADR9q4+LAtEw5/hy/IE7zPfCrn5uYa+R2X/NXWPIrb\n", - "Mv8eJ5o5c8e8I5PlGmWc0ABPSVvgcQI+p2/kxg7tXld77rnnyFjKPQDeMf7bbrstIiL22muvkfcB\n", - "PGb8fP+mm26KiHauAPJlB/K5ublO4AZrDTrhNbLocbkgNBq6AyBAqfVHRFx77bWNDJruhx56KCLa\n", - "dcsag9deF053se+++0ZEyxfvO2VySMbBvDgJMs90YlX68DhdxBf+IGfm48zMTLP/O72N+VIm2I1o\n", - "ixUzZzwDsL7gM4WZb7zxxoiIOOSQQzp9IxeMl/dtaXR6IV6ZM4+TsUErtDFXZToOeMpcQNMtt9wS\n", - "EREHH3zwSN/+TUd2kRsKb7t/xsQY995773T9sy/OV35sPlSLVEVFRUVFRUXFIrFkFqkHH3wwDjvs\n", - "sIiIeO973xsREV/4whcioj2ZAk7BnGofeOCBRsNAIwRZKH1WKBVNi354Fq9oywCt6OGHH25O39be\n", - "TQtwuK8tGJzyrcFwqrc1ZevWrU2f0LX33ntHRDes2z5gz3ve8yIi4lvf+lZEdDU1NC20Y2i+8847\n", - "I6LVCiK6ye4c3u65gOdo4FgW4HlWzBP+4gtw6KGHRkSr4cKTss0ee+wRERGvetWrIqLV1gDjfulL\n", - "XxoREb/xG78RERFXXnllRET88Ic/HGlP/06SOhgMOv54aJzMI3RmYf8kpKOfI488MiKisb7ecccd\n", - "I+1LayxaHH2TJBbYJwLew/OsgCiWHb7PHDjh49zcXMdqiQyaL8jgEUccERERr33tayMi4p//+Z97\n", - "aWecWCKR3euuuy4iRpNksoZYt1g39ttvv4jI0zcgJy7LYYs37yNf0IqVqVx3rAss7K985SsjIuKa\n", - "a66JiK61C22ZfYXvYXGzxdv7D/LmuYlo55lnQANzsG7dupH2rEFkzr51WLIAcvKCF7wgIiJe8YpX\n", - "NPNjKwByv379+ohoLS/0gbwDFxRn3Px+2IJVphuAJ/Y7BcgLsmVLHH67gD3Y+25WiHfZsmXNXsk8\n", - "8gwnd2WdYEli/rG8lftcRHvDAQ2vfvWrI6Kdq9Ln1GXW4CG/Qb4dsaWKvvge+4Fpx3rO7dL1118f\n", - "EREvfvGLm7YuS2NfMJdcsz/i97///Yho5cRzBO2sdWjYZZddYv/99x9pizwgo7bAl7cd86FapCoq\n", - "KioqKioqFokls0itXr06Pv/5z0dEq4lnGiwnVjT0hx56aGxpC995ZonleDba0XOf+9yIaLUcWw3Q\n", - "mg444IC4/fbbIyIvVcDfLgAKfM8MjY6o4nRsbWe77bZr3kMDwGJkixR9cY8OL7FgoWEDtECsg7Tz\n", - "XXs5Po87Q+aH4lIqAA2Fzynf4yioiG70zXe/+92IaLVB08q8f+c734mIiN/6rd+KiIhjjz02IroW\n", - "LPt3gRUrVnQsKWg7PButDk3Sssgc0Q/yheaF7AG0yQ0bNjT04zdgfwpreWhaWJHMc5f38GufBdPJ\n", - "YR0JA9Cs0RRf//rXj9Buy5uLmmPpcCRWRLeYLLzmu7a82MKKZSor/YN80Y7++wrFsi/8+7//e0S0\n", - "828fOIBVHEsFPlXQlhWthQ88e3p6uuPbwT5x+OGHR0Q7/9DtiFnkB8sTfMhKrSBHyOELX/jCTskT\n", - "wDzj24M8sIdl1lRoMV+8juDf1q1bO1Zu3wLQh0u+uEwTYM6wgrBm2Q9s8dywYUOzt2K1ZN/zXsRe\n", - "Q59YXqGJ7wFuC26++eaIiPjsZz8bEe0c89sW0cqik9tCW1Y6Basf7bK9C1qYc3w14avLAvXRhCxm\n", - "ln1+g2644YaIaC1vLjnDXGCFZi947LHHOlZA+MC46JNnVh+pioqKioqKior/YiyZRWowGMTzn//8\n", - "iGi1IbT9rBQE3vnbb799qtVxendhW7Qc+xmhNfM9tAJOybYCoanMzc01J3+0XWtejk6wNcPjdDFG\n", - "tKnsfn9ubq6jIXOiNi1oc5zOrR17nNCMFsSpHw2u5DvPgueMq6+ERzlOvmeN2hqJIyrRaJmL0gcD\n", - "LYf5RItx7iaAtQf+/MM//MPI+9ZgATSXRUBtvWAemROXjDEtjNsymkU/0u9znvOcZj6ZJ/MwK9vi\n", - "yBngqB1HwtinYmJiopknZITv2toJb6Hxq1/9ajOOiK7lDXnhc2hwLrSI7tpCU2ZubGHAWsj4yz2m\n", - "HDdgTGiwWCbgVzlWeMt4nB/M65+5oU9ode42j5X9B1kty1cBF8BG44anWbkNaPLcWNaxLrEPlbcG\n", - "jk6zdZQ5Yg3aqoMVARpo5/JFoLTcZAWCgYv4wmv6dKQ0e43zb2WFpXfaaadGDmz18PyzV+Ezxnza\n", - "yg7gE5YrLFD81pXtXXSeeXQOL8B+8m//9m8R0e65jNfryHsU8oCclHPutcmz2FMz32LWFlblrMQQ\n", - "oH0ZBWvZclQqYJxZ2TKjWqQqKioqKioqKhaJWmuvoqKioqKiomIMaq29ioqKioqKiopnGUvmI/Wu\n", - "d72rU4vNNcmoKXXCCSdExGiUDnfV3Kd+4hOfiIi2/hCWNvp07h7q+LjuF3A9N2oKle3tE+Q6TtAC\n", - "iE7hHplxXnHFFRHR1hTi2c62y105dX9OPPHEji+Xc25Rf4r6dozf9c24T/7oRz8aEW0NMu646d95\n", - "Uy6//PKmXpGz/TpKkfmkphyw3wa0UJuL+ml8Dp/LaI1PfvKTEdHWfHIdPwMeUlPK2bN9/4680J57\n", - "d2jdtGlTM25qYcEX+yUg764pR3va8WzXiaM2H3M0Ozvb8AS/CtYHNaWQLWQOWXJdPGptwXP6w8eB\n", - "8SI3V1111QjtJf3OWQMPqSnnGpSAuTjvvPNG+oZfrlmJjF5xxRXNmoMfyBZ94r9F39ROZO7w12CO\n", - "2HOQXe8Xziq+bdu2Th03YH8a1/FiXTBO2tmPDXlh/hkj35uYmGieBS1ve9vbIqJdk9CNbCEPzD98\n", - "cV3QMjKw7N98f+yxx5r1mtVDdc05V6Ogvh08d8Qgz2KOoAW+LFu2rBNVxzPZ59gX7StlHynaU8fP\n", - "Ubt8j/0D+TrrrLMaXnmemIuyXmVJi2mCL6x//y4C+IQsX3nllc16znx/8DujpiS5He0TiEyyjqjN\n", - "6Jp19v/avHlzsxfBc1dCgCb45BqUrvdZ+itHtPsL68j+UMuWLWt4z3zye2E5hyZ+s/mNzlAtUhUV\n", - "FRUVFRUVi8SSWaTKKB+0nKy+DRonJ8zBYNBkKM08/N0nmpejsND2nMk4q8DO9weDwQg9fbSgzfC+\n", - "tbosagtaXQ27LzrFkX6c5q1x8Gw0JkcQOS+QLXnOz1NmT7ZWzt+2NLo9NDO/8NaRMozJ9aDov7R8\n", - "0YejNWmbZcJ3dXNrg6aFCBk0s1WrVnV4Dl3WEKHRuXt4NrSjDdEveWhAWXGecbgKPUC24AeRUERZ\n", - "WXZteSJzuuvclbTbAsX4srpvzL+zCjvXE/3aKmrLVER33SMzZU3EvnHyPUeEWXaRB+9J9OtoyYiu\n", - "JQKZyaJ2gfckR+3ZIsfanp6eTtezx0s0lqP2oA0+OIrTa5E55Hs77rhjb1RtRDtvjJe9yPnHDGgn\n", - "Kg/ruy0PZdUBxplZSvjblnxk1zyHr+QZZCxEzpHjCjz55JMNDaw5Xp1l2xZr+MKadTZ51ov5yffL\n", - "mpVek694xSsios21ZLptyWUuswhy2nud9UW9OVeXf2u8hqCdZzuS2HPEnNKuvDHyenZ+MeiFl76p\n", - "ylAtUhUVFRUVFRUVi8SSWaR23333Jvvp3/3d30VEW1OOmkGA0+ExxxwTERFvfvObm5o+f/ZnfzbS\n", - "Fu2HEyZaGqdZ5zBBs+JU63t7W8do9/DDDzc5p6hXhXYH6AtthRpKn/rUpyKia5HgtIx2hI8B4ye/\n", - "CHjyyScbTYI2Rx99dER0LSmcvMkwi7ZDTh9nwrZ1ECsROW76qnmX1ecjujWyABoHn1MXzZYpgMZJ\n", - "1vk3vOENERHx7W9/OyIirr766qYtGhH8IC9QFp1qbY68KeRBsQXLFeiZ04ceeqjJYA3gC7KKJkq+\n", - "GMO+ZWiiWL9c96nMDUUb5rOshViODxmCbmghWzhAfn7hF34hItrs43/xF38REd3s41NTUw39yBiW\n", - "A/vKIUPOyMz68fp3HirkBI279BFxjjLGYcsEYI3CB9YyGbrJfA9cHZ7++/KrwQ8y8VNVgBpqtjDa\n", - "WsL+SK4rXgH7Bf0hX+vXr+/Uq7PVD58pxkH+NPcNkBtk0PsF/IMPt9xyS1MVwRm52UtcsYFx2IrB\n", - "34yfum3Q+K//+q8j7dkDDj/88GZ+2COc/8o+QFiBkVGPk98L5pJcgtBIpnywww47NPsdn/3oRz+K\n", - "iO56tk+sfeO8p7MX2ZLPnlX6HvJbw/wfd9xxEdHKGFUGAPsl42UNwg9bPP1b5byNzo0X0fVLQv6z\n", - "+Wft0p4xZb/R0ALfZmdn03xi8AprJn/XWnsVFRUVFRUVFf/FWDKL1N13391oAWiBRx11VER0NRjq\n", - "wnE6vPrqq5tK8a6IjXZq7S7zebE1xZqYI4rKmkzQizZmaxdaIZrCtddeGxGt5uiMv7aOMDZOyX01\n", - "7ZwNltN7lpGVZ6Ld9fk8lX87AgstqLw7tv+E77D7KqKXz0ZLQgtyFAoaFv2gXX7605/u0OKaTq4R\n", - "aI0EGYS3hx56aES0/gi2pqFx8z3m9IknnkijZ+AhmimvtrzBr+yZtqqVkWlYcxinrTiOtkGmsOq5\n", - "gjrWHjRvomK/8pWvjDwbDAaDZpz4OEGLZQsLDX2g1TPP47RGtFv+to9MXx9ZW+YZzfsb3/hGRLQa\n", - "ta3MgLmyD1G5RrECIRdYoOBt5jtIH/DRVnXAGseqwD6z7777diwpjAM+XHPNNRHRWmC8MChjAAAg\n", - "AElEQVS9z/E3a4656bNIR7T7ImO+//77mz3GPm/0yeeOUrXPi+umYsmEBvOR34l77rmnkTXWg/2S\n", - "4Cn7G3sSa9O+YKxpnsF+Q/+2BM7OzjZ7Bc9iLrz+s3qAptVAXvidRDaxxkd0s6MTbctvjC3YztTO\n", - "HCLLniPG75udPn9A5t9ryL+fhqNZmQv/jtpPknUxNTXVsY77XMC6YRz2Bc1QLVIVFRUVFRUVFYvE\n", - "klmkIlrLkzUWTvCA0y6REhMTE536TJ/5zGcioj2Nor2gKXEitrULbY+TKhqro+EAp9/BYNCpHO22\n", - "nIQdPUCkhGF/LcYAjX110lwrzFFnwNou98t9FqaIbq1B5z7qs3i5D1umgCMG0dSznE+MCX8VNFAi\n", - "yUqLl+saOoLQmjSaCK9uZ82L9x3tuf3223fGz3eROcue5cWRYvAFa0A2R6UFC63O1ivGh4XOddBs\n", - "BWOe8fuCj7S3drx58+bmGWjraLvW6qGNvtDi+8ZT0g7NyLCjwSK6vlCOwrF11DXoXM/R42TeoYFX\n", - "9plS1l0P1Lm7LFuOYqJv+GefSvvOQPPc3FxqScFPh2cjW5bNbA6w1Jl273WrVq3qWDlAWRMwop2D\n", - "bG/hWaw91o2tSaAcOzzHWuP5B+6TWwPvXXyf3x3XRzTtpWWY3xhqzGZWIObfFhhHdVo+XAeznEOv\n", - "c76Lhc5WPdc3ZQ7YXywftIffyBPtSj7QR+Yj5ZsXPwP4twn4N5DvrVy5srOe4Sny699H+9RlqBap\n", - "ioqKioqKiopFotbaq6ioqKioqKgYg1prr6KioqKioqLiWcaS+Ui9853v7Nxt24ufOnGu4zQ7O9u5\n", - "/6TODjWCuNt0fS76pi6T61txf+u7bvLnUINqdna2uTd2Vmz6PuOMM0bed0QD9+uMk7o/wBnTGT+1\n", - "mc4444zmnhm6HYVAW9fOcu0pXml/yimnjLS33wavH/rQh5q2vqt29AQ1wqi15M+B64S5phhzU96Z\n", - "Qzd1uUwDtPE37akRxRzRt30p3B5aSt8C6PnjP/7jkbb0iR8Gcg8t1M6ivXluvtKesQ6Hww7d5fz0\n", - "0ZLlWYLnZ5555ggt9i2DJub0lFNO6dRvc3RmxvPMp4F1QX1D+7t5bi+55JJOHTfLLeP2unC2ffjo\n", - "NWo+ur7k5ORkMz+unebcU67jyPq3r5D98VzL0f2XfWe18Owr4zqO9O16Zt5fXN+s3Dc9Tuqy0ZY9\n", - "mu84Wg3aPUf2Z4O2PvnKMlPTFr7Qp32lvBd5nOYjr9QsLOst+vbHexHy4vXQJ+cR7fq3P6DXyYc/\n", - "/OFOfcs+uY1o59N1ImnndQLtZd3PiPb3CBlYvnx505a9hT6cNd2/F9neZZ9a+mcd0X9Zu5BnMJ+u\n", - "tefoW++jGapFqqKioqKioqJikVgyi9RwOOxoFpm/ljXy0grgaANr885tZA3FGVldqds0lf1bS7Nl\n", - "xXWKsvp32VgcpdCXR8aZlkGm/dg6No735ldfHSzaZNqf33c9xKx+EzD/0KqyqMAStnqYFsuJtaOs\n", - "b1s8yrpehvseB8+Vo1v62jlaNeO5I4GycZrn42S3pHOcPGQ0+nPD/OibG2vOWV3LjGbXi/S6svZv\n", - "q3TJl8zimtHv2qOe0yyPmOVqcnKy8x7Pcn1LRyGWfZTPthXY/Tv79NzcXFo7Fdiq68oIpt17crZH\n", - "l9bHbB903xnc3pF149Z2yYfMYlS27XtW9rnf9z5R0u42XoOmxdawcTXnbC1kj3Y28vL/XksL/f13\n", - "P6Yty7c1HA5TnmbPGCcfTbsFtaqoqKioqKioqOhgySxSpQ+Kc1ZYI7XmVeYwsZ+V87pwMuZ5bk8e\n", - "JvokNw15JTJapqenO9qsNQZbLYwss3GmWfRpXoyPV8ZnWly3KbOeGc5O3mfBMl220I3TGMa1t1bM\n", - "WG1VKf/vectykzAu5CWbQ0AuGPNxZmamk1tlnDacyYX7zvJrlXzzGsq0XWvUfRm5+2i15tZn8XAb\n", - "W2Qz2E8vs6ZkudHK961B23qR9Z1ZRy1HjNE538gJVO5rlh37bGTWEftE8Wp58n5R1mhzjjKPi+/Q\n", - "Lluj5oP5BMh1V/oxZmuRv9lrx+UPct1TeA/tmUWqfFZm9fb7C7Wu21cos0yVz7O107Q4lyGgz3Fz\n", - "lPlU9dE3bk3aVzDL2WTYMuW1HdHNn8Xey3eyfZL34ZPzkZkGclp5z+vrO0NmHTeqRaqioqKioqKi\n", - "YpFYMotUqflnlghgi08ZtefTOydI32H3WS8iuloQ2v9CfCTsR5JltrbVKPPX4W80UmumzmxbWgHG\n", - "jdOa1kLvvq019dFuLdfw+4zH/hnZfbXv2W2h6bsT9/gyPyNb2DLtH/Bs5rLUSD0/jrob5/OW+VLY\n", - "d8ZjHA6Hnei0bF6h35aoTKuz/4p9yEpaMkuLYd7CN9fBcvvMalDSYln0dzOLhNcosEaard2+igKZ\n", - "z0sm545yg+euZWna7ddpq3v5HtYcW/ky/8zMSmRaXAlgy5YtvXSU380s7lkGf1suPMegtGBnFnjD\n", - "spRZQd3O+8s4i3bZZpxPpbPHu6/MEtdnNXIUIq/ZurAlMruZ8bP5HnPv6Nfy/7ZM8l2sm8ARyY40\n", - "zqzGtqJNT093eJpF0vo3aRyW7CBVMtbm5cx82GeWzA4vFioY5bB2ihLa9En7+RhJW5tBTQubcxbO\n", - "DnxgyBxEy+dnYcnZJgZf7BybbRjZQuvDuB884IVg8292VZiVa+ij29/JfhB8ePW4fTjy5r2QA+lC\n", - "rxl9jbrQq8Bly5alfQJ4bqdhbyAZTVkB6pI2t83k3Ie9cT8QWQqLvgO8nz1OcaAPh2K7uLnbIy9e\n", - "syUtnhPvJVmJGL8/jnYfep988sk0CAd4v8icx59pwuaSVh9K3YarGf9YW254n8Maa3LcflHCSorf\n", - "t4zN57Bc9pPtH2B2djZVgAzez357Fur43HcgzRSjcQfp7Irb7X249Tosx8I8OgXPuIAg/774d9W0\n", - "9KU+yZQbH6Ce6UGqXu1VVFRUVFRUVCwStURMRUVFRUVFRcUY1BIxFRUVFRUVFRXPMpbMR+q0005L\n", - "HfSwkn3kIx+JiIi3v/3tI+2mp6c7d9OUTSjLZpSv3NXi0HrRRRdFRFuuhPtUEnTaZ4rU+ZQrWLly\n", - "Zefe3SUf3va2t0VE6+DJ5zj84iPw0Y9+tOFJRNfJmDtlp/E//fTTO/4Uvtt2OYGsNIjLFZDy3/yD\n", - "FnxKLr/88k45AWBrJ2n53/e+9430YVq4+6akxIknnjjyvuVlu+22a3jocdpPg2fRnhIBPNs8Z9yU\n", - "zkBe5vN7Qm5dlsN+e4zDJYJo5ySx0E4JGkoQTU5ONvQ7jcdll10WEW3JH/sA+W9k6+STTx7ph7mC\n", - "NtYJfHz3u9+d+oIg/9Dy1re+daSd/SpYH7SnvIUd3SlDAZ+uuOKKzvxkPGeOkC3TAu2EULvsk9d+\n", - "GUDBfJ500kkjfWUJN7NSGDzbaSRYF7S3/9umTZua8XpfpA37IOuDvYi+2efcnj0IntP++OOPj4hR\n", - "Px77JyIr9G05R8YYN3sX85+VzOF9+P6Wt7wlIkb3H/sElnJb0moHfuAyPsieAyTgD7SfdNJJneSt\n", - "/i1Czl0Ky+W8GA9zSjk0rx/4yPf+6I/+qFnPTtsBX57znOeM0EJ7+wraT8tleex7VwbOXHjhhRHR\n", - "8txlaux3xj7H3oWMel8BLs1F/9BS0g7dlPxxolmXI6PvDNUiVVFRUVFRUVGxSCyZRaqELRPjQm6H\n", - "w2HHagNsHXLZAVso7PGPppFFFJWa/7iSGFki0Sy02FELLtPg9tu2beto3C4BAtDieN9WrixKaaEJ\n", - "yfraZnzJCiZDk/txigInWS01DSfpy6xBgD6sxfWV/CjhJHHbtm3r8NAWCD73s0x7loB1vmhW5p3x\n", - "OEWE1wF/Z2H/9Mer56wPWYRnlvzVllo0zkwWLSd9/p22KHiexqU/MH/Grens+2Uf8NDf8Xr2XrRh\n", - "w4aI6CYWBLaylRa9LFLWVqIsQaPfJ2IYuepLxVK2m5ubizVr1vSOE2QWCa9/+GgrGpgvEhPesP9Z\n", - "tmxR5PMsgatpsrXQsr5ly5aOhanPQlL2yT6Q7af+m+9hPZ4vajGLCM32Fu+HIEthAh+coLVs78jB\n", - "7PfNtLPukYMsujGLQF2+fHmazsTrN0sOmqFapCoqKioqKioqFokltUjZD4lToHPVOKna7Oxs8x1r\n", - "3rbqcPeblROgRIxLJnBCzTT7bdu2Nd/Jck44X4a1n0wLsH/OfCUlOJ3z6vIJAA3BFoWsdA7aJLTw\n", - "6u/NR+e40zx8g3bfSwPPibWFvhIxwPfupgltH+3m4YcfHvnccwQf+3KGZdZLl/7IcpMwPmv7Tp4H\n", - "mKPhcJjmxwG29ti3Iyusm1ks5stbxWeWQZAV382sxtDukiP0U47F69UWyXFwbppx+djYX/qso7Y8\n", - "Wzu3vEC7Ew1m7XmmLbkTExMdPjDv5mVmRcyS5Ga0+O9t27Y11ilbM5wU0hYG0wLNzAVjs49c+eyI\n", - "p/jtvdbrmTVEXx5PNke2ttm6CrZu3drMj9eU16DnjByHmcXGZb+8T5R8t1+Wf2sXWrYLGr3f8Czm\n", - "3Oun5Lt9hKGBvTcr5p3R4r0pS645MTHRmR9b6pGlvvxX82GsRWowGPzpYDC4fzAY/LB4b6fBYPCl\n", - "wWBw82Aw+OJgMNix+OyswWBwy2AwuHEwGPzCgqioqKioqKioqPgpxELUtCsj4o8j4s+L986MiC8N\n", - "h8MPDAaDM57++8zBYHBkRPxmRBwZEXtFxJcHg8Ghw+Gwc6ybnp7u+EaATPPqK8Ngy4DLD6CdoBXY\n", - "IuFitT6Jcu8MykyvvtP3OHyP7qi9LC1/Vq7EmvrExEQzLkcy+ZS+cePGEVqz0h/Az7JPzXylMDKf\n", - "BeAs0sCFpoE1L2tXpbzYhwPtJPN5srboAqkeC/Jgi2WfVcgWhbJ8Rvk54FmmPfN7KjPdOwLW2qst\n", - "snzXvg0APtgfDQuMrQzl9y2/7tu+HbaWuG8X+53Pd2yctTfzkYC3Cy2g7bVpP8+yL/p2pKTnCKuG\n", - "9yJrzdlYSsuefWHcxvuj58hW4Iz3gOcx1uXLl6dZwrOKD6xF88W+YrZ4er/ouyGALv9e2IJvv8bM\n", - "Updl0zampqY6lnb2rcwC5QhDYFrY042+DOG2DGURpADabGHKstV7j+N3qM8HF567XFUWlQ1oh5xk\n", - "vpT2Ey79nrLfOVvFs/nPMNYiNRwOr4mIR/X26yPifz39//8VEb/y9P9/OSKuGg6H08Ph8PaIWB8R\n", - "L1kQJRUVFRUVFRUVP2VYrI/U7sPh8P6n/39/ROz+9P/3jIhri3Z3xVOWqQ6Gw2Fz+sv8nICLd05N\n", - "TaXRZI4E4ETtIpMATcRRHVn9vLLWlttaK3F+JGu9WX07jzeLnCh5kGmzwCdx7vhddDNr76i/8vPs\n", - "Djs7zWdWE99pA9+/83ep/QJb+5zDx9oxfOP9HXbYYeT9jC99xUr7oiojujXFMr8U52AZZx0p5Q0t\n", - "N4t8gpYsUsztmW/6hRasAl6zW7Zs6ayVrD6f8wDxeRZZ6XWVWY/K9+yvx/jH1S90/pssysnWpT7r\n", - "i+tY2prR5/NYjsc+VpYX+7mUFs1Mq7e1I4tO6rP+z0eLv1f6/5jHlvNxtda8l3vvysY4NzfXKQBv\n", - "WbRPDO2yKFXLxzh/0NWrV3d+S9gPvIaw4jA+rxPDFnr8N/ssdc7BNC4/lK2pyIktd8AFs73v9lmI\n", - "oS/zQzS8HjJrqq3FpTW1z5evj95niv901N7wKWrns3/VcjAVFRUVFRUV/0diQbX2BoPB/hHxv4fD\n", - "4VFP/31jRPzscDi8bzAYrIuIq4fD4eGDweDMiIjhcHjh0+0+HxHnDIfDb6m/eriqqKioqKio+KnB\n", - "s11r7x8j4s1P///NEfEPxfv/YzAYTA0GgwMi4pCI+PYin1FRUVFRUVFR8d8aYy8EB4PBVRHxMxGx\n", - "y2AwuDMifj8iLoyIvx0MBm+NiNsj4jciIobD4fWDweBvI+L6iJiJiN8ZJiav3/3d343HHnvsKSKe\n", - "vpfcddddI6K946QeDvWt8NafnZ3t+J9QC42aT/SFT8ftt98eEe2d6F/91V81dDw9zojo+soQpQUt\n", - "1FqKaKNJ8AeAFuoyUfeL8fE50RnQcuWVV0ZEW1PQeWQcFUidqHe84x0Nr/bbb7+IaH17eAa1k6Bl\n", - "zz33jIiIvfZ6ynXthhtuiIjWL8N1vPBL4G7c9/eXXHJJ07ejK533h5pizKfbcc/OK+3huX2HGOP0\n", - "9HTDQ9oyHubfuciohcX8E43GXN5zzz0R0foIMP/ULLPf27p16+Khhx6KiIjzzz9/pG/q0iEHDzzw\n", - "wMg4XA8PueIZjgZl/t/1rnc1/djPgPFaFsmbxrzCQ+aOGnTU2rKPCZFC8PHyyy+PiKdqVjkCLquF\n", - "Bt2O7GGc9EN9O+bUeamgCfm55JJLGp4zPuafvpEt+qa+mWuQ7bzzziPvs7+wLng2finsL6tWrWra\n", - "uo6f/ct4FnPkvhkDexlz5fpm9vOYmZnp1KtjPnk2r8gsf1NTDDm3Hyu8Zl9EFum/lAGva/jC/O+2\n", - "224jfSH3XnPU5oNWxskehhyxX1DjcNOmTc38sHfwG3LFFVeM0L3TTjtFRLsmkXOehbxQm82+NpZN\n", - "aD/55JMbPyxn++b1E5/4RES0NQLZixz1yiu0s1/QD79Z9ne8+OKLGx46P1YZ+RvR8pD5hw+sA/ZH\n", - "nuX6dvw+OAJ7zZo1ccEFF0REW2vPtRbtt8VvEeNELpAXxgm/kHXXTy3nEvqYT9OS+aGyRjOMPUgN\n", - "h8M3Jh/9X0n7P4yIPxzXb0VFRUVFRUXFTzuWNLP5AQccEBGtFnPjjTdGRNdznhMlGtkRRxzRaG3O\n", - "RI12++CDD0ZExJ133jnyPidSwCnYWWSzTOicUA866KDGsnDLLbdERKs5AufoGZeRFW3IkWRYm5x9\n", - "d2Jiohk/dGL9yKJI4AsaA1pelhGcZz/66FMZMPrq4VnLycYFnHME7QbNAhoBGghzhdzA77vuuqsz\n", - "TuYbftCnc6+U1ckjWosN7yMXBnN7yCGHNO85UopxlxnII1rt17TQ5x577DHyfebd7cvcV+vWrYuI\n", - "dj6d7RlgBd5ll10iImKfffaJiNaiApyNnzlCdk3LcDhs1uS4XDz8vf/++0dEO0eso4wvtoY6x1tE\n", - "N8KT9QHPs9w80HzQQQdFRMSRRx4ZERFf/vKXR9oj294f+nIXWe4Zh61AwBo2c4V11LSzT8APrM0b\n", - "NmzorAnovu+++0aejawZzmkGP7M6oY5ILfMneZ4cVYYlCjl3pCTtnLOL8XuvK6Me165dGxGtRfLu\n", - "u+8eacs+AQ22qmdzBK2sC+TL+8Xc3FzTB1ZCeOr93FY/W/8sT4xz7733johWbtirS2sTawpZ2Xff\n", - "fSOitZLdf//9UYJ27LHO8ZRlWXdOOOfpKwF9tCmj8kt4/hmLaxMCR3+W0fCeT3jKHgQP4UcWMWnU\n", - "WnsVFRUVFRUVFYvEklmkNm7c2FgWOM2jeVmD5bSLtWDvvfeOe++9t+mnry3v0w7LASdP4Ltit7fv\n", - "Ce3uvPPORqvHn8K+LJx+0ZzQRLOcJvDh6KOPHvk+mvjNN9880n44HDYnZuhGs/I4OZWj9btWoS11\n", - "aAG2jjkrbdm34SzKBtYCtMTMamANDVqhsbRKou2hpWA1RNtB4wBoJLfddltEtNqc62ABxoocIGfL\n", - "ly/vaNLQgB8a/HCNKY/z8MMPj4hW3pnb66+/vrf9gw8+2GitWDGyrL833XRTRLRrjWfYagCNzDf9\n", - "zpdlm7bwEPpYHwANFBqQVTR285FnMrf06/pYEa2mbH+RzELHWkQDZf3wausoNOLfg8Xj6quvjoiu\n", - "BSMiz4Ld17Zsj/WIceITBJyfDD6vWbOmMz/IM/KKRQKr4Pr160faw2O+x5wiJ55T+IKVZdOmTQ3P\n", - "s3ql9AlssQfI8ote9KKIaNeV14NpmZ6ebsaL5SW7kWD+4aX9MQG/TawH5ggZznKmRbQ865Pbkjbm\n", - "H9rZa5BpgKxz6wJfbEUux8FeybPtQwqQLW4kDjvssJHvsz6Ara2sC9eZjGh56L3atAL44nxc9G2e\n", - "u9oHcz87O9t5Fm35XbT1yzzPUC1SFRUVFRUVFRWLxJJZpFavXt1o6sARNgANhVPwF7/4xeYzrBhu\n", - "65N0FqXASfzAAw8c+Z4ztQI0j0cffbSxFOBnYGuHa6Q5A7EtOWj08MV1jayprVq1qvGLsPZnujm9\n", - "H3PMMRHRamDwxXfeaKJoGPDN9/0Ro7WM+saXZQenD/tWWSNBo4CGa6+9duR5fA5PIlotxhmIzRf7\n", - "3aBhog3asoemyjOvu+66iHhKg7GWznxbQ8pqyjHuz3/+802fEf08j2j5uttuuzXaPXRlVgCswKyl\n", - "PgtjOW6PwdGQZf/MB7KUWfXo2+u5jIAs4WzaWAOY05IW85jPvO4NfEHQuFmD1khZk1iH4QvPK62v\n", - "aOX2M8IKaJ7zXWQPa9G4LOWsm2uuuSYinhpzZpHGkoac49PjvcgWGfpztna3Zw1MTEw01ivv555P\n", - "5AS+ZBaKW2+9NSLaOUDWM1q22267xkLGOmVOAOPmdoG+keWswgN+Scw/68TWke22265j9eiT2/JZ\n", - "PNvZxTO/JPY4+8yVfGHc7HeuR2d5gQbk3DVZbcGC5zwbHz3WT2kJZPzMH8/OKj4gc/CLvqAxy4XJ\n", - "GMt6kZZF6Pa8e/8Yh2qRqqioqKioqKhYJJY0ao+TJSdn1/PJ2q9evTqNHrB1xDkqfHp1LS7fu2an\n", - "3bVr13a+k1XGRuNynSZrmq5/BTiR99X94zu2dpkWV8xGU7AWBFy/ifZZ3TfoKfsEWW4O+MKp3/mz\n", - "gPnM9/qsadDnaCr6tmxZPtA0XasNWANFk52bm+v4gtlHyJq4eQ7tWFldY9H9l1FRzFMWOen1Yi3Q\n", - "PHcNSmA5K+F8an3+ERFd/wyswfZ9ANDG+2jXfRE1jAft3JGz5iFWE88n7bP9xfyerwYdfHENTa9/\n", - "57JzHrbMgs37PGfFihWdvr13YOUwb02LLVPZHmdr5LZt2zr0u63rYmI9yiKlMkuOUVq22beyaGb7\n", - "xNiylLV3Pq75fPFsUcqiWR3dTXtHwwL45b3LeadK0Icjx5El4HXj3Hbj9nT6p11JC7zyGsssr/Cc\n", - "OXHtyqxOKPtQ+eysji/ywd5rGsehWqQqKioqKioqKhaJBdXae9YfWmvtVVRUVFRUVPwU4dmutVdR\n", - "UVFRUVFR8f97LJmP1CmnnNLcoWfZRqlZRm228v7aUQcXXnhhRLQ1fwDtnD2VWnvU8eF+ljt1Z3Z2\n", - "rb3ly5d37mzpg5pCZ555ZkR0895w7wrt1CCjPcAXhLtwxkDdn1NPPbXpyxmdXQuN+lO+2/adObTA\n", - "cz5njPjO8HrppZc2beEVbR2FQS0k5sh33dDsenjun/bQMDc316mFRt+8OoM5PPT820cCvp533nkR\n", - "EXHWWWf10rJ58+ZmnK5X5rxhrqGIbFEnDloc9cb7tKdO1MTERMfPkL+ZT2rK8bnroAFqbdG3a1oC\n", - "5Ih1d8oppzTjRJaQV9Ygdfze+973jjzbfne8UmvL9c0cDQofL7nkkqa+Xeb7xRx8/OMfHxmnLfOO\n", - "8qOmHPLlfEOMcfny5Z2akh5Xtv5d346+7X9Vrv+yPfvFE0880eHhOeecM9IHNDBO6Gec7BeOjLNP\n", - "JWOlfl5ZH9KRUF6jjngEjBe+MP/Il2lwbVbW9LJlyzrrAl65pqQj5Ly+2YtY/8BRX/49Kn/ngP2o\n", - "4PkJJ5zQ2zegH/iI7HrNA2T9Ax/4QLP+s76Zt/e///0REfHGN75xZDyO1qT9n//5n0dE97fLud9m\n", - "ZmZG6g+WbZyzjlfqpyK7wL5izP8f/MEfREQri2WdP8bCvFJrD1n0GcRzBO0ZqkWqoqKioqKiomKR\n", - "WDKL1GAwaE6StgYY1iqXL1/esTC4Lad057/xqd0REpxis+gUMDs724lM8HccITYuOsG1huBHlrul\n", - "fLZ55LbOOcMzHOUIHFno2lvl2KyNOXLOyKwh2Ry5H2u6fVm8zRdrjsAyiNab5ShxZE35PL9na5hr\n", - "QBmOthnHx/LZts5ktAD4kGWdtzXRubD6aOfZ9J3lBeNzZCjLZWZaLON90a/WmM3zLPLR7W0dzWjJ\n", - "2kV0ZcWWNEcEZVGfHrdp74sKy7LsZxF0Ge9pPy6PECitRVlEsCPkWJsZjZ5DR1SZ9+We5ug089zR\n", - "2Z6bLCu9I2+zjP/D4bAjYyCrPpBZ9rN2fO6bkXKvMw+9njNZzObZY8n2HdNY0sVvCTnwsv0R2cwq\n", - "W/TVoI3oRvlNTEykdRlN/7gcVUa1SFVUVFRUVFRULBJLapHyyTnTYDm5csJcvXp1pxI48J0/p1jy\n", - "Q1hjcDVzsiZn9/fl89B2eJb7pg9rYNYcAPlReMU/IavNFJFre9mp3lpcponaR8R3yGX/mQaZzSdz\n", - "YmthZqmyVpDRHNHlkbU688V+N8BzBZzDqqQt017sn2GfOZDxyxonKDVzy3FfLbyyj0wTN81em1lO\n", - "s5UrV6aWFvPFlqvMFwRklgfGUra3D5hz0Jg253izFSnjo2tVYsks2+PrYUur8wkB59GyVuz5Z29i\n", - "DGjqTzzxRIdu8mVlPm9ZpmrP1Ti+lJa6LHeXrdzQbb8aYCsjz2D/MB9Ly1YmO4B5Y3y+HcnWqMeW\n", - "3WRs27ats/Y8LoAsYWGBD1keKeYwy51XtvfvZGblBbYSew6zmx3/zZhKvsA7xskr+fayCg70RQUR\n", - "qm749wI4h9jmzZs7v2uZD232G51hSRNyesPw4ceACdPT0+mGzsBhNiVUfMByn4DND8ZmhUW3bNnS\n", - "HLr6rtwiukkgvaF6M/NmR/9Ojgampqaavr05m4dOMGeTqxepTde0d9LF8rvZNUqW1M5/O3Eh8Oad\n", - "HczK/3sDhU9ZYIOv/pyoE5CYjv4xS++www6p06wP2tlVlhOTcpBGLrKD2nA4bDngeHgAACAASURB\n", - "VOigT29G3jiRezZpy4vlxD9+fbR4nNlh1H35oJkdJH1V5ECJ8rsuK+G+AOudUikONuhLghvRygn9\n", - "912neLzzyW1E95AGP0sH7hIO/KC0zHA4TK92vSYzmbKS6OSJ2b5b7hsO+DDdmUtAluzRh53sWqpP\n", - "prN9zjQ64W7m2Ew7uw54vygdnBlXti4crGFZy662nQyU/stkur6S9cHBsmgFAzB3mSsIhyL+Zn2U\n", - "tNAn5diQaweEAYqbs2dZhk0j/fBaXv1lSbC99rLzRYZ6tVdRUVFRUVFRsUj8t3A2t1bkk7rbzczM\n", - "pCY3p+4fVyoBuPSDrwiMycnJTtkV921tzpqGNSkKpmKBAJg83f+yZcsas6UtL9n4Mt5mViBfjWVa\n", - "ZvmdLHU/sHOsw3fHaaS+Aivbm4bMsRu4/IpN95ZN/naR6ImJifR6JCtanV0bWDvKNK+ypJA16MzU\n", - "bo3LIeXAzui+yuy7IrcVIwuSyKwlmTndDqFG2T67/rMJH1j+0cRd8BRYXhysUVqNsquWzBpk64eL\n", - "oGelk/ocqG15tcUI7d7lfEy7i0D3XaeWNJQBMg4qAF7/dmi3nPuKk6tAW/pNS3nljZxnJcJ8tZtZ\n", - "6qCxLIRbjqXPmurAHpCVNrFFd1yQCpjv+s0BD6Y3s9R4rxoXMGUa+2hHrj3f2RU2FiVkls+zGwxf\n", - "R9Pv1NRU6mZgvmS/lxmqRaqioqKioqKiYpGoJWIqKioqKioqKsagloipqKioqKioqHiWsWQ+UpRP\n", - "iGjvpbnz5l6S8gOUTuB9/IIiIh544IGIaNPskx6e+1TuY7kL5a6fFP5Z6RSega8EKeJpPz093dyn\n", - "upQHbU03tHDnzyvlB1xmweAumNIJ7373u5t7dcZLpB9+CPCF8iP27XEEDKUTKLPAnMA32nGvfcEF\n", - "FzR0A9/Hl6UKItoSIXx+9913j4yB9n/5l385whdoZm743rJlyxpZcYkg5gjeQzfyR0kRQmWBI0k/\n", - "9rGPRUTE2WefHRHd6LeZmZmmb+afchL4vBFVZX8T5uitb33rCM32qaM95Q3gy+bNmxue2UcwK1dE\n", - "tBrzixzRN2Ucdt9994iI2GOPPSIi4v7774+INvSYcjhnnXVW0yeRjdAEb5Fzxrlu3bqR8Tqi1mWf\n", - "4B8yS0oTIoPOPffcOP7440fG6Wgz/GuYI8qPOLkr+wo+k+U4S1rtW/Tkk082a+htb3tbRLRy7jB2\n", - "ZPLcc88dGSc0Oz2E55/+7Xu1cuXKpi08L8umRLTRzIyT8TBOaEH22FecFJF1x75YRlTZb499C7lF\n", - "9rxPuNTS7/3e70UJ5Al5cAki9rrly5d3EqYyn8gWexHj45W58b7IOmIPgs+sC6I/KW9y+umnd8p3\n", - "sTbpm/JTrDlgnynauxSOfzfpn+dedNFFzXyy5vbZZ5+IiLjuuusiIuL222+PiIirrroqItryM/SF\n", - "/65/P9i7XDrnwQcfjIhRP0HKlUGL5RtfKPpm/pGt0tep5I9LBMFH5oi9euvWrR3ZYv2zRzu6G5mk\n", - "LE+GapGqqKioqKioqFgklswitXHjxuYUiIZOdFoWzcBperfddotbbrmlt1/nJMoKogLn7OF7nEzt\n", - "Q4ZWsGHDhuYz6M+iTXbZZZeIaE+3aOymhffpD82Lk7qjX7Zs2dL0OS7/iaOvnPvJgG/33XffSDss\n", - "E8xFRDcnif82X7KU/mjJ/hw+OKKiL/oJLRUNCp7R9/7779/bt/MAZdFJ5GuiXzTziG6OKmhxKZSs\n", - "XA3v8z0+R34MZPaRRx6J9evXR0TEXnvtFRGtxgmwICFbTpiXRYwdcMABEfHUmovoat5gOBw269nW\n", - "YFua4PWdd94ZEa1GCc2WF+YCixc0wJ9yTh3Jk0X6gVJbLV/Zc8r8NxHtOmPeoc2RtiW9jpDDypdZ\n", - "np2okrlhfwC870jC4XCY5kti3dI3OXr6kv2W7zsCddy+MTk52clFB8wP5syJNk0DfGPe4XlfNDNj\n", - "Zv6Y16wUij/P1j/Yd999I6KdY/YF9//44493ysjAQ99keF8oo3IjurKMJZZ15PVQysCuu+4aERHH\n", - "HnvsSJ9ZLi7PmfPTWXaZUyehdhm1iJZnLt/jvHKAucHCxOf0k+V6w7pYRpJ6PmmLBQ1a9t57795x\n", - "ZqgWqYqKioqKioqKRWLJLFJlZnBOgZx2ncGXE+XatWsj4qmTZZbnwflg6NvWL4BWb80T+ESKJr5l\n", - "y5bGUpCV/HABXOfysdYILZy8XQLBGsyOO+7YjMeWKWsvmQUiK17Lad+nfudNKd9ziZDsNM84sBIB\n", - "NM9bb7115H3ndnK5itISZN8mvoPGxHiMMit0RDdjNbCfC3K1Zs2aNJs82j9WHaxDWM0A68GZvhmv\n", - "ZRQLxYYNG1LrBMBSleVJsnWMtUa7m2++OSJazc0WjPvvv795D8sycmwLI7KJNQQZhuelD2T5LLR+\n", - "W19LC5Z94ZjvrPyOtX3Pr9eorUSugFCuO2TOFkZo9F5kK0hWSgk41xsYDoed+cSCgtXvrrvuioiW\n", - "T6VlNaKbPZ69yVnXgcuZTExMdKx7gPHTp318bJFk3dD+jjvuiIg8+zZrcmJiohlXX/HciHY/Z1zI\n", - "PXNjS81RRx0VES0focXrr6Qls7CZltLfshyfy9B4nMgXY+2rbnHwwQePvAfdfNcy5H3fvM4KybOG\n", - "nVOulBfnl4Ne5KKvgkdE6xPJuJ3JHTB3fcWi3Zbx05a9y7wch2qRqqioqKioqKhYJJbMIrXjjjs2\n", - "p1r7wPhEysn13nvvjYinTr+cmH1K55TqgqGckH3/mtV7yjK3lgWFXdMpO6VnVh+fdjlpW8vNMjtv\n", - "3ry5U2MtK0aMNuf6Tdl4aYcWwCmf15IWW6ScJTbzp2CuHAHn+UdrgH8uhFlqU3yGP4WjTMxDxoM1\n", - "yBF15qNr7YHp6emO5cXZg9F+7ccHbIlBQ+P7fiZj2X333TvRJrYYuEAoWh7asmvSsU6wGjEH8Kkv\n", - "gzj+c4wLut03NCJbrCPX6/I46df1HsuxZsXM+2QlopvZ2rQYjhy0rJfy4vnLiu8CxmFLXlZ9wJFF\n", - "0G5fqojWr8xRetk+x/6JZm5/J69prEZlJF62LwLaumap90msoFhR4B9y5TktrSLO5O81hPzDc+9Z\n", - "ph1a4SOv7N3+fVm1alVn3uE5fYG+7Pglzf69sG+hZbe0hME7ovP43cj8r/jblpmsULSLgmfFziPa\n", - "dUEbV7bwfNr6a4tbNqegpCHLVM7tCL5kWfWRDNUiVVFRUVFRUVGxSCyZRWr58uXN6Q/NxJW0AZaK\n", - "8jWrnWXtLKuxBKzB0h6NzLTQ/9zcXEeDyqw6rm6d1VpzDiCf8vtgTRoeuW/feZvX1qSwElqrxhpQ\n", - "at6uoO36ShnvXVvOfhaAZ5a1Fsv+Sxlw5BwaFXPgvtEk8XeDD5kfm/NplX5htoLYYpnNO7CfhS20\n", - "mR/fypUrO7ljrNX2WRLnowlLFMASY18isOOOO3YiIOGHeUi7TPO0BYsxoTVCA1aEcqzORWbfKNMC\n", - "ra61lsmua9BlmnlEV5u3JS3zqbP/WhY5Bq22Lk5OTqbWS0ebZtHJ0Eo77w/jrOuPP/54IyO2pDmP\n", - "nq3ptqbaQu+5tAUC6/uWLVs61g6vC88zNFiOgKOBfYtgPq5du7Zp69sP04I8m5bMv8+RcY7ILucE\n", - "i6QtkRnd9r11/U/TkvkW9kWom+f8nVmNPc/2IfSehp+bo8effPLJzrrg9w3ruGnxfpGhWqQqKioq\n", - "KioqKhaJWmuvoqKioqKiomIMaq29ioqKioqKiopnGUvmI0WdoIjuXbDrflGbp/RLcK4dauFQx8n3\n", - "0dz1cid6/vnnR0Rbx4n29tehvWu5lfeyzmlFHR/GmOWu4T6WOk7U5jOgjXtr+HLWWWc1dNq3B7ov\n", - "uuiiEbrdDnA/T222U089dYRG5zLh/UsvvbSpywScoZa/qYUEz11Dynfa1Amjvf0wSv8H+natPfvS\n", - "MW54Tt/2y3COHuTLNcjKKEjz8D3vec8InfZ9wBeI9tACjfYJgy/QQt2vmZmZzt0+QG7Nc9OCnwX1\n", - "EJlT+wjYpwZZPP300zu+Cs4tQ9/IFrCvm2ttmuf2T+P10ksvjXe84x0jfbiaAN+l7pdpAcwBfKFO\n", - "HHw0rdCwYsWKZpzUfLM/kSNr4SH7hdcY48Zf6eKLLx6h3f5tZR1Q9iLqjzmSjnGyt7gGoX1qXO/0\n", - "/e9//wjtpazb/yzb5yxjrhNJe+8r8Ml1//pqljJf5jnjzKK36ZvafPDcvlOuvQgfTz311E5kp/ci\n", - "1jNrzjnwAOuI+adeqH3E+uQLnjgyznuT5YW5w2cOX9ty/y/5wv5g37S1a9c2v0XQwvgcOcgzszp+\n", - "fO49m/6pn+i8ZFu3bm3eo75luYeWfHCkLOs/Q7VIVVRUVFRUVFQsEktmkSp9s8b5afXlPsoi2WxZ\n", - "chZVW4ey97PIqjL6xfX7MouJae3LrVH2nWUKN03btm1Ls+Rm+TKyvgxrUfOBZzkKI6PFVhHT5Gda\n", - "a7Jmmo21D5ncOOu8K40DW6KYs+np6c4cWNMyX9zeUYx+RhYVWv4/yznjPrLKAIb7NX/K/rNxGlmG\n", - "blsDjCxSroQju/iOM/MDNGzzPMsjZEs4n4+rzdbXVzaObPxZJJ75Pt/aXugc0c6Wmixa2nmDhsNh\n", - "Zw9238DWQ69/r3fLolFGpFne++TWdJftszXblzW7D7Ozsx2ejVvPtoZnEcT+/rgovz6Mqz7BM7kl\n", - "8jwDLFH+Perje/b7kK2hLIox2+uyWqyzs7OpdTj7jV4oqkWqoqKioqKiomKRWDKL1MTEROeEnllq\n", - "XFG6PIlnOUrcV19ujfJ95/qwn4L7n56e7mglzn+TZQ9mHNYwnOnVuT6cCXt2djat0m1kJ/Ess7mz\n", - "8WYaeglrUlktMJ/2rUln1b9tRbH/WzlOW7kyS5wrroNMc3d/Wa26so/MOpppu6WVq3ymczeVmr2f\n", - "ZViTzCyzIMt4nFmy5ubmOhbVzHpln6hMK8xom8865hxsnt9sPs0/vuf9xfPOenMun/L/C80L5PHb\n", - "GuT5p719ZPr6dg1OPnf+Hz97IdbQvu9t27YttVBnsuV1Dbz+yfHkSgegL5dexvPMIpXtd8515LVs\n", - "Wqanp1PrsN8fZy0ZlwtxvlxPmcWtbw8tx4F88Ntmq7lpyG5hStoZp/NHZtYxW6LH3TL5N7/cA7Lb\n", - "jiyze80jVVFRUVFRUVHxX4wls0hNTk52LBGZNm2ryWAw6GQwB5ykORGT5dbZUA2fdukny1y8ZcuW\n", - "jjYyTsOwv4a1F2eR9Zg81sFg0HnmuFO9NY/MFyDzpenTijIasjt6a0W2YLg/a4G+ty8zBPvZtjSY\n", - "/qw2XSaLmR/PqlWrOv5U1vrcp9tnY8j81co5Guf7ltVDzCyS5rmzrVuOBoNBWq8ys3Y6iinTTO2/\n", - "BvosWNZWnWnZ819WKijboYET/QqQNUf12I+zpCXz7emLtusbV7aekF38vEqa+uanfGUczOu49W+Y\n", - "RvorLTnO6O621BL0/u+16PUDzcyR+y/3esu515znyD6BmaWCfuFzVldw2bJlHdnKLHW2pLC/ZRUC\n", - "+DvL8F3Ki+lGdtwHyCLqMgtOto/2VRRgvpgL2jBOyy6Aj765MV8yWku/Zvc5zpduHKpFqqKioqKi\n", - "oqJikVgyi9TKlSs7J8rMa5/Tbulb5BM1sJ+SP8/uUx0xktU3K+uJWcO0tgMt9O3IoXG19pwvx3yZ\n", - "mppqTvfj6trZd8S5WLLoNDCu1tJ8yHxkMkue/3YEiev/lXNsHvFZVscJMK9oRZkfky0cpWxaVjKr\n", - "gPsCWE/tEzLf/NPeFtfMeuEIIP62Vg/oj7FlfkyTk5Od9WyrDch8vcbVtwPzRaVZw/Z8ZeufWlvM\n", - "QTb/lkX70pRjtcbNZ1kNPfYLtHrX/3NtNnIc2So2HA7T2nn2t+PV1nHvuSCzYNAe/s3NzXVqi5ru\n", - "zEJj+bBMU0sts6YxlyXt9g0z3ZapLFIuu2XIbjqmpqY6bfr8KUu4RmG2TzJ+51djHZY0eR3wjOwG\n", - "w7+HpsF8ZE5tyevzY0NG3Be+beOiE0FmBfT+WdKU+YZm67n6SFVUVFRUVFRU/Bej1tqrqKioqKio\n", - "qBiDWmuvoqKioqKiouJZxpL5SJ188slNvaZHH300Ikbv1yPaWmuun7Vq1apOFBm1kN73vvdFRBvJ\n", - "wt3tQw89FBERjz32WEREXHXVVRERcdJJJ0VEe4fL/Sp/c99MnagTTjih6RcfAOjFd4daSNROynJT\n", - "uaYgNYjs10N0CzRRg+i0007rRC/y3QcffHCEbmpKbdy4MSK6fltlvTL6jojYY489Rj6nZhn+Guec\n", - "c05ax80+DNRCguf2+WCOdt555xG+MP+O1kB+ItraVmefffYIH2655ZYR3uGHwjjf9KY3RUTrI+Uo\n", - "Ne766d9zij/Lbrvt1tDFOOELtCCTzMHuu+8eEW0dpxNPPHGERvgJn/AhoDYX9c2mpqaaNQS9yCK1\n", - "szxHjO+BBx4Y4SXjPOecc3pphj+sVWg/7bTTmvfok7XE+9BNDUJoYN6dL4n21P2CRngObfjMXHTR\n", - "RfH2t789IlqZY+3ss88+I/RTa5O+4Tnt7UPiup/wEd8j+n3kkUea9UktNMa1adOmkXHzvseJrLK/\n", - "2Ffqsssui4i2lh+0I38rV65seMR8soZY73vuuecILx9++OGRcSJbjBNe8wzG/fGPfzwiWtllHQ0G\n", - "g04kFzUI2ecsqwDfl/POOy8i2r3L8gFf4Cv7LrRPTk42+xUyAk9da5NxIbOsp912222kvWvK+TeM\n", - "McPHc889t5Ghu+++e+RZfJffOdcJhW+77rprRLTrn3Eef/zxI8+85557Rmjmt+9DH/pQM07k25GT\n", - "zCeySL065t/1/5gjyxd7HXMCn1asWBGf/OQnI6Ldcz3v/s1lj+b3wvmnGANyxLpDXhhbWavWtRZZ\n", - "o6xf5jGbowzVIlVRUVFRUVFRsUgsmUVqamoq7rzzzohoT+qvfvWrI6Ib5YMmUmYfP/zwwyMi4rvf\n", - "/e5IW07CWFI4xf7kJz+JiG50CloNkR5oLJz+Od0DTvkrV65sTry85xO282McdthhEfGU1lrS5HGi\n", - "1UHrzTffHBH9kVVoO5y6b7vttohorQAeJ5qZrVyOjIBvt99+e0REfOlLX4qIiKOOOioiIo488shO\n", - "W/qib0738Ac4/w193nHHHRHRWigA34dfz3ve8yKi5cfXvva1MNCwr7nmmohotVsskoA5Q1O5/vrr\n", - "IyLida97XUS0lj2AbN5///0REXH00UdHxFNyg+wB/sZiwJwgs44goR1ziRXoRS96UUS0cwHKjL/X\n", - "XnttRES84AUviIiIvfbaa6Sts+MfdNBBEdFq9/fdd99Ie2hlTl72speN0PaP//iPHVqcQ4b5LS2H\n", - "Ea0myXh4xm/+5m9GRDsHwBGHn/rUpyIimj3gkEMOado6utB12rB2lnRHtPJy7LHHRkQ7F6YFONrn\n", - "rrvuiojRdcezkVv2gRe/+MUR0ZUt5sYyyZ5kPtqKztzss88+HTmHXvqGtm9/+9sR0V2jrtaALGPh\n", - "2XvvvUfaw0eeu2bNmmbvZB8A7DW77LJLRLS8dyZq0+7s/OvXr4+Idr8EyNfGjRs7UWrsTaYFq8+P\n", - "f/zjkc/ZLwF84vfhwAMPjIiIz372syPvgxUrVjR0Q+9xxx0XEdHZL5x9nPXDGDxOaGGf4HcUGS7l\n", - "xRb25z//+RER8aMf/Sgiotk/AONg3TBHrHHmDsBzXuEnVrK+PFLspcxJFrXv3FfQdOihh448AzBG\n", - "+odvmzdvbngKmH/W2E033RQRrdx7/jMs2UFqxYoVzQJ7wxveEBHtxnLjjTeOtIWxbPaTk5OdEFqA\n", - "UHEw+vrXv948LyLiiCOOGGkPYx1qilCycQAEaYcddmj6YiK9iGwmZnxZ8VWH3EIbguaNdHZ2thnX\n", - "vffeGxHtxPMjA+iDBcW1EhuH++bZ8PyXf/mXI6I9oJaHQJt7WXS8Zj/q3jB+7ud+LiJaof7c5z4X\n", - "Ee3CYeOBn6961asiYlRe4Dkb+kte8pKIaH/gvvjFL47QwsJnbjggIl/wFbDwfCB9+OGHO6VtfP3D\n", - "nGRlaZCt8scoouU5V2bu/4knnmjGyasPo/Ca+eRHDtp8zcocwevvf//7EdHyp6/4L5sP68KbFmB+\n", - "uXblMLrvvvtGRMS//Mu/9H6PA9crX/nKiIh4/etfP/J+H+AZSpvXv69ob7jhhohorwKRJwAfmSPk\n", - "xlflEa1scOj+pV/6pYho5diHV/YPH16YS//AOIkk/T366KMNL4GTGbK/IceZ8sqPkFO3+Eed/lES\n", - "V69eHT/84Q8jolvCxrQgY3arAFb62JMZrw+BtL/nnnuaK0z2yazYMn1zQITnWXkbgDKAMsj4v/CF\n", - "L0TEU3KFnCOnrGd+tAHzD60/8zM/ExERn//850doAv7t+53f+Z2IaPfjco9mf4deFMyXvvSlEdHK\n", - "8Te+8Y2I6O5ByAPtPEcuJYTCQvvSyOCUG9l+COwqgrGA8dnY4cLJHOoeeeSRznyyxqCPK0pkjH1j\n", - "HOrVXkVFRUVFRUXFIrFkFqm5ubnm1Ip2c91110VE1+SJJsbJc/369Y22i2kVcEpHM+C7WAOyEiGc\n", - "qDktc4rNkoNNT0832jyakU+7NkljOeH6xVYgaGD8XBdgLbDWODk52dDDd+jTWqDLcaBZoQ1aw4QP\n", - "+++/f0REHHPMMRER8ZWvfKUzVjuZOxGpk6TCN6xEaFxYAQ4++OBe2vneD37wg4joWngiWm0MTRvL\n", - "GxoYFkvTznjRLOnH1lH4x5jQ3LZt29YxA9MnmiTmf8aZJfHDmgptWElsHS0tUs997nMjor2K4hoB\n", - "MBeM65vf/GZEtBq4r6Xh+QEHHBARrUVqv/32i4iWT2jew+GwWZPwzM6yANnBWoCMcYVt2bVcIYuM\n", - "9Tvf+U7T1skbnfwv4zn8wSrA1YWv3+zwDE1clZbXWDwT6xBtv/e97408Ezg4A/5gFfD+wr5g5+tH\n", - "Hnmkc81qR314zP6ZJc1lX7Elx3PEWHjOLrvs0tBlS6qvmdjXsex7X4QW9ihowrpo2aX/1atXN+Nl\n", - "j7YLA397ntknnByUv5GrL3/5yxER8ZrXvCYiuldBk5OTzXtYc7MCx3aepj0WGFswy9uRiHZPZ48u\n", - "k+eynlmLWJ6wjrHnAAcCMCf0Y9cR2nMLwV6ABay0BLs0GDx1YlHgxJ3QgrXIFqksAer09HTndy7b\n", - "F7Gmsq7HoVqkKioqKioqKioWiSWzSE1PTzcaGtqznSwBd958fuCBBza+K5nlhdMrDmnA97BoL75D\n", - "t+Ov+5+ZmWksBLYgAE7Y69atGxkH1rKsXAlasUP27UA6NzfXCQV1GDxwKRw0B0739pFx0UosOryP\n", - "w+yVV17ZKb+A5QieZmn50WqwMNA3tJkfWJfsrFzy3bTYvwJH9U9/+tMj44NWrD9ovXZOhn/IHa+r\n", - "V69u5hVAJxoVc4XcZMlwkUkXsbZ2zBhXrlzZWC+hG4sRfmb21+JvBwgA+kGDxfqHX4LXxdq1a5u1\n", - "gQwity4rYwdffEiQUdYLQPOGj1i86Bfn2i984QudArfIN5YX+zG6nAavWEfsKO3SEU43UvbPPKIF\n", - "4yuFtSsrX2Ua7YQMXN4Jfi9btqzjy8M47NCblS1hjthzoInv24LjMjgbN25s6LLFwPQj11g7swK6\n", - "rBvGiex6v4BPWFsiWrk3X3g28s56dpkj08yz8TFC3vx7tG3btma+aYMlNfNLxJrz13/91xHR8t58\n", - "ceqbW2+9NSLadVXeBMA71gP+pb79AfDL+ye/dbZ4upSMfXbLmwDGaTlHRr3n2nKHnCBXmTUdfmV+\n", - "XeV78BArF+cG+/dmqBapioqKioqKiopFopaIqaioqKioqKgYg1oipqKioqKioqLiWcaS+Ui9613v\n", - "6kRvcC/P35RCILcDWLlyZSc654ILLoiINuU796/2r+B7pJMnzT7tuJ/lbpw7VKfCX7FiRScZJvRT\n", - "ToBSBfjGOBeL0+xTOsP39M4XU5aI8N00fUI/qfApbWC+2f+GUjuUCKBfnsNdO/y9/PLLm7Ip0Gdf\n", - "McZNiQhKYeA7wrOd/4P28LEsgeHnUE6A+Tev+S7+B5RCoMwG7fzKs5Avxmr5KHO8XHHFFSN0A8Zp\n", - "Xwd4Tnt4zvhoD19cxieiGwnFeBknbekDup14j3VBGQ/zwb40lE44+eSTO9Fj9i+h7Tvf+c6RPi2L\n", - "PIPyNpR8APiWQDPr5cMf/nAj546uc6QQskXfXmPwhWfBR2j33JR/Mz8ubdKXWDiiLbPC+ncpGfpm\n", - "DbJfILv2tSr5zl4E3awx9w2Y/0zO+T7jplwJ8lXKR9Y344QPnhuX5aG8CbTgt4O8MP5PfOITEdHu\n", - "0TMzMx1Z4Tsf+9jHRmjxOGkPbR6n9xfv2WV5M3hlWYRXyBZ0Q4vLd3n/P/PMM6MPzBFj/chHPtLM\n", - "J7R4vwDsc6x/R9TBe/6Gj9AC3+ADtM/NzTU8IfGuy07RFt8uEu+eddZZI7TbZ5BnkXTZpbnKOeK7\n", - "7C3l73lE6xvm/HKs6QzVIlVRUVFRUVFRsUgsmUVqcnKyOVE6h4vzpXBqLk+kthwATsw+lbvMBODU\n", - "yimYZ0OboxPoZ9myZc2pHs3KtPh0zncZryNI6MeZv615gampqWY80OLTfdm2HD99enzAmrY1tHKs\n", - "1hDsd5flbvG4+NslImwt4Hl9tPB/lwgBWb4ca1wuqeLvu5jr1q1be0v4lLTwXVucAFpQxnvnHaLd\n", - "zMxM0xYZspwDl0Sgb/Pcc+m5cv8TExNNX4yP73gObJmzhm45t1XBc9wHPrOseP6JtGTvcZZ+r1Hz\n", - "wxG25RzZuuF5z9aJo7F43+OlX6/NmZmZDg+RTefkyXjoz12+xXNqS9VwOGzGZx6ahrKwbdmH4XVk\n", - "fs03DvcB6Mu3BMxvn5yX3/NtSt868jrOeI/8+7fH5YiA58B7Utnetyfmx4eztQAAIABJREFUi3no\n", - "0kqGx1lansrv25pe0sBrH7198HnB/DRtvJb7TJY93fNIO1vsMlSLVEVFRUVFRUXFIrGkFilgbcCa\n", - "uk/ek5OTadtMkyA7cFacl5xGnIqxTDh3T5kp2UVDXZeLMdIOnyCfekGWs8p35mBqaqrjP0GbPutV\n", - "2ZcLO86n1UV0NbGSL767Hgdo8x13dm9vq4LHVOZjYRzOm4V2l1k77FvkZwFrXHxv1apVnQzuztUD\n", - "D23JNJw3JuNrOVZbu7KcU7bqIZvOsWKNMst5VI41y1js+bR/iXmajddaMO3L95lP+jANtnYgF7T3\n", - "uLz3APtF0m9plYSu0oo9H+yPYouUrQPOylxq0Zm1wvNJO2eqNk3k6nH+NGCL3GAwSC2MnmdblrwX\n", - "2VoAj1k/pp05XLVqVcdXJ7uR8HftG+j2zpuF3JmWZcuWdfLpZdbyzAqa3UiAzMJf8tEWM+8t5jnj\n", - "Mf9s7QHwyVYj2pV1N+23DDLLm2ket3+6EgDy0pdfzfu/fYKrRaqioqKioqKi4r8YS5rZ3FFpmQbj\n", - "7NNzc3NpXZ6sfg+nUmtSttDYV8YofYqgi/ey+2Q/K/Ml8hgyawDYunVr6ndhiwrjZpyc5unbvlJZ\n", - "Nl2e56y0JbIM78AaJrQ4CgvYsmMLVml9gS7fozM+j9O0WH6seSEXtoiuXLkyzVTvyEH7MgCeZWsB\n", - "33MmZPg0GAzG+oJkWqtrTQLWouUrk8UtW7Y0PFmoRc3I2ntO4ZOj4CJaXmW+UVl9O685eG2LhP1Y\n", - "3G9pVYYunuHIscwi7TXK6zjfw1JuPE77GfIMW+JNC7Qj90RaeR3Bt9LnMLPyIfe2Emd7i/16Mt87\n", - "UFo8Lbe21GY+Q7ZUur2tYq4YAaanpzv7lv3wgG8N7L9o2h3lDGyNL/vKLFGeT8ui5d28J5rb1uW+\n", - "Pd1WPZ5FxLz3XOQFWh1Z6znC79E3HBs2bOjsc/alhjb/Xo5DtUhVVFRUVFRUVCwSS2qRstXAWjNw\n", - "Po1t27almrRzDHGKt9YDHLXhOj1Zjpa5ubmOP5Y1gyw6yX0BfGwYL1oPWmCfH4tzrzg6A9jiYm0o\n", - "q80FTZzu+yw75qExzs/EvgGm3eO2z0lpkXAOHmsYvld3fhxbOjNfE/sKTE9Pd+i0NcTPyny+zEfk\n", - "yLRYGy6/m0Wn2OKCDJovjnpz7qMs+qmkx1FlwHyxFcntsYZAsy2ZfVZikEWxArRgW8ft3wgsF1h0\n", - "PLcRrSbNuJBBWyIBn9tXyDmKAM82n2dnZzsRpPaJZF07cs7tPe5sreOXUkacwSNbUoH9kDJLHTx1\n", - "LdbMMuUal2WftupkUavAezpzYf/OzHdsxYoVndqZpgnY0mrfIM+pb3Ds31P2799Y1xg0LZlFN4vm\n", - "y6zOfZY91/u0L6GRWcEzn0rzpbx1yG5qkEX/vmV+WEa1SFVUVFRUVFRULBK11l5FRUVFRUVFxRjU\n", - "WnsVFRUVFRUVFc8ylsxH6pRTTkkz/AJqClGDrC9igLtN6jKV9cciuvktuC+ldpLrVWV+PtS3cv20\n", - "8jvQ5bam25l9XTvLfHEURlmDyr5PjlL54Ac/GBHRqUGW5dOib+rhZaD9Rz7ykaa2kfkBeCY8p46T\n", - "I0HsfwJfXCeuLxsxfVM7yTz339Qgy/jiZ7gelvk9MTHRzA81pTz/WZ4U2psWf898oX5aH/gONaKY\n", - "o8znAbim5Lj+4cupp57aods+D66dmK1/5IC++9Zc+X3aX3rppR1ZdFvodt2/+WQroru/OFqvXE9l\n", - "/cH5UK6hiHZd2NcFuE6ga7OV4LvUFEO2skg670WM0/43fqVOZN9YLbeMk76d68u5nuA5+6Kj3UwL\n", - "Yy3lJdt7WRfUoMuiU13L1bILnHcN2t/xjnekPqIgm6NMJj3OLAq8XBfZvujfor46niUsD8gi9fCy\n", - "fWViYiLOP//8iOjOZ8Yf12YErlLCXDBHZ599dtqe7/zP//k/IyL/jfb6Z01nqBapioqKioqKiopF\n", - "YsksUiWsLWZWofLEbUtD1pejjxaaX8fPmQ8+xfbRWz4r6zt7lnNzlO9nOZscdZNZ/bK+x0U79fXh\n", - "7NnZeMbVgRvHc2fn7kPG2ywKL/ue+WbLVak9OhJy3HfH0ZxpSW4/HA4785XJnl8Xstb8rPn6Lz9z\n", - "7ppxfWfIahNm/ZVtF7qnjFsf2bOy9bYYLDTDO5hvzfqzcTUHx/nKZtagxSCr45hVMLDMgnGRteVn\n", - "2Z6UzT80jdvT/XdfNGv2W2Vke1FGY2Z1XwjGtc36zvaNrJ5oX5Snxzlu73qmtGfR8WX+SZDxbtxe\n", - "bVSLVEVFRUVFRUXFIrFkFqnBYDBW0+77znyfR3RzdVhrsXac1QjKMiGX+VTmq3A9H532HQDOPmwf\n", - "kL7cQOOyaWe0mC+Zz0Q2htJyl2WXzzCupuI4LXAhfY/zkfIzs7//M/B4xllJrHna8pb5QJSymNGf\n", - "9Q2e6fzPN+eLzSuWwXy0haqvv3H0Z8i05QyZb135Xc975gNFPh2v+0xe5ls/z9Sqk83nOBoWgqw6\n", - "gn0/s3U+rsZcdotQzv24fW4hlpTyb1uest+X8vvj1mifv135d7an+9l96yLbazK+GOOswhlNfc93\n", - "/UvXLfR3yXnmvGRZ3jl+0+mXvFUzMzNj13fG03GoFqmKioqKioqKikXiv4WP1H/GSjDurnahyHxI\n", - "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\n", - "RK5CYII=\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "filters = net.params['conv2'][0].data\n", - "vis_square(filters[:48].reshape(48**2, 5, 5))" + "* That should be much faster!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The second layer output, `conv2` (rectified, only the first 36 of 256 channels)" + "### 5. Examining intermediate output\n", + "\n", + "* A net is not just a black box; let's take a look at some of the parameters and intermediate activations.\n", + "\n", + "First we'll see how to read out the structure of the net in terms of activation and parameter shapes.\n", + "\n", + "* For each layer, let's look at the activation shapes, which typically have the form `(batch_size, channel_dim, height, width)`.\n", + "\n", + " The activations are exposed as an `OrderedDict`, `net.blobs`." ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "image/png": [ - "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\n", - "62fcu3dvrvf39PQklkNGGRVRnbpVVZ5z/e51tGXWSLNOkTUiTUd26jXhT8Kt6+koTf83tWjRIhfr\n", - "aLDTp08n1tN96UjRBQsWJNZbs2aNi/W78ids18nFdb/6XZslz4Xyu6no+3TkuZ4H/5jOnj3r4o9/\n", - "/OMu/pd/+ZfEe/gbWo08XY9oiQIAAAjAQxQAAEAAHqIAAAAC1FqxHMV65JFHxv0erbidVaU3pB+U\n", - "+sY3vpFY/spXvpLrfdOnT3dxyCzufh8ora6s/RT86rt+P4i09bRvktI+FVnby8uvDK/9KPbv3z/u\n", - "7fmzBYT0iaqrH1RdtNr9u+++W+ORVC9rBgm9Dm7evOli/X2ZJfvxaNV5v4q93nv09zUwMJBYT/sP\n", - "Ke2/aZa8x2nla7+/S9r17P829HMcOXIkdXvaT0v7W/lVwPXz62dM63uFZqElCgAAIAAPUQAAAAFI\n", - "53WQRx99dNzvSWsSL9uPf/zjXOtpCm/jxo0u3r59e2I9nQQ6KzXlTyA8yh92vHz5chcfO3YsdXsj\n", - "IyNj/nur6TufP5nrjRs3WtqeP7wbH+VPdKwpWk1bTXSantK0lU/TXVqWQycPNjM7f/68izW156f9\n", - "0pw5cyaxrL9fnUDbX08njtf7Sda9QdOc/r1Aj13vs/49V/elv3M9D0XbsGFDYtm/nyI/WqIAAAAC\n", - "8BAFAAAQgHReB9Fm4Xbyx3/8xy7+27/929T1tm7dmvqapvA0DZM37eKnxzQFELK9Iugoo7ypDBTH\n", - "H63lj8zsdJrGuu++9P/eTqvk7o/OS6sw/sADDyTW01Fpmn6fN29eYj39Xeq+7ty5k1hv8+bNLtZ0\n", - "mX+/9I93lD/qTo9Jj10ro5uZvfHGG2Nuz6f71c+k5yiLfjf+Z89L9+WPzC5S0TNIFOHTn/60i0Pu\n", - "s7REAQAABOAhCgAAIAAPUQAAAAHoE9VB/FnTi6T9I1odXu/77ne/6+LvfOc7ide0X8qf/dmf5dqe\n", - "9lvyyz6888474z6+kH5QoRXLtbqy5udPnjw57mMogpaVMDPbu3evi7OqWCsdEt7T05N4befOnbm2\n", - "of1pqqqU7u+nzL4iTZT3d679eBYsWOBiv9yB/ga0f5lfakD7Kmk/KL/Mh1YzP336dOrxaRXwTZs2\n", - "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\n", - "1IuWKAAAgAA8RAEAAATgIQoAACBAW/aJChmO2d3d7eK8w9K1PIFZsh9UT0+Pi//0T/80sd6f/Mmf\n", - "5Nr+U0895eLXXnst13ta5feJqmoY7kTj9yHxKwSPdxt+9ec0/jW7d+/ece8X1dPK0nm/67JpXyLt\n", - "D+rTe6Gu5/cRqqoPnV8N/dixYy7WvklFn2e/YnlaH1q/zEzeWRTQTLREAQAABOAhCgAAIECj0nlF\n", - "N2nrxL3+BKl5ZE2++KUvfcnFv/jFL8a9bbPiU3h+M/Eo/RxNqPDaFGWmUELSd6Hb0LSBXvNmZtu3\n", - "b2/5ONT69etdHDJRbOiEoZoa0glly6RD/M2SE3n7E2q3qikpPKUVxv0yLkqrU+sEuH4ZjlarYufl\n", - "d9eoalYBv7yIfqdaSZx7cGehJQoAACAAD1EAAAABoqonA46iqLId6uiSrFFo8+fPd7E/eq1d6ffa\n", - "1dXlYn/0VlVN7BOBnnN/MtIyaarLn1S11UlWn3nmmcTypk2bWtpeXppqNUueT/28586dG3OdMuj2\n", - "65hEvWp6/9SJrPfs2ZNY74EHHnCxpvP8dLR/7xl14sSJxHJVk9cWTf+OmCVT15rqy+omksa/3tKu\n", - "dT+dr6lM0ojjN3reoyiyOI7HPOm0RAEAAATgIQoAACAAD1EAAAABGlXioGhpQ/59ndIPKo1Wy/Wr\n", - "6uowbj0PRQzRnwiq7PuUpug+JNr/ZWBgINd7/PPQap+hadOmJZa10rQ/lLwqE6EflNK+Z371caXl\n", - "HrTchl8iQmeNmDdvnov9fjzt1CdKr3vtD2aWLBER0g8qhN/viX5Q5aMlCgAAIAAPUQAAAAHaIp3n\n", - "V8vVCSWV35z6qU99ysU6+eUbb7yRa7+a1jDLX6W4t7fXxWfOnMn1nrxWrVrl4kOHDo37/cPDw4ll\n", - "Te/ptpm49kNZlc3TUjz+EP3HH3/cxVu2bCnw6Iq3ePFiF+etqr9gwYLEsqYyQmj6rin0/tLE4yua\n", - "3iu0lIRPSxfkLfOh14dW8243Wtagr68v8ZpeI9o9oszUXlXV2TuVX6YiD1qiAAAAAvAQBQAAEKCW\n", - "dN5o82/eZs28ozX8Jvaf//zn4zswM/vc5z7n4rfeemvc7zcrPoWnzeIhKbws2vxLU/DYQiaH1SrO\n", - "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\n", - "MQ8HvQAAAABJRU5ErkJggg==\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "data\t(50, 3, 227, 227)\n", + "conv1\t(50, 96, 55, 55)\n", + "pool1\t(50, 96, 27, 27)\n", + "norm1\t(50, 96, 27, 27)\n", + "conv2\t(50, 256, 27, 27)\n", + "pool2\t(50, 256, 13, 13)\n", + "norm2\t(50, 256, 13, 13)\n", + "conv3\t(50, 384, 13, 13)\n", + "conv4\t(50, 384, 13, 13)\n", + "conv5\t(50, 256, 13, 13)\n", + "pool5\t(50, 256, 6, 6)\n", + "fc6\t(50, 4096)\n", + "fc7\t(50, 4096)\n", + "fc8\t(50, 1000)\n", + "prob\t(50, 1000)\n" + ] } ], "source": [ - "feat = net.blobs['conv2'].data[0, :36]\n", - "vis_square(feat, padval=1)" + "# for each layer, show the output shape\n", + "for layer_name, blob in net.blobs.iteritems():\n", + " print layer_name + '\\t' + str(blob.data.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The third layer output, `conv3` (rectified, all 384 channels)" + "* Now look at the parameter shapes. The parameters are exposed as another `OrderedDict`, `net.params`. We need to index the resulting values with either `[0]` for weights or `[1]` for biases.\n", + "\n", + " The param shapes typically have the form `(output_channels, input_channels, filter_height, filter_width)` (for the weights) and the 1-dimensional shape `(output_channels,)` (for the biases)." ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "image/png": [ - "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\n", - "ro/Ng+tic+H6OMDSFKkdO3bo1a9+9ULO9Y53vGPDz1GqIueff37T+VZWVpp+18q059u5c+fC6sIY\n", - "Y4w5nLAiZYwxxhjTSFebvXumJ+26xZ/UGGOMMaaRvu/X3Xh2KRMpY4wxxpjDAS/tGWOMMcY04omU\n", - "McYYY0wjC59IdV33+q7rvtl13WNd112x6PMbqeu6J7qu29t13f1d1929+t7zu677Utd1j3Zdd3PX\n", - "dc9d9nUejnRd99+6rvte13UPrnkvLfuu665c7Svf7Lrudcu56sOXpD5Wuq77zmr/uL/rugvXfOb6\n", - "mCNd1x3Vdd3Oruse6rruG13XvWf1ffeRBbNBXbh/BBbqI9V13U9IekTSayU9KekeSZf0fb9vYRdh\n", - "1HXdfkln9X3//TXvXS3pf/d9f/XqBPd5fd//l6Vd5GFK13UXSPqBpD/v+/6U1ffWLfuu67ZJ+gtJ\n", - "50g6UtItkk7o+/7HS7r8w46kPq6S9P/6vv94+K7rY850XfdiSS/u+35P13VHSLpP0hsl/Qe5jyyU\n", - "DerirXL/mGDRitS5kh7v+/6Jvu9/KOl/SHrDgq/BHCBGH/w7SX+2+vef6UCHMTOm7/uvS/q/4e2s\n", - "7N8g6S/7vv9h3/dPSHpcB/qQmRFJfUgH9w/J9TF3+r7/x77v96z+/QNJ+3Tgoew+smA2qAvJ/WOC\n", - "RU+kjpT0D2v+/46GijGLo5d0S9d193Zd959W3/uZvu/Z3fh7kn5mOZf2rCQr+5fqQB8B95fFcVnX\n", - "dQ90XXfdmmUk18cC6bruGElnSLpL7iNLZU1d3Ln6lvvHGhY9kXKuhc3B9r7vz5B0oaT/vLq88Qz9\n", - "gfVe19USqCh718v8+SNJWySdLukpSX+wwXddH3NgdSnps5Le2/f9xOar7iOLZbUu/kYH6uIHcv84\n", - "iEVPpJ6UdNSa/4/S5AzWLIC+759aff1fkm7QAfn1e6tr4uq67iWSnl7eFT7ryMo+9peXrb5n5kjf\n", - "90/3q0j6Ew3LE66PBdB13U/qwCTqM33f37j6tvvIElhTF9dTF+4fB7PoidS9ko7vuu6Yrut+StLb\n", - "JN204Gt4VtN13b/uuu45q3//G0mvk/SgDtTDO1e/9k5JN65/BDMHsrK/SdLbu677qa7rtkg6XtLd\n", - "S7i+ZxWrD2q4WAf6h+T6mDtd13WSrpP0cN/3n1jzkfvIgsnqwv3jYBa6aXHf9//Sdd27Jf1PST8h\n", - "6TpH7C2cn5F0w4E+on8l6b/3fX9z13X3SvrrrusulfSEDkRmmBnTdd1fStoh6d92XfcPkv6rpI9p\n", - "nbLv+/7hruv+WtLDkv5F0m/03opgpqxTH1dJelXXdafrwLLEfkm/Lrk+FsR2Se+QtLfruvtX37tS\n", - "7iPLYL26+KCkS9w/JvEWMcYYY4wxjTizuTHGGGNMI55IGWOMMcY04omUMcYYY0wjnkgZY4wxxjTi\n", - "iZQxxhhjTCOeSBljjDHGNOKJlDHGGGNMI55IGWOMMcY08v8BGKNoaFbqcjsAAAAASUVORK5CYII=\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "conv1\t(96, 3, 11, 11) (96,)\n", + "conv2\t(256, 48, 5, 5) (256,)\n", + "conv3\t(384, 256, 3, 3) (384,)\n", + "conv4\t(384, 192, 3, 3) (384,)\n", + "conv5\t(256, 192, 3, 3) (256,)\n", + "fc6\t(4096, 9216) (4096,)\n", + "fc7\t(4096, 4096) (4096,)\n", + "fc8\t(1000, 4096) (1000,)\n" + ] } ], "source": [ - "feat = net.blobs['conv3'].data[0]\n", - "vis_square(feat, padval=0.5)" + "for layer_name, param in net.params.iteritems():\n", + " print layer_name + '\\t' + str(param[0].data.shape), str(param[1].data.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The fourth layer output, `conv4` (rectified, all 384 channels)" + "* Since we're dealing with four-dimensional data here, we'll define a helper function for visualizing sets of rectangular heatmaps." ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 15, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "feat = net.blobs['conv4'].data[0]\n", - "vis_square(feat, padval=0.5)" + "def vis_square(data):\n", + " \"\"\"Take an array of shape (n, height, width) or (n, height, width, 3)\n", + " and visualize each (height, width) thing in a grid of size approx. sqrt(n) by sqrt(n)\"\"\"\n", + " \n", + " # normalize data for display\n", + " data = (data - data.min()) / (data.max() - data.min())\n", + " \n", + " # force the number of filters to be square\n", + " n = int(np.ceil(np.sqrt(data.shape[0])))\n", + " padding = (((0, n ** 2 - data.shape[0]),\n", + " (0, 1), (0, 1)) # add some space between filters\n", + " + ((0, 0),) * (data.ndim - 3)) # don't pad the last dimension (if there is one)\n", + " data = np.pad(data, padding, mode='constant', constant_values=1) # pad with ones (white)\n", + " \n", + " # tile the filters into an image\n", + " data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))\n", + " data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])\n", + " \n", + " plt.imshow(data); plt.axis('off')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The fifth layer output, `conv5` (rectified, all 256 channels)" + "* First we'll look at the first layer filters, `conv1`" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -11786,334 +559,30 @@ } ], "source": [ - "feat = net.blobs['conv5'].data[0]\n", - "vis_square(feat, padval=0.5)" + "# the parameters are a list of [weights, biases]\n", + "filters = net.params['conv1'][0].data\n", + "vis_square(filters.transpose(0, 2, 3, 1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The fifth layer after pooling, `pool5`" + "* The first layer output, `conv1` (rectified responses of the filters above, first 36 only)" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAlEAAAJMCAYAAADaNPObAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmMXfd14PlzWPvG2lhciquojSIVWZsj27GgcqA4GseQ\n", - "nX9sB4ghpNMBgo67Y4+nZSuDNKQ/0tM20OMMMsgf44kNJZioo0k7XgYtWEuz5FYUWZJlmSEliqTF\n", - "EllkVZFVxdr3qt/8wZJC1u+U9OPv3nfvfa++H8CweHiXU/fe997hrXPPU+ecAAAA4NpsyjsBAACA\n", - "ckQRBQAAEIEiCgAAIAJFFAAAQASKKAAAgAgUUQAAABFSL6JU9QFVPa6qJ1X1a2lvHwAAoAg0zTlR\n", - "qlolIm+JyP0ick5EXhGR33HOvZnaTgAAAAqgOuXt/aqInHLO9YmIqOp/EZHPiMh7RZSqMt0TAACU\n", - "DeecWvG0i6idInL2ij/3i8g9axdS1XeTElWVhoYGb0MzMzNe7N31rhR6J81aztpeFpLk0tHREbSc\n", - "dfzm5ubeN5dHH31UHn300bI8LmlLkstdd90VtNzPfvazkueStqLkklce1dX+W+bi4mKquVj7WFpa\n", - "Clo37eOyaZPf8bGyslLyXD7+8Y+/79+/8847snfvXnnzTf+XHCMjI6nmkrbQXGpra71YfX29F2tu\n", - "bvZiFy9eDNre1NRUUC5NTU1e7F0LCwvvbXt6enrd5T5Ikc/R++WRdhEVVNFcmSBfOwMAAIqit7dX\n", - "ent7g5ZNu4g6JyK7r/jzbrl8N+oqa+9EAQAAFEFPT4/09PS89+fHHnts3WXTLqJeFZEbVXWfiJwX\n", - "kc+LyO+sXWjtnSjrV0+W0LtWNTU1QcsVnVVgWrfXGxsbvVhVVZUXs36dd6UrLxogbTfffHPQcm+9\n", - "9VaJM4kX+mu1ou/DsmfPHi9mvQdZvyoKfQ8Pdccdd7zv33d1dcmuXbvk/Pnz3t9Zv84rRwsLC0Gx\n", - "iYmJoO1Zv3YO9UG/pkuy7XKXahHlnFtS1S+JyI9FpEpE/oon88oHRRSAcrBr1668UwBEJP07UeKc\n", - "e0pEnkp7uwAAAEXCxHIAAIAIFFEAAAARUv91XhFYc1bKkTX/w5rXYc36yKK5cvfu3R+8kIicPXv2\n", - "gxdKyGq4t4TOuEniyJEjXuzGG2/0YgcPHvRib7zxRklyylpdXZ0XC+1jKXJjObKZ3XP48OGg5QYG\n", - "Bkqcif2ea33GjI+PlzyXvFifRR/96EeD1n322We9WCWNNuJOFAAAQASKKAAAgAgUUQAAABEoogAA\n", - "ACJURgf2Glk0D6NYzYFW46MldLpvEh/+8Ie92HXXXefFrOb/Smkst66NJF9OmqbQByLGxsa82OTk\n", - "ZNrpFMaZM2fyTuE9R48eLfk+Qr9c2fr2B+tbImZnZ72YNWG8HIU+uLMRcWQAAAAiUEQBAABEoIgC\n", - "AACIQBEFAAAQoSIby2tra/NOIRVWE6vVnJtXI31/f38u+7Vk0TAeympyt6Y8W42olcJqqH3ppZdy\n", - "yKRy0eybDes9d25uzotVShO5ZXFx0YtZ38xgHYO2tjYvdunSpXQSKwBehQAAABEoogAAACJQRAEA\n", - "AESgiAIAAIhQkY3l5ThV+MCBA16sqakpaN3x8XEvNjMz48W6u7uvPTFcM6sJ02qkHBgYyCKdXNTV\n", - "1Xkxa5K7xXpIIM1p2mfPnk1tW3mqrq7It+/MWFP1renkra2tQetWcmP50tKSF9uxY4cXs46V9QDN\n", - "yy+/nE5iBcCdKAAAgAgUUQAAABEoogAAACJQRAEAAERQq0GupDtUdVnvEwAAIIaqinPO/9oJ4U4U\n", - "AABAFIooAACACBRRAAAAESiiAAAAIuQy8lbV7M+6yqZNfn23srISvU+rmT0kj1Ioei719fVezJpE\n", - "e+ONNwbt4/Tp017MmrI+NTXlxYp0XNra2ryY9XOEsq5xawr1/Py8Fws9Ltdff33Qcr/85S+DlrOO\n", - "i5Xz8vJy0PZCp26vnZhc9NdQaC6bN2/2YtbE9ixySZuVS01NjRezpmFnkUuRjgu52LlYnzvWZPi5\n", - "ubmgfVifbdaUeuuzaD3ciQIAAIhAEQUAABCBIgoAACACRRQAAECEXBrLQzQ0NHgxqxHXarq1Gs8Q\n", - "zjqmjY2NXqyjoyNoe1bTcjlOrb+WZsMQ1oMSeV27dXV1Xsy6DiyhTeRWE7XFujYmJyeD1i03oce4\n", - "UmTRRI7KYT14Ultb68VCG8ut7VmN5deCO1EAAAARKKIAAAAiUEQBAABEoIgCAACIUIjGcqtRrKur\n", - "y4tZTZhZNGYeOHAgaLnh4eGgWNFZE2sHBwe92PT0dND2rAbq0EnVoazGd8vMzEz0PkIbqIvEauq3\n", - "msiRj9CHOCxJrmVL2tPtkb7Q126lPLAwNjbmxawHzEJZ7+FJ39e5EwUAABCBIgoAACACRRQAAEAE\n", - "iigAAIAIhWgsT6JI08krpZnPmhhtTYQNnRLb2dkZvW45sqbtW2ZnZ0ucicjevXu9WFNTkxezprGf\n", - "OXMm1VwmJiaClrMeNElTc3OzF0t7Gj0qR+hE6ywePLEe+qlkLS0tXsw6zqGv35qaGi8W+n69Hu5E\n", - "AQAARKCIAgAAiEARBQAAEIEiCgAAIEIhGsut5vAiNWn39fV5MavZMHSC90YzMjJS8n2kPb05iS1b\n", - "tgQtd+7cOS9mTXdPor6+PtXtpS3J9OFYRXqowWpqtaZSZ5Hz22+/XfJ9lKPQ11AW7/+Li4sl30eR\n", - "WA+BhD6gkhXuRAEAAESgiAIAAIhAEQUAABCBIgoAACBCLo3la5vFGhsbvWWsqaRWU11HR4cXS7sJ\n", - "02r2tRrLrYbQ6upC9O5fE+tnS3sa7549e1LdXhZaW1u92Pj4uBdLMlXYmtBrsZpdrXMUOhXdanLv\n", - "6uoKWtdqDremou/YsSNoexcuXPBi1msr1tLSUmrbSso6P1lMsrdY31SAYj0wlMVUdOu9Ja+HMcbG\n", - "xrxYkvNhNaUnfb1xJwoAACACRRQAAEAEiigAAIAIFFEAAAARNOtmQlV1NDACAIByoKrinDOfGOJO\n", - "FAAAQASKKAAAgAgUUQAAABEoogAAACLkMk77jjvuuOrPU1NT3jJrp5qvp7+/34tZU11HR0e9WJLJ\n", - "0klYjfVFyqW9vd2LWZO0rUnu8/PzXsyaSG8tNzg46MWKdFx27tzpxayJujMzM0H7sKZwb9++3Yv1\n", - "9fV5sdDj0tnZ6cVGRkaC1rUU5dotSh4i5LKeJLncfvvtQcu9/vrrJc8lbeRiS5JL6DeDWN9W0NDQ\n", - "4MVC38NFuBMFAAAQhSIKAAAgAkUUAABABIooAACACLk0lp8+ffqqP4+Pj+eRRsWora31YgsLC9Hb\n", - "s5ql29ravFhHR4cXGx4e9mJnzpyJzqVIzp8/n+r2rOb6s2fPRm/Pav5f+xDHep599tno/QJps97T\n", - "rCZj65qfnJwsSU4oLuuBHIv1IFpra2uifXMnCgAAIAJFFAAAQASKKAAAgAgUUQAAABFyaSy/lmmg\n", - "uNqOHTuClhsYGEh1v1azptX8aU3hRjasc3Ts2DEvZk30Rz6sxmjLRmuWDn0YxZpAXck+9rGPBS33\n", - "4osvljiTbFhN3/X19V5sdnY2eh9NTU3R64pwJwoAACAKRRQAAEAEiigAAIAIFFEAAAARcmksd87l\n", - "sduKYE0Tz+J4btrk19tWY3lejZ5dXV1ezHqAYXp6OnofVVVVXiztJu2VlZVUt2edNysGFMnFixe9\n", - "WE1NjRdL8s0MKE/V1X7ZMjQ0FL29ubm5JOlwJwoAACAGRRQAAEAEiigAAIAIFFEAAAARcmks32hT\n", - "ZtOUZDJrEhMTE16ssbExh0xs1hRbK5aksbwctbe3By03ODjoxZhsXnobbRJ5KOubDzZv3uzFRkZG\n", - "vFjaD2cUSaVMIg9lfe40Nzenuo/h4eFE63MnCgAAIAJFFAAAQASKKAAAgAgUUQAAABFyaSzfSLKY\n", - "Dm1NDreaK5M09FtTYkNlMek7C9ZxtqYoW6yp8lZjfkNDQ9D2mpqavJg1oX1qaipoe+V4PmJVyvWY\n", - "NqthN/T6CRV67JM8tGI1paM8We+51rd2hOro6PBiSafecycKAAAgAkUUAABABIooAACACFFFlKru\n", - "VtXDqnpMVY+q6r9bjXeo6jOqekJVn1bVtnTTBQAAKAa1Gl4/cCXV7SKy3Tn3uqo2i8jPROSzIvJ7\n", - "IjLsnPumqn5NRNqdc19fs66L2ScAAEDWVFWcc2r9XdSdKOfcoHPu9dX/nhKRN0Vkp4g8KCKPry72\n", - "uFwurAAAACpO4p4oVd0nIneIyE9FZJtzbmj1r4ZEZFvS7QMAABRRojlRq7/K+68i8sfOuUnVf7nb\n", - "5Zxzqmr+3u7RRx997797enqkp6cnSRoAAACp6O3tld7e3qBlo3qiRERUtUZE/j8Reco59+erseMi\n", - "0uOcG1TVHSJy2Dl3YM169EQBAICy8H49UVF3ovTyLae/EpE33i2gVv1QRB4SkW+s/v/310soa1bh\n", - "FprHli1bvJg1NdWaCG5N6LWWC83FmsY7Pz8ftK4lyXFJm5XLtm3+b4QvXLiQ6n6tKeHW9G9rubm5\n", - "uVRzsRT9HFm5tLX5D+bedtttXuz06dNe7Ny5c15s7QT+cjwmWUh7Mr5ldHTUi1kT9K1p50U6LuRi\n", - "57J161YvdvHixeh9WFPHrc9Aa3K9dVys2KFDh4Jy6evr82LWdXotN3pif533ayLyuyJyRFV/vhp7\n", - "RET+k4g8qaq/LyJ9IvK5yO0DAAAUWlQR5Zx7QdZvSr8/Ph0AAIDywMRyAACACBRRAAAAERKNOEhL\n", - "Z2enF+vq6vJiVjPaqVOnSpJTWtY2xCaVpIm8HFlNrGmbnZ0NWi6LJvK0VVeHvcSt11YS1gMVFqsh\n", - "Gemyru/Qaz7U9PR0qtvLi9UEbT0QYTl69KgXC33PqKmp8WLWZ4fVfJ22ycnJVLdXX1/vxSYmJqK3\n", - "ZzV9hx7nxcXF6P2uhztRAAAAESiiAAAAIlBEAQAARKCIAgAAiFCIxvKiC51ObuErbpJJu+F5o9mz\n", - "Z0/Qcm+//Xaq+x0ZGfFiJ06c8GLWayvthzFQelZD9kZjTekfHBwMWreSr3mrGT7tB0ryfMCMO1EA\n", - "AAARKKIAAAAiUEQBAABEoIgCAACIUIjGcqsJ1YoBKF/79u3zYtZk83Pnznmxvr6+EmSEtFRKY/nC\n", - "woIXs741wfp56+rqovebxSTyUGl/K0alfysBd6IAAAAiUEQBAABEoIgCAACIQBEFAAAQoRCN5Zbu\n", - "7u6g5c6fP1/iTESam5uDlrOmL280DQ0NQcvNzs6WOBOIhF+TNTU1XmxxcTHVXEJfRyg/U1NTeadQ\n", - "MhcuXPBiVhN52g3ZaQt9/fEtG9eGO1EAAAARKKIAAAAiUEQBAABEoIgCAACIUNjG8q1btwYtl6Sx\n", - "3JqWbE2OXVpait5HkVjNw3ntg8by/FjTltva2rzYxYsXU93vpk1h/2azJpYDRWJ9TiRprreavtNu\n", - "1rc+77JgNeZXEu5EAQAARKCIAgAAiEARBQAAEIEiCgAAIIJmPZ1UVR0TUQEAQDlQVXHOqfV33IkC\n", - "AACIQBEFAAAQgSIKAAAgAkUUAABAhFwmlqua/VklZTWzb9682YtZ05ytieXz8/PR+52bm/NieRwT\n", - "ETu/IuVinaPJyclccuG42Lm0tLR4sSTTlq2p94uLix+YR5HOT2gunZ2dXsyahm29Z1ixJLl88pOf\n", - "DFru2Wef9WIrKyup5pI2crFVSi67d+/2Yk1NTV5seHg4KHYtD79xJwoAACACRRQAAEAEiigAAIAI\n", - "FFEAAAARcmksL4qFhQUvlnZzbl5Neln44he/GLTc3/3d33kx69hbsmiWbmxsLPk+KlmSJnLL2iZy\n", - "ZMNq6Lds2uT/29tqLM+ClUuS17P1fv3AAw8Erfv66697sYGBgehcYLPOeUdHR9C61oNjSXEnCgAA\n", - "IAJFFAAAQASKKAAAgAgUUQAAABEK21huTfK1msKSNO5ZTYTV1f4hsSaWh7Ka4DaaqqqqvFOoOFk0\n", - "3Feq5uZmL1ZfX+/FxsfHvVjaTe8jIyOpbi+Jf/zHfwxaLsn7ofWea03ft469xZpK3draeu2JrQr9\n", - "hom8tLW1ebGxsbEcMimW0IciQq+ra8EnPAAAQASKKAAAgAgUUQAAABEoogAAACKo1UhX0h2qBu3Q\n", - "ahi0YhcuXAjar/VzdnV1eTGradKayBzaXGk1vFnTukMnm6fd+G4dl7ymrJOLjVzSzSPtxvKiHBOR\n", - "8szFemAo9BsNLNb5tR7EKPpxsaTdWF6O14sldEr9zMxMVC6qKs45MxnuRAEAAESgiAIAAIhAEQUA\n", - "ABCBIgoAACBCYRvL02b9nFu2bPFiy8vLXixJY3loLuXYzJc2crGRS+nzqKur82Lz8/O55JIEudjI\n", - "xUYuNhrLAQAASowiCgAAIAJFFAAAQASKKAAAgAj++OsNZGRkJO8UAGTspptuClpuaGjIi1lTzJPY\n", - "tMn/d6z1LQdW023oVG9ryrW1X2vy9crKSlB+HR0dQblYjcJJHm5qaGjwYrt3747eXhJVVVVezPpW\n", - "DEt3d3f0fs+fPx+9LpLjThQAAEAEiigAAIAIFFEAAAARKKIAAAAi5DKxPOt9AgAAxGBiOQAAQMoo\n", - "ogAAACJQRAEAAESgiAIAAIiQy8Rya2ptqVnN7HnkIRKeizUBN3R7oftYXl5ONRdre6HK8Rxlwcql\n", - "qakpaLnZ2dno/dbV1Xmxubk5L1Zur+ebb745aLm33nqr5LmkzcrFmuA9ODjoxZaWlqL3a70/WNsr\n", - "0nG59957vZh1fb/55ptezJra3tjY6MW2bt3qxX7+8597sSIdl/r6ei82Pz+f6n6tSfMzMzNerEjH\n", - "ZT3ciQIAAIhAEQUAABCBIgoAACACRRQAAECEXBrLESZJk7bFauYLlXYuabMaEJubm4PWnZycTDud\n", - "krOaMC379u0LWq6vr8+Lpd1MinwMDAx4sbRfz2lv7+677w5a7mc/+5kXC20KfuWVV7xY6DVvNZFb\n", - "jhw5ErRckVifE6HvpSMjI2mnU3jciQIAAIhAEQUAABCBIgoAACACRRQAAEAEGssDVFeHHaYkE3+R\n", - "vtDmz3JsLA9lTR/e6EInkWdh0yb/37ErKyup7iO06Xv//v1By7399ttJ0ik063zU1tZ6MasB3Vq3\n", - "UiwsLHgxqwHdmtA+Njbmxa5lInjRVe5ZBwAAKCGKKAAAgAgUUQAAABEoogAAACLQWB6gUhrGQxvk\n", - "y5HVqDg+Pp5DJnYz99zcXA6ZiExNTeWyX4s19bhI+RVFFs3mRffqq6+WfB9JmsNDm/VDH24pkomJ\n", - "CS9mXX/btm0L2t6FCxcS51Rk3IkCAACIQBEFAAAQgSIKAAAgAkUUAABAhMrtNMaGl1czd177tfT3\n", - "9+edQuFYDe6tra1ebHR01IvNzs6mmkuRGsbPnTuXdwq5s85HkV7PWQh9sGHnzp1B2zt16lTinIqM\n", - "O1EAAAARKKIAAAAiJCqiVLVKVX+uqj9a/XOHqj6jqidU9WlVbUsnTQAAgGJJeifqj0XkDRF5d9Lh\n", - "10XkGefcTSLy3OqfAQAAKk50Y7mq7hKRT4nIn4nI/7waflBE7lv978dFpFcopArDmkSLZGpra71Y\n", - "Q0ODF7Om3k9PT3sxq+m56Do7O73YyMiIF5uZmfFi1vGzLCwsXHti69i3b58X27x5sxezzlnajeWW\n", - "PI6JiD3BOzSXUDU1NV7M+rYBayK4tVzoPrJQKdP3rSnr1rUROrW90iW5E/UtEfn3InJl2/4259zQ\n", - "6n8PiUjYXHgAAIAyE1VEqeqnReSCc+7nIqLWMu7yPxvC/ukAAABQZmJ/nfcxEXlQVT8lIvUisllV\n", - "/0ZEhlR1u3NuUFV3iEhlf/MgAACoKL29vdLb2xu0bFQR5Zz7ExH5ExERVb1PRP4X59wXVfWbIvKQ\n", - "iHxj9f+/H7N9AACAPPT09EhPT897f37sscfWXVZDm/XW3cDlIuqrzrkHVbVDRJ4UkT0i0icin3PO\n", - "ja1Z3iXdJwAAQBZUVZxzZutS4iIqIhmKKAAAUBber4hiYjkAAEAEiigAAIAIFFEAAAARoieWJ7F2\n", - "ovPc3Fyq27emD4+Pj3sxVf9XnFYsSQ+XNb3amtxs7TdUXV2dF7MmzFqsn+2OO+7wYjt27PBik5OT\n", - "Xmzv3r1e7Pnnn/diN9xwgxc7fPiwF9u2zZ/XGjp5PfS62rp1qxcbGhryYqHnqKmpyYtZ08lDWeco\n", - "yfWSRFFysfLYuXOnF7OOu/VeEKqtzf860EuXLnmx0GNiXd8W63q0JDk/ra2tQcuFHr+0c0ly3pLk\n", - "Ul3tf0xa0+yT5LJpk38/I4ve4bRfz9axsljHryjvLSLXduy5EwUAABCBIgoAACACRRQAAEAEiigA\n", - "AIAIuTSWp91IvlZo47HFavDr7OwMWvfCBf+rAmdnZ6NzCRXaRB7qxIkTXqy/v9+LDQ8Pe7EXXnjB\n", - "i1nNuGfPng3KxTqmaUt7H0mayBGvvr7ei9XW1nqxJA3Kzc3N0etWirQbrQ8ePOjFfuM3fiNo3e99\n", - "73teLPS9JZT1s1mfE5aVlZWg5SplAHXowwkjIyMlziQ73IkCAACIQBEFAAAQgSIKAAAgAkUUAABA\n", - "hFway4uspqbGi4U2k168eNGLlWPDoDUlNknzeui0+LRZjcaWUj/ogGxYzb5pN/lb3zaQROgk8ixY\n", - "3/RQVVUVtFzazdyhrG8+SDsX6+GErq6uoHXPnTuXai5FtxHfS7kTBQAAEIEiCgAAIAJFFAAAQASK\n", - "KAAAgAg0lq9hNVBvtAnUVtO31XBfV1fnxRYXF72Y1Zy6c+fOyOxQrqxJ142NjUHrJvkWgjSl/e0A\n", - "VjO8FUsyETyU1TBuve4vXbqU6n7feOMNL2Y1c2/fvj3V/YayrlvYNtpnpQh3ogAAAKJQRAEAAESg\n", - "iAIAAIhAEQUAABCBjrk1rAnjoVNYizSdvLW11YuFTtm1LC8vezGr6dQ6BlZjZlNTU3QuoYo+Pddq\n", - "4LeaiiuZdb1YDyeEsNazrtFQ1rloaGiI3l6olZWVku/DYn2zQEdHhxfLosndemjFauofGRkpeS6W\n", - "tJvrUb421js2AABASiiiAAAAIlBEAQAARKCIAgAAiFDYxvLQBtssmjCthstQoY2tzc3NXmxqaip6\n", - "v0lYzb5JJjUvLCx4sb6+vujt5eXAgQNezGqan5yc9GKjo6Ne7K677vJi1qTmSmE1JFvHqiis95bQ\n", - "9xvrIQ7rNRQ6iX3//v1eLEnTvMU6F9b1Hdv4fy2sbzmwms2zMDMzk8t+UR64EwUAABCBIgoAACAC\n", - "RRQAAEAEiigAAIAImvWUbVV1RZrsDQAAsB5VFeec/xUTwp0oAACAKBRRAAAAESiiAAAAIlBEAQAA\n", - "RMhlYrmq2Z91lZtvvtmLWQ3pw8PDXsyaDm2tG5JHKYTmYk1ttyYmW+uGNu8nOS73339/0HJHjhzx\n", - "YhcuXEg1l7SF5tLU1OTFrHM0OzsbtN/QCdENDQ1erKWlxYtZE7GtdcfGxrxYR0eHFxsZGfFioefI\n", - "mrBtTWifnp7+wG1Z5+fGG2/0YtbPdenSJS9mHff6+vqg/VrfaFD069Z6b7Gu5SQT5a1cPvzhDwet\n", - "29jYGLTcmTNnvNi2bdu82EsvveTFin6OspAkl927d3sx61sJrM9ja3p/0Y/LergTBQAAEIEiCgAA\n", - "IAJFFAAAQASKKAAAgAi5NJaHsBrKrJjVEJo2q2HXkqQJ02I1KFuYAJ+fkCboa2E1Zlqsxkzr9WEt\n", - "Z8UsVkNoEtbDInV1dV7s7NmzXsx6EGGtwcFBLzY1NRWU2/LyshcLPU5FZzWMW9dt2u9fFmsfFy9e\n", - "9GKh157V/N/W1nbtiWHDsl4f14I7UQAAABEoogAAACJQRAEAAESgiAIAAIhQ2MZya9KwxWoITVtX\n", - "V1fQclk0ZhbJs88+68Vo6syG9TBB6FR0izU5PO1pwadPn/Zi1vR0a6I4AJEdO3YELTcwMFDiTOz3\n", - "oKqqKi9mfVNB6EMb1vas94zQB0hKgTtRAAAAESiiAAAAIlBEAQAARKCIAgAAiFDYxnKr8WzTJr/m\n", - "y6KxfHx8vOT7sIROUk17anYSodPdQx8cCLVly5ag5YaHh1Pdb2jzddpT5a1J/aHTzi0LCwtJ0gli\n", - "XadpXrtZ/AxJpxuvZb1erJh13Yb+vEV6f7De1638rEn21rpWk3Ha32KR12sctsXFxVS3l/T1wZ0o\n", - "AACACBRRAAAAESiiAAAAIlBEAQAARCirxnKriTALIyMjuezXaq60FKlxtL+/P+8UNoSOjg4vtrKy\n", - "ErRuaHO99SBHkW3fvt2LzczMBK1rHRNr+n7aTa2tra1erL6+PtV9FEk5/myh38JgPYAU+poMlcUk\n", - "8lChDfxJpolbzfqh086zUl7vkgAAAAVBEQUAABCBIgoAACACRRQAAECEXBrL1zZMh04dtyb0Ws3X\n", - "VtNtEu3t7UHLTU5OerEkU6RHR0ej101b6ATh0Km93d3diXO6Ul5T5Ys0pTjtid1JmmI7OzuDlrNe\n", - "M11dXV4sZCL9xYsXvdjs7KwXC22Ita6ptM+39Rq3mq+zmMaeRE1NTdBy1jcVWO8jVjO39WDRpUuX\n", - "vNirr74alEvarAcx0m4sz4I1Md96oGJwcNCLpd30vXPnTi9mXQfW68h6WOTWW2/1Yjt27IjM7jLu\n", - "RAEAAESgiAIAAIhAEQUAABCBIgoAACCCZt0Yq6quSM24AAAA61FVcc6p9XfciQIAAIhAEQUAABCB\n", - "IgoAACACRRQAAECEXCaWq5r9WSVlNbPnkYdIslysCa4XLlwIWteaOhuay9atW4P2Ebrc0aNHo3Ox\n", - "HDhwwIv19/d7MWsa78DAQKq5pK1Sctm1a1fQctZ5SzOPtIXmYl17FmuKe9q51NbWBm3Pes+wJnNb\n", - "3zqR5BxZyyV5ICk0l927dwdtL/TnOHPmTHQuWbBysc5vFg+DhR4X69surG85sKanW6+tc+fOBeWy\n", - "Hu5EAQAARKCIAgAAiEARBQAAEIEiCgAAIEIujeUhOjo6gpYbHR1Ndb/79+/3Yj/4wQ+C1n344Ye9\n", - "2FNPPZWLiRC7AAAgAElEQVQ4pytZTXBVVVVeLO1GwImJCS9mNSCGNpanLbS5PknTLsLV19d7sXvv\n", - "vTdo3SeeeCLtdK5y5513Bi332muvpbpf69rbtm2bF2tsbPRiQ0NDqeaysLAQvW5eTcZZOHv2bNBy\n", - "e/bsKXEm6TfXhyr6N4rU1NQELVddnU15w50oAACACBRRAAAAESiiAAAAIhS2J6qpqSloubm5OS82\n", - "MzOTdjqFYQ3btFi9U0lYx9liDdHMQtq9cahcoUM/0+6JqhQrKysl34c1mNQa6JnXe701RDNt1kBU\n", - "a4AkRJaWloKWK0WfFHeiAAAAIlBEAQAARKCIAgAAiEARBQAAEEGzHqylqkE7tAbOWUMlp6envZjV\n", - "+Fj0b84OzSXtxvJKOS5pIxdbUXJJkkd7e3vQcpcuXSp5LmmrlFysYa2hD7eknUvaQnNJMmwztIF6\n", - "cXExaL9ZCD0uocM2rWHQFqtZf20uqirOOfPAcCcKAAAgAkUUAABABIooAACACNFFlKq2qerfq+qb\n", - "qvqGqt6jqh2q+oyqnlDVp1W1Lc1kAQAAiiK6sVxVHxeR551z31HVahFpEpH/VUSGnXPfVNWviUi7\n", - "c+7ra9bL5Suiy7Gx0GJNcu/s7Axa15qyWynHJW3kYkuSy969e73Yvn37gtZ9/vnnU8sjbeRiS5JL\n", - "R0dH0HJjY2NeLO0Hi7Zv3+7FrPfhd955x4tZk7RDcwltjLZ+3tDjNzIyEpRLFtK+dq0GdKuRPiSX\n", - "1BvLVbVVRO51zn1ndYdLzrlxEXlQRB5fXexxEflszPYBAACKLvbXedeJyEVV/a6qvqaq31bVJhHZ\n", - "5pwbWl1mSES2pZIlAABAwcR+G1+1iNwpIl9yzr2iqn8uIlf92s455/L61R0AAECM3t5e6e3tDVo2\n", - "tojqF5F+59wrq3/+exF5REQGVXW7c25QVXeIyIXI7QMAAGSup6dHenp63vvzY489tu6yUUXUapF0\n", - "VlVvcs6dEJH7ReTY6v8eEpFvrP7/92O2v57QZrnR0dE0d1sodXV1Xsya7r7RWE2YtbW1Xmzr1q1e\n", - "zGq4R/ruueceL9bd3e3FrAnCaxvLUdn27NkTtJw1xXxmZibVXLZs2ZLq9izWt3F0dXUFrRs6yd1q\n", - "QC9H1udd6LGyvsnDav6/FrF3okRE/q2I/D+qWisivxSR3xORKhF5UlV/X0T6RORzibIDAAAoqOgi\n", - "yjn3CxH5sPFX98enAwAAUB6YWA4AABCBIgoAACBC9MTy6B2quqz3CQAAECP1ieUAAAAbHUUUAABA\n", - "BIooAACACBRRAAAAEZIM24ymenV/1h/+4R96y1jTjY8cORK0/W9961tezGpmX5uHiMiXvvQlL3bn\n", - "nXd6sXfeeceLPf74416sr68vOhdL6HTy0Km9SXJJG7nYyjEXa7J+6PasCdHnz5+PyiMLlZLLgQMH\n", - "gpY7fvx4yXNJW5JcampqgtZdWFjwYi0tLV5sYmIiOpe0Ff0cWZ93f/RHf+TF7rvvPi9mTWj/p3/6\n", - "Jy/2F3/xF15sampq3TzX4k4UAABABIooAACACBRRAAAAESiiAAAAIuTSWL7W4cOHvdhbb73lxW6/\n", - "/fYs0gliNb9WV5f+cIY2jKetu7s7aLm1DcDIzvbt273YJz/5yaB1//qv/zrVXDZtCvv32fLycqr7\n", - "RZjdu3d7sTfffDNo3YceesiLJbl+rGvFii0tLUXvI4nQh3msxvLJycm009lQZmdnS76P6enpROtz\n", - "JwoAACACRRQAAEAEiigAAIAIFFEAAAAR1JoSWtIdqma7w1Whk1k3b94ctD1r6qw12XZxcTE6lyyE\n", - "5tLc3By0vWuZ9BqbSxbKMZcsGstDc7FeCxbr9WFNeV7boFuO5ydUfX29F5ubm0s1F6ux/MyZM0H7\n", - "CG0sr+RzlAS52JLk0tTU5MWqqqq8mNXob+13bUxVxTlnJsOdKAAAgAgUUQAAABEoogAAACJQRAEA\n", - "AESgsXyNtra2oO2NjY2VPJcshOZiNbtaQhtgk+SSBXKxZZHL/v37vdjaqcKDg4MlzyNUXo3l1j5W\n", - "Vlaicwl9MCbURrtuQ5GLrci50FgOAACQMoooAACACBRRAAAAESiiAAAAIlTnnUDRWA3jmzZRawKl\n", - "0NnZ6cW2bt3qxQYGBrJIpxCSTCdPwmoi7+7uDlr3/PnzqeZSXe1/NFnXimVoaCjVXID3Q3UAAAAQ\n", - "gSIKAAAgAkUUAABABIooAACACIVtLN+9e3fQcrOzs15seHg4aN3QycDWFGBLY2OjF5uZmQlat+jq\n", - "6uqClksysbzoqqqqvJjVAHvo0KHofbz++uvR6xaddaysicRWw/TFixdLklM5S/uBl5tvvtmLhb4P\n", - "p91Yfvvtt3sx6/3VEtpY3tzcHLRce3t70HITExNezJoCX3TWOV/7jQEiIqOjo17MOqa7du3yYidP\n", - "nozMrni4EwUAABCBIgoAACACRRQAAEAEiigAAIAImvbU2w/coarLep8AAAAxVFWcc/5TMMKdKAAA\n", - "gCgUUQAAABEoogAAACJQRAEAAETIZWK5NaV4rdBpstYU5LGxMS9mNbNbebS0tATt15rgGjrZPDQX\n", - "a9qt9fNaU9vb2tq8WJLjkgVysYXmUltbG7S9hYWFkudSakXJQyQ8l/vuuy9oe2+//XbQcmfPno3O\n", - "JQtJcuno6AhazpqanSSXL37xi0Hbe+2114KWO3bsWHQulq6urqDlQif8l+P10tnZ6cU++9nPejFr\n", - "KvpPfvKT6FzWw50oAACACBRRAAAAESiiAAAAIlBEAQAARMhlYvna2KFDh7zlDh486MWWlpa8mNUo\n", - "NjIy4sVCm9YaGxu9mGVubs6Lpd1YnoVyzOWGG27wYo888kjQPh5++GEvluR6sXR3dwctd/78+aDl\n", - "kuRy9913By336quvljyXNBUlD5HwXLZs2RK0vZmZmejlin5crAdexsfHc8kl9LhYyyX53EzyPnfn\n", - "nXd6MevBoh/96Eep5pKF0Fysh6vuvfdeL7a8vOzFYhvLmVgOAACQMoooAACACBRRAAAAESiiAAAA\n", - "IuQysTxNVlNwEqFNnVmwpqfX1dV5MWt6utVsmLZPf/rTQcs999xzXiyL/PKyefPmoOVCG8uzUF9f\n", - "78WshycQb3JyMmi5qqqqEmeCa2E1PB84cCBo3ePHj0fv13r9WddQ6HVVKawHzA4fPpxDJpdxJwoA\n", - "ACACRRQAAEAEiigAAIAIFFEAAAARCjGxPAvlOJnVaiK3ms0vXbrkxaxprUlysaTdWF6O58jS3Nwc\n", - "tNzU1FTJc7Em8C8sLHgxq1kz7VzSVJQ8RMhlPZWSi/XQxSc+8YmgdZ966qnoXKzYF77whaD9njx5\n", - "0otZ30pQKecobUwsBwAAKDGKKAAAgAgUUQAAABEoogAAACIUdmK51VBmNfhZDdRW42w5mp+fD4rl\n", - "5cUXX/RiHR0dXqyzs9OL9ff3lySnIghtGM9CkSbww2e9p1kTy62m23I8t21tbV5sbGwsh0zCWcc+\n", - "9EGMLFjXELLDnSgAAIAIFFEAAAARKKIAAAAiUEQBAABEKGxj+S233OLFampqvJg1+frEiRNB+7Aa\n", - "nkObHEMngleym266yYv91m/9VtC6f/qnf5p2OoXR3t7uxayp8huN9XqzjI6OerGsv1mhFKzr4vbb\n", - "bw9a9/z5817srbfeSpxTEWza5P9bvra2Nmjdubk5L5Z2o7X1MI81ETxt1jVvXQfW8Tty5EiquVif\n", - "vYuLi6nuo1xxJwoAACACRRQAAEAEiigAAIAIFFEAAAARNOuGTVV1ldAkCgAAKp+qinPO/xoV4U4U\n", - "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\n", - "B1T1uKqeVNWv5ZHDRqaqu1X1sKoeU9WjqvrvVuMdqvqMqp5Q1adVtS3vXDcKVa1S1Z+r6o9W/8y5\n", - "yImqtqnq36vqm6r6hqrew/nIj6o+svpe9c+q+reqWsf5yI6qfkdVh1T1n6+IrXv8V8/XydXP+E/m\n", - "k3V2Mi+iVLVKRP5PEXlARA6KyO+o6i1Z57HBLYrIV5xzh0TkIyLyR6vn4Osi8oxz7iYReW71z8jG\n", - "H4vIGyLy7pMenIv8/B8i8t+cc7eIyG0iclw4H7lQ1X0i8gcicqdz7ldEpEpEviCcjyx9Vy5/Xl/J\n", - "PAveniIAAAMgSURBVP6qelBEPi+XP9sfEJG/VNWK/o1XHj/cr4rIKedcn3NuUUT+i4h8Joc8Nizn\n", - "3KBz7vXV/54SkTdFZKeIPCgij68u9riIfDafDDcWVd0lIp8Skf9bRN59jJZzkQNVbRWRe51z3xER\n", - "cc4tOefGhfORlwm5/I++RlWtFpFGETkvnI/MOOf+h4hcWhNe7/h/RkSecM4tOuf6ROSUXP7Mr1h5\n", - "FFE7ReTsFX/uX40hB6v/0rtDRH4qItucc0OrfzUkIttySmuj+ZaI/HsRWbkixrnIx3UiclFVv6uq\n", - "r6nqt1W1STgfuXDOjYrIfxaRM3K5eBpzzj0jnI+8rXf8u+XyZ/q7Kv7zPY8iisFUBaGqzSLyX0Xk\n", - "j51zk1f+nbs8QIxzVWKq+mkRueCc+7n8y12oq3AuMlUtIneKyF865+4UkWlZ86sizkd2VPV6Efmy\n", - "iOyTyx/Qzar6u1cuw/nIV8Dxr+hzk0cRdU5Edl/x591ydeWKDKhqjVwuoP7GOff91fCQqm5f/fsd\n", - "InIhr/w2kI+JyIOqelpEnhCRX1fVvxHORV76RaTfOffK6p//Xi4XVYOcj1zcLSIvOudGnHNLIvI9\n", - "EfmocD7ytt7709rP912rsYqVRxH1qojcqKr7VLVWLjeh/TCHPDYsVVUR+SsRecM59+dX/NUPReSh\n", - "1f9+SES+v3ZdpMs59yfOud3OuevkcsPsf3fOfVE4F7lwzg2KyFlVvWk1dL+IHBORHwnnIw/HReQj\n", - "qtqw+r51v1x+AIPzka/13p9+KCJfUNVaVb1ORG4UkZdzyC8zuXzti6r+TyLy53L5SYu/cs79b5kn\n", - "sYGp6sdF5CcickT+5VbrI3L5Yn9SRPaISJ+IfM45N5ZHjhuRqt4nIl91zj2oqh3CuciFqn5ILjf5\n", - "14rIL0Xk9+TyexXnIweq+rBc/qBeEZHXRORfi0iLcD4yoapPiMh9IrJFLvc//QcR+YGsc/xV9U9E\n", - "5F+JyJJcbhX5cQ5pZ4bvzgMAAIhQ0fMbAAAASoUiCgAAIAJFFAAAQASKKAAAgAgUUQAAABEoogAA\n", - "ACJQRAEAAET4/wEtHY5P7rJ1tgAAAABJRU5ErkJggg==\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -12121,416 +590,29 @@ } ], "source": [ - "feat = net.blobs['pool5'].data[0]\n", - "vis_square(feat, padval=1)" + "feat = net.blobs['conv1'].data[0, :36]\n", + "vis_square(feat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The first fully connected layer, `fc6` (rectified)\n", - "\n", - "We show the output values and the histogram of the positive values" + "* The fifth layer after pooling, `pool5`" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": [ - "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\n", - "/QRSxC44KICduwAAAABJRU5ErkJggg==\n" - ], + "image/png": "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\ngySWe81HTeSR119/PWtdm0TfE7mfpQsLC3Wn03ruRAEAFFBEAQAUUEQBABRQRAEAFNBYnmHv3rzT\nVGXiL/XLbf7cjY3luaLpww+73EnkTdizJ/137M7OTq3HyG36fuyxx7LWvf/++1XSabXo9RgZGUli\nUQN6tO2g2NzcTGJRA3o0oX1paSmJPchE8LYb3FcdAKCHFFEAAAUUUQAABRRRAAAFNJZnGJSG8dwG\n+d0oalRcXl7uQyZxM/fGxkYfMul0VldX+3LcSDT1uE35tUUTzeZt9+qrr/b8GFWaw3Ob9XMfbmmT\nW7duJbHo+jt69GjW/q5fv145pzZzJwoAoIAiCgCggCIKAKCAIgoAoMDgdhrz0OtXM3e/jhu5dOlS\nv1NonajB/cCBA0lscXExia2vr9eaS5saxi9fvtzvFPouej3a9H5uQu6DDSdPnsza33vvvVc5pzZz\nJwoAoIAiCgCggCIKAKCAIgoAoIDG8odINImWakZGRpLY+Ph4Eoum3t++fTuJRU3PbTc7O5vEFhYW\nktja2loSi85fZHNz88ETu48zZ84ksf379yex6DWru7E80o9z0unEE7xzc8k1PDycxKJfG4gmgkfr\nco/RhEGZvh9NWY+ujdyp7YPOnSgAgAKKKACAAoooAIACiigAgALd3Ga9GjV+QACACrpR0J0oAIAC\niigAgAKKKACAAoooAIACjU8sj6Y5b2xs1HqMaPrw8vJyEut20z6xKFal+T76e6PJzdFxc42Ojiax\naMJsJPrbnn322SR2/PjxJLayspLEHn300ST2ne98J4k9/vjjSeyll15KYkePHk1iuZPXc6+rI0eO\nJLFr164lsdzXaHJyMolF08lzRa9RleulirbkEuVx8uTJJBad9+izINf09HQSu3nzZhLLPSfR9R2J\nrsdIldfnwIEDWetyz1/duVR53arksndv+jUZTbOvksuePen9jCYe+qr7/Rydq0h0/try2dLpPNi5\ndycKAKCAIgoAoIAiCgCggCIKAKBA443ldTeRR3IbjyNRg9/s7GzWttevX09i6+vrxbnkym0iz/XO\nO+8ksUuXLiWx+fn5JPbyyy8nsagZ9+LFi1m5ROe0bnUfo0oTOeXGxsaS2MjISBKr0qA8NTVVvO2g\nqLvR+sknn0xiv/7rv5617Te/+c0klvvZkiv626LvicjOzk7Wuj78ckhP5D6csLCw0ONMmuNOFABA\n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\nos+lqLE+V9S4/fTTT2dte+7cueLj3rp1q3jbyOrqaq37a7vHH388a917773X40w6nRMnTmSty20s\n343m5ub6ncL/4U4UAEABRRQAQAFFFABAAUUUAECBVjSWV2nWrFvUTBpNyB7kJvJI1FRdd8N4rmja\ncjS5/mETNZY///zzfcgk9q1vfSuJRU3kbXkt636QgN2piYbxXK+88kq/U+i76NdHLl++nLVtL97T\n7kQBABRQRAEAFFBEAQAUUEQBABToNt082e12+9KtGf2d0RTuJsglJpdYbi7RQxGf+cxnklj0UMT3\nv//9WnPptbbk0ekMTi7j4+NJLHqIo4lc6iaX2G7MZXh4OGt/0edcbr1zn3XhiXEnCgCggCIKAKCA\nIgoAoIAiCgCgwK5vLM+deLwbG+iaMCi5TExMJLFosu2dO3d6nkvd5NLePDqdwcnls5/9bBLbt29f\nErt06VISe+ONN2rNZXR0NInlvncjg/Ia1W035hL9MkNkcXGx1lw6GssBAOqjiAIAKKCIAgAooIgC\nACiwt+kDRlOVd3Z2ktinP/3prP2trq4msajJkcEWNaJGNjc3k1jTD1c0KZruu7W11YdMem9kZCSJ\nRa93roMHD1ZJpzVyr4GjR48msZMnTyaxaBJ03Z+50UMhD5v9+/dnrbt161YSm52dTWLR9+xuVKVh\nvBfciQIAKKCIAgAooIgCACigiAIAKND4xPJOpzO4XbwAwCAysRwAoC6KKACAAoooAIACiigAgAKN\nTyzvdtPerCeffDJr24WFhax10TTeaNsolyZEzfy5ufzGb/xG1rp/+Zd/6XkudauSSzQJP5I7tXdQ\nzkvd6s7lq1/9ata6r3/960V55E6yn56eTmLRpO9Lly4lsSrn5DOf+UzWuu9973tZ63JzqTINO1eV\n8/K5z30ua927776bxK5du1ZrLnWrksuJEyeS2N696dd49LotLS0V5xL9GsBzzz2XxObm5pLY1atX\nk9idO3eKc8k1NTWVxPbt25fEopwf5IE7d6IAAAooogAACiiiAAAKKKIAAAo03lgeiZq+f/M3fzNr\n229+85tJbHl5uXJObfWDH/yg3yn8j9/7vd/LWvdP//RPPc7k4RM10uc2zZ88eTJr3eXLlx8opzaK\nGlgjuY3MUWM5+aKG9irN6w+bK1euJLHooYi6ffnLX05if/VXf5W17Z//+Z8nsX/9138tzuUTn/hE\n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\nHzreW7zFsFB/AAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -12538,361 +620,31 @@ } ], "source": [ - "feat = net.blobs['fc6'].data[0]\n", - "plt.subplot(2, 1, 1)\n", - "plt.plot(feat.flat)\n", - "plt.subplot(2, 1, 2)\n", - "_ = plt.hist(feat.flat[feat.flat > 0], bins=100)" + "feat = net.blobs['pool5'].data[0]\n", + "vis_square(feat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The second fully connected layer, `fc7` (rectified)" + "* The first fully connected layer, `fc6` (rectified)\n", + "\n", + " We show the output values and the histogram of the positive values" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": [ - "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\n" - ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJPCAYAAACgtar/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XncHFWd7/Hvj8WLKwwjBlRmcFS8LjMD6IBeXB4UHEAH\ncZzrFWeUwXV8KeCGgqIEFQFX3McFMSKyCIowgiQCD4sIYUkgEDCABBIhT4iEhBCWhJz7R3eTTqe6\nu5Zzqk5Vfd6vV17pp7v6nFOntl+fc+qUOecEAAAAfzapugAAAABNQ4AFAADgGQEWAACAZwRYAAAA\nnhFgAQAAeEaABQAA4FmqAMvMtjKzM83sZjObb2a7mdnWZjbLzBaY2Uwz2yp0YQEAAOogbQvWNySd\n55x7oaR/kHSLpMMlzXLO7Sjpwu7fAAAArWfjJho1sy0lzXHO/d3A+7dIeo1zbsrMtpU06Zz73+GK\nCgAAUA9pWrCeI+leMzvJzK4zsx+a2ZMlTXPOTXWXmZI0LVgpAQAAaiRNgLWZpF0kfdc5t4ukBzXQ\nHeg6zWA8cwcAAECd4GmcxZIWO+eu7v59pqQjJC0xs22dc0vMbDtJSwe/aGYEXQAAoDacc+YjnbEt\nWM65JZIWmdmO3bf2lHSTpHMlHdh970BJZw/5fuv+HXXUUZWXgfVmvVlv1pv1Zr1Z72z/fErTgiVJ\nB0s6xcyeIOl2SQdJ2lTSGWb2bkkLJb3Va8kAAABqKlWA5Zy7XtI/JXy0p9/iAAAA1B8zuQcwMTFR\ndREqwXq3C+vdLqx3u7R1vX0aOw9WocTNXMj0AQAAfDEzubIGuQMAACAbAiwAAADPCLAAAAA8I8AC\nAADwjAALAADAMwIsAAAAzwiwAAAAPCPAAgAA8IwACwCgqamqSwA0CwEWALSAc9KcOcmfLV0qbbtt\nueUBmo4ACwBa4MorpV12Sf7skUfKLQvQBgRYANACjz5adQmAdiHAAgAA8IwACwAAwDMCLAAAAM8I\nsAAAADwjwAIAAPCMAAsAAMAzAiwAAADPCLAAAAA8I8ACAADwjAALAADAMwIsAAAAzwiwAAAAPCPA\nAgAA8IwACwAAwDMCLACtddFF0re/XXUpADQRARaA1vrkJ6WDD666FACaiAALAADAMwIsAK1lVnUJ\nADQVARYAAIBnm6VZyMwWSlop6TFJa5xzu5rZ1pJOl/S3khZKeqtz7v5A5QQA72jB6qAeAP/StmA5\nSRPOuZ2dc7t23ztc0izn3I6SLuz+DQCoGeeqLgHQPFm6CAd/4+wnaUb39QxJ+3spEYDUnJNe+cqq\nS1FftNwACCVLC9bvzOwaM3tv971pzrmp7uspSdO8lw7AWL//fdUlAAAMSjUGS9Luzrl7zGwbSbPM\n7Jb+D51zzsxoZAYAAFDKAMs5d0/3/3vN7FeSdpU0ZWbbOueWmNl2kpYmfXf69OmPv56YmNDExETR\nMgOAF3QRAu02OTmpycnJIGmbGzO60cyeJGlT59wDZvZkSTMlHS1pT0l/cc4db2aHS9rKOXf4wHfd\nuPQB5OectMkmDFLO6xWvkK68csP6++EPpY99TFq5srpyhXDJJdLERPK+smiR9Dd/w34EmJmcc15+\neqVpwZom6VfW+am3maRTnHMzzewaSWeY2bvVnabBR4EAoCxJLVhXXCE98ED5ZakSLXmAf2MDLOfc\nHZJ2Snj/PnVasQCglggsOmi5AvxjJnegxnoXRi6QABAXAiwAAADPCLAAAAA8I8AC0FqMwQIQCgEW\nAACAZwRYAFqLFqyOOtTDRRdVXQIgGwIsAK1Vh8ACnbtkX/e6qksBZEOABdQY0zS0z0MPSV//ut80\n2X8A/wiwGsZMWriw6lIACOXyy6WPfrTqUgAYhwCrge64o+oSAAilqd2aZu17RBGajQALQGslBSux\nd5c1NcCSpPvuq7oEgD8EWA0U+wUCQH5NDrCAJiHAAtBaScFK7AFMiPLFvs7czIE6IsACaowLTjGx\nBxZJ6lhmoI0IsIAGINBqDwIsoB4IsACg5QjQAf8IsACgRjbhrA3UAodqA/FrFEinjt1tdSwz0EYE\nWBG46y7p9tv9pffoo9LKlf7SAxCPNgZY/GhEHRFgRWC33aTnPc9feu97n7Tllv7SA5qqjsFKG6dp\n6CHQQp0QYEVg9Wq/6S1e7Dc9xIsLTjF1CSz61bHMQBsRYEXoP/+z8w9Ii0ALAOJCgBWhGTM6/wBg\nUIgWLAJ0wD8CLADoE3uwQRchUA8EWBGI/YQONFUdg5U6lrkozpGoIwIsAK1Vx4c9t3miUQIt1EmL\nD9V41PEkD6AanBuAeiDAihS/1JAG+0kxBCsd1APgHwEW0ABZA61LL5W+9KUwZUFYBENAPRBgAS30\n+c9Ln/xk1aVAHgRYQD2UGmD94hfSZz9bZo71kNT6wEm0XI89Jk1NVV0KxCD2blfmwQLqodQA6wtf\n6PxyRn0dfrj05jdXXQr/vvc9adttqy4FylbHHzJ1LHNRvQCQQBB1QhdhBOp0wjzlFOnss6suhX+0\nXrVTHe/gjb18oX3rW9Ls2VWXAhiPAAuosby/6GkJQF0dcoh09NFVlwIYL1WAZWabmtkcMzu3+/fW\nZjbLzBaY2Uwz2ypdOkWKCgB+1fGcFKLMdawHIHZpW7AOlTRfUu937+GSZjnndpR0YfdvtAAn4jhl\nbZFiO9ZXm2dyB+pk7KFqZs+WtK+kH0nqnZb3kzSj+3qGpP2DlK4l6K4B4hH78UhwDNRDmt9CX5d0\nmKR1fe9Nc871hgVPSZrmu2AAwok9iMBwbQyw2F9RR5uN+tDM3ihpqXNujplNJC3jnHNmNnT3nz59\n+uOvV62akJSYTKvV8U4moAk4zjrqEsDUpZyoj8nJSU1OTgZJe2SAJen/SNrPzPaVtIWkp5nZyZKm\nzGxb59wSM9tO0tJhCfQHWE28vT8UTiRAeHX8ccO5AfBnYmJCExMTj/99tMdbVEd2ETrnPuWc2945\n9xxJb5N0kXPuHZLOkXRgd7EDJaUKnWI/cWE8tmFc8l5s2Y4AEFbW+1F6p/PjJO1lZgskvbb7N4CK\n0KqRD4FmB/UA+Deui/BxzrlLJF3SfX2fpD1DFapteBYhykZABgBhMaMKCjOTbrih6lKgrR5+2O8P\nktiDzzb9+LrwQun88+PfJnVnJl13XdWlaB4CLHV2rgcfrDb/ulu0qOoSoK0eeaTqEiCUN75R2nff\n9X8TaIVz661Vl6B5Sg2wYg4kVq+uugTt8NOfSi9+cdWlKJdz0n33VV0KJOEuwnBpAm1HCxYyKXrx\nueACaf58P2UpapttpD/9KXw+v/mN9Nd/HT6fLGIPIspCPQAIhQALrbVsmXTTTeHzmZoav0xeeVse\naLEAxlu2TLr33qpLUQ5+bPiX+i5ChFP1xW7tWmkz9oRaq3ofqqs6XlRClDnWeqh6v37pSzvDR9oS\nZMEvWrAqtP/+0uLFVZdC2nxz6Zprysmr6hMmMA77KHruvrvTigXkQYBVoV//WrrssjgG2t5zT7n5\nATGIteUGHb3tU1XQS7CNIlp7F+G8edKznlV1KTb0kpdIv/td53VTD+z+feDqq6WFC6spx9VXV5Nv\nHZlJDzxQdSnQ09RzQxptXnfUT2tbsGbP7jT/xuSmmzoT68WsaJDcO0H++c/Srrt2ukmrsCfPIchk\n5cqqS1CemH4IAmVhv/evtQEWqvXsZ3f+56Auhl/0xdR5//O57dmPAP8IsCLAswjrb/XqTqsogHis\nXMlM/6hOawOsLAHMypXSFVeEKwvq78tflnbbrfP6scekI48sN39aIPLhh0xHU+thyy2l97wn//c5\nrlBEawe5Z/H5z0u77x4u/VD18uCD0rXXhkkbG3r00fWv779fOuaY6sqCYrioxqfINrntNn/lALJo\nbQvWOOvWSRdd1Hm9dm21ZcnrmGOkl73Mb5p1DZLLxAW6Poruz3PmbBhcl6HN+1eb1z00zu3+EWAN\nceml0ute13ld14M6xNiDutYFEMIuu0j//d/V5M2x2EzOdYYZoP5aG2CNi9bZwf2aNUv613+tuhTx\nePBB6f3vr7oUSJL1lzyDqOHT9OnS//pfVZcCPrQ2wIpJnX6J5m1GPu006Ve/im9dq2oWv/FG6Qc/\nKJ5Of30uX76+WzvL99qMbhGMUsVxct11fn7g33WXdNxxxdNBfgRYaLUsJ1Dn4n7o6xe+sL5bG2iz\n5culF7+46lJU66STpCOOqLoU7VbpXYQnn9zpOmo7H88iXLZMmpryU56Q6txicNZZ0jOeMX65Kn71\n0iKVT9L+SF3GJ+s2+dOfpPnzw5Slqep8bo5VpS1Y73yn9L73VVmCdOpwwdx1V+kFLwhTln6+HpVT\nRzG3Xo3inLR48YbvcTKtrzofQ03yzW9Kc+dWXQrErLVdhE27wNxzj7RiRdWlqJ8Q+0FVF8Bh+f7i\nF9L225dblrqo83mgjP1s3Trp3HPD55NWTMHloYdKxx5bdSkQs9YGWEBbLF++8XsxXajqrs5B2jjX\nXSftt1/VpagOxwmKIMDquvLKDf8u88DiWYTVadIJlH3GD+pxvXXrqi4BUF88KqerTb/SPvUp6cc/\nzvfde+7xWxYU06QAsQo+zklsAzRBzNfnuqIFa4j+nS30CbTsHfvYY/OPHXjooXzfi/Ui1IYxWEnK\n3OcefbQzeSKa4447ys0v1vMHMEprAyyidTRJ1gtQmResW2+Vjj66vPyy8DFNQ1XnkqqCjkcekf7u\n78rJq82B1fnn5//uT36y8bAXlK+1AdY4bT6wQ+hdhGKr19jKA4xT9T5bZFzWqacWC0irXvcy7btv\n/u8edJD029/6KwvyqTzAatMBMwx1AB/q3iq72WadCXPLVPc6q5sbbsi2/LDtw3ZDHVQeYNUBAZA/\nbTgx1mEMViiLF298EU1brscek/78Z/9lSmv16s7+2YZ9tO5i2Nebhv3ev8rvIox1o8ZaLl98PEy0\nCeq+nWO70LzpTdI//mPVpcgn70S9hx3m5+7a3/42vu0JIL/WtmCNu7CWdaIb9os59IW/7LuAeriA\ntE/MQayvsi1Zkn7ZQw6Rbrll4/f32UdasMBPeZqC80XHZZdRF3VUeQtW2w0eNL2/OZjK0aR6juH4\nesITNn6vSXXsw7e+JZ1+evF0kup19uxmDiKPtVxlefWrO9sW9TIywDKzLczsKjOba2bzzezY7vtb\nm9ksM1tgZjPNbKs0mbX9IAmJuo1HVQ8Hj2EfSAqwYpZ1mgYzae3acOVJY1T55s3zn2Zen/508UAy\nhh8Nscg7rGPu3DjODW00MsByzj0saQ/n3E6S/kHSHmb2SkmHS5rlnNtR0oXdvxsr9M7Zn37TTyix\nrV9s5anCww9LJ57oJ63NN/eTTlnybP+2j19Mez784hel444b/vkjj4TLu86GrWPedd95Z+nqq8cv\nx7nQv7FdhM651d2XT5C0qaTlkvaTNKP7/gxJ+6fJjA2YXta6qkvdtu0EefbZ0nveU11Z0rjkEn9l\nrFuAhWrMni1tsUXVpWiPNWuqLkE7jQ2wzGwTM5sraUrSxc65myRNc85NdReZkjQtYBmDiCUgSVOO\n44/v3J2F+jn33KpLUK5YjqsimrAOIfmon7R3Xfr8QfY//+MvrZDY/5pjs3ELOOfWSdrJzLaUdIGZ\n7THwuTOz3IdBG1o0RnFu/HMPf/Yz6cYbR6fz8MN+y4V6aPvx02Z13vZll/2xx6R/+RfqDOUaG2D1\nOOdWmNlvJL1U0pSZbeucW2Jm20laOux70/ue8rpy5YSkibxlRQO07SRRh/X1WcY6rG8/X60FdVvv\ntKperxgesUWLUrNNTk5qcnIySNojAywze7qktc65+83siZL2knS0pHMkHSjp+O7/Zw9Loz/ASno2\nUh123jIP7jrURx5Vn6jL1KZ1baLYt1/I8g22qMeqDmXMy/cg97SaXKejTExMaGJi4vG/j/b4ZPpx\nY7C2k3RRdwzWVZLOdc5dKOk4SXuZ2QJJr+3+jRzWrk0+cNaske6/v/zyhNa2g7is9c168g1152rd\ntq+v8tZpvZcvl444QnrlK6suSXZ55wksEpzUZdvutpt0/vlVlwL9RrZgOefmSdol4f37JO2ZNbOY\ndtRYyvLOd0pPfWryZy97mXTbbeWWZxyzfCerWOob5SurRShP60sbuwi/9KWNp08ou/zD8lu7tvPI\noi23HL1cmcouw7B9clw5Zs+Wzjuv80QAxKHyR+XEcADFpL8+7ryzunKEEsv2LvOiH6MmBbyx1jGy\n++xnpa1STVudTRn7+2OPSQ8+GD4f1AePyolAneqFixmari7HY9KxuHr1xu8NKrp+Ic8Bg89IjWFb\npC3DUUdJT3lKuHJw7q2fUgOspB0khgNoHAa5FxfbySFkPZc5M39/XrHVcZ2sWCFdcUX+78dy3B5y\nSNUlCKPovl3GsXHrreHzCCmWfbhJggdYb3ubdOWVoXNBWTgIs4k16KFcHb39efp06d/+LX86ZZa7\n6m3n4xxQdB3ylqHO40er3u7ILniAdfrp0ite0Xmd9cGqIcVy0EhxHDih6yOm+m6qttdxkeOo/wHO\nMRyPVYlt3auasiBPXrHVHapX+SD3WFV1sLQt36o0bX2bsj55gsQ23ILvU8xjsELl3YTjownr0DaV\nB1h1OMGxYxfXpjqsQ5Bch+OuDGnr4YILpJtuKp6OT2XMwD8qj7Yc02m3begpP2Kq77e/ncezpcFd\nhEOUWdb+vOpUR3XW9nqO6WTdL9Zy7b239I53DP881nLHKm0Q4fs4DT0Lfluceqq0aFHVpYhf5XcR\nViXpwH3/+6WTTiq/LHWS94TX9oAmlDLvWMwrpuM+jXH1WLf1aYLQgdcoZR9XVR3HsZ4/6qzyLsKY\nTlY/+IH03e92XsdUrjL4OrhmzpRWrvST1jBXXinNmuUnLU4qcUnaHo88ku67bTlmq7oDrwyDZfPV\nXVakztJ89/LLN7xRIoS27N9NQhdhBGKYy8jXSfuf/1k64YTi5RnlX/5Fev3ri6WR95lmWdIuW9p8\nH3qoc0EoS9HjfostpMsu81OWQTHd2RyLhx6S1q0b/nnIY6euXvUq6Ve/CpsHD3uun8pbsMrcqOec\nM/rEMUybTiSLF0vbbDP887zPyeKkHFaWev3udzsPEy/qgx+UPvCB8cv52OZ33x02/TRC5jNnTrHv\n/+Qn0rnneimKnvQk6atf9ZPWMHlbpqqYcLTswCP2H2hIb+TDnn2rOkJ+05uk66+X/uEfxi/b1n7w\n+fOlZcuqLcM4PuqorJncY+SrK6PXnf697/lJrwplTwsxzC67FCvHQQdJ225bvBy9NGN5yHwbH8Yd\nQtvXvyqVD3KvaubmmAayVh1U9Qs1jiBtvZetzEfZID6x7Y9liGGdhx0XMZRtUCyD3OkirJ/KuwgR\nh97B9dhjYfMh4GiHN7xB+uhHy83T177VxgtNlrqLYRb1MrdRE85ZbdynY1BagOVcnBs5toOn6v73\nvC1Y/ds2tjpNUtaYsBhayAbLUMZxeN550i9+ET6fMtVhv/at7IlG047NavKM7jw+rjkqb8Gqw0YN\nvcPHdNDnbcEKPTg1LTPpT38qJ69hYtqekt+WndWr/aQ1TJ6yll3fVW/fqvOP1aiZxZvwOKXQU02w\nX/lXeYAVq7YOch/XglV1+dKYmhq/TFljwpp20nroofTL1mHd6zxNQ95yxnAMp+36y1LWJz4x/ht0\niiBIqp/K58GKtTm0rTuqj0HuSXXn86Qee/BbxZQUTdlfYxlQjOFifthzlh8AaTVhn0yTJseCf6WO\nwYrhIjBYBh+3NhcVw9Ptyxrk7kNVJ4I6zKGTRlllasv8QU0S62D3QVn3rSI/euq0X8V4vmmzyrsI\nq94hli6tNv9BVQ9yzzMRq1S/FsGiYzKuvz5d2rGtd5nqcDHLcv5p42S5P/pRtfn7elROnYRY5zw3\nw6C4yrsI66DJB3NWVc3REptYJmL0oe43cfhOP8R5at26eI6RNOvXK+s554QpQ9a6+M53wpQjjV59\nrVolHXtsdeVII3QQhmwqb8EqslGXLZMeeCDbd2IM8vrroMry/fCH0rveVTydsm/tzqOMmdzLWNdY\n6jNJnjoOsV1uvVV629v8p5vFM58pfehDftIqc3qETRKuEFXsc0ceWX6egy67TPrUpzZ874wzysu/\nCXdCtk2t58GaNq3z4N8kt946+nlrTdrhfJ3wfv7zcHlVVd+LFoUZ+NokobZNb19JSn/1aulznwuT\n76DzzpNOPz398iECiKkpafZsv2mGDHTKfvLCsB8lvh+VU4dxlP35bbPN+mEbobv5mnRNjEXlLVhF\nrFvXuYAm2XFH6RvfKLc8PsR6V2Xd8un5m7+RPvax4Z/H1AL02c9KF17oP12fE43mee5gUh1ffbV0\n1FHpli2Sz7g084zBitWSJeXml6Y+5s4tP0/fqtzuy5b5yT/2fbepKg+wQl5wR3UfEq1vKO0BOKze\nxs3k7rPbLOu2+8tfhpcnhLxpf/7z0le+kj/PvINjs5T3M59Jv2wdjrFYHvYcq6QuQh/S1mHa+bKa\npKpxVE2u06qU2kXY7/bby8o5uRxV3478yleuf12nHTuGsjZhTq206jBtxjB5xuLFvj2GaUrQFaqL\nLm/+RZfLu3y/WPbJJqxD21TWgvW853X+b8qJKavf/z75/br+oh5XhtgO8DoMcr/vPmmzzdIvn3ed\nYts2WRVpoav7uueRZZ1jmhzahzqUvcid2m3cn2NWeRdhVWLaEetw0PfUqax19+CD45fJuj3MpPnz\n85XHpxDTfZx8cv7v9stTtjLPJ2XcpdpLe1QXYYj8q3gw+TgxlCGtb387+X3O29UoNcBKupurTjuv\nD85J9947+vMq+NwOo8ZgJVm+XNprr7D551kmZP5V5rtgQb7vDeOzG3PfffN/95BD/JVjlCZerMru\nsh3Mz3fQ+NOf+klHKn97N3H/aqtSx2Bdc01ZuY1X1d1Dv/2t9Ixn+EvPl6KD3IuYP1/63e/8p4ty\nvPa1618X7VK655785fA1A3YdZqAPLZbHUeUN/L75zXTp1IGP4LNtDRmxqLyLMPZf+76FeNp7lnE6\nocR0AFddlrq1Qhatr8svX/+6bheyMveVNC19ZdRflnWOZaJRX3nXYR6sYULXeyzr2SSVB1g973qX\n9PrXh88nxp2ov0wxli+NtIPck5bLus4+nntYxizjZV6IRk3TULXQ+3RZv+yLjsGaM0d69NH0+cWg\nykk2R4l1X/chRJ2Hqq/Vq8Ok2xRjAywz297MLjazm8zsRjM7pPv+1mY2y8wWmNlMM9uqSEF+/Wtp\n1qwiKaQzanbpqtTpZJHlOWZNk+cW8hjqYtzA4aJlXLdu9Gz5o9J/7DFp5sxi+Y/jexsUSW9cK1bV\n+0uWaRrKmK/J90zueVR9rah6nxjmggukJz+56lLELU0L1hpJH3HOvVjSyyV90MxeKOlwSbOccztK\nurD791B1m/embV2XZbUy+MhnXBptDgKT+LgQjkvjv/6r83/W7XvRRdI//3P2cvkSwwU8b17vfvfo\npxT4MFg/n/mM9Pznh8svxuMylkHusdXN4sVVlyB+YwMs59wS59zc7utVkm6W9CxJ+0ma0V1shqT9\nQxUyhCY9IsOHKtcx1iA7ryoutkX4qP+77ur8n7U8vees9Rv2+KtxhuU9Z062dKrcH7PU3xlnSD/4\nQfY8svwAGVz2oovCjCPNGlTk3UZ5jpeHH86Xl291boVrq0xjsMxsB0k7S7pK0jTn3FT3oylJ0/IU\nINaWInbIbMY9KifNZ03jXHv2o7Vr/aW1cqW/tCTplFOyLZ+nBaGp27mp6xWDY49Nd2e9j3Mmk5RW\nI3WAZWZPkXSWpEOdcxs85c855yS16NIZTl138roFrGXM5D74uqx5mrLycQJPE2DdeWenxSqp1aqI\nGLpwfJUhlh+cveMj1ESjeb+bd8qCpOVf/vJs82X53jaf+pT01a9u/H5s58qetWuZTierVDf4m9nm\n6gRXJzvnzu6+PWVm2zrnlpjZdpKWJn97uiTpc5+TpInuP3+yDjxOOxYo1InOx110TVPl+peZ97e+\ntfH8PGUoY3bsNWvGpz17tvSBD3Qevv2lL/kvQx5tP/bGqfpZhCHzv+oqafvtpXe+M1weecQ6Bus3\nv5H237/6cvg2OTmpycnJIGmPDbDMzCSdKGm+c+6Evo/OkXSgpOO7/5+d8HX1AqzPfEY65pik9DOV\nNzffMwX7FMNdZ2m3Q9GxD2UMcs8yk3uI+q5iGxbplk1zp9i4NHotWONady65JNut3Zdemn7ZrBYt\nimvyYym5/o49thOQLl+ebvlxij6LsK1imXw1j17ZDzhAeutbpTe/OXsavlueYzExMaGJiYnH/z76\n6KO9pZ2mi3B3Sf8haQ8zm9P9t7ek4yTtZWYLJL22+3dmRS90WedNyXOh93nBjPWElWcKgjzL+KjL\nXmtJm6xdu34OpXPPlZYu3fjzKoXK/zWvSb9sb99atizdfvb//t/wh66PSr9MH/5wpyvp/vv9pZll\n6oVXvzr5/aIeeCD5fd9TiAymU0W3pi8+yn7aaX4fI4TR0txFeLlzbhPn3E7OuZ27/37rnLvPOben\nc25H59zrnXMeTwHphdrpy3oGV1MUqa+s353q3lqx++7JtwqH2nbnnZduud42vvZaf3n/679KL3pR\n5/V++0nHH7/h59/5Tv60feyTSfM7VTXn3DbbSGcPaU/vl/cOtZDH8GDaM2aMXiZ03e622/DPitTD\nTTclp1X2/FhYjzr1r9RnEY4SevbarAdw7F11vo16AHW/YeWrYvtecUVyEBPqjpn/+Z9sy7/iFRs/\nWDmvq6+Wbr99/d933SXdccf6dR11512Z+9SoZxH6bIVJSr/fkiV+06tKTGNFyxBT3Q8q6zga1oqX\nVDdf+lKnVQpxqvxROaMeoZLl++PEMgYrqbzDmsvL9O53+0sr611WTRvk3r+uaZ4/l8eZZ0rPe172\n8khhBr2nuXnjfe/LluZgK0cWReq9ynNE1eenYWIrV8jyzJ2bPN6orDrIks8nPykdccT45Widqkbl\nAVZRaS+QAkKLAAAgAElEQVTceQOsP/4xe5lGGZd/bCeyQXU4ULNMpOicdP750he+kD2fBQuq3V7r\n1kk33xw2j7THTdJyRepm8WLpJS/J//0QgW2Mx2aoZ2oW/eGbV4jHOl15Zbbz/847px8OkNaKFcXr\nss7jx9qq8i7CkOM0+vNcsSJffi95Sbad89e/lubNS788qpd3yoAXvED64hc3nnqhzJOZj+6BPOXd\nc8/0y47qNuyZO3fDv/PcyFBGy2HZyr7LOu3fvvMrK9+0Hnlk4/eKbIuttkoeT5dGLMFRLOWok9q3\nYKXZ6a+8UnrGMzqvs+4kWU/U+++//rlsSerQAjRK3oHBoz73XSdlngiOPFI69NDy8jv//A3/rqrr\n+8ILk9/v35ZZWkFe8YriZeoXsoswZEtCnS5iVbaolHEeXbVqw7+LlvnPf05+v/8OYam6a0TWfOt+\nLStD7QOsNF2E/QO4sx4kZf1y60naaX3syL4eP5KmLKOe3RXLBaS3HqFbTn17+9uzfyfG+XtCd0HV\nvQVr1Fxhvrphx6Xd/7fvfEJNxzBMnvTL6on4t3+Tdtxx/HJF6sjn/IM/+lHx8rRF5QFWWY8sqbNR\n6/GJT4z//qWXSltu6acsae4iPOGEjceulbkt2vTLqv8CmLbbJeQg9zxjtQbLMGpdRqXZL2uA1T+W\nLe+dsj44J/32t9KTnzy6LGksWiQddli+78Z+DOXdFlUHKUmuvbbzGKmetMdxFj733cFWdAwXzRis\nvGI/EQzyfdv1D384fpnevFFluu++8vPsSVOHsdxVWlSW8ve6roe1HiTd0BG6nkIdv1kDrP4uz5D7\nRJq0Fy1Kn96o+vvlL6WvfCV9Wv1iGYNVt/N7COPqfuHC6icaRrLKW7BCGjW4tqqZ3Nt0QV+7tjMp\nZr82nDBDduEMy8tsfN1+//ujyzRqnqq065F2LN5gF+Hg2K08+4mvQe5ljJOaPj35R0jWACNPWXyd\n+8poUSlz0PsJJ0hbbBEu/ZB+8YuqS4Ak0QdYjzySf4LCugczPXUISpLKuGJF57Eu/Z8nbRPf69fW\nZ62lvQEhhnFnoS7cPXXYrqGn2CiiDvWXRZp96qqrku8eLFueLupxLVhZpuZIq2n7SAjRB1jvepf0\nV3/lL71QQdcVV0jPfvb45fLcbVfl/CmDsk7sGqIMWfNOUtbYvzwny7337uz3IcqTJMu8YeM+z7qd\nQ95s4JuPfXhc62b/ezvtND69Bx/0M2dTnmkajjhC+vKX8+U3bHun3Q/y7i8+tmHSQ7d9Gizjr3+d\n/H6RNFGOysdgjTtQ+h8PklWZJ+3f/374bbhZpLk4V6lXpocflj70ofXvcwAny1MvF1yw/qQ6Lj0f\nY6RGpVEk/WXLhn/mc9qOpu5711+f7gfXG94wOp0iYzBH1e23vtWZB85nujFvy17Ztt663Hzz3Dkc\nQszbJlaVt2AVvUAMfu/OO0d3R+XJp6odK8YdulemW28d/YDhPN10SY+nyMNHi0wRacZghZj7K4aA\nvL8M/XP7DApR/2UdL77yCdFaneS5zx2f77j8yxpLmHYM2rDynHDC6AePpylDKEceGTZ9xKeSACvk\njnz33enyi+FilFadylrEpptWXQL/Qo8v6x8kXnQgepGyFh1T1ZZ9vIofTQ8+mP07sWyPrPX1ta9J\nS5eGKUvVdVL1FBODaRx3XPE0m26zqgvQk3cHKGOG8DofWJLf8ue9OJdZh6Pq67jj/HTlps0/9Hr7\nCF7SlLHIg5f75bmLN8/yReRpxclzjB58sHTddcXTCWGwRamsclV5vIS4YzOPquZhi2X9m6S0AGtY\nt0nRGZ3TnPQGJzH0mYdvSY8aGaUuO32RE5tPX/965xfu055WTn4xbB8f0w4MTreRJ41Ry/s4ucc+\nfnHQnDnjl6nDeuSRtysyb4BeJ3XuPseGKu8i9LHhr73W/6MxQu2QWS52dToo8s5rE0KWwNQ5aXLS\nb/5Z1nHY7dXObTjh5LgLUqh6PeMMv+n5fkSKmXTHHcXSGDSuTFdfvXEraN67a8d9HiKQyHPLvu/9\nq+xzW9H81qxpdlCXRtvXP4/KB7n3DLbcjBogO/i9l71MOuec0Wn25PkFVHWgU7QbtIryV1lnVW+v\nLL7xjeT3ly+Xdt+93LIk+ehHsy1/2WXplssz0HqYe+4Zn6ZP++wj/fu/D//8rrvypz1z5vr1GaaM\n/bvsrsFhYrmov/rV1ddF1fkju8pbsIa9l7ZFqve9pICs6kGBvtINdWDdf7/0wheu/zvEZHRpvl/l\nSbTqSTdHTWXQb1hXep4xWMP+9jHVwwMPZFt+2DxYMXTl//KXw9MftR3+9m+lxYvz5XnkkdJRR+X7\nbhFlX7zTbm/fdzXm/d6VV+b7nk9lXc++/W3p4ovz54X1KpkHq8jA3Icf9lOeLHxehLMcJKEDjzvv\nlG65Zf3fPg/gLBfx0HfaxfIrOKSkeh3XEjLqu6GkCRCrnESy31ve0vk/Txfy4NQIPbG3QpQ1TUPI\nfK6/Pky6ZZ1HqvrR18v34IOlww/PlwY2VHkX4biZnAc36hOfuOHYlKxdZHnGClU1yN1Xvocd5ied\nIppyEU/z/ZDrmvaX/7Jl0jOfmbxMDINoRwXBzuXbPqHuGt5jj+zfSTvEIWu6ZaXpo1WzKvvsEybd\nrHVx1lnSqaeGzwfxqryLcFhf/6iTwMqVyWnVQZ67pYqeZIeNCfn85/3lU7ftULS8vgb1z5oVphyj\nnqm2SYaj3vecQoMX7rSPykkT0PraB2Pal6tqfQ0dlOdN7/jjO/9X3bWfxtvf7ncW9qr3yzb0BPgW\nXRdhiJ0oqVWoqkHuvseWFCnbWWdt+LfPfndfXaEf/KD04hcXK0uIVsFBeVs8r71WWrIk32SQvqQN\ncvJKO3ZpsDzjlgslT/dV2vL1/zhEdl/9arHvxzYu9957/aeZxEfZqw7w6qjyLsKewV+2aTem752+\nN0g3hmg9hjIMM277fPrTG/6dd10uukiaPz/fd3tCB+1Fbbed9J73pFt2WICS5U7TEK0Tvn+ENPVk\n/jd/s+HfZQ3mv+GGbMunPR9XtZ2y5ltk3G/ePNO477705fBxEwrKVXkX4eB7IQ6cLMv/8Y/Z0suq\nTtNDZDG4Xtdcs+HfdVqXNEZ1afd/lnZ7L1nitzyjPiu7e2XU5Lm9v++/P2wZfCjy4Pm8fG2rO+/M\nlmbouhwW5Jd9d2CMqlqXmH/Q11Ulj8pJczHw2S1W1q9EH+nGNo1BGbKs3xve4Cf9suq0rJPl6tXS\nz35WLI0quk+H5Vm3fb7InY9lrOt++0m77pr/+00KYOqKbVA/lYzByrOc2Ya/wvrfb5JRrXtJyl7/\nqrpue847L3veWeu0qCrGC01OdmabziNpW51+ejUtNmklzbdV5bkg1Db3uU6zZw//bNgP21gv6lnr\nxfeNEHVjVvx5ok271pahVi1YSZMyZg0+qh7kniXfOu3QMZ24YiqLb3km5Bw3L1hSGm97W+dfFcbt\n9zfdJL3kJRufK+p4F2EV++rZZ49fpk7nHqnZx3xP0TFYt91WXf5tFc0YrGGfVTWwL8sJJssdYFnK\n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\nOWY2u/ve1mY2y8wWmNlMM9uqb/kjunVxi5m9vrqSZ2NmPzazKTOb1/de5vU0s5ea2bzuZ98oez2y\nGt4Q1O8AABf9SURBVLLe081scXebzzGzffo+a8p6b29mF5vZTWZ2o5kd0n2/0dt8xHo3epub2RZm\ndpWZzTWz+WZ2bPf9pm/vYevd6O3dY2abdtfv3O7fjd7ePQnrHX57O+e8/lOnu/A2STtI2lzSXEkv\n9J1Plf8k3SFp64H3viTpE93Xn5R0XPf1i7p1sHm3Tm6TtEnV65ByPV8laWdJ83KuZ6+FdLakXbuv\nz1Pn7tPK1y/jeh8l6aMJyzZpvbeVtFP39VMk/VHSC5u+zUesdxu2+ZO6/28m6UpJr2z69h6x3o3f\n3t1yflTSKZLO6f7d+O09ZL2Db+8QLVhtmYB08A7J/STN6L6eIWn/7us3STrVObfGObdQnY21aykl\nLMg5d5mkgdmEMq3nbma2naSnOudmd5f7ad93ojRkvaWNt7nUrPVe4pyb2329StLN6sx31+htPmK9\npeZv894sTk9Q58fxcjV8e0tD11tq+PY2s2dL2lfSj7R+XRu/vYestynw9g4RYCVNQPqsIcvWlZP0\nOzO7xsze231vmnOuN3/ylKRp3dfP1IbTV9S9PrKu5+D7f1Z91/9gM7vezE7sa0Zv5Hqb2Q7qtOJd\npRZt8771vrL7VqO3uZltYmZz1dmuFzvnblILtveQ9ZYavr0lfV3SYZL6519v/PZW8no7Bd7eIQKs\nNoya3905t7OkfSR90Mxe1f+h67QfjqqHRtRRivVsku9Jeo6knSTdI+mr1RYnHDN7iqSzJB3qnHug\n/7Mmb/Puep+pznqvUgu2uXNunXNuJ0nPlvRqM9tj4PNGbu+E9Z5Qw7e3mb1R0lLn3Bwlt9w0cnuP\nWO/g2ztEgDV2AtK6c87d0/3/Xkm/UqfLb8rMtpWkblPi0u7ig/Xx7O57dZVlPRd333/2wPu1W3/n\n3FLXpU4zc6+bt1HrbWabqxNcneycO7v7duO3ed96/6y33m3Z5pLknFsh6TeSXqoWbO+evvV+WQu2\n9/+RtJ+Z3SHpVEmvNbOT1fztnbTePy1je4cIsBo9AamZPcnMntp9/WRJr5c0T511PLC72IGSehen\ncyS9zcyeYGbPkfR8dQbK1VWm9XTOLZG00sx2MzOT9I6+79RG98TT82Z1trnUoPXulvNESfOdcyf0\n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\nFLIAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -12900,7 +652,7 @@ } ], "source": [ - "feat = net.blobs['fc7'].data[0]\n", + "feat = net.blobs['fc6'].data[0]\n", "plt.subplot(2, 1, 1)\n", "plt.plot(feat.flat)\n", "plt.subplot(2, 1, 2)\n", @@ -12911,12 +663,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The final probability output, `prob`" + "* The final probability output, `prob`" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -12924,191 +676,18 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 38, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -13117,6 +696,7 @@ ], "source": [ "feat = net.blobs['prob'].data[0]\n", + "plt.figure(figsize=(15, 3))\n", "plt.plot(feat.flat)" ] }, @@ -13124,38 +704,51 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's see the top 5 predicted labels." + "Note the cluster of strong predictions; the labels are sorted semantically. The top peaks correspond to the top predicted labels, as shown above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. Try your own image\n", + "\n", + "Now we'll grab an image from the web and classify it using the steps above.\n", + "\n", + "* Try setting `my_image_url` to any JPEG image URL." ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['n02123045 tabby, tabby cat' 'n02123159 tiger cat'\n", - " 'n02124075 Egyptian cat' 'n02119022 red fox, Vulpes vulpes'\n", - " 'n02127052 lynx, catamount']\n" - ] - } - ], + "outputs": [], "source": [ - "# load labels\n", - "imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'\n", - "try:\n", - " labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\\t')\n", - "except:\n", - " !../data/ilsvrc12/get_ilsvrc_aux.sh\n", - " labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\\t')\n", + "# download an image\n", + "my_image_url = \"...\" # paste your URL here\n", + "# for example:\n", + "# my_image_url = \"https://upload.wikimedia.org/wikipedia/commons/b/be/Orang_Utan%2C_Semenggok_Forest_Reserve%2C_Sarawak%2C_Borneo%2C_Malaysia.JPG\"\n", + "!wget -O image.jpg $my_image_url\n", + "\n", + "# transform it and copy it into the net\n", + "image = caffe.io.load_image('image.jpg')\n", + "net.blobs['data'].data[...] = transformer.preprocess('data', image)\n", + "\n", + "# perform classification\n", + "net.forward()\n", + "\n", + "# obtain the output probabilities\n", + "output_prob = net.blobs['prob'].data[0]\n", + "\n", + "# sort top five predictions from softmax output\n", + "top_inds = output_prob.argsort()[::-1][:5]\n", + "\n", + "plt.imshow(image)\n", "\n", - "# sort top k predictions from softmax output\n", - "top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1]\n", - "print labels[top_k]" + "print 'probabilities and labels:'\n", + "zip(output_prob[top_inds], labels[top_inds])" ] } ], @@ -13178,7 +771,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.9" + "version": "2.7.10" }, "priority": 1 }, From f1d245c78c09b7121b0e05c5ead6328396812612 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Thu, 4 Feb 2016 19:41:55 -0800 Subject: [PATCH 169/458] [data] get_mnist.sh rewrite; prevents prompt in tutorial notebooks --- data/mnist/get_mnist.sh | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/data/mnist/get_mnist.sh b/data/mnist/get_mnist.sh index 8eb6aeedf..6d8752194 100755 --- a/data/mnist/get_mnist.sh +++ b/data/mnist/get_mnist.sh @@ -6,19 +6,10 @@ cd $DIR echo "Downloading..." -wget --no-check-certificate http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz -wget --no-check-certificate http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz -wget --no-check-certificate http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz -wget --no-check-certificate http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz - -echo "Unzipping..." - -gunzip train-images-idx3-ubyte.gz -gunzip train-labels-idx1-ubyte.gz -gunzip t10k-images-idx3-ubyte.gz -gunzip t10k-labels-idx1-ubyte.gz - -# Creation is split out because leveldb sometimes causes segfault -# and needs to be re-created. - -echo "Done." +for fname in train-images-idx3-ubyte train-labels-idx1-ubyte t10k-images-idx3-ubyte t10k-labels-idx1-ubyte +do + if [ ! -e $fname ]; then + wget --no-check-certificate http://yann.lecun.com/exdb/mnist/${fname}.gz + gunzip ${fname}.gz + fi +done From 5f50a1f773cb01bb8dd8c0bdb49aab0d586de083 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Tue, 23 Feb 2016 23:46:49 -0800 Subject: [PATCH 170/458] [example] improve learning LeNet notebook - add subheadings and list steps for structure - edit text and comments for clarity - switch paths and use chdir for idempotency of scripts [shelhamer] - title accuracy plots, rename ip -> fc to fit common naming, and rename output layer -> score [shelhamer] - add experimentation section [shelhamer] --- examples/01-learning-lenet.ipynb | 4680 ++------------------- examples/mnist/lenet_auto_solver.prototxt | 6 +- 2 files changed, 389 insertions(+), 4297 deletions(-) diff --git a/examples/01-learning-lenet.ipynb b/examples/01-learning-lenet.ipynb index 3562c7ada..1c328260d 100644 --- a/examples/01-learning-lenet.ipynb +++ b/examples/01-learning-lenet.ipynb @@ -4,11 +4,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Python solving with LeNet\n", + "# Solving in Python with LeNet\n", "\n", "In this example, we'll explore learning with Caffe in Python, using the fully-exposed `Solver` interface." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Setup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Set up the Python environment: we'll use the `pylab` import for numpy and plot inline." + ] + }, { "cell_type": "code", "execution_count": 1, @@ -17,8 +31,15 @@ }, "outputs": [], "source": [ - "import os\n", - "os.chdir('..')" + "from pylab import *\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Import `caffe`, adding it to `sys.path` if needed. Make sure you've built pycaffe." ] }, { @@ -29,19 +50,18 @@ }, "outputs": [], "source": [ - "import sys\n", - "sys.path.insert(0, './python')\n", - "import caffe\n", + "caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)\n", "\n", - "from pylab import *\n", - "%matplotlib inline" + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "import caffe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We'll be running the provided LeNet example (make sure you've downloaded the data and created the databases, as below)." + "* We'll be using the provided LeNet example data and networks (make sure you've downloaded the data and created the databases, as below)." ] }, { @@ -56,72 +76,36 @@ "output_type": "stream", "text": [ "Downloading...\n", - "--2015-06-30 14:41:56-- http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n", - "Resolving yann.lecun.com... 128.122.47.89\n", - "Connecting to yann.lecun.com|128.122.47.89|:80... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 9912422 (9.5M) [application/x-gzip]\n", - "Saving to: 'train-images-idx3-ubyte.gz'\n", - "\n", - "train-images-idx3-u 100%[=====================>] 9.45M 146KB/s in 57s \n", - "\n", - "2015-06-30 14:42:53 (171 KB/s) - 'train-images-idx3-ubyte.gz' saved [9912422/9912422]\n", - "\n", - "--2015-06-30 14:42:53-- http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\n", - "Resolving yann.lecun.com... 128.122.47.89\n", - "Connecting to yann.lecun.com|128.122.47.89|:80... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 28881 (28K) [application/x-gzip]\n", - "Saving to: 'train-labels-idx1-ubyte.gz'\n", - "\n", - "train-labels-idx1-u 100%[=====================>] 28.20K 107KB/s in 0.3s \n", - "\n", - "2015-06-30 14:42:53 (107 KB/s) - 'train-labels-idx1-ubyte.gz' saved [28881/28881]\n", - "\n", - "--2015-06-30 14:42:53-- http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\n", - "Resolving yann.lecun.com... 128.122.47.89\n", - "Connecting to yann.lecun.com|128.122.47.89|:80... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 1648877 (1.6M) [application/x-gzip]\n", - "Saving to: 't10k-images-idx3-ubyte.gz'\n", - "\n", - "t10k-images-idx3-ub 100%[=====================>] 1.57M 205KB/s in 8.2s \n", - "\n", - "2015-06-30 14:43:02 (197 KB/s) - 't10k-images-idx3-ubyte.gz' saved [1648877/1648877]\n", - "\n", - "--2015-06-30 14:43:02-- http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\n", - "Resolving yann.lecun.com... 128.122.47.89\n", - "Connecting to yann.lecun.com|128.122.47.89|:80... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 4542 (4.4K) [application/x-gzip]\n", - "Saving to: 't10k-labels-idx1-ubyte.gz'\n", - "\n", - "t10k-labels-idx1-ub 100%[=====================>] 4.44K 26.9KB/s in 0.2s \n", - "\n", - "2015-06-30 14:43:02 (26.9 KB/s) - 't10k-labels-idx1-ubyte.gz' saved [4542/4542]\n", - "\n", - "Unzipping...\n", - "Done.\n", "Creating lmdb...\n", "Done.\n" ] } ], "source": [ - "# Download and prepare data\n", + "# run scripts from caffe root\n", + "import os\n", + "os.chdir(caffe_root)\n", + "# Download data\n", "!data/mnist/get_mnist.sh\n", - "!examples/mnist/create_mnist.sh" + "# Prepare data\n", + "!examples/mnist/create_mnist.sh\n", + "# back to examples\n", + "os.chdir('examples')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We need two external files to help out:\n", - "* the net prototxt, defining the architecture and pointing to the train/test data\n", - "* the solver prototxt, defining the learning parameters\n", + "### 2. Creating the net \n", + "\n", + "Now let's make a variant of LeNet, the classic 1989 convnet architecture.\n", "\n", - "We start with the net. We'll write the net in a succinct and natural way as Python code that serializes to Caffe's protobuf model format.\n", + "We'll need two external files to help out:\n", + "* the net `prototxt`, defining the architecture and pointing to the train/test data\n", + "* the solver `prototxt`, defining the learning parameters\n", + "\n", + "We start by creating the net. We'll write the net in a succinct and natural way as Python code that serializes to Caffe's protobuf model format.\n", "\n", "This network expects to read from pregenerated LMDBs, but reading directly from `ndarray`s is also possible using `MemoryDataLayer`." ] @@ -134,36 +118,38 @@ }, "outputs": [], "source": [ - "from caffe import layers as L\n", - "from caffe import params as P\n", + "from caffe import layers as L, params as P\n", "\n", "def lenet(lmdb, batch_size):\n", " # our version of LeNet: a series of linear and simple nonlinear transformations\n", " n = caffe.NetSpec()\n", + " \n", " n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb,\n", " transform_param=dict(scale=1./255), ntop=2)\n", + " \n", " n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=20, weight_filler=dict(type='xavier'))\n", " n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", " n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=50, weight_filler=dict(type='xavier'))\n", " n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", - " n.ip1 = L.InnerProduct(n.pool2, num_output=500, weight_filler=dict(type='xavier'))\n", - " n.relu1 = L.ReLU(n.ip1, in_place=True)\n", - " n.ip2 = L.InnerProduct(n.relu1, num_output=10, weight_filler=dict(type='xavier'))\n", - " n.loss = L.SoftmaxWithLoss(n.ip2, n.label)\n", + " n.fc1 = L.InnerProduct(n.pool2, num_output=500, weight_filler=dict(type='xavier'))\n", + " n.relu1 = L.ReLU(n.fc1, in_place=True)\n", + " n.score = L.InnerProduct(n.relu1, num_output=10, weight_filler=dict(type='xavier'))\n", + " n.loss = L.SoftmaxWithLoss(n.score, n.label)\n", + " \n", " return n.to_proto()\n", " \n", - "with open('examples/mnist/lenet_auto_train.prototxt', 'w') as f:\n", - " f.write(str(lenet('examples/mnist/mnist_train_lmdb', 64)))\n", + "with open('mnist/lenet_auto_train.prototxt', 'w') as f:\n", + " f.write(str(lenet('mnist/mnist_train_lmdb', 64)))\n", " \n", - "with open('examples/mnist/lenet_auto_test.prototxt', 'w') as f:\n", - " f.write(str(lenet('examples/mnist/mnist_test_lmdb', 100)))" + "with open('mnist/lenet_auto_test.prototxt', 'w') as f:\n", + " f.write(str(lenet('mnist/mnist_test_lmdb', 100)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The net has been written to disk in more verbose but human-readable serialization format using Google's protobuf library. You can read, write, and modify this description directly. Let's take a look at the train net." + "The net has been written to disk in a more verbose but human-readable serialization format using Google's protobuf library. You can read, write, and modify this description directly. Let's take a look at the train net." ] }, { @@ -186,7 +172,7 @@ " scale: 0.00392156862745\r\n", " }\r\n", " data_param {\r\n", - " source: \"examples/mnist/mnist_train_lmdb\"\r\n", + " source: \"mnist/mnist_train_lmdb\"\r\n", " batch_size: 64\r\n", " backend: LMDB\r\n", " }\r\n", @@ -240,10 +226,10 @@ " }\r\n", "}\r\n", "layer {\r\n", - " name: \"ip1\"\r\n", + " name: \"fc1\"\r\n", " type: \"InnerProduct\"\r\n", " bottom: \"pool2\"\r\n", - " top: \"ip1\"\r\n", + " top: \"fc1\"\r\n", " inner_product_param {\r\n", " num_output: 500\r\n", " weight_filler {\r\n", @@ -254,14 +240,14 @@ "layer {\r\n", " name: \"relu1\"\r\n", " type: \"ReLU\"\r\n", - " bottom: \"ip1\"\r\n", - " top: \"ip1\"\r\n", + " bottom: \"fc1\"\r\n", + " top: \"fc1\"\r\n", "}\r\n", "layer {\r\n", - " name: \"ip2\"\r\n", + " name: \"score\"\r\n", " type: \"InnerProduct\"\r\n", - " bottom: \"ip1\"\r\n", - " top: \"ip2\"\r\n", + " bottom: \"fc1\"\r\n", + " top: \"score\"\r\n", " inner_product_param {\r\n", " num_output: 10\r\n", " weight_filler {\r\n", @@ -272,7 +258,7 @@ "layer {\r\n", " name: \"loss\"\r\n", " type: \"SoftmaxWithLoss\"\r\n", - " bottom: \"ip2\"\r\n", + " bottom: \"score\"\r\n", " bottom: \"label\"\r\n", " top: \"loss\"\r\n", "}\r\n" @@ -280,14 +266,14 @@ } ], "source": [ - "!cat examples/mnist/lenet_auto_train.prototxt" + "!cat mnist/lenet_auto_train.prototxt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now let's see the learning parameters, which are also written as a `prototxt` file. We're using SGD with momentum, weight decay, and a specific learning rate schedule." + "Now let's see the learning parameters, which are also written as a `prototxt` file (already provided on disk). We're using SGD with momentum, weight decay, and a specific learning rate schedule." ] }, { @@ -302,8 +288,8 @@ "output_type": "stream", "text": [ "# The train/test net protocol buffer definition\r\n", - "train_net: \"examples/mnist/lenet_auto_train.prototxt\"\r\n", - "test_net: \"examples/mnist/lenet_auto_test.prototxt\"\r\n", + "train_net: \"mnist/lenet_auto_train.prototxt\"\r\n", + "test_net: \"mnist/lenet_auto_test.prototxt\"\r\n", "# test_iter specifies how many forward passes the test should carry out.\r\n", "# In the case of MNIST, we have test batch size 100 and 100 test iterations,\r\n", "# covering the full 10,000 testing images.\r\n", @@ -324,39 +310,44 @@ "max_iter: 10000\r\n", "# snapshot intermediate results\r\n", "snapshot: 5000\r\n", - "snapshot_prefix: \"examples/mnist/lenet\"\r\n" + "snapshot_prefix: \"mnist/lenet\"\r\n" ] } ], "source": [ - "!cat examples/mnist/lenet_auto_solver.prototxt" + "!cat mnist/lenet_auto_solver.prototxt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's pick a device and load the solver. We'll use SGD (with momentum), but Adagrad and Nesterov's accelerated gradient are also available." + "### 3. Loading and checking the solver\n", + "\n", + "* Let's pick a device and load the solver. We'll use SGD (with momentum), but other methods (such as Adagrad and Nesterov's accelerated gradient) are also available." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ "caffe.set_device(0)\n", "caffe.set_mode_gpu()\n", - "solver = caffe.SGDSolver('examples/mnist/lenet_auto_solver.prototxt')" + "\n", + "### load the solver and create train and test nets\n", + "solver = None # ignore this workaround for lmdb data (can't instantiate two solvers on the same data)\n", + "solver = caffe.SGDSolver('mnist/lenet_auto_solver.prototxt')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To get an idea of the architecture of our net, we can check the dimensions of the intermediate features (blobs) and parameters (these will also be useful to refer to when manipulating data later)." + "* To get an idea of the architecture of our net, we can check the dimensions of the intermediate features (blobs) and parameters (these will also be useful to refer to when manipulating data later)." ] }, { @@ -376,8 +367,8 @@ " ('pool1', (64, 20, 12, 12)),\n", " ('conv2', (64, 50, 8, 8)),\n", " ('pool2', (64, 50, 4, 4)),\n", - " ('ip1', (64, 500)),\n", - " ('ip2', (64, 10)),\n", + " ('fc1', (64, 500)),\n", + " ('score', (64, 10)),\n", " ('loss', ())]" ] }, @@ -403,8 +394,8 @@ "text/plain": [ "[('conv1', (20, 1, 5, 5)),\n", " ('conv2', (50, 20, 5, 5)),\n", - " ('ip1', (500, 800)),\n", - " ('ip2', (10, 500))]" + " ('fc1', (500, 800)),\n", + " ('score', (10, 500))]" ] }, "execution_count": 9, @@ -413,7 +404,7 @@ } ], "source": [ - "# just print the weight sizes (not biases)\n", + "# just print the weight sizes (we'll omit the biases)\n", "[(k, v[0].data.shape) for k, v in solver.net.params.items()]" ] }, @@ -421,7 +412,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Before taking off, let's check that everything is loaded as we expect. We'll run a forward pass on the train and test nets and check that they contain our data." + "* Before taking off, let's check that everything is loaded as we expect. We'll run a forward pass on the train and test nets and check that they contain our data." ] }, { @@ -434,7 +425,7 @@ { "data": { "text/plain": [ - "{'loss': array(2.301163673400879, dtype=float32)}" + "{'loss': array(2.365971088409424, dtype=float32)}" ] }, "execution_count": 10, @@ -458,216 +449,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ 5. 0. 4. 1. 9. 2. 1. 3.]\n" + "train labels: [ 5. 0. 4. 1. 9. 2. 1. 3.]\n" ] }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -676,8 +465,8 @@ ], "source": [ "# we use a little trick to tile the first eight images\n", - "imshow(solver.net.blobs['data'].data[:8, 0].transpose(1, 0, 2).reshape(28, 8*28), cmap='gray')\n", - "print solver.net.blobs['label'].data[:8]" + "imshow(solver.net.blobs['data'].data[:8, 0].transpose(1, 0, 2).reshape(28, 8*28), cmap='gray'); axis('off')\n", + "print 'train labels:', solver.net.blobs['label'].data[:8]" ] }, { @@ -691,204 +480,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ 7. 2. 1. 0. 4. 1. 4. 9.]\n" + "test labels: [ 7. 2. 1. 0. 4. 1. 4. 9.]\n" ] }, { "data": { - "image/png": [ - "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\n", - "AAAASUVORK5CYII=\n" - ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWwAAABKCAYAAACfHW4mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztndlTm/d+/1/aN4SEECCQ2MS+L8Y4OMHGS+I4mbTHMznt\nmbbT02WmnXOu+zf0ttOr3nQ6016kaZxOTtOck9ixseMFbGyIzb6DAIFYBQjtEvpd5Pc88XZibCME\np89rxjdGiI8ePc/7+/18vp9FlkgkkJCQkJA4/MhTbYCEhISExN6QBFtCQkLiiCAJtoSEhMQRQRJs\nCQkJiSOCJNgSEhISRwRJsCUkJCSOCJJgS0hISBwRJMGWkJCQOCJIgi0hISFxRJAEW0JCQuKIoEzW\nG8tkMqnmXUJCQuI1SCQSshf9v7TDlpCQkDgiSIItISEhcURIWkjkDx2tVktxcTF6vR61Wo3RaCQr\nKwuLxQLA8vIyi4uLbG5u4vF4WFtbS7HFEhISRx1JsF8DjUaDzWbj3Llz5OTkYDAYcDgc1NfXU1FR\nAcD3339Pd3c3ExMT3Llzh42NDXZ3d1Ns+e9HLpej0+nQaDSEQiEikQixWCxl9shkMlQqFRqNBpVK\nBUAsFiMYDBKLxZDaAkv8X0QS7NfgxIkTfPTRR5w6dQqz2YxSqUSr1WI0GkUhKS4uJi0tjerqagKB\nANPT02xvb6dUBH8fKpUKi8XCxx9/THt7O1euXKGrq4uxsbGU2COTyVCr1bS0tHD69Gmam5uJRCKM\njY3x+eefMzs7i9/vT4ltEhKpRBLsV8BgMFBTU8OFCxe4cOECTqcTnU5HPB4nEAiwsbHB/Pw8Op2O\njIwMCgsLycjIoK6ujkePHjE0NHRoBdtms9HU1MTbb7/N4OAger0+ZfbI5XL0ej319fV89NFH1NTU\nEI1GcTgcjIyM4PP5UibYCoUCo9FIaWkpmZmZdHd3s729/dLfMxqNGAwGAoEAwWCQaDR6ANb+NCqV\niszMTCoqKrDZbExMTDA/P8/a2tqBeDBKpRKTyURNTQ0AGxsbLC4usrOzQyQS2fP7KBQKNBoNJpOJ\nQCCAz+c71N7smyAdOu4RmUxGZmYmf/Znf8bPfvYzampq0Gq1xGIx/H4/brebhw8fcvXqVbq7u1lY\nWEChUGCxWKisrKShoQGdTpfqj/FCVCoVdrsdk8lELBbD6/USCARSZo9SqSQjI4Pq6mpaWlrQ6XSY\nTCacTid1dXXk5OSkzDa1Wo3D4eBP//RP+Yd/+Ic925KTk0N1dTV5eXmkpaUl2cq9odPpqK2t5de/\n/jX/9E//xM9//nNKS0uRy+XIZC/MKttXDAYDZWVl/OpXv+Lv/u7v+OCDDygoKHjl50Sr1ZKdnU1D\nQwP5+fkoFIqk2i+TyVAqlahUKlQq1YFcKwFph71HMjIyKCsro6mpiby8PKLRKGtra3R2dnLz5k02\nNjZYW1vD5/Oh1+v5+OOPMZlMZGdno1ar0ev1yOWHc31UqVSikGxtbTEwMMDi4mJKbNFoNOTn5/OL\nX/yClpaWlNjwU2i1WsrLy8nNzX0lYcjLy6OtrQ2ZTMatW7e4detWki39aTQaDXa7nY8//pjGxkbM\nZjM/+9nPWFhYoLe3N6k7VLlcjlar5cMPP+QXv/gFNTU1uN1uXC4X29vbe94syOVyNBoN77//Pn/0\nR39ETk4O//u//8vKygobGxtJ8WZVKhVWq5VTp05RUFBAOBzm8uXLLC8vH8iuPmWCLcRNs7OzMZlM\nRCIR4vE4kUiEtbU1gsEgkUiEUCh0KNybtLQ0cnNzycvLQ6VS4fF4uH37Nl9++SU3btwQ7VUoFBQU\nFBAKhUS3MhgMsrW1RTweT/GneB6NRkNWVhZ1dXVotVpmZmZwu934fL4DtUOtVovXt6amhvPnz+N0\nOp96jbDzzs/PZ319Hb/fj8/nOzBvQCaTodPpqKysJDc395UWYKVSidlsxul0Mjs7i0KhYHd3N2WH\np0ajkaKiIlpaWnA4HCgUCtLT09FqtUm1SaFQYDKZqKur4/z587z99tt4vV7m5uYYGxtja2trz+Ei\njUZDeXk57e3tdHR0sLS0hEwmS4peCEJdVFRETU0N586do7CwkPX1da5fv87a2toftmDrdDrq6+vp\n6Oigrq4Or9dLKBRifX2dO3fu4Ha72djYYHl5+ZXiWcm0Nz09HYVCgc/nY3BwkH/5l39hcHDwqRim\n2Wzm9OnTHDt2jJycHJRKJUtLS4yMjBAKhVL4CV6MyWSitLSUjo4OfD4f33//fUrCIWlpabzzzju0\ntbXR3NxMdXU1BoPhqddoNBqcTid+vx+LxYLL5WJsbIy5ubkDsVEmk6HX66mqqsJms7G6urrn3/V6\nvSwvL9PS0kJGRgZqtZpwOJwywbZarZSWlpKVlYVOp2Nra4tHjx4xOzub1CwcjUZDQUEBf/VXf0V7\n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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -896,17 +495,19 @@ } ], "source": [ - "imshow(solver.test_nets[0].blobs['data'].data[:8, 0].transpose(1, 0, 2).reshape(28, 8*28), cmap='gray')\n", - "print solver.test_nets[0].blobs['label'].data[:8]" + "imshow(solver.test_nets[0].blobs['data'].data[:8, 0].transpose(1, 0, 2).reshape(28, 8*28), cmap='gray'); axis('off')\n", + "print 'test labels:', solver.test_nets[0].blobs['label'].data[:8]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "### 4. Stepping the solver\n", + "\n", "Both train and test nets seem to be loading data, and to have correct labels.\n", "\n", - "Let's take one step of (minibatch) SGD and see what happens." + "* Let's take one step of (minibatch) SGD and see what happens." ] }, { @@ -937,7 +538,7 @@ { "data": { "text/plain": [ - "" + "(-0.5, 24.5, 19.5, -0.5)" ] }, "execution_count": 14, @@ -946,439 +547,9 @@ }, { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAATQAAAD7CAYAAADkSGhKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAIABJREFUeJztvV+obt113jfWOfvYcmSLEtvfJ/FZqnSR4siWsS8sG9Ii\n", - "XZSgEEiam8QCU18kJZg2LaUXcS6cpO1Fm4KMIYFQ6j84dew0UOy6hqRxikuNLxwLkkpuJepgCUup\n", - "8snQmqb6952zz+rFd8b5nv3s5xljzPfde7/7HL8DFnOuudaaa84xx/yNMdda797bvu9xlrOc5Swv\n", - "gzw4dQPOcpaznOWm5Ay0s5zlLC+NnIF2lrOc5aWRM9DOcpazvDRyBtpZznKWl0bOQDvLWc7y0sjF\n", - "bVW8bdv5e5CznOUstyL7vm+q/GCgbdv2kYj48Yh4GBE/se/73+BzfviHf/jadR//+Mfj+7//++Ph\n", - "w4fx4MGD5xvvP3jwIPZ9j6dPnz7fLi8vy/19369trnzbtufbs/7IsocPH8Y73vGO+KZv+qZ4xzve\n", - "cS2P28c+9rH40R/90Xjy5Ek8efIkLi8vn+fV9vjx43jjjTfijTfesPncf/z4saxX3ePp06dyzNw3\n", - "h5eXl891qdLMf+pTn4pv//Zvj4cPHz7fcuxUnnWJqSqrUszv+y77rvTy9OnTeNvb3hbf8A3fcCXN\n", - "Dfd/+Zd/OX7gB37gSv9U37iP2Ncun7ZdlUVEaTPYv8ePH8dXv/rV0fbrv/7r8b3f+73ynpzPfaV/\n", - "tY/zLeccpi4/SVl+9md/VtpxxIFLzm3bHkbE34qIj0TE+yPio9u2/dFD6jrLWc5ylpuSQ5+hfTAi\n", - "/vm+75/d9/1xRPy9iPjTN9es0wtGEqe4/ixvyn3R4221477072WRQ4H2WkR8DvY//6ysv/C10Wkn\n", - "l0N+EvbhD3/4qOvvu3zzN3/znd/zLvX4/ve//87bcZf9e9e73nVn9zqVHPoMbTQKv/mbv/k8/9pr\n", - "r8Vrr70W3/Zt32bX46rMHVPb88aBkeT6Xh3LfOclndHxc7kPfehDcXl5+fx89exudcN6qj5gf524\n", - "Y/m8EuvjNCLiW7/1W+WzTrdVz9CqZ2qT49wv3B48eBBPnz59/jxKPetS+9/5nd8p78E65vF5+vSp\n", - "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\n" - ], + "image/png": "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\ndLqQU7pBHUaf1OoE9YYRGtO9MzEyvcX1zHc6G6igxo5zuSzt2sVEvsRbzu68mlEq6lfp7oXA5FON\nHah1My0zgJyf90w/E2EG3IHN1cXOZMB0gVvOV6CqzqnIbhKdIdBQZ9gntiRTToyPF1SZ7jms14GZ\ngvMkr2rnjk85cvcfeKyMoJo11CB0QMOZ0PkGrZtFVN8qgHVwq4zGWXo77cD2TMGG1zpQY9fmPOxv\nthMGtGrp6T4jm0RleJ/SKY6HWv65Tjx1bNRj3jOYYV1O9OVGcqoOdxKcCJ8KTjnllC8l7sTyb5cT\naKec8hfIkQjt3yQn0E75VNl1zH+7Q58Rmicn0E75VNl1zH+7Q//bge7KCbRTTvkL5N8OdFceTkWd\ncsop30XOCO2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2U\nU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRT\nTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk2cgLtlFNO+TZyAu2UU075NnIC7ZRTTvk28n9AwRVK\nLtEpzAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1387,13 +558,15 @@ ], "source": [ "imshow(solver.net.params['conv1'][0].diff[:, 0].reshape(4, 5, 5, 5)\n", - " .transpose(0, 2, 1, 3).reshape(4*5, 5*5), cmap='gray')" + " .transpose(0, 2, 1, 3).reshape(4*5, 5*5), cmap='gray'); axis('off')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "### 5. Writing a custom training loop\n", + "\n", "Something is happening. Let's run the net for a while, keeping track of a few things as it goes.\n", "Note that this process will be the same as if training through the `caffe` binary. In particular:\n", "* logging will continue to happen as normal\n", @@ -1424,8 +597,8 @@ "Iteration 125 testing...\n", "Iteration 150 testing...\n", "Iteration 175 testing...\n", - "CPU times: user 12.3 s, sys: 3.96 s, total: 16.2 s\n", - "Wall time: 15.7 s\n" + "CPU times: user 12.6 s, sys: 2.4 s, total: 15 s\n", + "Wall time: 14.4 s\n" ] } ], @@ -1448,7 +621,7 @@ " # store the output on the first test batch\n", " # (start the forward pass at conv1 to avoid loading new data)\n", " solver.test_nets[0].forward(start='conv1')\n", - " output[it] = solver.test_nets[0].blobs['ip2'].data[:8]\n", + " output[it] = solver.test_nets[0].blobs['score'].data[:8]\n", " \n", " # run a full test every so often\n", " # (Caffe can also do this for us and write to a log, but we show here\n", @@ -1458,7 +631,7 @@ " correct = 0\n", " for test_it in range(100):\n", " solver.test_nets[0].forward()\n", - " correct += sum(solver.test_nets[0].blobs['ip2'].data.argmax(1)\n", + " correct += sum(solver.test_nets[0].blobs['score'].data.argmax(1)\n", " == solver.test_nets[0].blobs['label'].data)\n", " test_acc[it // test_interval] = correct / 1e4" ] @@ -1467,7 +640,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's plot the train loss and test accuracy." + "* Let's plot the train loss and test accuracy." ] }, { @@ -1480,7 +653,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -1489,331 +662,9 @@ }, { "data": { - "image/png": [ - "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\n", - "AAAAAElFTkSuQmCC\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1827,7 +678,8 @@ "ax2.plot(test_interval * arange(len(test_acc)), test_acc, 'r')\n", "ax1.set_xlabel('iteration')\n", "ax1.set_ylabel('train loss')\n", - "ax2.set_ylabel('test accuracy')" + "ax2.set_ylabel('test accuracy')\n", + "ax2.set_title('Test Accuracy: {:.2f}'.format(test_acc[-1]))" ] }, { @@ -1836,7 +688,7 @@ "source": [ "The loss seems to have dropped quickly and coverged (except for stochasticity), while the accuracy rose correspondingly. Hooray!\n", "\n", - "Since we saved the results on the first test batch, we can watch how our prediction scores evolved. We'll plot time on the $x$ axis and each possible label on the $y$, with lightness indicating confidence." + "* Since we saved the results on the first test batch, we can watch how our prediction scores evolved. We'll plot time on the $x$ axis and each possible label on the $y$, with lightness indicating confidence." ] }, { @@ -1849,109 +701,9 @@ "outputs": [ { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1959,94 +711,9 @@ }, { "data": { - "image/png": [ - "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\n", - "REIFAABQ0/8Dsw8TC+BipngAAAAASUVORK5CYII=\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2054,124 +721,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2179,98 +731,9 @@ }, { "data": { - "image/png": [ - "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\n", - "ggoAAKCh/wcQESvdP72F3wAAAABJRU5ErkJggg==\n" - ], + "image/png": "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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2278,84 +741,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2363,95 +751,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2459,131 +761,9 @@ }, { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAI0AAACPCAYAAADHlliuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAGlxJREFUeJztnVls49t93z+Hi7iJu0Rq44xm5l4bAVzAfnEfnKB5CIJr\n", - "FEjSlwYGChTpgj50Q/vQJH1o/JgGaFC0D0Xb2EE3JC1auEgKtLUNtIj70DYOfGNf9/pO7r3SSENR\n", - "JCVS3ClS5OmD+Ds+5FALN4nS/L/AwZ/L8Mwh/1/9zm8/SmuNAweTwHXfC3Dw8OCQxsHEcEjjYGI4\n", - "pHEwMRzSOJgYDmkcTIypSaOUek8p9SOl1J8opX55notysNxQ0/hplFJu4CPgZ4As8IfAV7TWH853\n", - "eQ6WEdNKmi8CH2ut97XWXeB3gZ+f37IcLDM8U35uGzi0nr8G/rT9D5RSjqv5gUNrrca9Pq2kcQjx\n", - "FmNa0mSBjPU8w6W0cfAWYFrSfBd4Vym1q5RaAX4R+L35LcvBMmMqnUZrfaGU+hvAfwfcwNccy+nt\n", - "wVQm960mdhThB495K8IO3mI4pHEwMRzSOJgYDmkcTAyHNA4mhkMaBxPDIY2DiTFtwPLRQ6kfuyjc\n", - "brcZHo8Hl8tlhtvtRmtNv99Ha43WmouLC3q9HhcXF1xcXJjXAR5DyZBDmjFQSpnhcrkIhUKsrq6a\n", - "q9/vJxAImKuQo9vtcnFxQbVaNaNSqdDr9ej1evT7fXq93n1/vZnhkGYMbMK43W5WV1dZW1szIxqN\n", - "Do3z83Pa7Tbn5+ecn5+Ty+XI5XIcHx/T6XTodDqGVA5pHimEMKOkyWQy7OzskEqlWF9fN6PZbNJo\n", - "NMw1Go3i9XrpdruUy2Uzb6/XQyn14LeomUijlNoHqkAP6GqtvziPRd03bCnj9XpZXV0lmUyyvb3N\n", - "8+fP2djYIJ1Os7GxQSqVotFo0Gg0qNfrNBoN+v0+zWaTcrnM6uqqIcrFxcV9f7W5YFZJo4Gf1lqX\n", - "5rGYZYBsTUKYlZUVQqEQsViMtbU1Njc3icfjrK6u4vV6gUtFeWVlhUAggFKKSCRCNBolHo+TSCRw\n", - "u90AXFxc0G63325JM8DYSOhDhi1lfD7fEGk2NjYIhUKEQiFWVlaAH5NGKYXH4yESiRCLxYjH4yST\n", - "SSNlWq3WPX+z+WAekubbSqke8M+11v9yDmu6d7hcLjweDx6PZ4g06+vrbG5u4vV68Xg8eL1etNa4\n", - "3W5DGJ/PZ0iTSCRIJpN0u13a7Ta1Wm3IlH+omJU0X9Ja55RS68C3lFI/0lp/Zx4Lu2vIzXS5XHi9\n", - "Xvx+P6urq0NSQ7abUYjSLPMEg0FjnofDYarVKj6fz2xTDx0zkUZrnRtci0qpb3BZ2vLgSCM3XaRF\n", - "NBo15nUqleLJkyckk0mCweB9L3UpMEuFZVApFR48DgE/C/xgXgu7S4i15PF4WFlZIRKJkE6n2d3d\n", - "5bOf/SyZTIa1tTUCgcCN87wNmEXSpIFvDH4oD/DvtNbfnMuq7hC2eS2kiUajbGxssLu7yzvvvMP6\n", - "+rojaSxMTRqt9R7w+Tmu5c5gb0di+cgIBoPGStrZ2WF3d5dwOGzCB9dBa/2GN1kUZjHffT6fiUfJ\n", - "Z0bHsuOt8wgrpfD7/UPxo2AwSDAYJBAIEA6Hef78Odvb26ytrREOhwkGg7dSZGV7sq2uaDRKu92m\n", - "2+3S7/dRStHpdExAs9fr0e12Tdyq2+0uPXHeOtK4XC78fv9Q7CgSiRAOhwmHw0SjUXZ2dgxpIpGI\n", - "kRK3tX7cbjd+v9+QxiaMx+Oh3W7T6XQ4Pz+n0+nQarVot9u0Wi263e6Cf4HZ8daRRiRNNBo1MSQx\n", - "p2VITEkkjWw1N5FGtqdRSWMTxufz0Wg0aLVatFotms3mg/MYv5WkCQQCxGIx0uk029vbJJNJMxKJ\n", - "hAkDRCKRqZRfj8eD3+8nHA5zfn4+5PsJhUJDcap6vW7CEeI1lhjVsuo4bx1pXC4XwWCQRCLBzs4O\n", - "z58/N9tTJBIxRJnGGSc6jdfrJRgMmq0mEAgQiUSGIuH2tVgscnx8jMfj4eLigvPz86FErmUjzltH\n", - "GvHYrq2tsbOzw4sXL4YSqvx+Pz6fD5/Ph8cz3c8jpAFYWVkxEkf0GNmW5BoOh3G73SY63mg0TG5O\n", - "r9dzSHPfkEy8ZDJpJI3EmcREttM7J4HoNEIar9dLKBQymXsiPYQ4ovyKGd5qtSiXy4YkvV6PTqez\n", - "iJ9hJrwVpLFzev1+P5FIhGQyycbGBpnMZceUWXJ4hSzy2O1243K5TBRcIP9GpIhk/ImEqdVqlMtl\n", - "4+tZ1sj4oyeN2+025nQ4HGZtbY3d3V3W19cJBoMmQcq+Tgo7sdxOMJdhk9Z2+glB4/E4Ozs79Pt9\n", - "/H4/2WyW168v2/3U6/WlSxF99KRxuVxEIhE2NjbY2Nhge3t7iDTAG8SZFFprkzg+bsj25/V6h+Jc\n", - "8jgejxvCJBIJVldX0VpTr9c5Pj6e908yMx49aUTSbG5u8uLFC54/f87Ozs5CJI3oLfJYrjKv6Ehi\n", - "govESSQSBAIBkskkmUwGr9drCLOM6RQ3kkYp9XXgzwIFrfWfGryWAP498BTYB/681vpsgeucCHLj\n", - "7Uy6dDrNs2fP+MxnPkMikTA3ahqMbj8SBpAhiq+tAPf7feDNNAyllEncEjSbTV6/fk0sFjPkWqbY\n", - "1G0kzW8D/xT419ZrvwJ8S2v9G4PG078yGPcOsV5kSxDfi9QtiQ9Git5GFeDb3JTRkhWxhGSIlSQj\n", - "EAiY+JbEuGT4/f43pJsksycSCTY3N/H5fEP/pxDwvnAjabTW31FK7Y68/HPAnxk8/lfA/2SJSOPx\n", - "eMwNiUajRgmWGyaksS0e+3oTzs/PqdVqVKtVarXakHe30WgMkebi4oJQKGQi5aurq8RiMWKxGAA+\n", - "n28saUKhkCGN2+2mWq0CLIUJPq1Ok9Za5weP81zm1iwFRNJIuqaEA0TSBAIBVlZW8Hq9M0maWq3G\n", - "yckJp6enVCoVU00pFZVSddnr9Yy3WdbSbrcBjPl/HWk2NjaMTtTpdJbCmppZEdZa62XpryfWiF12\n", - "kkgkiMViRCIRQ5rbShr7ua1TNJtNzs7OKBaL5HI5SqUS5XKZs7MzSqXSUAig1+sN5RnHYjG01kaP\n", - "6ff7byi7Xq+XcDhMMplka2vLzNVsNqlUKm+Y9XeNaUmTV0ptaK2PlVKbQGGei5oEdjWkOO+SySSb\n", - "m5vGxM5kMqRSKaLRKD6fzyiXkgw+CttcFq9st9s1JbavX78mm82aIduUbFm25WQPqUoIBoPEYjGa\n", - "zabZbkQ5drlc+Hw+otEo6XSaXq9nzHVZc61We8M5CHfXXGBa0vwe8BeBfzi4/ue5rWgKiN9D3PeJ\n", - "RILt7W2ePXvG06dPTapDJBK5NWnson47wFiv1zk8POT169fm2mw2h2JJNumk5qnT6dBut02saW1t\n", - "jUajQafTeSP1wufzEYvF6PV6ZiuV8IbL5aJUKpkGA7JGwV0Q5zYm9+9wqfSuKaUOgX8A/DrwH5RS\n", - "f5mByb3IRd6wvqFqSCHN1tYWL1684MWLF0MeYYley1/2KMTnIjda9JezszMzDg8POTg4MEMkkIxR\n", - "k1wkQqvVol6vk0gkODs7M5JGAqOjksbr9RKJRFhZWTEE11oby08IfdeR8NtYT1+54q2fmfNapoZd\n", - "SSCk2dzcZHd3l3fffdfk6MpfrO3HEdg3WdITRDKcnZ1xcnLCyckJxWLRkGV/f5+Dg4Mhb/A4JVXM\n", - "8kajgd/vJ5VKUalUqNfrnJ+fm3waIcbKygoej4dwOEy/3zfv2zpMr9ej0WiYP4C73KIehUfY7idj\n", - "u+ltolwnWUTEi95ydnZGuVw2yu3oNZ/PUyqVzFZ0k1IqZJJtpF6vUyqVyOfzHB4eEo/HjSS0Qw39\n", - "fh+Xy2WSxjY2Nsx36Ha71Ot1yuWykYzifV40cR4FaQRXVQLI86tCBKKgik6Sy+U4OjoyPWbEFyPX\n", - "s7MzKpUKzWbT3CghzzjITZXHtVqNUqnE8fGxybXp9XrGqSdrFZdAIBAgHo+brEORMqVSiUAgQKfT\n", - "Md/tunXMC4+GNKOSxiaN/d4o7OL8er1OpVIhl8uxt7fH3t4e+/v7Q7kvrVZryDsr29F1N8oOaF5c\n", - "XAyRRspihDB2/Euufr+fWCxmrp1Oh3K5TC6XIxAI0Gq1zP9xF3jwpBklwyhpxmXf2QFKiR1Jgb7c\n", - "jL29PT788EM++uijoe1rmmoB0XcEsj0FAgFDbOmBI+SziSPebVl7q9Uil8sRjUaNs1K2v7uo8nzw\n", - "pJkGtu+k0+lQLBYpFArk83mOj485ODigWCxSq9WGPLvzEvsi2arVqgl1yJZXrVYJBoNDmYTLVu77\n", - "1pHG9ptIzdHJyQnZbJbDw0MODw/J5XIUi0Xq9bqJWo9Ki1lgk8btdhOPxymXy1SrVer1OsDMecqL\n", - "xPKtaMGwTepWq0WtVqNYLJLNZvn000/59NNPjT+mVquZisd5KpjdbpdWq2WSyePxuJE0tVrNmN52\n", - "s6RlwltHGsCQptFoUKlUjKTZ29vj5cuXQ4ruIioeRdL0+32j1NqkEY/1ysrKlUQdp9zfFbkeJWmu\n", - "+yH7/T7VatW0bT06OmJ/f59sNku5XDalJrIl3ee6bVLYmYXSDmV9fZ1MJoPH4zHEsy26ReFRkgbe\n", - "tKoEWmuq1SpHR0e8fPmSTz75hGKxSLFYNKQR5XfRpBlH7nHrHk1JlVqqVCpFJpMxFmOn06FarS68\n", - "HvzRkWYcUewUCJE02WyWjz76iA8++MC0dG02myYz7i6cZLK2cWGN6ySNpFWkUikT5RbCXBWEnSem\n", - "zRH+KvBXgOLgn/2q1vq/LWqR02Lcnt/v96lUKoY077///ht5M/eJ20oaaWAgfqZqtUqhULiTRPTb\n", - "0PK3gfdGXtPAb2qtvzAY90YY+y9vfX2ddDpNPB4nFApda66K1LmPhCZJRw2HwyQSCZOcJRmG4rAT\n", - "AowmiYlUEasvl8tRLpdNWGPRuJE0+rJbZ3nMW0thB0pALxqNsr6+zsbGBolEglAoZFq2jhv3CSFN\n", - "JBIxlRE2aezk93HZhUKaQqHAwcEBR0dHQwHURWOWDfBvKqX+WCn1NaVUbG4rmhB2kyIhzW0kzX3C\n", - "6/UOkSYejw81V7pJ0pyfnxtJc3h4OESapZA0V+CfAc+47LmXA/7R3FY0Iez67IcmaSQPWCRNNBod\n", - "kjS2fnKdpMlms5yenppzGRa+/mk+pLU2OcFKqd8Cfn9uK5oQotNIInkymSQSiZhg4H2tScxgO4dZ\n", - "EqYSiQTr6+tsbW2RyWSMHhYIBMZaP6P6l/Tnk5jYXVp7MCVplFKbetB4Gvhz3GP/YHF2SasySWjy\n", - "+/33VtIqKaj2GQt2QlgymSSVSg2RRlIfrktBHW1ZctdkEUyTI/xrwE8rpT7PpRW1B/y1ha7yGowr\n", - "WRG94L4kjUgW+3wFaZYk1RLpdJqtrS2ePHliiH6dpLFrqUTS2Jl6d7n1Tpsj/PUFrGUqjEoaqdH2\n", - "+/33uj3ZSWB221nJYRZJ8+TJE6N/XRWctJPdbcKMugzuCstpXkwIW4cQPeI+I8M+n8+U4MqhGlJT\n", - "HolEePr0Kdvb24bgkkhuVxzYhGg0Gqauqlarsbe3Z3wzrVbLHHd4V7GyR0GaZYM4G9fW1ox1ZI9U\n", - "KkUqlSIWiw0RRgg/WmQnllKhUKBYLPLq1StjMUkZzLwTxa6DQ5oFQOqWUqmUOfPSHuFw2BztI6a1\n", - "LR1HKyQqlQr5fJ6DgwNevXrF0dERx8fHxjfT6XTmmiR2ExzSLAB2WW0mk2F7e5utrS0z7C5Y44KV\n", - "dsmLOPLy+Tz7+/u8fPmSQqFgEsXsLudLbXI7GIa0MBFFN5PJ8OTJEzY3N0mlUsTj8aH+xDdFovv9\n", - "viFMs9mkXq9TrVY5Ozvj9PSUs7Mz0zb2PlrGPkrS3LUSHAqFTFt88UrLibrJZJJoNGpaxN4GYikJ\n", - "aaSGXBoM1Ot1c0jHQ+oasdS46x8yFAqRSqXY3d1ld3fXHFsoZy2IlLltvq9IGrv+W6SNlPOKz8Yh\n", - "zQPF6uoqqVSKZ8+e8bnPfc7Ej+RUXemGPomksbcn2+QWSTNJE6Z541GSZpxyab832ilr9H3x3IoX\n", - "1/b9jJvz3Xff5Z133uHJkyek0+mhz/r9ftMu5LrSYBvtdptyuUw2m+Xo6IhXr15RKBRMKufS99x7\n", - "SBiXOjl6kyTsEAwGTWrC6Pv29hKLxYba3o+LZ0kDpc3NTRKJhCGJHW+ynXc3EafdbnNycsKrV694\n", - "+fIl2WyW4+Nj0zDpvvGoSDOK6yRNMBg0YQcbbrebra0ttre32d7efuMc7nGhCdvbG4lEhoKVoxHu\n", - "20gaKeA7ODjgww8/pFAomO1p6UmjlMpw2Qo2xWVw8l9orf+JeiB9hEcfy/PrJI3H4yGTyZgt5/nz\n", - "50NnXI6edwAYCSTkuGo9t7XqhDT7+/v88Ic/NH327tKBdx1ukjRd4O9ord9XSq0Cf6SU+hbwSyxJ\n", - "H2HpNNVoNCiXy5yenhKJRNBa4/V68fl8Q/9eKWVM5KdPn74xn9vtNrGh9fV10wBaAopXKbOjVQOy\n", - "tttgtHl1qVQyVpJ0qVgmXEsarfUxcDx4XFdKfQhss0R9hPv9Pu12m0qlQrFYJBaL0e12TUbf6Mlw\n", - "LpeLcDhMOp1Ga004HH7j/fX1ddPYUdIuRYkdR4TRagGYrMVsp9MxZTT1ep1isUi1Wh1qwrhMuLVO\n", - "oy4bUH8B+D8sUR/hUdKsrq6a9hx263iBUopwOIzWmlAoRDr946XLjbcj1NLv7jp9xCbMNJJG+gOX\n", - "SiVKpRLFYpFKpbK051neijSDrek/AX9ba12zfzyt77ePcL/fNx0YisXiUKdyaZpow+VyGT9KKpUa\n", - "ynyT66gCK1iUpOl2u9RqNU5PTzk+Pn74kkYp5eWSMP9Gay2tX5emj7DoNNJdSvrTSRPEi4uLIR+L\n", - "Umqom6bMYV9nWYsQxz7/abRFrH1I2Pn5OScnJ+TzeZP+IA2tm83mw5M06vJX/Rrw/7TW/9h6a2n6\n", - "CEtJqijCfr+f9fX1ofiMLTkWGZeSue1On5KmaSeDS4TabgApXc/L5TLFYvFO65gmxU2S5kvAXwC+\n", - "r5T63uC1X2WJ+gjLX269XjfnKJ2dnb0R1LvLjlKjOb2jkuX4+JijoyMz7IM55FqtVh8mabTW/4ur\n", - "a6OWoo+w1AFJzY/b7aZSqZgD06WrpuSvLHot9vYkEkZiSNI9NJ/Ps7e3x8cff8wnn3xCo9Ew/XCE\n", - "6DIeHGkeAuzOVoBptpjP58lms0YxtmNBtt9lnsnnIslsE3o0v7dWq5mO57lcjkKhQLvdNucvCFHs\n", - "U+mWDY+CNPJXrZSi1WpxenpKNpvF7/fT7XZNaqVc7bGIioXz83MqlQqlUonT01Ojq4jeIo0hT05O\n", - "3sjxtfsSLysePGkAE4+RDt9iRQE0Gg2i0agpsJcqTGnZMer8mwWyPQlp8vk8R0dHpmmSJIaLxKnX\n", - "66b+etTCWoby4avw4Eljm7WiT5RKJQBzOHoymTRVAc1mE8B0k1oEhDR2Vwdp15bL5Ux7NluyyHex\n", - "v9ey4sGTBob9LHa7VVGS7Vzber1uXpPsOEldsHv32qkQdinsOBMahmNP0skhl8uRz+cpFotmm5KT\n", - "5x4yHgVpbEiBfKvVAjBZ/XIqW6lUolarUalUKJfLpFIpkxAuB6OK4uz3+00vO/tgU/v8J5Fctjkv\n", - "JnUul+Pk5MSYz+M81A8Rj5Y0UnQmUqZarbKyskIgEBjK7C8UCibZSq4Sm5K2rEJC0UVEsRXnnA2l\n", - "FKenp0NDSLPoBop3hUdJGtlK2u320FGFkoAl5zcVCgXW1tZIp9NDTQ/FGSjnEYxKqnw+b0ahUDAK\n", - "sMB20tVqNeOjua/qgXnj0ZEGuNZctQ/VEgki3ctF75EjkMXiEokiQ6wgGaOQKgK52r2JHwMeJWmu\n", - "g2xfzWZzqG5aTpArFAqmikB0HPvMbTnexx4C27knyrb4YKRA35E0DxBiUQFmC2s2m5TLZQKBgOni\n", - "4PP5THqn3HyJHdlSRHJe7O1p9IhlGcvssJsE6jrmX5Mj/FVu6CN8nzk2N2FUzxmXCG6/P5rmYB+h\n", - "PI4IVzUaWmaH3ThorcdGeG8izQawYecIA7/AZVS7prX+zWs++3B+HQdjcRVpps0RhiXpI+zg7nHr\n", - "XAErR/h/D15aij7CDu4etyLNYGv6j1zmCNdZoj7CDu4e1+o0YHKE/wvwX0dSPuX9XeD39eCwDet1\n", - "R6d54LhKp7lW0lyVIzxIJhfcax9hB3ePm6ynnwT+APg+lyY3wN8HvsLl1mT6CFt1UPJZR9I8cExl\n", - "cs8ChzQPH1NtTw4cjINDGgcTwyGNg4nhkMbBxHBI42BiOKRxMDEc0jiYGAvz0zh4vHAkjYOJ4ZDG\n", - "wcRYKGmUUu8ppX6klPqTQRfQWefbV0p9Xyn1PaXU/53i819XSuWVUj+wXksopb6llHqplPrmJLlB\n", - "V8z3VaXU68Eav6eUem+C+TJKqf+hlPqhUuoDpdTfmmWN18w39RqB8fms8xiAG/gY2AW8wPvAT8w4\n", - "5x6QmOHzP8VlItkPrNd+A/h7g8e/DPz6jPP9GvB3p1zfBvD5weNV4CPgJ6Zd4zXzTb1GrfVCJc0X\n", - "gY+11vta6y7wu8DPz2HeqdNMtdbfAcojL/8cl21tGVx/Ycb5YMo1aq2PtdbvDx7XAbsF78RrvGa+\n", - "qdcIi92etoFD6/lrfrzgaaGBbyulvquU+qszziVYRHvbmVNh592Cd57puoskzSJs+S9prb8AfBn4\n", - "60qpn5rn5PpSjs+67plTYUdb8M66xnmn6y6SNFkgYz3PcCltpobWOje4FoFvcLkFzor8oFRHMhJn\n", - "am+rtS7oAYDfmnSN17XgnWaN1nz/VuabdY2LJM13gXeVUrtKqRXgF7lsJTsVlFJBpVR48DgE/Czz\n", - "STOV9rYwh/a2s6TC3qIF70RrXFi67izWzC209y9zqbF/zGUV5ixzPePSAnsf+GCa+YDfAY6ADpf6\n", - "1i8BCeDbwEvgm0Bshvn+EpcVqd8H/nhwc9MTzPeTQH/wHb83GO9Nu8Yr5vvyLGvUWjthBAeTw/EI\n", - "O5gYDmkcTAyHNA4mhkMaBxPDIY2DieGQxsHEcEjjYGI4pHEwMf4/w2zPGHuGeikAAAAASUVORK5C\n", - "YII=\n" - ], + "image/png": "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\nYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2591,96 +771,9 @@ }, { "data": { - "image/png": [ - "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\n", - "/2h7TsHtAQAAtEXJhGq6pFMl/X1EnCpph6SVBbcHAADQFiWfodokaVNE/KS5/E2Nk1Ddc889+1+f\n", - "cMIJ6uvrK9glAACAap544gk9+eSTlWKLJVQR8aztjbbfGBGPS3qXpEfGxp1xxhmlugAAADBpixYt\n", - "0qJFi/Yvr1q1qmVs6V/5/Zka5WpmSvovSR8uvD0AAIApVzShiogHJL295DYAAADareRD6QAAAK8J\n", - "pW/5TSg7lXwV2dIlpUqdZEvgdIJMeYGMUqVnMiUOpHKlgzL7befOnUVi9+7dWzlWypWqyXy+zD6e\n", - "M6f6TCqZciTZ80omPnMs79mzp3JsZjwyfZBy45c5jjKfL9Nu5rtXsvRMJjZzLGf6XPIc1wmxJcvw\n", - "ZI6j7HdqPN33Lz4AAECHIaECAACoiYQKAACgJhIqAACAmkioAAAAaiKhAgAAqImECgAAoCYSKgAA\n", - "gJpIqAAAAGoioQIAAKip7aVnSpV9yShVFqVUGZdS0/p3ikyJiuHh4VTbIyMjbY/NlDnJlFuZO3du\n", - "5Vgp1+fMfs6UI8mU1tm6dWvl2EwZEEnq7e0t0vb8+fMrx2bOQyXLDGX2RabdTNmQTLtZpc4vme9T\n", - "pvRM5hwg5cavVGyp8ky7du2qHCuVK6PUStErVLYvt/2I7Ydsf832rJLbAwAAaIdiCZXthZI+IunU\n", - "iHizpB5JHyi1PQAAgHYpectvq6RhSXNsj0iaI+npgtsDAABoi2JXqCLi/yT9raQNkp6R9GJE/Hup\n", - "7QEAALRLyVt+J0r6c0kLJR0naZ7t3y+1PQAAgHYpecvvbZJ+FBHPS5Ltb0s6U9JXRwcNDg7uf93f\n", - "36+BgYGCXQIAAKhm48aN2rRpU6XYkgnVTyX9pe1eSbslvUvSmrFBy5YtK9gFAACAyenr61NfX9/+\n", - "5dWrV7eMLfkM1QOSbpB0r6QHm6u/WGp7AAAA7VJ0Ys+I+Kykz5bcBgAAQLtRegYAAKAmEioAAICa\n", - "2l7Lr2rNn0xtoEzs4S5by69U7b9S41fy802fXv3rkanPl/l8mfpg2X2RqQmZqWGZaTcTm6kllhkP\n", - "SZo1q3pVrMy+eP755yvHDg0NVY7dvn175VipXG28TJ25TGxmPDI1AqXcd6rUeStzDGXr3WY+X+Y4\n", - "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\n", - "AABQ0/8DEfw5JxfRlIgAAAAASUVORK5CYII=\n" - ], + "image/png": "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\nTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2688,109 +781,9 @@ }, { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAI0AAACPCAYAAADHlliuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAFYRJREFUeJztnVuMZHldxz+/ut+7q+89072zs8Oa8EACL/gARB4IWWIi\n", - "+qIhMRpE44OiURMRHwSjD0gCMb4QlV2Dl4BGAwETFTAa8cHLml12UXbZTRimZ/tW3VXVdb//fej6\n", - "/ffUmeqeruq6nJo5n+Skbl2nf931rd//8rscMcbg4zMKgXkb4LN4+KLxGRlfND4j44vGZ2R80fiM\n", - "jC8an5EZWzQi8oyIvCIir4nIxyZplI+3kXH2aUQkCLwKvA94A/hv4EPGmO9O1jwfLzKup3kn8Lox\n", - "5q4xpg18Cfjg5Mzy8TKhMd93E9hzPL4P/LDzB0TE32pecIwxMuz5cT2NL4jHmHFF8waw63i8y7m3\n", - "8XkMGFc0zwNPi8iTIhIBfgr46uTM8vEyY81pjDEdEfll4J+AIPCsv3J6fBhryX2lE/sT4YVn0hNh\n", - "n8cYXzQ+I+OLxmdkfNH4jIwvGp+R8UXjMzK+aHxGxheNz8j4ovEZGV80PiPji8ZnZMZNwgJARO4C\n", - "JaALtI0x75yEUdNGROwRCAQIBoOEQiGCwSDBYJB2u02n07G3s7AnEAhYmwCMMWhc0H1/3lxLNJwn\n", - "Y73XGJOfhDGzQEQIhUL2CIfDLC0tkclkyGQyJBIJ8vm8PQqFwtRtCoVCRCIRwuEwkUiEXq9Ht9ul\n", - "2+3S6XTs416vR6/Xm7twrisagKGRUC8TDAaJRCLEYjHi8ThbW1tsb2+ztbXF6uoqd+/e5e7du7Tb\n", - "7ZmIJhgMWlsSiQTdbpd2u02r1aLVatFutxERK6B5MwlP800R6QJ/bIz50wnYNFXU00SjURKJBOl0\n", - "mu3tbe7cucNb3vIWbt68STwep91uk8/PxoGGQiFisRjpdJpMJkOn06Fer9NoNOywBXhCMHB90bzL\n", - "GHMgIuvAN0TkFWPMtyZh2DTRDymRSLC0tMT6+jo7Ozs89dRT3Lp1i0KhwBtvvEE8Hp+pPalUimw2\n", - "S6fTIRaLUa/Xqdfr1Go16vU6xhja7fZiD0/GmIP+bU5Evsx5aYunRSMihMNh4vE4mUyGbDZLJpMh\n", - "Ho8TDocfmJDOglAoZO1ZXV214tCjWCySz+cREZrN5tw9ztiiEZEEEDTGlEUkCbwf+N2JWTYlVDSJ\n", - "RMKKJpVKDYhm1sJxDk8rKysEg0G7Yur1euRyOUSERqNBsViciU2X2nuN924CX+7/Y0PAXxljvj4R\n", - "q6aIiBCJRB7wNIlEgkgkMnMvA4OeZmVlhVgsZrcCAoEA0WiUZrNJsVgkEJj/1trYojHGfB94+wRt\n", - "mQnDPE06nZ7r8BQIBAiHw8RiMZLJJMlkkmg0SjQaJRKJ0G63OT09JR6PW/vmOa+ZxJJ7IVARqKfR\n", - "SfDKygrpdJpYLEYoNJ9/R6/Xo91uU6/XqVQqBINBwuEwwWCQeDxOPB4nGo3a5wKBgB2+5iGe+fu6\n", - "GeAUTCAQIBKJkEwmB0QTj8fnJpput0ur1aJer1Mul2k0GvR6PTtsOUUTCoXm4g2dPBaiAQbCBupp\n", - "nMPTPD2NUzSVSoVGo0G32yUYDJJIJIZ6mnkK57EYnlQs7rnD0tIS2WzWzh0AG2+a5XZ9r9ej0+nQ\n", - "arVoNBq0220AuzWgoolEIlY0ML841CMvGp34RiIRIpEI6XSa5eVlG29Kp9MD3/RGo0GhUKBSqdgP\n", - "bxY2qqg1DhWNRu0GpIpGg6o6p5kXj41oNK6jgtEjnU5TLpft0HB2dkY+n6dardJqtWZmozPaHg6H\n", - "iUaj1uZhw1Ov1/PnNNPCKZpUKsXy8vKAp0mlUoRCIVqtFmdnZxwdHVlPM0vRiIgVzTBPo1Fw95xm\n", - "HjySnsa5WgoGg0SjURvXWVtbI5vNWi+j8SUdlg4ODsjn8zMdnnRY0mFUBaORb53P6Mpp3qunR040\n", - "KhQ94vE4a2tr3Lx5kxs3bnDjxg1u3rzJ0tISgUCAer3O2dkZJycn7O/vs7e3x9HREaVSiWazOROb\n", - "3bGn5eVlksmk3aH2Go+caODNfJlIJEIqlbKieeqpp3jiiSdYXV0lk8kQCASo1WpWNAcHB9y7d49i\n", - "sThX0SwtLQ2ENbzGIycazZfR+FI6nbapD3fu3OHOnTtWUCJiPU0ul7OeRlMRfE8znIeKRkSeA34U\n", - "ODbGvK3/3Arw18At4C7wk8aY+YdfeVM0zr2YtbU1bty4wa1bt7h9+7bNiGu1WpTLZQqFAicnJxwd\n", - "HbG/v29TK7vd7szsdQYsve5prrJ6+jPgGddzvwV8wxjzQ8A/9x97gkAgQDweJ5vNsr29ze7uLhsb\n", - "GywtLRGPxxERarUauVyOu3fv8sorr3Dv3j1yuRzVanUmubi6xNY8Zc0iTKVSAxP0cDi8mKLpZ+K5\n", - "E2V/DPhC//4XgB+fsF1jEwgESCQSZLNZtra22N3dZXNzk+XlZWKx2AOiefXVV7l37x4nJydUKhUr\n", - "mmkGA937Mrono6LR/J5QKORJ0Yw7p9k0xhz17x9xnlvjCS7zNE7RnJyc8IMf/IDXX3+d4+Nj62mm\n", - "LRgYXOEN8zSpVMq+7lxae0VA154IG2PMvPvrOf+poVCIZDLJysoKW1tb7Ozs2NVSLBYDsKK5d+8e\n", - "r732GuVymUqlYoenaaNeRvdldOdXE8vj8fhA6sMshDwK44rmSES2jDGHIrINHE/SqFHQIKSuiDKZ\n", - "DGtra6yurrK6uko2myWRSBAMBm0gslarUa1WqVQqNoTQarVmIhjAbjam02nS6fQDw6eWsGjwtFwu\n", - "U6vVbDBTa6LmlSs8rmi+Cvws8Af9269MzKIRERGi0ajNeFtZWWFtbc0KJ5vN2jyUbrdLo9EYEI2G\n", - "C1qt1sw+hEgkYld1a2trbG9vs7y8bCfqnU6HRqNBo9GgXq9TKpWoVqs0Gg06nc7Mo/BurrLk/iLw\n", - "I8CaiOwBvwN8CvgbEfkI/SX3NI28DM2h1bjS+vr6A55G/8FaT+QWjX5zZ+lpMpkMGxsb7OzssLm5\n", - "STabtcNnp9Oh2WxSrVYpl8vW0zSbTetpPC0aY8yHLnjpfRO2ZSw0fdMZW1LR6J6HfmtbrdYDgqlU\n", - "KjO31yma3d1dtra2hnqaSqVCsVjk7OzMJmepaOaZ7rnwO8LO4UlFs7S0NLCjqpt4xWKRk5MTTk9P\n", - "Zx6QdB7OVNONjQ1WVlasvQCtVotSqcTx8TGHh4ccHBxQKBSo1WpzFww8AqJxDk8qmuXl5YEdVf0Q\n", - "NL6kUexZpT44N/JCoZBdWq+urrKxsWFrr9TeZrPJ2dkZx8fH7O3tWZt1dTfvldTCi0Y9jVM0F3ka\n", - "FY16mlmLRld4bk/jDBsANJtNSqUSuVxuQDROTwN+uufYaKL4VUSTy+Xmmi+jnSqSyaSNM62vr5NM\n", - "Jm0+DbwpmuPjY+7fv8/R0RHFYvEB0cyLhRSNsymRe0c1nU7bb20wGKTX69FoNGwkex6eJhwOk0ql\n", - "yGQytuGAM5Kt6ZvaVkRXTaVSiWKxaPeSvFD8DwsoGmcpim7sOWM3GuzTD8MYQ6PRGJjT6A7wrDyN\n", - "esLV1VXW1tasaBKJhK3q1AZG3W7Xru6cotGVky+aMVHBuGM3usPq9DS6fHV6mmazaTf0ZoGKZmVl\n", - "he3t7Qc8DTDQxGiYp9FNPV80Y+IM+A3zNDrhVLevnkZFM2ucotna2npg3tVutwdKc1U0Z2dndo/G\n", - "SyykaODBWqFwOGyPXq9nd371n1+r1WbSdHEYaqOKW8tRtOhNBdNoNKhWqwOxMC94FjcLKZqLunNq\n", - "xn6z2aTRaNBsNsnn83blMas5jBv36slZwwRviqbZbNrApJdFs3B1T27BuNMMnJ5G0zjPzs6o1+tz\n", - "9zSaBuEsR3FGtTWYqiulWcXCRuWhohGR50TkSERedjz3SRG5LyIv9A93OujUcQpHd1rdoikWi+Ry\n", - "Oc94Gq1nusjTuIcnr0x83YybI2yAzxpj3tE//nHypg3HmZikyd9aOF+r1QbEod0h3AVnWqU4rUw4\n", - "Z7WkVndqDbmGOZLJpM0B7na7dmhyp0EspGguyBGGOfYPVtHo3oaKplqtWtE4A5mzFo27mF9Fk81m\n", - "B5bb0WjUikaX2qVSiUqlYocoL3KdOc1HReTbIvKsiCxPzKIrcJFo1NN0Oh0byEwmkyQSCWKx2AP1\n", - "0LP0NJrvo2XBzjCH29NoGsTCepoL+Bxwm/OeewfAZyZm0RVwDk9u0VSr1Qs9jWbwOSeh0+Ci4ckZ\n", - "hR8mmmq1+kDujBdFM9aS2xhjc4JF5PPA1yZm0dV+/4C30d1UTbbSzT3dC1lbW2NnZ4dqtWpLcfVo\n", - "NBoj/35n501nFwdnaENtiEQi3Lp1i42NDVtlMEyszhyZeac+PIyxRCMi29p4GvgJ4OXLfn6SGGNs\n", - "d0u3t2k2mzSbzYFWqvF4nPX1dWq1GsYYEokExWLRHuVyeWQbnBuJejjzZbTzg97evn2bjY0Nksnk\n", - "lf4+rzNOjvAngPeKyNs5X0V9H/jFqVrpQr+J6tqdQ1Sj0bB9eLWt6vr6Or1ej2g0yvLyMsfHx/YY\n", - "5/oH2gZED6dXcbYK0d+/vb3N5uYmqVRqaDvXhz32GuPmCD83BVuujDMJySka9TTdbteKJp1OY4yx\n", - "gllfX7dJT7qSGhWdXOttPB5/QEjOQ7tuJZPJC+dR7mHJy8JZyDCCE61jKhQKHB4eEo1G7Ra8czkL\n", - "5x4im80OTJSXl0df+KkX0Vv3cKSHvq6T8YtqszudzkDLk0KhQLVapdlselI8j4xo8vk8+/v7ADZq\n", - "LCL0ej27UtK5R6/Xs00bNzY2Rv6d6qH01jmncXazcovoopaz7XbbCv/o6IjT01PK5bInLp4xjIUX\n", - "jSYt6VVKNGajy15tCJBIJAZax2vfmnFzapzDiDMGNmz1pIK6aOXUarWoVCpWNMVi0fbH8T3NFFBP\n", - "o1n89XodYGAVo3MaTbtMp9PX6lnnvL6lc9dWz+eMgzmHpIt+n3qaYrHI8fEx5XLZFu/5opkCWjnZ\n", - "bDZtADOXy9lhqFqtks1mWVlZsVdccV7kdJyJsPYb1lu3PSpMvXUvz93icU7onc2vvXC9ymEsvGiA\n", - "gckuwMnJifVAp6enLC0tDbSBdX+Io2CMsZWZmmvsRvOA9dA6c80Jvui8zgucenmDb+FFo99SeLNd\n", - "fLfbtYLRchHtTp5OpwfmNpqjOwqFQmFgg9DNzs4OTzzxBLVajV6vRzabxRhDKBQikUgM9TTu6L1X\n", - "BQOPkGhUOCJiwwVa4pJKpQYO3VfRmNSo5HI5Tk5O7OHm6aeftoJRUapgLvs7VDBeXDE5WXjRwOBG\n", - "mN5XEWnE2zn3ce7WjuppjDEUi0UKhQKlUolarfbAz2jgVFM13IX7btzpoM45jRez9x4J0VyGUyyA\n", - "jSg7Y0ajUqlULs0EdMbDdOmse0fDcF8dxtnUyItD1SMvGsDmBmsVoztCPSrOi6wPw52yoambVxFN\n", - "IpGwO9Z6noUSjYjsAn8ObHAenPwTY8wfebmPsBvnnKfVag1MQsfdp3lY+oJbNM5mRMNw1m8lk0m7\n", - "E+z0kF7iYZ6mDfyaMeZFEUkB/yMi3wA+zHkf4U+LyMc47yPsmV7CbmYdBBx1JeTOQnTu1XiRS32z\n", - "MebQGPNi/34F+C5wEw/3EfYSV/Vk7moE55DmtaEJRpjTiMiTwDuA/8TDfYS9xrA+wG4xuYvltEbL\n", - "iysnuKJo+kPT3wG/aowpO/9oL/QRXgQuiz/p/MVZLAd4dlf4KsVyYc4F8xfGGG39eiQiW/3X59pH\n", - "eFG4bF7lruPy+q7wpaKR86/Fs8D/GWP+0PGS9hGGOfcRXgQWIRtvFB42PL0L+GngJRF5of/cx/FQ\n", - "H2Evc9HwsujiuVQ0xph/52Jv5Ik+wj6z57HYEZ41zs4WFyV7OYesRah1cuKLZko4W6G4xeMWipcn\n", - "vcNYuP40i8CwHjoX5dA4V0qLIhxfNFPiKp7GmT+zSMLxh6cpoBde1YbY6XSaWCxm+xprIFIPZ9t9\n", - "XzSPKe5unnrBDG1Rq4VxpVKJUqnE/v6+bWPvi+YxRa9/kM1m2dzctL2N9UJl1WqVQqFALpfj+PjY\n", - "XmWlXq/7onlc0foq9TTRaNRWZGrSe6FQ4ODggPv37w94Gq+mQzjxRTMDms2mjVp3Oh329/e5f/8+\n", - "e3t77O3tDVRV+p7mMUWzBOv1uq3Jdiab64W/9NAk9Uaj4YvmccXZQ0+vcZDP5+2Ry+XsfEavB67V\n", - "mgsvmktyhD8J/DyQ6//ox2fZFtbrqKdR0ZyenrK/v8/BwYGdv+TzeQqFAvl83g5d87xs8iiMmyOs\n", - "fYQ/O3ULF5BGo0GxWOTw8JBMJsPJyQlHR0ccHh5yeHg4sNyuVqsLIRQnD4tyHwKH/fsVEdEcYZhj\n", - "H2GvU6vVyOVyhMNh2u02pVKJQqFgD683l34Y4+QI/wfneTYfFZGfAZ4HfsOrJSzzoFqtcnx8TLPZ\n", - "pFAoDPQ4rtVqD62b8jpyFaX3h6Z/BX7fGPMVEdngzfnM7wHbxpiPuN6zeF+hCaGVm1rF6bxYvLMr\n", - "hNfrto0xQ0eTh4qmnyP898A/uFI+9fUnga8ZY97mev6xFc2jwkWiGStHuJ9Mrsy0j7DP/LnU04jI\n", - "u4F/A17ifMUE8NvAhzhvcW/7CDvqoPS9vqdZcMYensbFF83iM9bw5OMzDF80PiPji8ZnZHzR+IyM\n", - "LxqfkfFF4zMyvmh8RmZq+zQ+jy6+p/EZGV80PiMzVdGIyDMi8oqIvNbvAnrd890VkZdE5AUR+a8x\n", - "3v+ciByJyMuO51ZE5Bsi8j0R+foo1xi/4HyfFJH7fRtfEJFnRjjfroj8i4j8r4h8R0R+5To2XnK+\n", - "sW0Ehl/adxIHEAReB54EwsCLwFuvec7vAyvXeP97OE8ke9nx3KeB3+zf/xjwqWue7xPAr49p3xbw\n", - "9v79FPAq8NZxbbzkfGPbaIyZqqd5J/C6MeauMaYNfAn44ATOO3aaqTHmW0DB9fTY7W0vOB+MaaOZ\n", - "cAveS843to0w3eHpJrDneHyfNw0eFwN8U0SeF5FfuOa5lGm0t/2oiHxbRJ4dZbhzMukWvK503WvZ\n", - "OE3RTGMt/y5jzDuADwC/JCLvmeTJzbkfv67dnwNuc55vdAB8ZtQTuFvwXtfG/vn+tn++ynVtnKZo\n", - "3gB2HY93Ofc2Y2OMOejf5oAvcz4EXpeJtrc1xhybPsDnR7Vx0i14Hef7Sz3fdW2cpmieB54WkSdF\n", - "JAL8FOetZMdCRBIiku7fTwLvZzJpphNtb3udVNhJt+CdWrrudVYzV5i9f4DzGfvrnFdhXudctzlf\n", - "gb0IfGec8wFfBPaBFufzrQ8DK8A3ge8BXweWr3G+n+O8IvUl4Nv9D3dzhPO9G+j1/8YX+scz49p4\n", - "wfk+cB0bjTF+GMFndPwdYZ+R8UXjMzK+aHxGxheNz8j4ovEZGV80PiPji8ZnZHzR+IzM/wMn9Av6\n", - "T5UJ3wAAAABJRU5ErkJggg==\n" - ], + "image/png": "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\nT5UJ3wAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2798,96 +791,9 @@ }, { "data": { - "image/png": [ - "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\n", - "AAB9h4QKAACgIRIqAACAhkioAAAAGiKhAgAAaIiECgAAoCESKgBdZ/sH7f//qu0Lj3Lbl060LgA4\n", - "mpiHCkDPsP16tSY5PD/xnlkRceAIr++NiIVHo38A0AlnqAB0ne2h9sOPS3qt7S2219meYfty25tt\n", - "32n7T9rxr7d9s+1vStrWfu5a27fZ3mb73e3nPi5poN3eVWPX5ZbLbd9t+y7bbx3T9k22/8X2Dttf\n", - "mt6tAaAfzep2BwBAPy9982FJHzx0hqqdQD0REa+wPVfS921vaMeeJunUiPjP9vK7IuLxdm27zba/\n", - "FhGX2H5vRJw2wbp+W9KvS3qppBMl3Wp7U/u1l0k6RdJ/S/qB7VdHBJcKAXTEGSoAvcTjls+R9E7b\n", - "WyT9SNLzJA22X9s8JpmSpHW2t0r6D0lLJK2cZF2vkfSVaNkj6XuSzlAr4docET+O1j0RWyUtbfCZ\n", - "ADwLcIYKQK97X0RsHPtE+16rJ8ctny3pzIgYsX2jpHmTtBt6ZgJ36OzV/jHPHRTHSgCT4AwVgF6y\n", - "V9LYG8i/I+k9tmdJku0X2Z4/wfsWSXq8nUz9mqQzx7w2euj949ws6W3t+7ROlLRa0mY9M8kCgEnx\n", - "ry4AveDQmaE7JR1sX7r7nKRPqXW57Q7blrRH0m+148f+RHm9pD+1vV3SfWpd9jvkM5Lusn17RLzj\n", - "0Psi4l9tv7K9zpD0oYjYY/vF49rWBMsA8AuYNgEAAKAhLvkBAAA0REIFAADQEAkVAABAQyRUAAAA\n", - "DZFQAQAANERCBQAA0BAJFQAAQEMkVAAAAA39PxShDsSnYXpyAAAAAElFTkSuQmCC\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2895,89 +801,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2985,96 +811,9 @@ }, { "data": { - "image/png": [ - "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\n", - "AAAAAElFTkSuQmCC\n" - ], + "image/png": "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\nJhIqAACAmv4fGZAJwEI7dFcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3082,124 +821,9 @@ }, { "data": { - "image/png": [ - "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\n", - "SUVORK5CYII=\n" - ], + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3207,97 +831,9 @@ }, { "data": { - "image/png": [ - "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\n", - "rP2rsG9K2q6f3lp4r6Qtog+7mu3nqvXQ8rz2fzdExIdtnyH6rqfYXiPpnRFxGf3X27ouoQIAAOg1\n", - "3XbLDwAAoOeQUAEAANREQgUAAFATCRUAAEBNJFQAAAA1kVABAADUREIFoHG2b23/f8j25Sd52VdP\n", - "ty4AOJkYhwpA17C9Vq1BDi9NfGZ+RBw5wfv7I2LpyWgfAHTCFSoAjbM92n75QUkX2d5q+wrb82x/\n", - "2PYW23fZ/pN2/Frbm2x/WdI97Xk32r7D9j2239Ke90FJ/e3l3TB1XW75sO27bW+3/dopy95g+99s\n", - "32v703O7NQD0ovlNNwAA9NPSN++R9K7JK1TtBGpfRLzY9kJJ37L99XbseZJWR8QD7ek3R8Tedm27\n", - "Lba/EBFX2X5bRJw3zbp+W9KvSHqepDMlfdv2N9vvPV/SuZL+T9Ktti+MCG4VAuiIK1QAuomPm/4N\n", - "SW+0vVXS7ZLOkLSq/d6WKcmUJF1he5uk/5E0KOlZM6zrpZI+Gy0jkjZKepFaCdeWiPhRtJ6J2CZp\n", - "uMZ3AvAzgCtUALrd2yPilqkz2s9ajR03/XJJ50fEQdvrJS2aYbmhpyZwk1evDk2Zd1ScKwHMgCtU\n", - "ALrJfklTHyC/WdJbbc+XJNvPtj0wzeeWSdrbTqZ+WdL5U96bmPz8cTZJel37Oa0zJb1M0hY9NckC\n", - "gBnxry4A3WDyytBdko62b919XNJH1brd9h3bljQi6bfa8VN/ovw1SX9qe6ek76l122/SxyRtt31n\n", - "RLxh8nMR8e+2X9JeZ0h6d0SM2H7OccvWNNMA8CQMmwAAAFATt/wAAABqIqECAACoiYQKAACgJhIq\n", - "AACAmkioAAAAaiKhAgAAqImECgAAoCYSKgAAgJr+H9OLZ8u3dMr8AAAAAElFTkSuQmCC\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3305,123 +841,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3429,99 +851,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3544,7 +876,7 @@ "source": [ "We started with little idea about any of these digits, and ended up with correct classifications for each. If you've been following along, you'll see the last digit is the most difficult, a slanted \"9\" that's (understandably) most confused with \"4\".\n", "\n", - "Note that these are the \"raw\" output scores rather than the softmax-computed probability vectors. The latter, shown below, make it easier to see the confidence of our net (but harder to see the scores for less likely digits)." + "* Note that these are the \"raw\" output scores rather than the softmax-computed probability vectors. The latter, shown below, make it easier to see the confidence of our net (but harder to see the scores for less likely digits)." ] }, { @@ -3557,109 +889,9 @@ "outputs": [ { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3667,81 +899,9 @@ }, { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAD0ZJREFUeJzt3XvQXVdZx/HvL2+ubUoh0oJA2lAFJR2QIjDlTgGdykDx\n", - "gkBFQHRwHEAqAgN0Rv/SAYdxqAyDM0jlUm4qYIFRLlUqFJCGQtNbys2h2oI0SkNoapO8SR7/OCfN\n", - "2/Am2Ts76z3npN/PzDs5e5/n7PXkrJPkyVr7rJWqQpIkSUdv2aQTkCRJmnUWVJIkSQNZUEmSJA1k\n", - "QSVJkjSQBZUkSdJAFlSSJEkDLZ9k40lcs0GSJM2Mqspi55sWVEnOBS4C5oB3VdVfHByzfv36n3jd\n", - "9u3bOfnkk4+63b5ra+3du7dJbJ889u3b1zm2j2TRfj9m8Yu54447OPHEE4/69X3e4927d/e69vz8\n", - "fOfYPXv2dI7t09fTvPZbVQ3+DEzz70+SWmk25ZdkDng7cC6wETg/ycNatSdJkjQpLe+heizwnaq6\n", - "qarmgQ8Dz2nYniRJ0kS0LKgeCNy84PiW8bkjWrVqVZOEtDRWrFgx6RQkSVpSLQuqo76RYvXq1ccy\n", - "Dy2xlStXTjoFHaVjcQ+dJN0Ttbwp/XvAwjvO1zMapbqb7du33/V41apVFlOSJGnmtCyorgIekmQD\n", - "8H3g+cD5BwcN+TafJEnSNGhWUFXVniSvBD7DaNmEi6vqxlbtSZIkTUrTdaiq6lPAp1q2IUmSNGkT\n", - "XSkd+i2e2FXfhQX7LKrZKrbVIqB9Fwzts6jmNLxvfX9/rRaddDFLSbpncy8/SZKkgSyoJEmSBrKg\n", - "kiRJGsiCSpIkaSALKkmSpIEsqCRJkgayoJIkSRrIgkqSJGkgCypJkqSBLKgkSZIGsqCSJEkaaOJ7\n", - "+a1atWrSKfTSZ8+2VrF99tvru8dcn2v3ie2zZ2Of2Pn5+c6x0G6fwCS98mih5X6C7lUoSYfXdIQq\n", - "yfoklye5Icn1SV7Vsj1JkqRJaD1CNQ+8uqo2J1kLfC3JZVV1Y+N2JUmSlkzTEaqq+kFVbR4/3gHc\n", - "CDygZZuSJElLbcluSk+yATgLuHKp2pQkSVoKS1JQjaf7PgJcMB6pkiRJOm40/5ZfkhXAR4H3V9Wl\n", - "Bz+/bdu2ux6vXr2aNWvWtE5JkiTpmGpaUGX0XfKLgS1VddFiMfe5z31apiBJktRc6ym/JwC/DZyT\n", - "5Orxz7mN25QkSVpSTUeoquqLuBq7JEk6zlnsSJIkDTTxrWe6bjPSZ2uPltuATMMWHC3fiz7xy5Z1\n", - "r8dXrFjRObbPljZ9t57pE99n65k+5ubmOsf2eY/75jsN2wy1eo8laak5QiVJkjSQBZUkSdJAFlSS\n", - "JEkDWVBJkiQNZEElSZI0kAWVJEnSQBZUkiRJA1lQSZIkDWRBJUmSNJAFlSRJ0kAT33pm5cqVneL6\n", - "bH3RdzuLVtvJtNraYxa362i1HVDLrXX6vM99YvtszdLns9nycz8NWy5J0jQ7ZEGV5DeAAhb7F6iq\n", - "6mNdGkgyB1wF3FJVzz6qLCVJkqbY4Uaons2ooDqUTgUVcAGwBTipa1KSJEmz5JAFVVX9ztCLJ3kQ\n", - "8Ezgz4E/Hno9SZKkaXTEm9KT3D/JxUk+PT7emOT3Ol7/rcDrgNm76UeSJKmjLt/yew/wWeAB4+Nv\n", - "A68+0ouSPAvYWlVXs/h9WJIkSceFLgXVfavq74C9AFU1D3T5mtLjgfOSfBf4EPC0JO87OOi22267\n", - "6+fOO+/skbokSdJ06LJswo4kP7X/IMnZwPYjvaiqLgQuHL/mKcBrq+rFB8etW7eue7aSJElTqEtB\n", - "9Rrgk8AZSb4MnAI89yjaciEbSZJ0XEqXBfuSLAd+jtG9UN8cT/sNbzypM844o1OsC3se4MKeB/RZ\n", - "JBNgfr77R7dPbKs+cWFPSZouVbXoP2hHHKFKsgZ4OfBERqNMVyT566raeWxTlCRJmk1dpvzeB/wY\n", - "eBujEarfAi4BfrNhXpIkSTOjS0F1ZlVtXHD8uSRbjlUCt99+e6e4PtMZfacnWl271TRJq+mzvlq9\n", - "F32mP/tO+fW59jT09bTo85k73t8LSVpMl2UTvp7kcfsPxt/y+1q7lCRJkmbL4TZHvm5BzJeS3Mzo\n", - "HqrTgG8uQW6SJEkz4UibI0uSJOkIDrc58k0Lj5OcCqxunZAkSdKs6bI58nlJvg18F/g8cBPwqcZ5\n", - "SZIkzYwuN6X/GfA44FtV9WDg6cCVTbOSJEmaIV0Kqvmq+l9gWZK5qroceHTjvCRJkmZGl3WotiU5\n", - "CbgC+ECSrcCOtmlJkiTNjiPu5ZdkLXAno9GsFwL3Aj5QVT8c3HhSp5xySqdYF/Y8wIU9D3Bhz+nj\n", - "eyHpeHbUe/lV1f7RqL3Ae45hTpIkSceFwy3suYPRQp6Lqaq617FIYNeuXZ3i+ozKTMsITh+tRnBa\n", - "jta1GtlrORrpqJMkqYXDrUO1dujFk9wbeBdwJqPi7Her6itDrytJkjRNutyUPsRfAf9cVc9Nshw4\n", - "sXF7kiRJS65ZQZXkZOBJVfUSgKraA2xv1Z4kSdKkdFmH6mg9GPifJO9O8vUkf5PkhIbtSZIkTUTL\n", - "gmo58CjgHVX1KOAO4A0N25MkSZqIlgXVLcAtVfXV8fFHGBVYd7Nz5867fvquKSRJkjQNmt1DVVU/\n", - "SHJzkodW1beAZwA3HBy3evXqVilIkiQtidbf8vtDRtvVrAT+A3hp4/YkSZKWXNOCqqquAR7Tsg1J\n", - "kqRJa3kPlSRJ0j1C6ym/IyewvFsKc3Nzx/ya+61YsaJz7MqVKyce2+e+szVr1nSO7XvtE07ovgrG\n", - "2rXdF94/7bTTOsdu3LixcyzA6aef3jl23bp1nWP7vG+7d+/uHDs/P985dtmyfv8/6vO5P+mkk5rE\n", - "rlq1qnPs8b79lKTpd7i/WxyhkiRJGsiCSpIkaSALKkmSpIEsqCRJkgayoJIkSRrIgkqSJGkgCypJ\n", - "kqSBLKgkSZIGsqCSJEkayIJKkiRpoJnZeqbPVhJV1SuHPtt77N27t3Psrl27Osf22Takz3vRJ9+W\n", - "+uSxc+fOJrEAe/bs6RzbJ+c+n7k+/dd3O5k+9u3b1yS2758/SToeNB2hSvLGJDckuS7JB5N037hL\n", - "kiRpRjQrqJJsAF4GPKqqHg7MAS9o1Z4kSdKktJzy+zEwD5yQZC9wAvC9hu1JkiRNRLMRqqq6DfhL\n", - "4L+A7wM/qqp/adWeJEnSpLSc8vsZ4I+ADcADgLVJXtiqPUmSpElpeVP6o4EvV9UPq2oP8DHg8QcH\n", - "7dix466f3bt3N0xHkiSpjZb3UH0D+JMka4CdwDOATQcHrV27tmEKkiRJ7bW8h+oa4H3AVcC149Pv\n", - "bNWeJEnSpGSSi/AlqVNPPbVrbJ/r9s2jc2yfhRZbxbqw59HFggt7LuTCnpLUX1Ut+pe4W89IkiQN\n", - "ZEElSZI00Mzs5ddSq+nEPrF9plRa7mvYauqqz3X7THPNzc11ju2bR6u+noZp477xfb6B2ye21bSq\n", - "JC01R6gkSZIGsqCSJEkayIJKkiRpIAsqSZKkgSyoJEmSBrKgkiRJGmgqC6pdu3ZNOgUN0Hf1ck2P\n", - "+fn5SacgSTPJgkrHnP03u/pszSNJOmAqCypJkqRZYkElSZI0UCa5nUMS95KQJEkzo6oW3WtsogWV\n", - "JEnS8cApP0mSpIEsqCRJkgaauoIqyblJvpHk20leP+l8dGhJ/jbJrUmuW3BuXZLLknwryWeT3HuS\n", - "OerQkqxPcnmSG5Jcn+RV4/P24ZRLsjrJlUk2J9mS5E3j8/bdDEkyl+TqJJ8cH9t/M2yqCqokc8Db\n", - "gXOBjcD5SR422ax0GO9m1FcLvQG4rKoeCvzr+FjTaR54dVWdCZwNvGL8580+nHJVtRM4p6oeCTwC\n", - "OCfJE7HvZs0FwBZg/83M9t8Mm6qCCngs8J2quqmq5oEPA8+ZcE46hKq6Ath20OnzgPeOH78X+NUl\n", - "TUqdVdUPqmrz+PEO4EbggdiHM6Gq/m/8cCUwx+jPon03I5I8CHgm8C5g/7fG7L8ZNm0F1QOBmxcc\n", - "3zI+p9lxv6q6dfz4VuB+k0xG3STZAJwFXIl9OBOSLEuymVEfXV5VN2DfzZK3Aq8D9i04Z//NsGkr\n", - "qFzD4ThSozU57NMpl2Qt8FHggqq6feFz9uH0qqp94ym/BwFPTnLOQc/bd1MqybOArVV1NQdGp+7G\n", - "/ps901ZQfQ9Yv+B4PaNRKs2OW5PcHyDJTwNbJ5yPDiPJCkbF1CVVden4tH04Q6pqO/BPwC9i382K\n", - "xwPnJfku8CHgaUkuwf6badNWUF0FPCTJhiQrgecDn5hwTurnE8BLxo9fAlx6mFhNUJIAFwNbquqi\n", - "BU/Zh1MuyX33fwMsyRrgl4Crse9mQlVdWFXrq+rBwAuAz1XVi7D/ZtrUrZSe5FeAixjdZHlxVb1p\n", - "winpEJJ8CHgKcF9G8/1/Cnwc+HvgNOAm4HlV9aNJ5ahDG38r7AvAtRyYWngjsAn7cKoleTijm5aX\n", - "jX8uqaq3JFmHfTdTkjwFeE1VnWf/zbapK6gkSZJmzbRN+UmSJM0cCypJkqSBLKgkSZIGsqCSJEka\n", - "yIJKkiRpIAsqSZKkgSyoJE1cki+Nfz09yfnH+NoXLtaWJB1LrkMlaWokeSqjRQ6f3eM1y6tqz2Ge\n", - "v72qTjoW+UnSoThCJWnikuwYP3wz8KQkVye5IMmyJG9JsinJNUl+fxz/1CRXJPk4cP343KVJrkpy\n", - "fZKXjc+9GVgzvt4lC9vKyFuSXJfk2iTPW3Dtf0vyD0luTPL+pX03JM2i5ZNOQJI4sPXN64HX7h+h\n", - "GhdQP6qqxyZZBXwxyWfHsWcBZ1bVf46PX1pV28Z7221K8pGqekOSV1TVWYu09evALwCPAE4Bvprk\n", - "C+PnHglsBP4b+FKSJ1SVU4WSDskRKknTJAcd/zLw4iRXA18B1gE/O35u04JiCuCCJJuBfwfWAw85\n", - "QltPBD5YI1uBzwOPYVRwbaqq79fonojNwIYBvydJ9wCOUEmadq+sqssWnhjfa3XHQcdPB86uqp1J\n", - "LgdWH+G6xU8WcPtHr3YtOLcX/66UdASOUEmaJrcDC28g/wzw8iTLAZI8NMkJi7zuXsC2cTH188DZ\n", - "C56b3//6g1wBPH98n9YpwJOBTfxkkSVJR+T/uiRNg/0jQ9cAe8dTd+8G3sZouu3rSQJsBX5tHL/w\n", - "K8qfBv4gyRbgm4ym/fZ7J3Btkq9V1Yv2v66q/jHJ48ZtFvC6qtqa5GEHXZtFjiXpblw2QZIkaSCn\n", - "/CRJkgayoJIkSRrIgkqSJGkgCypJkqSBLKgkSZIGsqCSJEkayIJKkiRpIAsqSZKkgf4fuHwpG022\n", - "rncAAAAASUVORK5CYII=\n" - ], + "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3749,124 +909,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3874,92 +919,9 @@ }, { "data": { - "image/png": [ - "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\n", - "AAAASUVORK5CYII=\n" - ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEaRJREFUeJzt3X2wXVV5x/HfL/ct9yYhJA0vCYSGptDyohWqDCBKUNuh\njqBtrUhbpbZjp6PWlCojMtP+wbSjlelIHaedsVAUrNgWLeq0ILQliliJQAKEIC8daAM0pCEv3OTm\n5d7k6R/nBG5u7sta2Vn37H35fmbucM6+z9lr3bP2OXlYe+/1OCIEAACAwzer0x0AAABoOhIqAACA\nikioAAAAKiKhAgAAqIiECgAAoCISKgAAgIq6O9m4bdZsAAAAjRERHm970YTK9sWSrpfUJemGiPiL\nsTFLly495HXbt2/X/PnzD9rW09OT3O6sWTN74i3n7+vuzhvinPe5q6tr3O0vvPCClixZctC2nD6X\nis2N37t3b5HYl19+OTl2165dybG9vb3JsZI0b968Q7Zt2rRJxx577CHbFy9enLzfhQsXJscODw8n\nx65bty459qWXXkqOlfLe55GRkeTY/fv3J8fmrAloj/t9rv379497jOcc9xN9rsfT19eXHDve8TaR\n4447Ljl2wYIFybHSxO9d1djBwcHk2I0bNx6ybevWreP+LVu2bEneryQNDQ0lx+7bty85ljUrp1Ys\n87DdJemLki6WdLqky22fVqo9AACATik5lXOOpKcj4tmIGJb0dUnvLtgeAABAR5RMqE6QtGHU8+fa\n26aUM42M+smZ2ke9zJkzp9NdQAU5p6hQL7Nnz+50F1BRyYTqsE+4cmA1GwlVc5FQNRsJVXP19/d3\nuguoqORF6c9LGn3F+VK1ZqkOsn379lce9/X1kUwBAIDGKZlQPSDpFNvLJL0g6TJJl48NGns3HwAA\nQNMUS6giYsT2xyR9V61lE26MiMdLtQcAANApRdehiog7JN1Rsg0AAIBOcycX67Idxx9/fFJszgKV\nuYtZllpIMmeBvFIXk+YsQpgbv2fPnuTYnAUcSy42l/M+12Ex0pzxyFlcVMobkzosZlkXTezzTMaF\n+Afj+CxvopXSZ/aS4gAAANOAhAoAAKAiEioAAICKSKgAAAAqIqECAACoiIQKAACgIhIqAACAikio\nAAAAKiKhAgAAqIiECgAAoCISKgAAgIqKFkdOMX/+/KS4np6e5H3m1Eo7nPhUpWoq5dS6y61rmGPu\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -3967,84 +929,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4052,82 +939,9 @@ }, { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAD4tJREFUeJzt3WuQZVdZh/HnPz2XnjhDpiJJEJg4qKAkBRIEKtwJoBUp\n", - "CKgIRAVEC8sCJEaggHzwkxZYlEWkKK1CIpcgoAIGKBWIEiGAJARmcptws4gmIBkvGchA9dA98/qh\n", - "z0w6Tc/02b2z+pw9eX5VXXP2PuvstfqsfU6/s/ba601VIUmSpLXbMOkGSJIkDZ0BlSRJUk8GVJIk\n", - "ST0ZUEmSJPVkQCVJktSTAZUkSVJPGydZeRLXbJAkSYNRVVlpf9OAKsl5wCXADPD2qvqT5WVOP/30\n", - "H3rdgQMH2LZt2932dVkv6/Dhw53a2aX8oUOHxi7bqs1djttynbFjHXt+fp5NmzatuR1d3ouufT0N\n", - "fSJJOvE0u+SXZAZ4K3AecCZwQZKHtqpPkiRpUlrOoXoM8PWquqWq5oH3A89uWJ8kSdJEtAyoHgDc\n", - "umT7ttG+VW3evLlJg7Q+NmzwXgdJ0r1Ly798a55UYkA1bDMzM5NugiRJ66rlpPRvAjuXbO9kcZTq\n", - "bg4cOHD08ebNmw2mJEnS4LQMqK4FHpxkF/At4PnABcsLLb+bT5IkaWiaBVRVtZDkFcDHWVw24dKq\n", - "urlVfZIkSZOSSa6fk6RWWodqJa5DtbbjTmIdqr5lXYdKkjStJrKw5zi2bt06VrmNG8dvapey0G0S\n", - "dZdjb9myZeyys7OzTcqO+/4e0WUOW5eyXdqxffv2scuecsopY5cFOO2008Yue+qppzYpu2PHjrHL\n", - "djmHpqWvu3xGunz2utw92jXA7VJ+YWFh7LJd/gPW5b1IVvw+P6ZW359d+qRLm7v+fkPT5Xzrcg51\n", - "PXarPmnVfy3Pi3Hft+N9Tr2/XZIkqScDKkmSpJ4MqCRJknoyoJIkSerJgEqSJKknAypJkqSeDKgk\n", - "SZJ6MqCSJEnqyYBKkiSpJwMqSZKkngyoJEmSepp4Lr+5ublJN6GTLrmEWuVUGmLC41ZJibvkVet6\n", - "7GlIhN1Fy/x1Joq+S5f8dV3y801LAvhW/XeinxdDdKLnTFxvTUeokuxMcmWSm5LcmOSVLeuTJEma\n", - "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\n", - "JEnq6f8BUrepXiOjd3cAAAAASUVORK5CYII=\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4135,131 +949,9 @@ }, { "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAI0AAACPCAYAAADHlliuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAGlxJREFUeJztnVls49t93z+Hi7iJu0Rq44xm5l4bAVzAfnEfnKB5CIJr\n", - "FEjSlwYGChTpgj50Q/vQJH1o/JgGaFC0D0Xb2EE3JC1auEgKtLUNtIj70DYOfGNf9/pO7r3SSENR\n", - "JCVS3ClS5OmD+Ds+5FALN4nS/L/AwZ/L8Mwh/1/9zm8/SmuNAweTwHXfC3Dw8OCQxsHEcEjjYGI4\n", - "pHEwMRzSOJgYDmkcTIypSaOUek8p9SOl1J8opX55notysNxQ0/hplFJu4CPgZ4As8IfAV7TWH853\n", - "eQ6WEdNKmi8CH2ut97XWXeB3gZ+f37IcLDM8U35uGzi0nr8G/rT9D5RSjqv5gUNrrca9Pq2kcQjx\n", - "FmNa0mSBjPU8w6W0cfAWYFrSfBd4Vym1q5RaAX4R+L35LcvBMmMqnUZrfaGU+hvAfwfcwNccy+nt\n", - "wVQm960mdhThB495K8IO3mI4pHEwMRzSOJgYDmkcTAyHNA4mhkMaBxPDIY2DiTFtwPLRQ6kfuyjc\n", - "brcZHo8Hl8tlhtvtRmtNv99Ha43WmouLC3q9HhcXF1xcXJjXAR5DyZBDmjFQSpnhcrkIhUKsrq6a\n", - "q9/vJxAImKuQo9vtcnFxQbVaNaNSqdDr9ej1evT7fXq93n1/vZnhkGYMbMK43W5WV1dZW1szIxqN\n", - "Do3z83Pa7Tbn5+ecn5+Ty+XI5XIcHx/T6XTodDqGVA5pHimEMKOkyWQy7OzskEqlWF9fN6PZbNJo\n", - "NMw1Go3i9XrpdruUy2Uzb6/XQyn14LeomUijlNoHqkAP6GqtvziPRd03bCnj9XpZXV0lmUyyvb3N\n", - "8+fP2djYIJ1Os7GxQSqVotFo0Gg0qNfrNBoN+v0+zWaTcrnM6uqqIcrFxcV9f7W5YFZJo4Gf1lqX\n", - "5rGYZYBsTUKYlZUVQqEQsViMtbU1Njc3icfjrK6u4vV6gUtFeWVlhUAggFKKSCRCNBolHo+TSCRw\n", - "u90AXFxc0G63325JM8DYSOhDhi1lfD7fEGk2NjYIhUKEQiFWVlaAH5NGKYXH4yESiRCLxYjH4yST\n", - "SSNlWq3WPX+z+WAekubbSqke8M+11v9yDmu6d7hcLjweDx6PZ4g06+vrbG5u4vV68Xg8eL1etNa4\n", - "3W5DGJ/PZ0iTSCRIJpN0u13a7Ta1Wm3IlH+omJU0X9Ja55RS68C3lFI/0lp/Zx4Lu2vIzXS5XHi9\n", - "Xvx+P6urq0NSQ7abUYjSLPMEg0FjnofDYarVKj6fz2xTDx0zkUZrnRtci0qpb3BZ2vLgSCM3XaRF\n", - "NBo15nUqleLJkyckk0mCweB9L3UpMEuFZVApFR48DgE/C/xgXgu7S4i15PF4WFlZIRKJkE6n2d3d\n", - "5bOf/SyZTIa1tTUCgcCN87wNmEXSpIFvDH4oD/DvtNbfnMuq7hC2eS2kiUajbGxssLu7yzvvvMP6\n", - "+rojaSxMTRqt9R7w+Tmu5c5gb0di+cgIBoPGStrZ2WF3d5dwOGzCB9dBa/2GN1kUZjHffT6fiUfJ\n", - "Z0bHsuOt8wgrpfD7/UPxo2AwSDAYJBAIEA6Hef78Odvb26ytrREOhwkGg7dSZGV7sq2uaDRKu92m\n", - "2+3S7/dRStHpdExAs9fr0e12Tdyq2+0uPXHeOtK4XC78fv9Q7CgSiRAOhwmHw0SjUXZ2dgxpIpGI\n", - "kRK3tX7cbjd+v9+QxiaMx+Oh3W7T6XQ4Pz+n0+nQarVot9u0Wi263e6Cf4HZ8daRRiRNNBo1MSQx\n", - "p2VITEkkjWw1N5FGtqdRSWMTxufz0Wg0aLVatFotms3mg/MYv5WkCQQCxGIx0uk029vbJJNJMxKJ\n", - "hAkDRCKRqZRfj8eD3+8nHA5zfn4+5PsJhUJDcap6vW7CEeI1lhjVsuo4bx1pXC4XwWCQRCLBzs4O\n", - "z58/N9tTJBIxRJnGGSc6jdfrJRgMmq0mEAgQiUSGIuH2tVgscnx8jMfj4eLigvPz86FErmUjzltH\n", - "GvHYrq2tsbOzw4sXL4YSqvx+Pz6fD5/Ph8cz3c8jpAFYWVkxEkf0GNmW5BoOh3G73SY63mg0TG5O\n", - "r9dzSHPfkEy8ZDJpJI3EmcREttM7J4HoNEIar9dLKBQymXsiPYQ4ovyKGd5qtSiXy4YkvV6PTqez\n", - "iJ9hJrwVpLFzev1+P5FIhGQyycbGBpnMZceUWXJ4hSzy2O1243K5TBRcIP9GpIhk/ImEqdVqlMtl\n", - "4+tZ1sj4oyeN2+025nQ4HGZtbY3d3V3W19cJBoMmQcq+Tgo7sdxOMJdhk9Z2+glB4/E4Ozs79Pt9\n", - "/H4/2WyW168v2/3U6/WlSxF99KRxuVxEIhE2NjbY2Nhge3t7iDTAG8SZFFprkzg+bsj25/V6h+Jc\n", - "8jgejxvCJBIJVldX0VpTr9c5Pj6e908yMx49aUTSbG5u8uLFC54/f87Ozs5CJI3oLfJYrjKv6Ehi\n", - "govESSQSBAIBkskkmUwGr9drCLOM6RQ3kkYp9XXgzwIFrfWfGryWAP498BTYB/681vpsgeucCHLj\n", - "7Uy6dDrNs2fP+MxnPkMikTA3ahqMbj8SBpAhiq+tAPf7feDNNAyllEncEjSbTV6/fk0sFjPkWqbY\n", - "1G0kzW8D/xT419ZrvwJ8S2v9G4PG078yGPcOsV5kSxDfi9QtiQ9Git5GFeDb3JTRkhWxhGSIlSQj\n", - "EAiY+JbEuGT4/f43pJsksycSCTY3N/H5fEP/pxDwvnAjabTW31FK7Y68/HPAnxk8/lfA/2SJSOPx\n", - "eMwNiUajRgmWGyaksS0e+3oTzs/PqdVqVKtVarXakHe30WgMkebi4oJQKGQi5aurq8RiMWKxGAA+\n", - "n28saUKhkCGN2+2mWq0CLIUJPq1Ok9Za5weP81zm1iwFRNJIuqaEA0TSBAIBVlZW8Hq9M0maWq3G\n", - "yckJp6enVCoVU00pFZVSddnr9Yy3WdbSbrcBjPl/HWk2NjaMTtTpdJbCmppZEdZa62XpryfWiF12\n", - "kkgkiMViRCIRQ5rbShr7ua1TNJtNzs7OKBaL5HI5SqUS5XKZs7MzSqXSUAig1+sN5RnHYjG01kaP\n", - "6ff7byi7Xq+XcDhMMplka2vLzNVsNqlUKm+Y9XeNaUmTV0ptaK2PlVKbQGGei5oEdjWkOO+SySSb\n", - "m5vGxM5kMqRSKaLRKD6fzyiXkgw+CttcFq9st9s1JbavX78mm82aIduUbFm25WQPqUoIBoPEYjGa\n", - "zabZbkQ5drlc+Hw+otEo6XSaXq9nzHVZc61We8M5CHfXXGBa0vwe8BeBfzi4/ue5rWgKiN9D3PeJ\n", - "RILt7W2ePXvG06dPTapDJBK5NWnson47wFiv1zk8POT169fm2mw2h2JJNumk5qnT6dBut02saW1t\n", - "jUajQafTeSP1wufzEYvF6PV6ZiuV8IbL5aJUKpkGA7JGwV0Q5zYm9+9wqfSuKaUOgX8A/DrwH5RS\n", - "f5mByb3IRd6wvqFqSCHN1tYWL1684MWLF0MeYYley1/2KMTnIjda9JezszMzDg8POTg4MEMkkIxR\n", - "k1wkQqvVol6vk0gkODs7M5JGAqOjksbr9RKJRFhZWTEE11oby08IfdeR8NtYT1+54q2fmfNapoZd\n", - "SSCk2dzcZHd3l3fffdfk6MpfrO3HEdg3WdITRDKcnZ1xcnLCyckJxWLRkGV/f5+Dg4Mhb/A4JVXM\n", - "8kajgd/vJ5VKUalUqNfrnJ+fm3waIcbKygoej4dwOEy/3zfv2zpMr9ej0WiYP4C73KIehUfY7idj\n", - "u+ltolwnWUTEi95ydnZGuVw2yu3oNZ/PUyqVzFZ0k1IqZJJtpF6vUyqVyOfzHB4eEo/HjSS0Qw39\n", - "fh+Xy2WSxjY2Nsx36Ha71Ot1yuWykYzifV40cR4FaQRXVQLI86tCBKKgik6Sy+U4OjoyPWbEFyPX\n", - "s7MzKpUKzWbT3CghzzjITZXHtVqNUqnE8fGxybXp9XrGqSdrFZdAIBAgHo+brEORMqVSiUAgQKfT\n", - "Md/tunXMC4+GNKOSxiaN/d4o7OL8er1OpVIhl8uxt7fH3t4e+/v7Q7kvrVZryDsr29F1N8oOaF5c\n", - "XAyRRspihDB2/Euufr+fWCxmrp1Oh3K5TC6XIxAI0Gq1zP9xF3jwpBklwyhpxmXf2QFKiR1Jgb7c\n", - "jL29PT788EM++uijoe1rmmoB0XcEsj0FAgFDbOmBI+SziSPebVl7q9Uil8sRjUaNs1K2v7uo8nzw\n", - "pJkGtu+k0+lQLBYpFArk83mOj485ODigWCxSq9WGPLvzEvsi2arVqgl1yJZXrVYJBoNDmYTLVu77\n", - "1pHG9ptIzdHJyQnZbJbDw0MODw/J5XIUi0Xq9bqJWo9Ki1lgk8btdhOPxymXy1SrVer1OsDMecqL\n", - "xPKtaMGwTepWq0WtVqNYLJLNZvn000/59NNPjT+mVquZisd5KpjdbpdWq2WSyePxuJE0tVrNmN52\n", - "s6RlwltHGsCQptFoUKlUjKTZ29vj5cuXQ4ruIioeRdL0+32j1NqkEY/1ysrKlUQdp9zfFbkeJWmu\n", - "+yH7/T7VatW0bT06OmJ/f59sNku5XDalJrIl3ee6bVLYmYXSDmV9fZ1MJoPH4zHEsy26ReFRkgbe\n", - "tKoEWmuq1SpHR0e8fPmSTz75hGKxSLFYNKQR5XfRpBlH7nHrHk1JlVqqVCpFJpMxFmOn06FarS68\n", - "HvzRkWYcUewUCJE02WyWjz76iA8++MC0dG02myYz7i6cZLK2cWGN6ySNpFWkUikT5RbCXBWEnSem\n", - "zRH+KvBXgOLgn/2q1vq/LWqR02Lcnt/v96lUKoY077///ht5M/eJ20oaaWAgfqZqtUqhULiTRPTb\n", - "0PK3gfdGXtPAb2qtvzAY90YY+y9vfX2ddDpNPB4nFApda66K1LmPhCZJRw2HwyQSCZOcJRmG4rAT\n", - "AowmiYlUEasvl8tRLpdNWGPRuJE0+rJbZ3nMW0thB0pALxqNsr6+zsbGBolEglAoZFq2jhv3CSFN\n", - "JBIxlRE2aezk93HZhUKaQqHAwcEBR0dHQwHURWOWDfBvKqX+WCn1NaVUbG4rmhB2kyIhzW0kzX3C\n", - "6/UOkSYejw81V7pJ0pyfnxtJc3h4OESapZA0V+CfAc+47LmXA/7R3FY0Iez67IcmaSQPWCRNNBod\n", - "kjS2fnKdpMlms5yenppzGRa+/mk+pLU2OcFKqd8Cfn9uK5oQotNIInkymSQSiZhg4H2tScxgO4dZ\n", - "EqYSiQTr6+tsbW2RyWSMHhYIBMZaP6P6l/Tnk5jYXVp7MCVplFKbetB4Gvhz3GP/YHF2SasySWjy\n", - "+/33VtIqKaj2GQt2QlgymSSVSg2RRlIfrktBHW1ZctdkEUyTI/xrwE8rpT7PpRW1B/y1ha7yGowr\n", - "WRG94L4kjUgW+3wFaZYk1RLpdJqtrS2ePHliiH6dpLFrqUTS2Jl6d7n1Tpsj/PUFrGUqjEoaqdH2\n", - "+/33uj3ZSWB221nJYRZJ8+TJE6N/XRWctJPdbcKMugzuCstpXkwIW4cQPeI+I8M+n8+U4MqhGlJT\n", - "HolEePr0Kdvb24bgkkhuVxzYhGg0Gqauqlarsbe3Z3wzrVbLHHd4V7GyR0GaZYM4G9fW1ox1ZI9U\n", - "KkUqlSIWiw0RRgg/WmQnllKhUKBYLPLq1StjMUkZzLwTxa6DQ5oFQOqWUqmUOfPSHuFw2BztI6a1\n", - "LR1HKyQqlQr5fJ6DgwNevXrF0dERx8fHxjfT6XTmmiR2ExzSLAB2WW0mk2F7e5utrS0z7C5Y44KV\n", - "dsmLOPLy+Tz7+/u8fPmSQqFgEsXsLudLbXI7GIa0MBFFN5PJ8OTJEzY3N0mlUsTj8aH+xDdFovv9\n", - "viFMs9mkXq9TrVY5Ozvj9PSUs7Mz0zb2PlrGPkrS3LUSHAqFTFt88UrLibrJZJJoNGpaxN4GYikJ\n", - "aaSGXBoM1Ot1c0jHQ+oasdS46x8yFAqRSqXY3d1ld3fXHFsoZy2IlLltvq9IGrv+W6SNlPOKz8Yh\n", - "zQPF6uoqqVSKZ8+e8bnPfc7Ej+RUXemGPomksbcn2+QWSTNJE6Z541GSZpxyab832ilr9H3x3IoX\n", - "1/b9jJvz3Xff5Z133uHJkyek0+mhz/r9ftMu5LrSYBvtdptyuUw2m+Xo6IhXr15RKBRMKufS99x7\n", - "SBiXOjl6kyTsEAwGTWrC6Pv29hKLxYba3o+LZ0kDpc3NTRKJhCGJHW+ynXc3EafdbnNycsKrV694\n", - "+fIl2WyW4+Nj0zDpvvGoSDOK6yRNMBg0YQcbbrebra0ttre32d7efuMc7nGhCdvbG4lEhoKVoxHu\n", - "20gaKeA7ODjgww8/pFAomO1p6UmjlMpw2Qo2xWVw8l9orf+JeiB9hEcfy/PrJI3H4yGTyZgt5/nz\n", - "50NnXI6edwAYCSTkuGo9t7XqhDT7+/v88Ic/NH327tKBdx1ukjRd4O9ord9XSq0Cf6SU+hbwSyxJ\n", - "H2HpNNVoNCiXy5yenhKJRNBa4/V68fl8Q/9eKWVM5KdPn74xn9vtNrGh9fV10wBaAopXKbOjVQOy\n", - "tttgtHl1qVQyVpJ0qVgmXEsarfUxcDx4XFdKfQhss0R9hPv9Pu12m0qlQrFYJBaL0e12TUbf6Mlw\n", - "LpeLcDhMOp1Ga004HH7j/fX1ddPYUdIuRYkdR4TRagGYrMVsp9MxZTT1ep1isUi1Wh1qwrhMuLVO\n", - "oy4bUH8B+D8sUR/hUdKsrq6a9hx263iBUopwOIzWmlAoRDr946XLjbcj1NLv7jp9xCbMNJJG+gOX\n", - "SiVKpRLFYpFKpbK051neijSDrek/AX9ba12zfzyt77ePcL/fNx0YisXiUKdyaZpow+VyGT9KKpUa\n", - "ynyT66gCK1iUpOl2u9RqNU5PTzk+Pn74kkYp5eWSMP9Gay2tX5emj7DoNNJdSvrTSRPEi4uLIR+L\n", - "Umqom6bMYV9nWYsQxz7/abRFrH1I2Pn5OScnJ+TzeZP+IA2tm83mw5M06vJX/Rrw/7TW/9h6a2n6\n", - "CEtJqijCfr+f9fX1ofiMLTkWGZeSue1On5KmaSeDS4TabgApXc/L5TLFYvFO65gmxU2S5kvAXwC+\n", - "r5T63uC1X2WJ+gjLX269XjfnKJ2dnb0R1LvLjlKjOb2jkuX4+JijoyMz7IM55FqtVh8mabTW/4ur\n", - "a6OWoo+w1AFJzY/b7aZSqZgD06WrpuSvLHot9vYkEkZiSNI9NJ/Ps7e3x8cff8wnn3xCo9Ew/XCE\n", - "6DIeHGkeAuzOVoBptpjP58lms0YxtmNBtt9lnsnnIslsE3o0v7dWq5mO57lcjkKhQLvdNucvCFHs\n", - "U+mWDY+CNPJXrZSi1WpxenpKNpvF7/fT7XZNaqVc7bGIioXz83MqlQqlUonT01Ojq4jeIo0hT05O\n", - "3sjxtfsSLysePGkAE4+RDt9iRQE0Gg2i0agpsJcqTGnZMer8mwWyPQlp8vk8R0dHpmmSJIaLxKnX\n", - "66b+etTCWoby4avw4Eljm7WiT5RKJQBzOHoymTRVAc1mE8B0k1oEhDR2Vwdp15bL5Ux7NluyyHex\n", - "v9ey4sGTBob9LHa7VVGS7Vzber1uXpPsOEldsHv32qkQdinsOBMahmNP0skhl8uRz+cpFotmm5KT\n", - "5x4yHgVpbEiBfKvVAjBZ/XIqW6lUolarUalUKJfLpFIpkxAuB6OK4uz3+00vO/tgU/v8J5Fctjkv\n", - "JnUul+Pk5MSYz+M81A8Rj5Y0UnQmUqZarbKyskIgEBjK7C8UCibZSq4Sm5K2rEJC0UVEsRXnnA2l\n", - "FKenp0NDSLPoBop3hUdJGtlK2u320FGFkoAl5zcVCgXW1tZIp9NDTQ/FGSjnEYxKqnw+b0ahUDAK\n", - "sMB20tVqNeOjua/qgXnj0ZEGuNZctQ/VEgki3ctF75EjkMXiEokiQ6wgGaOQKgK52r2JHwMeJWmu\n", - "g2xfzWZzqG5aTpArFAqmikB0HPvMbTnexx4C27knyrb4YKRA35E0DxBiUQFmC2s2m5TLZQKBgOni\n", - "4PP5THqn3HyJHdlSRHJe7O1p9IhlGcvssJsE6jrmX5Mj/FVu6CN8nzk2N2FUzxmXCG6/P5rmYB+h\n", - "PI4IVzUaWmaH3ThorcdGeG8izQawYecIA7/AZVS7prX+zWs++3B+HQdjcRVpps0RhiXpI+zg7nHr\n", - "XAErR/h/D15aij7CDu4etyLNYGv6j1zmCNdZoj7CDu4e1+o0YHKE/wvwX0dSPuX9XeD39eCwDet1\n", - "R6d54LhKp7lW0lyVIzxIJhfcax9hB3ePm6ynnwT+APg+lyY3wN8HvsLl1mT6CFt1UPJZR9I8cExl\n", - "cs8ChzQPH1NtTw4cjINDGgcTwyGNg4nhkMbBxHBI42BiOKRxMDEc0jiYGAvz0zh4vHAkjYOJ4ZDG\n", - "wcRYKGmUUu8ppX6klPqTQRfQWefbV0p9Xyn1PaXU/53i819XSuWVUj+wXksopb6llHqplPrmJLlB\n", - "V8z3VaXU68Eav6eUem+C+TJKqf+hlPqhUuoDpdTfmmWN18w39RqB8fms8xiAG/gY2AW8wPvAT8w4\n", - "5x6QmOHzP8VlItkPrNd+A/h7g8e/DPz6jPP9GvB3p1zfBvD5weNV4CPgJ6Zd4zXzTb1GrfVCJc0X\n", - "gY+11vta6y7wu8DPz2HeqdNMtdbfAcojL/8cl21tGVx/Ycb5YMo1aq2PtdbvDx7XAbsF78RrvGa+\n", - "qdcIi92etoFD6/lrfrzgaaGBbyulvquU+qszziVYRHvbmVNh592Cd57puoskzSJs+S9prb8AfBn4\n", - "60qpn5rn5PpSjs+67plTYUdb8M66xnmn6y6SNFkgYz3PcCltpobWOje4FoFvcLkFzor8oFRHMhJn\n", - "am+rtS7oAYDfmnSN17XgnWaN1nz/VuabdY2LJM13gXeVUrtKqRXgF7lsJTsVlFJBpVR48DgE/Czz\n", - "STOV9rYwh/a2s6TC3qIF70RrXFi67izWzC209y9zqbF/zGUV5ixzPePSAnsf+GCa+YDfAY6ADpf6\n", - "1i8BCeDbwEvgm0Bshvn+EpcVqd8H/nhwc9MTzPeTQH/wHb83GO9Nu8Yr5vvyLGvUWjthBAeTw/EI\n", - "O5gYDmkcTAyHNA4mhkMaBxPDIY2DieGQxsHEcEjjYGI4pHEwMf4/w2zPGHuGeikAAAAASUVORK5C\n", - "YII=\n" - ], + "image/png": "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\nYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4267,87 +959,9 @@ }, { "data": { - "image/png": [ - "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\n", - "YII=\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4355,109 +969,9 @@ }, { "data": { - "image/png": [ - "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\n", - "T5UJ3wAAAABJRU5ErkJggg==\n" - ], + "image/png": "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\nT5UJ3wAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4465,87 +979,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\nv+YAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4553,89 +989,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4643,82 +999,9 @@ }, { "data": { - "image/png": [ - "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\n", - "hyMkAAAAAElFTkSuQmCC\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4726,124 +1009,9 @@ }, { "data": { - "image/png": [ - "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\n", - "SUVORK5CYII=\n" - ], + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4851,89 +1019,9 @@ }, { "data": { - "image/png": [ - "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\n", - "TkSuQmCC\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -4941,123 +1029,9 @@ }, { "data": { - "image/png": [ - "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\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5065,92 +1039,9 @@ }, { "data": { - "image/png": [ - "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\n", - "AABJRU5ErkJggg==\n" - ], + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -5166,6 +1057,207 @@ " xlabel('iteration')\n", " ylabel('label')" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. Experiment with architecture and optimization\n", + "\n", + "Now that we've defined, trained, and tested LeNet there are many possible next steps:\n", + "\n", + "- Define new architectures for comparison\n", + "- Tune optimization by setting `base_lr` and the like or simply training longer\n", + "- Switching the solver type from `SGD` to an adaptive method like `AdaDelta` or `Adam`\n", + "\n", + "Feel free to explore these directions by editing the all-in-one example that follows.\n", + "Look for \"`EDIT HERE`\" comments for suggested choice points.\n", + "\n", + "By default this defines a simple linear classifier as a baseline.\n", + "\n", + "In case your coffee hasn't kicked in and you'd like inspiration, try out\n", + "\n", + "1. Switch the nonlinearity from `ReLU` to `ELU` or a saturing nonlinearity like `Sigmoid`\n", + "2. Stack more fully connected and nonlinear layers\n", + "3. Search over learning rate 10x at a time (trying `0.1` and `0.001`)\n", + "4. Switch the solver type to `Adam` (this adaptive solver type should be less sensitive to hyperparameters, but no guarantees...)\n", + "5. Solve for longer by setting `niter` higher (to 500 or 1,000 for instance) to better show training differences" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration 0 testing...\n", + "Iteration 25 testing...\n", + "Iteration 50 testing...\n", + "Iteration 75 testing...\n", + "Iteration 100 testing...\n", + "Iteration 125 testing...\n", + "Iteration 150 testing...\n", + "Iteration 175 testing...\n", + "Iteration 200 testing...\n", + "Iteration 225 testing...\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "train_net_path = 'mnist/custom_auto_train.prototxt'\n", + "test_net_path = 'mnist/custom_auto_test.prototxt'\n", + "solver_config_path = 'mnist/custom_auto_solver.prototxt'\n", + "\n", + "### define net\n", + "def custom_net(lmdb, batch_size):\n", + " # define your own net!\n", + " n = caffe.NetSpec()\n", + " \n", + " # keep this data layer for all networks\n", + " n.data, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb,\n", + " transform_param=dict(scale=1./255), ntop=2)\n", + " \n", + " # EDIT HERE to try different networks\n", + " # this single layer defines a simple linear classifier\n", + " # (in particular this defines a multiway logistic regression)\n", + " n.score = L.InnerProduct(n.data, num_output=10, weight_filler=dict(type='xavier'))\n", + " \n", + " # EDIT HERE this is the LeNet variant we have already tried\n", + " # n.conv1 = L.Convolution(n.data, kernel_size=5, num_output=20, weight_filler=dict(type='xavier'))\n", + " # n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", + " # n.conv2 = L.Convolution(n.pool1, kernel_size=5, num_output=50, weight_filler=dict(type='xavier'))\n", + " # n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=2, pool=P.Pooling.MAX)\n", + " # n.fc1 = L.InnerProduct(n.pool2, num_output=500, weight_filler=dict(type='xavier'))\n", + " # EDIT HERE consider L.ELU or L.Sigmoid for the nonlinearity\n", + " # n.relu1 = L.ReLU(n.fc1, in_place=True)\n", + " # n.score = L.InnerProduct(n.fc1, num_output=10, weight_filler=dict(type='xavier'))\n", + " \n", + " # keep this loss layer for all networks\n", + " n.loss = L.SoftmaxWithLoss(n.score, n.label)\n", + " \n", + " return n.to_proto()\n", + "\n", + "with open(train_net_path, 'w') as f:\n", + " f.write(str(custom_net('mnist/mnist_train_lmdb', 64))) \n", + "with open(test_net_path, 'w') as f:\n", + " f.write(str(custom_net('mnist/mnist_test_lmdb', 100)))\n", + "\n", + "### define solver\n", + "from caffe.proto import caffe_pb2\n", + "s = caffe_pb2.SolverParameter()\n", + "\n", + "# Set a seed for reproducible experiments:\n", + "# this controls for randomization in training.\n", + "s.random_seed = 0xCAFFE\n", + "\n", + "# Specify locations of the train and (maybe) test networks.\n", + "s.train_net = train_net_path\n", + "s.test_net.append(test_net_path)\n", + "s.test_interval = 500 # Test after every 500 training iterations.\n", + "s.test_iter.append(100) # Test on 100 batches each time we test.\n", + "\n", + "s.max_iter = 10000 # no. of times to update the net (training iterations)\n", + " \n", + "# EDIT HERE to try different solvers\n", + "# solver types include \"SGD\", \"Adam\", and \"Nesterov\" among others.\n", + "s.type = \"SGD\"\n", + "\n", + "# Set the initial learning rate for SGD.\n", + "s.base_lr = 0.01 # EDIT HERE to try different learning rates\n", + "# Set momentum to accelerate learning by\n", + "# taking weighted average of current and previous updates.\n", + "s.momentum = 0.9\n", + "# Set weight decay to regularize and prevent overfitting\n", + "s.weight_decay = 5e-4\n", + "\n", + "# Set `lr_policy` to define how the learning rate changes during training.\n", + "# This is the same policy as our default LeNet.\n", + "s.lr_policy = 'inv'\n", + "s.gamma = 0.0001\n", + "s.power = 0.75\n", + "# EDIT HERE to try the fixed rate (and compare with adaptive solvers)\n", + "# `fixed` is the simplest policy that keeps the learning rate constant.\n", + "# s.lr_policy = 'fixed'\n", + "\n", + "# Display the current training loss and accuracy every 1000 iterations.\n", + "s.display = 1000\n", + "\n", + "# Snapshots are files used to store networks we've trained.\n", + "# We'll snapshot every 5K iterations -- twice during training.\n", + "s.snapshot = 5000\n", + "s.snapshot_prefix = 'mnist/custom_net'\n", + "\n", + "# Train on the GPU\n", + "s.solver_mode = caffe_pb2.SolverParameter.GPU\n", + "\n", + "# Write the solver to a temporary file and return its filename.\n", + "with open(solver_config_path, 'w') as f:\n", + " f.write(str(s))\n", + "\n", + "### load the solver and create train and test nets\n", + "solver = None # ignore this workaround for lmdb data (can't instantiate two solvers on the same data)\n", + "solver = caffe.get_solver(solver_config_path)\n", + "\n", + "### solve\n", + "niter = 250 # EDIT HERE increase to train for longer\n", + "test_interval = niter / 10\n", + "# losses will also be stored in the log\n", + "train_loss = zeros(niter)\n", + "test_acc = zeros(int(np.ceil(niter / test_interval)))\n", + "\n", + "# the main solver loop\n", + "for it in range(niter):\n", + " solver.step(1) # SGD by Caffe\n", + " \n", + " # store the train loss\n", + " train_loss[it] = solver.net.blobs['loss'].data\n", + " \n", + " # run a full test every so often\n", + " # (Caffe can also do this for us and write to a log, but we show here\n", + " # how to do it directly in Python, where more complicated things are easier.)\n", + " if it % test_interval == 0:\n", + " print 'Iteration', it, 'testing...'\n", + " correct = 0\n", + " for test_it in range(100):\n", + " solver.test_nets[0].forward()\n", + " correct += sum(solver.test_nets[0].blobs['score'].data.argmax(1)\n", + " == solver.test_nets[0].blobs['label'].data)\n", + " test_acc[it // test_interval] = correct / 1e4\n", + "\n", + "_, ax1 = subplots()\n", + "ax2 = ax1.twinx()\n", + "ax1.plot(arange(niter), train_loss)\n", + "ax2.plot(test_interval * arange(len(test_acc)), test_acc, 'r')\n", + "ax1.set_xlabel('iteration')\n", + "ax1.set_ylabel('train loss')\n", + "ax2.set_ylabel('test accuracy')\n", + "ax2.set_title('Custom Test Accuracy: {:.2f}'.format(test_acc[-1]))" + ] } ], "metadata": { @@ -5187,7 +1279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.9" + "version": "2.7.10" }, "priority": 2 }, diff --git a/examples/mnist/lenet_auto_solver.prototxt b/examples/mnist/lenet_auto_solver.prototxt index fa4bbf027..481c84491 100644 --- a/examples/mnist/lenet_auto_solver.prototxt +++ b/examples/mnist/lenet_auto_solver.prototxt @@ -1,6 +1,6 @@ # The train/test net protocol buffer definition -train_net: "examples/mnist/lenet_auto_train.prototxt" -test_net: "examples/mnist/lenet_auto_test.prototxt" +train_net: "mnist/lenet_auto_train.prototxt" +test_net: "mnist/lenet_auto_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. @@ -21,4 +21,4 @@ display: 100 max_iter: 10000 # snapshot intermediate results snapshot: 5000 -snapshot_prefix: "examples/mnist/lenet" +snapshot_prefix: "mnist/lenet" From 9580577804b2c73d485afc3418d44b08641b6377 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 23 Feb 2016 23:43:31 -0800 Subject: [PATCH 171/458] [example] improve fine-tuning notebook - add headings and text detail - make nets by net spec - define solvers inline through python protobuf - do two-stage fine-tuning (first last layer alone, then end-to-end) - show sample results --- examples/02-fine-tuning.ipynb | 1175 +++++++++++++++++++++++++++++++++ examples/03-fine-tuning.ipynb | 947 -------------------------- 2 files changed, 1175 insertions(+), 947 deletions(-) create mode 100644 examples/02-fine-tuning.ipynb delete mode 100644 examples/03-fine-tuning.ipynb diff --git a/examples/02-fine-tuning.ipynb b/examples/02-fine-tuning.ipynb new file mode 100644 index 000000000..07ca8df4d --- /dev/null +++ b/examples/02-fine-tuning.ipynb @@ -0,0 +1,1175 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fine-tuning a Pretrained Network for Style Recognition\n", + "\n", + "In this example, we'll explore a common approach that is particularly useful in real-world applications: take a pre-trained Caffe network and fine-tune the parameters on your custom data.\n", + "\n", + "The advantage of this approach is that, since pre-trained networks are learned on a large set of images, the intermediate layers capture the \"semantics\" of the general visual appearance. Think of it as a very powerful generic visual feature that you can treat as a black box. On top of that, only a relatively small amount of data is needed for good performance on the target task." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, we will need to prepare the data. This involves the following parts:\n", + "(1) Get the ImageNet ilsvrc pretrained model with the provided shell scripts.\n", + "(2) Download a subset of the overall Flickr style dataset for this demo.\n", + "(3) Compile the downloaded Flickr dataset into a database that Caffe can then consume." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "caffe_root = '../' # this file should be run from {caffe_root}/examples (otherwise change this line)\n", + "\n", + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "import caffe\n", + "\n", + "caffe.set_device(0)\n", + "caffe.set_mode_gpu()\n", + "\n", + "import numpy as np\n", + "from pylab import *\n", + "%matplotlib inline\n", + "import tempfile\n", + "\n", + "# Helper function for deprocessing preprocessed images, e.g., for display.\n", + "def deprocess_net_image(image):\n", + " image = image.copy() # don't modify destructively\n", + " image = image[::-1] # BGR -> RGB\n", + " image = image.transpose(1, 2, 0) # CHW -> HWC\n", + " image += [123, 117, 104] # (approximately) undo mean subtraction\n", + "\n", + " # clamp values in [0, 255]\n", + " image[image < 0], image[image > 255] = 0, 255\n", + "\n", + " # round and cast from float32 to uint8\n", + " image = np.round(image)\n", + " image = np.require(image, dtype=np.uint8)\n", + "\n", + " return image" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Setup and dataset download\n", + "\n", + "Download data required for this exercise.\n", + "\n", + "- `get_ilsvrc_aux.sh` to download the ImageNet data mean, labels, etc.\n", + "- `download_model_binary.py` to download the pretrained reference model\n", + "- `finetune_flickr_style/assemble_data.py` downloadsd the style training and testing data\n", + "\n", + "We'll download just a small subset of the full dataset for this exercise: just 2000 of the 80K images, from 5 of the 20 style categories. (To download the full dataset, set `full_dataset = True` in the cell below.)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading...\n", + "--2016-02-24 00:28:36-- http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz\n", + "Resolving dl.caffe.berkeleyvision.org (dl.caffe.berkeleyvision.org)... 169.229.222.251\n", + "Connecting to dl.caffe.berkeleyvision.org (dl.caffe.berkeleyvision.org)|169.229.222.251|:80... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 17858008 (17M) [application/octet-stream]\n", + "Saving to: ‘caffe_ilsvrc12.tar.gz’\n", + "\n", + "100%[======================================>] 17,858,008 112MB/s in 0.2s \n", + "\n", + "2016-02-24 00:28:36 (112 MB/s) - ‘caffe_ilsvrc12.tar.gz’ saved [17858008/17858008]\n", + "\n", + "Unzipping...\n", + "Done.\n", + "Model already exists.\n", + "Downloading 2000 images with 7 workers...\n", + "Writing train/val for 1996 successfully downloaded images.\n" + ] + } + ], + "source": [ + "# Download just a small subset of the data for this exercise.\n", + "# (2000 of 80K images, 5 of 20 labels.)\n", + "# To download the entire dataset, set `full_dataset = True`.\n", + "full_dataset = False\n", + "if full_dataset:\n", + " NUM_STYLE_IMAGES = NUM_STYLE_LABELS = -1\n", + "else:\n", + " NUM_STYLE_IMAGES = 2000\n", + " NUM_STYLE_LABELS = 5\n", + "\n", + "# This downloads the ilsvrc auxiliary data (mean file, etc),\n", + "# and a subset of 2000 images for the style recognition task.\n", + "import os\n", + "os.chdir(caffe_root) # run scripts from caffe root\n", + "!data/ilsvrc12/get_ilsvrc_aux.sh\n", + "!scripts/download_model_binary.py models/bvlc_reference_caffenet\n", + "!python examples/finetune_flickr_style/assemble_data.py \\\n", + " --workers=-1 --seed=1701 \\\n", + " --images=$NUM_STYLE_IMAGES --label=$NUM_STYLE_LABELS\n", + "# back to examples\n", + "os.chdir('examples')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define `weights`, the path to the ImageNet pretrained weights we just downloaded, and make sure it exists." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\n", + "weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'\n", + "assert os.path.exists(weights)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load the 1000 ImageNet labels from `ilsvrc12/synset_words.txt`, and the 5 style labels from `finetune_flickr_style/style_names.txt`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded ImageNet labels:\n", + "n01440764 tench, Tinca tinca\n", + "n01443537 goldfish, Carassius auratus\n", + "n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias\n", + "n01491361 tiger shark, Galeocerdo cuvieri\n", + "n01494475 hammerhead, hammerhead shark\n", + "n01496331 electric ray, crampfish, numbfish, torpedo\n", + "n01498041 stingray\n", + "n01514668 cock\n", + "n01514859 hen\n", + "n01518878 ostrich, Struthio camelus\n", + "...\n", + "\n", + "Loaded style labels:\n", + "Detailed, Pastel, Melancholy, Noir, HDR\n" + ] + } + ], + "source": [ + "# Load ImageNet labels to imagenet_labels\n", + "imagenet_label_file = caffe_root + 'data/ilsvrc12/synset_words.txt'\n", + "imagenet_labels = list(np.loadtxt(imagenet_label_file, str, delimiter='\\t'))\n", + "assert len(imagenet_labels) == 1000\n", + "print 'Loaded ImageNet labels:\\n', '\\n'.join(imagenet_labels[:10] + ['...'])\n", + "\n", + "# Load style labels to style_labels\n", + "style_label_file = caffe_root + 'examples/finetune_flickr_style/style_names.txt'\n", + "style_labels = list(np.loadtxt(style_label_file, str, delimiter='\\n'))\n", + "if NUM_STYLE_LABELS > 0:\n", + " style_labels = style_labels[:NUM_STYLE_LABELS]\n", + "print '\\nLoaded style labels:\\n', ', '.join(style_labels)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Defining and running the nets\n", + "\n", + "We'll start by defining `caffenet`, a function which initializes the *CaffeNet* architecture (a minor variant on *AlexNet*), taking arguments specifying the data and number of output classes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "from caffe import layers as L\n", + "from caffe import params as P\n", + "\n", + "weight_param = dict(lr_mult=1, decay_mult=1)\n", + "bias_param = dict(lr_mult=2, decay_mult=0)\n", + "learned_param = [weight_param, bias_param]\n", + "\n", + "frozen_param = [dict(lr_mult=0)] * 2\n", + "\n", + "def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1,\n", + " param=learned_param,\n", + " weight_filler=dict(type='gaussian', std=0.01),\n", + " bias_filler=dict(type='constant', value=0.1)):\n", + " conv = L.Convolution(bottom, kernel_size=ks, stride=stride,\n", + " num_output=nout, pad=pad, group=group,\n", + " param=param, weight_filler=weight_filler,\n", + " bias_filler=bias_filler)\n", + " return conv, L.ReLU(conv, in_place=True)\n", + "\n", + "def fc_relu(bottom, nout, param=learned_param,\n", + " weight_filler=dict(type='gaussian', std=0.005),\n", + " bias_filler=dict(type='constant', value=0.1)):\n", + " fc = L.InnerProduct(bottom, num_output=nout, param=param,\n", + " weight_filler=weight_filler,\n", + " bias_filler=bias_filler)\n", + " return fc, L.ReLU(fc, in_place=True)\n", + "\n", + "def max_pool(bottom, ks, stride=1):\n", + " return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)\n", + "\n", + "def caffenet(data, label=None, train=True, num_classes=1000,\n", + " classifier_name='fc8', learn_all=False):\n", + " \"\"\"Returns a NetSpec specifying CaffeNet, following the original proto text\n", + " specification (./models/bvlc_reference_caffenet/train_val.prototxt).\"\"\"\n", + " n = caffe.NetSpec()\n", + " n.data = data\n", + " param = learned_param if learn_all else frozen_param\n", + " n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4, param=param)\n", + " n.pool1 = max_pool(n.relu1, 3, stride=2)\n", + " n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2, param=param)\n", + " n.pool2 = max_pool(n.relu2, 3, stride=2)\n", + " n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1, param=param)\n", + " n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2, param=param)\n", + " n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2, param=param)\n", + " n.pool5 = max_pool(n.relu5, 3, stride=2)\n", + " n.fc6, n.relu6 = fc_relu(n.pool5, 4096, param=param)\n", + " if train:\n", + " n.drop6 = fc7input = L.Dropout(n.relu6, in_place=True)\n", + " else:\n", + " fc7input = n.relu6\n", + " n.fc7, n.relu7 = fc_relu(fc7input, 4096, param=param)\n", + " if train:\n", + " n.drop7 = fc8input = L.Dropout(n.relu7, in_place=True)\n", + " else:\n", + " fc8input = n.relu7\n", + " # always learn fc8 (param=learned_param)\n", + " fc8 = L.InnerProduct(fc8input, num_output=num_classes, param=learned_param)\n", + " # give fc8 the name specified by argument `classifier_name`\n", + " n.__setattr__(classifier_name, fc8)\n", + " if not train:\n", + " n.probs = L.Softmax(fc8)\n", + " if label is not None:\n", + " n.label = label\n", + " n.loss = L.SoftmaxWithLoss(fc8, n.label)\n", + " n.acc = L.Accuracy(fc8, n.label)\n", + " # write the net to a temporary file and return its filename\n", + " with tempfile.NamedTemporaryFile(delete=False) as f:\n", + " f.write(str(n.to_proto()))\n", + " return f.name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let's create a *CaffeNet* that takes unlabeled \"dummy data\" as input, allowing us to set its input images externally and see what ImageNet classes it predicts." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dummy_data = L.DummyData(shape=dict(dim=[1, 3, 227, 227]))\n", + "imagenet_net_filename = caffenet(data=dummy_data, train=False)\n", + "imagenet_net = caffe.Net(imagenet_net_filename, weights, caffe.TEST)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define a function `style_net` which calls `caffenet` on data from the Flickr style dataset.\n", + "\n", + "The new network will also have the *CaffeNet* architecture, with differences in the input and output:\n", + "\n", + "- the input is the Flickr style data we downloaded, provided by an `ImageData` layer\n", + "- the output is a distribution over 20 classes rather than the original 1000 ImageNet classes\n", + "- the classification layer is renamed from `fc8` to `fc8_flickr` to tell Caffe not to load the original classifier (`fc8`) weights from the ImageNet-pretrained model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def style_net(train=True, learn_all=False, subset=None):\n", + " if subset is None:\n", + " subset = 'train' if train else 'test'\n", + " source = caffe_root + 'data/flickr_style/%s.txt' % subset\n", + " transform_param = dict(mirror=train, crop_size=227,\n", + " mean_file=caffe_root + 'data/ilsvrc12/imagenet_mean.binaryproto')\n", + " style_data, style_label = L.ImageData(\n", + " transform_param=transform_param, source=source,\n", + " batch_size=50, new_height=256, new_width=256, ntop=2)\n", + " return caffenet(data=style_data, label=style_label, train=train,\n", + " num_classes=NUM_STYLE_LABELS,\n", + " classifier_name='fc8_flickr',\n", + " learn_all=learn_all)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use the `style_net` function defined above to initialize `untrained_style_net`, a *CaffeNet* with input images from the style dataset and weights from the pretrained ImageNet model.\n", + "\n", + "\n", + "Call `forward` on `untrained_style_net` to get a batch of style training data." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "untrained_style_net = caffe.Net(style_net(train=False, subset='train'),\n", + " weights, caffe.TEST)\n", + "untrained_style_net.forward()\n", + "style_data_batch = untrained_style_net.blobs['data'].data.copy()\n", + "style_label_batch = np.array(untrained_style_net.blobs['label'].data, dtype=np.int32)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pick one of the style net training images from the batch of 50 (we'll arbitrarily choose #8 here). Display it, then run it through `imagenet_net`, the ImageNet-pretrained network to view its top 5 predicted classes from the 1000 ImageNet classes.\n", + "\n", + "Below we chose an image where the network's predictions happen to be reasonable, as the image is of a beach, and \"sandbar\" and \"seashore\" both happen to be ImageNet-1000 categories. For other images, the predictions won't be this good, sometimes due to the network actually failing to recognize the object(s) present in the image, but perhaps even more often due to the fact that not all images contain an object from the (somewhat arbitrarily chosen) 1000 ImageNet categories. Modify the `batch_index` variable by changing its default setting of 8 to another value from 0-49 (since the batch size is 50) to see predictions for other images in the batch. (To go beyond this batch of 50 images, first rerun the *above* cell to load a fresh batch of data into `style_net`.)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def disp_preds(net, image, labels, k=5, name='ImageNet'):\n", + " input_blob = net.blobs['data']\n", + " net.blobs['data'].data[0, ...] = image\n", + " probs = net.forward(start='conv1')['probs'][0]\n", + " top_k = (-probs).argsort()[:k]\n", + " print 'top %d predicted %s labels =' % (k, name)\n", + " print '\\n'.join('\\t(%d) %5.2f%% %s' % (i+1, 100*probs[p], labels[p])\n", + " for i, p in enumerate(top_k))\n", + "\n", + "def disp_imagenet_preds(net, image):\n", + " disp_preds(net, image, imagenet_labels, name='ImageNet')\n", + "\n", + "def disp_style_preds(net, image):\n", + " disp_preds(net, image, style_labels, name='style')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "actual label = Melancholy\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "batch_index = 8\n", + "image = style_data_batch[batch_index]\n", + "plt.imshow(deprocess_net_image(image))\n", + "print 'actual label =', style_labels[style_label_batch[batch_index]]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted ImageNet labels =\n", + "\t(1) 69.89% n09421951 sandbar, sand bar\n", + "\t(2) 21.76% n09428293 seashore, coast, seacoast, sea-coast\n", + "\t(3) 3.22% n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty\n", + "\t(4) 1.89% n04592741 wing\n", + "\t(5) 1.23% n09332890 lakeside, lakeshore\n" + ] + } + ], + "source": [ + "disp_imagenet_preds(imagenet_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also look at `untrained_style_net`'s predictions, but we won't see anything interesting as its classifier hasn't been trained yet.\n", + "\n", + "In fact, since we zero-initialized the classifier (see `caffenet` definition -- no `weight_filler` is passed to the final `InnerProduct` layer), the softmax inputs should be all zero and we should therefore see a predicted probability of 1/N for each label (for N labels). Since we set N = 5, we get a predicted probability of 20% for each class." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 20.00% Detailed\n", + "\t(2) 20.00% Pastel\n", + "\t(3) 20.00% Melancholy\n", + "\t(4) 20.00% Noir\n", + "\t(5) 20.00% HDR\n" + ] + } + ], + "source": [ + "disp_style_preds(untrained_style_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also verify that the activations in layer `fc7` immediately before the classification layer are the same as (or very close to) those in the ImageNet-pretrained model, since both models are using the same pretrained weights in the `conv1` through `fc7` layers." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "diff = untrained_style_net.blobs['fc7'].data[0] - imagenet_net.blobs['fc7'].data[0]\n", + "error = (diff ** 2).sum()\n", + "assert error < 1e-8" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Delete `untrained_style_net` to save memory. (Hang on to `imagenet_net` as we'll use it again later.)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "del untrained_style_net" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Training the style classifier\n", + "\n", + "Now, we'll define a function `solver` to create our Caffe solvers, which are used to train the network (learn its weights). In this function we'll set values for various parameters used for learning, display, and \"snapshotting\" -- see the inline comments for explanations of what they mean. You may want to play with some of the learning parameters to see if you can improve on the results here!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe.proto import caffe_pb2\n", + "\n", + "def solver(train_net_path, test_net_path=None, base_lr=0.001):\n", + " s = caffe_pb2.SolverParameter()\n", + "\n", + " # Specify locations of the train and (maybe) test networks.\n", + " s.train_net = train_net_path\n", + " if test_net_path is not None:\n", + " s.test_net.append(test_net_path)\n", + " s.test_interval = 1000 # Test after every 1000 training iterations.\n", + " s.test_iter.append(100) # Test on 100 batches each time we test.\n", + "\n", + " # The number of iterations over which to average the gradient.\n", + " # Effectively boosts the training batch size by the given factor, without\n", + " # affecting memory utilization.\n", + " s.iter_size = 1\n", + " \n", + " s.max_iter = 100000 # # of times to update the net (training iterations)\n", + " \n", + " # Solve using the stochastic gradient descent (SGD) algorithm.\n", + " # Other choices include 'Adam' and 'RMSProp'.\n", + " s.type = 'SGD'\n", + "\n", + " # Set the initial learning rate for SGD.\n", + " s.base_lr = base_lr\n", + "\n", + " # Set `lr_policy` to define how the learning rate changes during training.\n", + " # Here, we 'step' the learning rate by multiplying it by a factor `gamma`\n", + " # every `stepsize` iterations.\n", + " s.lr_policy = 'step'\n", + " s.gamma = 0.1\n", + " s.stepsize = 20000\n", + "\n", + " # Set other SGD hyperparameters. Setting a non-zero `momentum` takes a\n", + " # weighted average of the current gradient and previous gradients to make\n", + " # learning more stable. L2 weight decay regularizes learning, to help prevent\n", + " # the model from overfitting.\n", + " s.momentum = 0.9\n", + " s.weight_decay = 5e-4\n", + "\n", + " # Display the current training loss and accuracy every 1000 iterations.\n", + " s.display = 1000\n", + "\n", + " # Snapshots are files used to store networks we've trained. Here, we'll\n", + " # snapshot every 10K iterations -- ten times during training.\n", + " s.snapshot = 10000\n", + " s.snapshot_prefix = caffe_root + 'models/finetune_flickr_style/finetune_flickr_style'\n", + " \n", + " # Train on the GPU. Using the CPU to train large networks is very slow.\n", + " s.solver_mode = caffe_pb2.SolverParameter.GPU\n", + " \n", + " # Write the solver to a temporary file and return its filename.\n", + " with tempfile.NamedTemporaryFile(delete=False) as f:\n", + " f.write(str(s))\n", + " return f.name" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we'll invoke the solver to train the style net's classification layer.\n", + "\n", + "For the record, if you want to train the network using only the command line tool, this is the command:\n", + "\n", + "\n", + "build/tools/caffe train \\\n", + " -solver models/finetune_flickr_style/solver.prototxt \\\n", + " -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \\\n", + " -gpu 0\n", + "\n", + "\n", + "However, we will train using Python in this example.\n", + "\n", + "We'll first define `run_solvers`, a function that takes a list of solvers and steps each one in a round robin manner, recording the accuracy and loss values each iteration. At the end, the learned weights are saved to a file." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def run_solvers(niter, solvers, disp_interval=10):\n", + " \"\"\"Run solvers for niter iterations,\n", + " returning the loss and accuracy recorded each iteration.\n", + " `solvers` is a list of (name, solver) tuples.\"\"\"\n", + " blobs = ('loss', 'acc')\n", + " loss, acc = ({name: np.zeros(niter) for name, _ in solvers}\n", + " for _ in blobs)\n", + " for it in range(niter):\n", + " for name, s in solvers:\n", + " s.step(1) # run a single SGD step in Caffe\n", + " loss[name][it], acc[name][it] = (s.net.blobs[b].data.copy()\n", + " for b in blobs)\n", + " if it % disp_interval == 0 or it + 1 == niter:\n", + " loss_disp = '; '.join('%s: loss=%.3f, acc=%2d%%' %\n", + " (n, loss[n][it], np.round(100*acc[n][it]))\n", + " for n, _ in solvers)\n", + " print '%3d) %s' % (it, loss_disp) \n", + " # Save the learned weights from both nets.\n", + " weight_dir = tempfile.mkdtemp()\n", + " weights = {}\n", + " for name, s in solvers:\n", + " filename = 'weights.%s.caffemodel' % name\n", + " weights[name] = os.path.join(weight_dir, filename)\n", + " s.net.save(weights[name])\n", + " return loss, acc, weights" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create and run solvers to train nets for the style recognition task. We'll create two solvers -- one (`style_solver`) will have its train net initialized to the ImageNet-pretrained weights (this is done by the call to the `copy_from` method), and the other (`scratch_style_solver`) will start from a *randomly* initialized net.\n", + "\n", + "During training, we should see that the ImageNet pretrained net is learning faster and attaining better accuracies than the scratch net." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running solvers for 200 iterations...\n", + " 0) pretrained: loss=1.609, acc=28%; scratch: loss=1.609, acc=28%\n", + " 10) pretrained: loss=1.293, acc=52%; scratch: loss=1.626, acc=14%\n", + " 20) pretrained: loss=1.110, acc=56%; scratch: loss=1.646, acc=10%\n", + " 30) pretrained: loss=1.084, acc=60%; scratch: loss=1.616, acc=20%\n", + " 40) pretrained: loss=0.898, acc=64%; scratch: loss=1.588, acc=26%\n", + " 50) pretrained: loss=1.024, acc=54%; scratch: loss=1.607, acc=32%\n", + " 60) pretrained: loss=0.925, acc=66%; scratch: loss=1.616, acc=20%\n", + " 70) pretrained: loss=0.861, acc=74%; scratch: loss=1.598, acc=24%\n", + " 80) pretrained: loss=0.967, acc=60%; scratch: loss=1.588, acc=30%\n", + " 90) pretrained: loss=1.274, acc=52%; scratch: loss=1.608, acc=20%\n", + "100) pretrained: loss=1.113, acc=62%; scratch: loss=1.588, acc=30%\n", + "110) pretrained: loss=0.922, acc=62%; scratch: loss=1.578, acc=36%\n", + "120) pretrained: loss=0.918, acc=62%; scratch: loss=1.599, acc=20%\n", + "130) pretrained: loss=0.959, acc=58%; scratch: loss=1.594, acc=22%\n", + "140) pretrained: loss=1.228, acc=50%; scratch: loss=1.608, acc=14%\n", + "150) pretrained: loss=0.727, acc=76%; scratch: loss=1.623, acc=16%\n", + "160) pretrained: loss=1.074, acc=66%; scratch: loss=1.607, acc=20%\n", + "170) pretrained: loss=0.887, acc=60%; scratch: loss=1.614, acc=20%\n", + "180) pretrained: loss=0.961, acc=62%; scratch: loss=1.614, acc=18%\n", + "190) pretrained: loss=0.737, acc=76%; scratch: loss=1.613, acc=18%\n", + "199) pretrained: loss=0.836, acc=70%; scratch: loss=1.614, acc=16%\n", + "Done.\n" + ] + } + ], + "source": [ + "niter = 200 # number of iterations to train\n", + "\n", + "# Reset style_solver as before.\n", + "style_solver_filename = solver(style_net(train=True))\n", + "style_solver = caffe.get_solver(style_solver_filename)\n", + "style_solver.net.copy_from(weights)\n", + "\n", + "# For reference, we also create a solver that isn't initialized from\n", + "# the pretrained ImageNet weights.\n", + "scratch_style_solver_filename = solver(style_net(train=True))\n", + "scratch_style_solver = caffe.get_solver(scratch_style_solver_filename)\n", + "\n", + "print 'Running solvers for %d iterations...' % niter\n", + "solvers = [('pretrained', style_solver),\n", + " ('scratch', scratch_style_solver)]\n", + "loss, acc, weights = run_solvers(niter, solvers)\n", + "print 'Done.'\n", + "\n", + "train_loss, scratch_train_loss = loss['pretrained'], loss['scratch']\n", + "train_acc, scratch_train_acc = acc['pretrained'], acc['scratch']\n", + "style_weights, scratch_style_weights = weights['pretrained'], weights['scratch']\n", + "\n", + "# Delete solvers to save memory.\n", + "del style_solver, scratch_style_solver, solvers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the training loss and accuracy produced by the two training procedures. Notice how quickly the ImageNet pretrained model's loss value (blue) drops, and that the randomly initialized model's loss value (green) barely (if at all) improves from training only the classifier layer." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ncoiIiIb/AxSD6Sq0YLMCAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(np.vstack([train_loss, scratch_train_loss]).T)\n", + "xlabel('Iteration #')\n", + "ylabel('Loss')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nFwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot(np.vstack([train_acc, scratch_train_acc]).T)\n", + "xlabel('Iteration #')\n", + "ylabel('Accuracy')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's take a look at the testing accuracy after running 200 iterations of training. Note that we're classifying among 5 classes, giving chance accuracy of 20%. We expect both results to be better than chance accuracy (20%), and we further expect the result from training using the ImageNet pretraining initialization to be much better than the one from training from scratch. Let's see." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def eval_style_net(weights, test_iters=10):\n", + " test_net = caffe.Net(style_net(train=False), weights, caffe.TEST)\n", + " accuracy = 0\n", + " for it in xrange(test_iters):\n", + " accuracy += test_net.forward()['acc']\n", + " accuracy /= test_iters\n", + " return test_net, accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy, trained from ImageNet initialization: 50.0%\n", + "Accuracy, trained from random initialization: 23.6%\n" + ] + } + ], + "source": [ + "test_net, accuracy = eval_style_net(style_weights)\n", + "print 'Accuracy, trained from ImageNet initialization: %3.1f%%' % (100*accuracy, )\n", + "scratch_test_net, scratch_accuracy = eval_style_net(scratch_style_weights)\n", + "print 'Accuracy, trained from random initialization: %3.1f%%' % (100*scratch_accuracy, )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. End-to-end finetuning for style\n", + "\n", + "Finally, we'll train both nets again, starting from the weights we just learned. The only difference this time is that we'll be learning the weights \"end-to-end\" by turning on learning in *all* layers of the network, starting from the RGB `conv1` filters directly applied to the input image. We pass the argument `learn_all=True` to the `style_net` function defined earlier in this notebook, which tells the function to apply a positive (non-zero) `lr_mult` value for all parameters. Under the default, `learn_all=False`, all parameters in the pretrained layers (`conv1` through `fc7`) are frozen (`lr_mult = 0`), and we learn only the classifier layer `fc8_flickr`.\n", + "\n", + "Note that both networks start at roughly the accuracy achieved at the end of the previous training session, and improve significantly with end-to-end training. To be more scientific, we'd also want to follow the same additional training procedure *without* the end-to-end training, to ensure that our results aren't better simply because we trained for twice as long. Feel free to try this yourself!" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running solvers for 200 iterations...\n", + " 0) pretrained, end-to-end: loss=0.781, acc=64%; scratch, end-to-end: loss=1.585, acc=28%\n", + " 10) pretrained, end-to-end: loss=1.178, acc=62%; scratch, end-to-end: loss=1.638, acc=14%\n", + " 20) pretrained, end-to-end: loss=1.084, acc=60%; scratch, end-to-end: loss=1.637, acc= 8%\n", + " 30) pretrained, end-to-end: loss=0.902, acc=76%; scratch, end-to-end: loss=1.600, acc=20%\n", + " 40) pretrained, end-to-end: loss=0.865, acc=64%; scratch, end-to-end: loss=1.574, acc=26%\n", + " 50) pretrained, end-to-end: loss=0.888, acc=60%; scratch, end-to-end: loss=1.604, acc=26%\n", + " 60) pretrained, end-to-end: loss=0.538, acc=78%; scratch, end-to-end: loss=1.555, acc=34%\n", + " 70) pretrained, end-to-end: loss=0.717, acc=72%; scratch, end-to-end: loss=1.563, acc=30%\n", + " 80) pretrained, end-to-end: loss=0.695, acc=74%; scratch, end-to-end: loss=1.502, acc=42%\n", + " 90) pretrained, end-to-end: loss=0.708, acc=68%; scratch, end-to-end: loss=1.523, acc=26%\n", + "100) pretrained, end-to-end: loss=0.432, acc=78%; scratch, end-to-end: loss=1.500, acc=38%\n", + "110) pretrained, end-to-end: loss=0.611, acc=78%; scratch, end-to-end: loss=1.618, acc=18%\n", + "120) pretrained, end-to-end: loss=0.610, acc=76%; scratch, end-to-end: loss=1.473, acc=30%\n", + "130) pretrained, end-to-end: loss=0.471, acc=78%; scratch, end-to-end: loss=1.488, acc=26%\n", + "140) pretrained, end-to-end: loss=0.500, acc=76%; scratch, end-to-end: loss=1.514, acc=38%\n", + "150) pretrained, end-to-end: loss=0.476, acc=80%; scratch, end-to-end: loss=1.452, acc=46%\n", + "160) pretrained, end-to-end: loss=0.368, acc=82%; scratch, end-to-end: loss=1.419, acc=34%\n", + "170) pretrained, end-to-end: loss=0.556, acc=76%; scratch, end-to-end: loss=1.583, acc=36%\n", + "180) pretrained, end-to-end: loss=0.574, acc=72%; scratch, end-to-end: loss=1.556, acc=22%\n", + "190) pretrained, end-to-end: loss=0.360, acc=88%; scratch, end-to-end: loss=1.429, acc=44%\n", + "199) pretrained, end-to-end: loss=0.458, acc=78%; scratch, end-to-end: loss=1.370, acc=44%\n", + "Done.\n" + ] + } + ], + "source": [ + "end_to_end_net = style_net(train=True, learn_all=True)\n", + "\n", + "# Set base_lr to 1e-3, the same as last time when learning only the classifier.\n", + "# You may want to play around with different values of this or other\n", + "# optimization parameters when fine-tuning. For example, if learning diverges\n", + "# (e.g., the loss gets very large or goes to infinity/NaN), you should try\n", + "# decreasing base_lr (e.g., to 1e-4, then 1e-5, etc., until you find a value\n", + "# for which learning does not diverge).\n", + "base_lr = 0.001\n", + "\n", + "style_solver_filename = solver(end_to_end_net, base_lr=base_lr)\n", + "style_solver = caffe.get_solver(style_solver_filename)\n", + "style_solver.net.copy_from(style_weights)\n", + "\n", + "scratch_style_solver_filename = solver(end_to_end_net, base_lr=base_lr)\n", + "scratch_style_solver = caffe.get_solver(scratch_style_solver_filename)\n", + "scratch_style_solver.net.copy_from(scratch_style_weights)\n", + "\n", + "print 'Running solvers for %d iterations...' % niter\n", + "solvers = [('pretrained, end-to-end', style_solver),\n", + " ('scratch, end-to-end', scratch_style_solver)]\n", + "_, _, finetuned_weights = run_solvers(niter, solvers)\n", + "print 'Done.'\n", + "\n", + "style_weights_ft = finetuned_weights['pretrained, end-to-end']\n", + "scratch_style_weights_ft = finetuned_weights['scratch, end-to-end']\n", + "\n", + "# Delete solvers to save memory.\n", + "del style_solver, scratch_style_solver, solvers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now test the end-to-end finetuned models. Since all layers have been optimized for the style recognition task at hand, we expect both nets to get better results than the ones above, which were achieved by nets with only their classifier layers trained for the style task (on top of either ImageNet pretrained or randomly initialized weights)." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy, finetuned from ImageNet initialization: 53.6%\n", + "Accuracy, finetuned from random initialization: 39.2%\n" + ] + } + ], + "source": [ + "test_net, accuracy = eval_style_net(style_weights_ft)\n", + "print 'Accuracy, finetuned from ImageNet initialization: %3.1f%%' % (100*accuracy, )\n", + "scratch_test_net, scratch_accuracy = eval_style_net(scratch_style_weights_ft)\n", + "print 'Accuracy, finetuned from random initialization: %3.1f%%' % (100*scratch_accuracy, )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll first look back at the image we started with and check our end-to-end trained model's predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 55.67% Melancholy\n", + "\t(2) 27.21% HDR\n", + "\t(3) 16.46% Pastel\n", + "\t(4) 0.63% Detailed\n", + "\t(5) 0.03% Noir\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQMAAAEACAYAAAC3RRNlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvU2sLcuS3/WLyKy19j4f9+t19+tW08LQbmNhIZmJJ0iG\ngQcW4kOyEMiyxIQpc7eEGDCECWOEPGCA+JCQJ0g2bQaIKWZgZGRjEN3Cz253+71+r+895+y9V1VG\nMIjIrFy11zn34X5P5yKdvDp3r1WrKisrKyPiH58p7s6n9ql9ap+afuwBfGqf2qf23WifmMGn9ql9\nasAnZvCpfWqfWrZPzOBT+9Q+NeATM/jUPrVPLdsnZvCpfWqfGvBzYgYi8udF5O+KyP8pIn/553GP\nT+1T+9R+tk1+1nEGIlKA/wP4c8A/AP4X4C+6+9/5md7oU/vUPrWfaft5IIM/A/xf7v477r4C/zXw\nb/4c7vOpfWqf2s+w/TyYwa8Cf3/6/oM89ql9ap/ad7j9PJjBp/jmT+1T+/9hqz+HPv8B8GvT918j\n0MFoIvKJYXxqn9pHau4ut47/PJjB3wR+Q0T+GPAPgX8H+IvPzvrX/kMQIeyNIALuCSukj1VAdMIa\n+b3jGfc8JvEXmY5P59N/Fq6Ai083BuhzJNNcHQ2sItHX//7X4U/9+f33eQwy9WOW1wiogPnzPq/6\n70N0EN/76pOjMj2CAhbPKDfe761jyD4XKvC3/nv40/96fB7HNe6f8yMCJ1XORXEc3HhVCp+Xyp0I\nTQxzwQAXx3BWh9UMw7gvyr0XVoGCo1IwbzjGosqr88KXp8JZladmPLaGm3OqyrkKX96dWduFL+5O\nfHF3YjmBbPDmaeXv/fiR//W3/it+/c/+W3zx4kRV4Td+4TXiG18/rDxuDRHhxxfhDx8eaICKoAja\n51IFdacoqDhFNKYi31NRwQF3Q/O3S2tslq8z33uzhnl8MxyLi/J1SS4RR/FcwhLnIPzf//N/x6//\n2b8ADieJexaJ+RQB9VwYYiyiLEWpRVnyNboZLpbjzmUUrwrHabn2/8p/8O++d+n9zJmBu28i8u8D\n/wNQgL/yfk/CvlgdiYU2E9IVA5sI+9kx2YloZhCDQMfgrglkZg63mOWRZkefEwOQHIf358l/7nHe\n+xjLzIRutnx+0Xi7vXvIt5/HSr1+rsF8eh/TWDvzG89867bT/KtwV5SXKtyr8KIogiMIr2rh5SkY\n9doEERmL3hGawaMZFzfuilCBVyosRdlM2KwgFMA5F3h5Ul4ulYdL46VWtnXjrhaqOiKNF7VQVVl9\n414X7s4FkcYX94XPzoVfe33ii9d3sDZeFksGtrDZwo8fNlQ27k4Vd6FZEM1gBrn67rRQJJiwiqIo\n4k6thaUIjqEIRZSnbWVz2MxpwRFormwWxN+8M4O+ND1fSX5yxyzWqhBs/RRUPVaRqubSNtwd92Bk\nIp6z7MkUAA86iFfvgwlJX5tu7xEOe/t5IAPc/a8Bf+2DJ6UUcnekL1SOg52kYpdcEOxYlB0i2EGq\nHxiBQFJCIg2/JpLnD7D/nQmL3s88RBldXzMG9me6AiSy93m89VU/00GbmU+XEEcU1Mfbx+QxPYPp\n+LX0ZxqDTNfRV7CCCosqny+FF0U4K5xVuK/KixqLcG2Gm9LloajSDJrBC4PNC6KOqrNkfw+bc5/S\n7bJtnIuyFAEFLU4VeHFXeHmqnIryuG2oFKpCnOacT4WnVvjibuHVqfLHvvcakY3T/ZnPX5wxa0GA\norx9bKzrRinKgtBKoXkDnOKCirKIcF7iHjufdkSckwqnWpJBxPTclQUjmIGZh/R152KwNo/jiRIU\nQXMNmhsNwdyxZqzu4IFSahGEjoQdKUIVcNfxXkShqCZ6iXs3d2pRRBwVAr1IzFWRgUEQ/QjM4Kdt\nVzQCOzH0z4OAp3/uCWPnB9NrgvUJQcj84QbTuUmwB+K7NYe/9Mf3fsWTGU3MR473mO4zD24m6iMT\n6GMYY3n2UNd9XjHA/kDT3M2X9lN/+U88R1B9nsyhOKpQi7Dkgi1VWE5KIaRrEcXcUS2ICE9rww2Q\nQi2FZoYD5xIQW32jFqWq8A6hqmLN0BoMQkQ5VygKiwpeCgaUopQaDH2zRl0qS2382h//U9wvcLec\nUBFenJTL5qiE/NQCVgriFkSH0yRQSRVFBZaiOxLpb8AMFeFUCssilJS8Doh7qEbJjINUnW1zHrfG\nxWBzwyxQSvDlQjNhtbiWIizmNIdf/Gf+JEU85zPenUhAawBZhCKBjopKMqWGuyUgbqg7dSmpAjkV\nQcVxEVTKtyDRj8kMpCRq7cRACvppEY9zOyF3AtGJ+GxazHmtPu/imstMxHHzlIkzHO0Mvf3Sb+xS\ntY/l2T0P/d7izM9sEv1/sl9zJf0PfT57jv58c58zI5jnV+BX/rlrpndQo1Z3nqzxGo1F6rA157JZ\nEK47tYQEqiUW8osaRF8kmMi6Gav50HOLgKji7jSvlKJoiftVAbOGUli0oCKci/B0WfFSwEsiSaNI\n4ayVf/af/xd5cTpxrs5pOSG+UmsQhQCvzpXP9MKDx5GlFO5yXkvRYBIFTgXulyWheqCKHFbo8EVR\njWczC8nu2A6yRKBCa8LDunExwaQGEJVkTlZYN2PrzAQwd179yX9hqBTxmsI+E/g31DCRYAJCo6JI\nEeI/51xDxanSUQJgRp3sSX5rHU/toyID6MJeEuVPYmvWqY96/oDx/bdZIiYn6Ayh93elMkxtnp9Z\nas5w/+qiWxd8SxtE5s8ZhpBqz0E6v6/rMRe+z8WVneVWBzcY60z8M+q6Ygypt1JozbE0Zl0slQIX\nllyktQgnFc5aCKHn3NX47aEYFwt4f6ohoVZX1q2xaA5YFfdAGVrzr6SRD+Xl/YmlFtq2oi4sS2V7\nWoNobWOpUFVYBAylbc5yrlQxfu2LV4gV/t6P/xChogp3VThXTWYVZFLEKWKpTQmqoaP3aQv6sjGb\ntcTYGCZEQRZBFuX+bsFFsGZsmxHmUkccWgvm2Ca7wVAjLGwNgSoAURZNW41AFcGQoa6oQNHKolBK\nMC3cUFW0VLB4nmBiH16vH50ZdHX2StJ1wxmW0vRA7LMhbJZ6g1CmY7MaMPqfDXkfGNwtHjB7JwZa\n0W/pZ/rxFjooMzEfjIzHv51g+xwckcHV9/m5D+frjXk7jFOSUXlzvBRcFMNoBr46zRv3VQPySkjO\nWkJCLTUNYggiSt1C/y5F2RalXWwMwzDaBlsRVI2aiCCkoKHqnLVwqhVTxW0DKiKKsHFaCltzllJp\n0SuihmKcz4V36yNffnnmFy8LawuD7Ktz5cWiqBhrETYLI90yYPrMF2Xil/EOuq2rlmAGnnadPoWF\n8E6UotiiCeWdZkZr5DgFM0ubbyAmJxDDahbndmOnCEVDpVIBcRtjcJxTKRjxTooqeDCQUpQYolPr\nh8OKPhozuFIP4kD/MC36g+4/VIPJTNt/u0mMcnDF+W1i+1C7MiL2m83D0On3rjKwP8OR+AfauTGG\n3qfK9W+dYJ1klFzPF0wuS5nmoz+7TTe8wUCPc6/hvl1UOYmyiXNx455C0YJ442LOtgacflgV1UpV\n56RGVaWq4hILVsUpuhuKNcca+nthtYYDmxlVJCzm7riEzn5XK3dFURUsic/MWbeA9/fne9bmcNnw\nUwkCFcFVcFVEBd0u/FOv73nYNtZmnKpwqho2iepsVtgs3XjoBLh8TJWKoGnka63lswWBSu3TKeP8\nWjyNgoKbhdRHaVbo3gUzWLdQNWopqPpwCYLTWjIEIY2MoQJoriMzY20biqFaaAhtazTCmFik5XMI\n5buqJgwvAnLw6k1E1Bf0DF2tw4i+8HXu9DaBj9O7VB+Qgedc5Gidn+7tz0+5vm4irEGwRwTzAQZ0\nNG5CYL/ZXiplSIWckL3fcPRPcRj9c3nOOPvcPntOGcZDza+rNZ4MnraNshRKKbi0lHTO09YoAosW\nVg24fdnC8GgSUtSz2yJKKZViK61BEUkpGWvC6PwoDIwvzpUXS+GkwurhNTovZ95dNloykWaNy2Zc\nSvj6X94tIMK7hwsCvFjOVAp3arxoFRXl0hqtGeflxF1VpChbc57WlXUzmoXlXtLy4NjkdAlLf0xb\nMLVTLRQJID6mU4MZaBHEwtbQmtGGhue4QVuclobAkgZNCPeme0lUkUgAiFgFyWVV2Si4WSAWFGow\nNnAKwQzdnfpd9SbIUAfgeqXyXFJ1aWW+L/ARX3CQrPMXufV5PvlwUPy5SWBmALfm8oqwpvt0ZDDH\nG8z6/q12xTyyT/dAH0XRomEg8hNPttHcwcIqjgLFoU1MU6c+xXe09Wye9HrcAAYrAdlf1AUXZ3Vn\ntbAFnEtFcBbtUDXciZuBVcVEcDdwpbVdz15peLrS1MNXXrwgeNoHHBNDtCACSxXuz5VTEexpRRG2\nlO6IBkq5bJg7LoVGEPW6bZQi6MV4dae4Ks0bS60sqiy1sK4ryyLc1ZjbVYwiC5diPDytgSgE3IKh\nFe3zFO9TMgCpqKR9I9CD5flkbIB4ogfS1dcZgQfBQ9gPmoe6MeIEhm3aEXQsQfOwPUhwibSnlzQQ\nKmaGlmQc7ogGO+ueife1j28zyGUSC2pGBYd/A14fqPKWpJ3ViVlSQwrSAyMY/U9WR7GDLWPq/4rJ\nTER+i8a7zaNz5fcFHsk0wI5guj1lC5/4fT3zvdPCpT1hcs/vt0fYJuJ3231RMwPq8yHT3PQwjb7i\nxKcbxniaw8MWlusXi9BUeWeOb42XZWGpyknDcCcFLK9ZB9xOK7j250njGAGZg4eFyxKC2ARDJm+O\nilI0pKOqcqoLb58ecTca4Kqox2MXUTyRijqcloVtW3m8yHjEqlA0CGPR8GSIxHiahS++pLFTgKoF\nKSCEHcPdMbOA+QJCRArihptjkmvZg+C3zXFrSK3h4XBJNBEG0ggGUswiUIlkkJ2Z9AhHd8OsgcAi\nJRiqCC6BcKw5hqQbN4OS+vIk1BmsY7Db7aMyg4GKB310Ap6kvk5BQj4zCOL7M+I6SGdhIlaZ3Jdy\nrVZ0eDw+l2AIV2rDTDQHRtC7nT/Pv93y8R7Vmmdqju8BVpvx9u07Hi+V779euHcQE6jgzaGWQAVG\nRiEeVYNDvz6hCOmLpOw2j2TKzRtvmoMUPgPuCjwBykZBMQejYC5szdi0sA6I6kHc0l1jEb2ooqg4\n0sNnc+H2UOCCXMFl3NlCiaaKc78sXNYg1kvbgqmoUNJdaQ6n5RR2iVK4rI1aCrUWigqiYeVXjUAd\nUcVzCiKuQFgz+qgkE+/iI+wGZdgTwpovlNJt9R3KyzAqFrlGGOApe3Rcpxp2gEAL+x1bS4SAgFbM\nLZCBWB736L9IeCAGTQi9Vol2Jv8taYkfjxnMRIuElbbPykyYg4imwKIBfW+ggmcLf2IER5w/61AD\nBcxI4nqMA273k7sifAs13BjauA9cI57OBHR6WzNicMsXabSt8btvNl4tZ0oRqigNWN3RWvDN8O5x\nmQOZ5oXgvd95Dv3wrB6SRGEz4SdbYxXnywi9YdGx5mhuiIWkW83RFmP3nkZilmBEBqQuGi6yHv/v\nKbVVYvF2Yx0Ia2s0a6hqSj2h1oJshiCwaOrQ6X7TQmsNced8WsIE0hrLqSLseRTiHoY914HG0pPJ\nqRYs15i1Nt65dGu+eML+UHnivy7gkrkVyfDl2RvhmAXUxw1vks+8nxNPnb1pGAmhyzLF0nbSMvS5\no5SCICVzGpyhcoyl9V1lBuE97ASaKkLXX/tiHUzhFvH3xXyE2ewEOum/zwx4R2KVw8FdYbt1IleM\nYr53DxIaaMSfXfasTTB6MLqutfT+RdJ42uCp8E1rSHWWRXmlC39oF16KcFmUpzQm0fqzZmCMRBir\n4iEhCfcbSCQWNce6cXU8e86zwbsWS0+AkyirRALTIkFcW/Yhshs1a6KCZpagzCgoSykUDau8JdO6\nBnKewKixtfTvyy75MWMpIaW9k45BKSW8DuGkH9K4WaNSMHdaayDOUguCJiRvg1GZQK2Fy9Z2az5O\nkRK2g3zNKpJQn0wU6q9PBoooyGAeXXWTXCMh2bsJ2HJu+9OAJNPsiMeBZo6mQVgkUEJ4GySYLj76\nN3b3rQ770fvbR4xA1AGZduKHIX07I5gZQ1+o7xW7TL9N5xwh8ofEtk+/3+IDA6n49biufps+H1/A\nURXoatCV7UFBu6S2nTA1JJhj4A3flAd/5GHJQBmFc6k8besIzJS8Ts2opfD5svBCjdcl8g3uUvr+\n6LLx/7zb+Nojzj7mfnJjuOOb8M7ClqKZu6BpH0AlLdpxPxGQBlrSBKQhyYJ3B0NZtLCocFk3SGNc\nh95hc9hfSa0B85tbREmXmPOqirfQqbUqpcS6kgx9DhUimMRYPpn7VTTUFTMHCct/M6etxtqcdQtG\n5ZbBPMlxPO1bkoOM5TrlD0xrOWweQbh0fp6qX0/t6mtJc4CZoTCWS7dRtPTeDCY9ltnEPGRXD6qG\ncVm8o4fvKDPoRpZhOJyJfRAXXFHk0UK+Y+74MzOVwViAnvxxS9AznUvvm2umcGUZ7H36fnz++Qre\nzz9Mfc+/X9ktcpydGsYz63RtX805PFN4MrwGIli0QMbda4VzSuZ7wkv5RVFeFuVFUV4uwl0NS/7L\nJcb0248bF5dceHb93N5wE9415ffYeGfCZsrrJRKQFhFKgVWctTn3NSTxqcgYeTMHdSR141NVTukB\nCFDtaNERBdgtosFvnMg6bKgomxvqursnJcKE17ax1Bo+eQTJ2AdBsJTatYS+rhIqj0lnEIE8zCPc\n2h2kBCGFxyDtHfNSyvXQ0cIeauKghhS5AnkDTQihqnTPQ/YYid/7Omwez22DGexqxr4m9rXWVRgd\nRmu63sCH2sdNVHrGCLj+3NWGK2Gvx07mLzvOvH5TN/qGwXieteNxufrpmkccrp+ZyZH4xxjfgzyQ\nVFonJpJoYBdr03P2zxYW6ydzLpZRmx658k3TWl8KFzfeWEOkIgpLi2Sg+6VQSuVXWEGctxs8VnjT\nnMsGT0a4Cbs0MniSQBAqygrcE3aNpQivEDZ1jJY8VcNTIB2yChhhAVdYloWimXTjMgimMw9fNOB/\noknN+gLqabXHwoC2xf2aOWqWhrVdYooArScDddUjkQweCVNunE/KosDIxvQB02MJ7cJoXm7dvThK\nD5BRiIOxkf3k+HNMkWwUiMDdsbbfd2iIRDhzlLA4Ej8DZXS5pn2NeF9y75OEe/u4rsXkkCMXXroh\np1Nch6m+P+WRwGYJPNgvxw8TAc9E+r7JuUHgCW93VHBkLFwjgZuMoD9jf0t+3TfTX+lGgwkp3Rqv\nwyhGQlrFW+rLhOX/qcCbGoEyb9V5w8ZXUnky57VAWaAi/MJ95YuT8mSeQUZnfvS08YPHC99slc0E\nUU/joXNpzu/bxqNVPq+FBae2UGHkpKg7SurnRTiVeJQiCiWk2+ZGcai1p+/GM2rOZzNja4KV9EgU\nOGuhWUNaGCE9JZ7Q0zyOiE4HwSxLCTsCBh6+eevfa0ROLiLosoQdgJDIW7PBPHS8j/QKSCIHdmYh\nlhJad6InIb95ELZZGCB7Wn0I8CR6d9y7JybvkcJHUo2WxCcilmEkqbJN6vcOluXbTAYf0YA4/tdh\nlU5CXxhhvtMLvQmz5+9XEhNGTMJNCT5fx3NIf2zCzvLfxwhuookZKczD6F+UcGHKzgCOzOyqW7mB\nTmZ1ZZ6DZBLmsEbdgUsJqHlZnyhV+WU5cV+galQEen1euHPhYTWW4rxalC/OhR88bvzo0sDgq1PA\n/x+ulp4M4w82417hRVHUoGyhw1cXijlCiySbnKNuO3Y3rEWZk1pSYmZ+QFclmjmXrGmgJVSSWgRl\n47I53jvLSkwOGT8gSRfhMaiaiU8C7prFTZzNW6CN1K3DFeh42S32PWEqCvB0u0AnyAzbkP1dSLqw\nI/Yg0EgQtoK0fC2Z47AvIiDQmtmu43taGru091xPNog+/omEqSkS/3wsu85Yv7M2g2hThZxhoJlX\nOhOkPhAB3D6fw9cjjd+S2LeMfbeOvU869/MGg5r7yeOTNXn/vSOfboXq8RWzbpdo6Urf84nwfb9v\nZ55jCJ1J5P2agQUBP6hQXfgDMQobX9WIF1jd+fpyoVlItKUIL0/Kr9eF71+Uh814kbUIXq0Nc+GN\nGV+3RnN425w17djNuiOnUFXC2wAUN06q4WlA0rPhae8IZboUGeXGcOfSIqFnqQU9ObU4S61ctg0z\nj7h+AfdGR9PuMaf9cwTvpM6e9xaJqbUWST6eRLu5D2nbaY6cZqM7jfb30LV8kS6hu9xOwG/d5uH7\nM6eK09Fxd6mKCq21dKkK7vt13WDoliHMiSA6gp7Vud5KMt1v0RI+JjOYiPw5xU7HZSeS0XyStBNx\njbcx9TvqDfj1eVe3uzFLx2O3hnnr3CubwWTo6x9mid4h4qwyIEwWqKnv43jk+tjMcDqK6gxEuLZF\nGICyPa38gW08tMLbWrhfDZWNd22jSuVOCy+KcxY4FeGzU+GLc8T2n8T58hy67T9+WvnRE4grb8x4\n0zZwxQv4uo/SKFGpR5yq4QlYsgZCFTIRp+ySMNLzglgdLtbYLjIepVZlqUpbd325qO62gE5EmQ4d\nLsaYXi0dhiqlBLFounjXzEsIJhB1C/q7i1W0z7t5RiT2tGHZ6yX2YKNgKpHG3McocTE92SlqHkYE\nJkLkFzTHWsN62bNkBm79e1+QHUEQ6dh9vSVaMAnE823g9yO6FmNaA3Z1P3tHBxMBdP1swOGZqN5D\nKOPUvFB9IrD5nAO0Pxrpbs7eRNBH7nDlGZjGPgh0GsDs9+3oYYxZr8f6TAWZfhwMpM/NPIZjlEky\nmp5xQ4HmPJjzg9UQtYSxAtI4i/GiCK9VeZllz5ailNL48lT4/HzipM5ni/LL987XF+PrdeNHTfAW\ncPVt84gVcI86CFKoIiwtEmcSzCJahm5esk7AujV61GLwTaE142ED8TAO1kzrbSOiMCS7ecD9JTMY\n99J6TnPBveFlRwdRm7DPkuNN2CySsXpZsy7tI1Eo6wMMT0AaO6WHKe/xApGW3GG7g0cWoqXB1LuN\nYAi3DKwqQoZE4CKsPcmJzONIg6onswGhlBreELORyLp2wflhZ8JHdi32z+yo95m0u/IeyI3PN45d\n0Y1MPOSGZO7nPJP8Pn4afeBT3zfUk1vBQ88MgNfcfHy8MirOz3+4zTzuwXD6tZ0p+H7uVf+9r85s\npnFaSGCXFr+r8KDGY3O+VuVeNQ2HkX9wV1Z+8a7wq/cLv3SufO8snOrGy1X5VS+83VbemPN2s4Tp\nEa78tGb5NHFKyySnzLqpGclnrmxtG5K5VsnU5kiLXreNdxbI464opyo8rmF4i3qDGXSkPdLQ8HS3\ndqndXXWqncgzQUp65qEPguIgVT3LvI3X3l2heW7PBegqQvPMgsz3f2n5e76TTguWXoK576UW3DVD\nkDXyE0YNp452LMPH4rrWjZT9n0VYuPtROFy3j2hATGnZ25CSXC/cQbATUc3++ZmBHInolt5/89wD\nkT4Twu9hQjeFtVydMq6XmVHwvP00nog48foZxr/ppj6dOu5/GKhPxzsn7rw3de5eyFMc3mwttOLk\nNX/ozk+ejB8+GF+dV37hvvDFErD/s6XwBfDY4MdPjYe1R/dBlB0wahbvdISmsNkWiKGEpIcgIEPA\nem2fCD92j0hHf1o5vbjL5CNlSwYg4ogFQ9g2qKfwOPTQ5y11hZLSNfIUwlNRIO/ro4x5GCIjEYlE\nHeM1etaI1HCf9lLyvUJS3DfmLUsURECnW6oGgUxGBSVh7180Q52jz0UjoWnYDZxRmdmA1bqxNeau\neUffgO3BSO9rH1FN2BftdUV0uV7gw0jD80V9Cxz0dpMRTH0eDYNXgv5wjU/Hv8Uiuzfd1Z7j/a86\n/Zb+js9xZBQzQ5iPH3jtlQG2n2vXcy0SsPskUSL9LMKSGX7fbMab5pkkmcYshB9vja9t4/cvwq/e\nLfzyqaC6cq/Ky1oRVf5QQ++uWXXHHC4NJL0oW0ZLFpxqwkmN+6WC9uq/MsqFVY1CKlvbcIOHzXi5\nVEo1fIu1IkXQElLUk+F0u6ojNJeIcfAIPW7JDNwZdR2bWzINzSDRtEukHOpxYF3C7yXMoQePOVGC\nzdnTiHd3YYYea69LEy9nyLpkANbHnedEmngwi82M1ozNgsE9bY3NnC1rTlqu81jy9kyrPbaP603o\ns8pxocu+0DsrHQYyuWYSz4jA388I5vOO4/ggkc8S9PlPz/vtIpaJ+D7Qv8C1kXO62UBKhwEMRnCj\n32E8PXDOdEycstLxusFT1tNXIhbgs6J8WZRXtXCfxr6iyqXBT9aNt81Gv6tn8lGyhjdPxu8ZfN2M\nu6J8eYbXJ+X1UtmKRUmKXMwCLApNo6y4qKRLLSz5TSMCEJy1peoiAYGLRBGUbTP+8N0Fu4O7k6a9\nNtZAJ4RmztNqGY0YM7hZZ2awbc5qIC2qCpFVmc2hmUbcv8moO1AS/vcQZclKSia+L0cLQrU0+g0X\nIH18nVcLPchzbHLk4GYj6hD33KzFseasFrkaDqytRaZoc1azOO5xboRt2zAlheryHVUTuq7bX8qY\nyTGj05cP6fbvo7FbULszl+OFH2QOk3SfkcM4JhPzeTaI6Z4HsdwJdmQ+Tn/nzgbB98VyGNu4qV8f\nO45VQ0LcF+XLRXmtlW/U+OH2RFHlpMo9zue18NWpctYoVYYIJ1VenIRXZ2FrAUefmvFkzpY1EbcW\n+vk3zfjGwKTxj9bG98/KXQbyvFZlOSkPlw1EKLUgQCMknrqz5Xy+bSsnUV6UKGNmvfKQOJhRSmQV\nPl5W1uZ8ZpVliTLoJYOwPKHy1hqLVehGvdTR1xa2gzXLikHh0hyxuNZcaImeel2T7lbU3GjFgZb7\nJIR6kgyvWRaeslHktBsWu5SPtyO7V50om761xppEbkZWUrZEA5FpieW8deI3n+TgqGiA5zyEbPiu\nhiN718UOtoDZkObTQu/H+/PMRrOZIMdv48utm7//t6NHYG6DBrtn4KC/X/V9lPIGUvfjPo3928Zw\nxXDketjUbFK8AAAgAElEQVRy+HBEV+Nj5Ol/sRS+LMLnVXhZCueygMNSKsWNlzVQwWYrT1ss+Cdp\nA65CSNsLzirwZELDuYiz0iWqc3Fnuxi/+yB8sSivCnzvrvKL9wuUQjPnMeMQ3DUWdmY8qjgNeOcb\njxVenCoVsiCo00zQZtQars13F6PZyt2pcNLGeakpYZNYAKwXVIkioc2CwCQhvWgwh9bA1TPUYzJy\nt+4C1FHjIDZKaRl70OMJbEB5c6dhuMU66Lp/SG/S4CeZBZnne7gH10QHHTkMdSG5SkRRSjCJgTZy\nD4XugclcD0/akplGbrSPW9zkCPOvf40f90DvGzR8lOjcRgTPmr7/9/cygk6EB2LsjOpqTM/0l8NN\n3qOWyDUBX6GB+diMSo7tlrs0mcFZY6u0V1V5tQhfqPJVE55y9yFHs1iHRbSfRsLR4+Y8WsDVloa1\nhvDOnbdpcTeCgFsvsJHtCXhjhrpzfnRevdl4WQsKvKjC907K61pYcgF7y3qJqTpc1sa7deNUlFMp\nVI3sS3WjmLHUgkmUY7OnxlrgabPJ3x9MZG1BNO5QkyDdI3lLRFDPvSFTsnby3UONe9p3dy8mxE9r\n/qVFh5Lz03c6WlOdHQFOGfvRLf0B2rpx1TCTHhs2UhDiz54fQSKLjjd7bsO+/GR4Fvp4VRlVn9/X\nPiIy6B+OGLwTRLyIIV1n9UFhEPTcz4eeVeZ+bxD6s/MPH2a4PqOS/rae3fzIDCZm8v5BXo+nxyMd\nx3jFMH6KlkOuAoJRtKaf2vjiHCXI19Z4MuFha1ya8eRBxI+tG62iXkEjJPnFnG/cuLiHIXKMR/e5\nzqi3LX3gl+Z80wy5hBGtKnz2CJ9X5ctaeFn7fgACGEspEcvocBKnSuOuCkuJTMgCLC0TpDQyIN2c\nrZExE2mpT7htAu4t9yEIxmCS1Zvp+C3TiDxwgUjcRzQ2UOmFSH1KFrK04nfo3zMOVzMu1iMYM39A\nuu6eTBrJ0GPCoDkMhH2vxixswqRaTIBTRZCSuQ2dScy1PGUPlf7u1kA8WvNvWck7Afnxt2k2mM67\n6n/qcyYeP5x0i6BmwofpnElSD8KemctPYY+4GkhHPe+h6qE+HcYwI4MjangGBfeLG/Dgztdb44Ky\n2caXZ+W1KheDt5vx9aXxZoO3m/NNqgNKEKkmAtgwNu9+8em5n9k2GAxhZw6xB7HjXBx+uDk/Xhs/\nVMv6ChHTcBLn3BpP1iBRjZpxvxROBc41d04Wx31DgVd3C/dVqQhFIwuxG0DdPCMA429n4mWz8KCU\nqG6s3isDCViX3HSQT/OeMLTD8mAGktO/77PYLJkQ7Nd49FNkro0ke6X7qWebxnm9srLisgd66vWb\nI6CpC9EeyxBMLd7hd1VNEOdqT0Sc2/A9FbpBNBPhPZO0NzhCX4gzI3i298BEbUfCnz8faX7cQ66P\nX52nxwsOz3FEKfPpnfCP0P/50J6hCmB3y4a//m2DFeHNZixibG78/cdHThlEs7pxafDOsjjn6Nb3\nv/19jDmcBr1TCfsK7nv8zc/bpWp0YBL3vAAnc87SuFPnXjXKuQlsGluRt9XR1jgNv7nF9mgi/GS7\ncFeV+6JUhfuqnESoxcfW5FX375GyHNvFmRtnzcpMKlQtQ4VorYUdpIXtpOTmspdUDzaLGIQefhy6\nfzxfGBujGEwASt/NXh1Rdqmex6Qziv45mUxfapKqjyZzG9mSxPld7ejHe6zIXOXvVvvo1ZGftWdS\nUp797P3DBx8uf59nYGYeMyO4iQKma0Y68Xz+jZMHAjkgFj/c7+Zw52snZuU70dwc3/vGcGiei35r\nzrsEst7HMw9JDgy6j73/nXeU6urSFRrxw5D8eg5EqCnA+ncFKiGRt25E8yA2Ic43d6rGDs3mUDM2\nAHqhlAg9ftOcRRsngZcL3GvUGOjTehJF1WJvSGmBHgiX3VNRFlFKE87VYvs1ERqFh23jsYVxUCSk\n/7u18biFYiFpUzhJr1ockxDBW+GZ6cmVY/X0peTBSMd3ckt47cSdv8NQXfpmM4ojPteK2AuwSs59\nREPad1hN6K0T4rM9FPzwOX6bheZ1PIEcFjV7JiSH48cKyp3lPnMRTpIZ2VfUuP6G1H/2fNPv7pkn\ncXWTK1rfJfGMhubfjv3nuOfxz7+Ne18P1Y9oaTZevq+P+fss7ft727FwjF88Kx0LGxHPX4jApiae\nKSPJDFKiIpG0VAjGEIQURV/xQCxPwEmE4j17MAju0Y3iERF4Ap6acFfCntBLiRUiBPlUnErselQU\nWB1jQyXCru9K7OZ8kpC/j1sUj2kp1leLTMrNuuTPSsZpv+gro6OAYp41IPt78jF1EQOw6/ax/0Ju\nqFKEIj3pKf5VjT0Xa9mlvghZXk2mvrpBNIKc9Lg+Du0jZy1OEhAO0v6wkGfCfsYIjpfcWNhj8cvz\nY8frdbpRRwVHpNsHNtX4f/Z8Iox9EGZ0cKUmcD0Hc/+3hfz1+P9Jfuvt2Zjy4GDKBwZ9RFPjMTqD\nyLkYm3xGOO2JcJ3hkvsbhE9+xyDBMEKKwikluWbx1iXvMaoQe8hio5f/ykAl90yCCq/H5sZDc+5K\njxLM/RJMWD32fFAsKsV75CIsVbjLiEMHLmrJhKK0WrhOYxdlkKyr4FkKLVOTBfakpkQvOUehDnSv\ngOdvISO6kc/zvWiGbMechVtzKcpJQ90pmpmeyl5RKd9RzePNeqm0YL4fah8vUQm5ostoR6W7f52I\nWw7Hx8EjYzlez/Uin895Zmg8MIzR/zSbPTX6aqgHKp5Lkc9/jy/lfUzwFlOD5wjgaqzcvqZD+uOz\n31Ik+yPPtpVx6cyE/fBbdqmSC8+HtDsBjaiMLALVdQJvPhBDkb4PraSKkDozznBcCGBOI/zsIRvS\nndbPl4j8u7jRpARTySpN4pJVmKKga5Go9FRqiVqOJbahiKSpGEt6EYnsRQ0GlQQfy3PKauzTMeSE\njPEP92BeWCSjOKVL8x3ad4KeEcHYJbovMU/UI539pqqgfT4F028PRYaPXenoICBvjvgoNcfxI8P4\nwOf+Zg6L9vZ9bkjsm4OdXnusxmsCOl7/zMbRaw2U22M6wvEhlG+oBO+D+Fe/z2P2fWw3+7rR54HP\nxanxpVfVEYGCUiX08F6so4phAneuLGiE7uY1HTovkGXV93H0YRnhrmsZH9A0Ep4iBFgGIaoHiugS\ntaOLziCqKHU8WrzPXpNxN/T1GRI2ZBSp3jKAaRdg4cno1YdmRhBzcs10fXI9ggxoL0jaQuRqifTs\nyyhfeYhSzOv7kTUDkcYuUD2Qqu3KSKhHH1gjfFRvQv8j1yzg23Tkq3Mm6fQ+hjGIaibGg3ScCeDq\n3H7eAbFc3X/uU6a+8vDQn+XqtJv1FYa0hdSN9r6Pj/fseT8wb/N45ufqIma2J8jhnPc2v7qm6+QA\nknD9nOMsaf+4LxF+3DMChSiD1vP9rUtP9gw7S397d7W5CKs7NT0gdWQzhm4RFZRCDTGTqEGIU7Tk\nqGO99KKkLpI77mn/lYjskyudvxs2baiFkVSl+b6mnT+SocwMfH4Xu0QaPXmoNTLUgzh4SYEeIdYx\nLiXcla4ZMNXtD50BS1ZBMtg6KxDSDvOdthkcbGnvW4THqLqrbvorOBBb/21I9snYd0WYt5jIuPH+\nt7+50d9hTL37q/v7pJcL12pGdtifTSCraMa5KhQPKXCFBtL/fYViOvPok3k1nxPFXmUxXj3oB5hL\nXj8Y5N6f5++SoeVKoIQw8UjuvZJ6ej5HI1CBiyAek7YlsUfREb+a6k6MlpPc93SwPEkltoKJYJ5C\n17WRcBGGWRA8C5O1HLt4pDn31xk7I8vODLKgSd8jIQMMh6TV7KvHEGhmIZYMujJvGUrci7PIxGr2\nZxL3sctdXz9VGFK+aHyP1O5AH4tCVWfxrNWY6odJoiIHvG9aE/PYVKg2rb8b7eNXR76SRDOxEOxv\n0Pq88OdFvEdzjb9HIj9K8vl+z3jBDY5+1IsF9prYU/89AdP6sbmvxpVbzvvYp46VkGBuvDwtvALe\nRGwrUgpmjSeJiLpttlmIx2rW+fmm55k57hhPZ4yejCyZlb1Pl5phQP8c0ljzEkWzLHgG9iTxbDkV\nUb4rexMgS6mP/IG8i/r+WueKfr0+oLTwGKhFYZRC+O41e9jcUPouRBLElo9pxNbuMWRHPEKjY441\npiDvZwhb7iLV88lwvw4YEvaKSjnPkn3XZPjdThAbstiYl7m4ye5RNjZS9UkmUwRqg1PWalhUY1fq\nkV4d9RA27cZMRj0FUj1w9+eFrw7tO1Dp6EqUHv5mU5n4xAek2S1GcDz36vcDMc/njijDPG/mVR1x\njPMkavinL3gp8MVSqaI4G6+qcFdO/OBd4ye2BdTMZCcRCd+2htX45VK4E+FlgUrhzhqxCawAlUd3\nnorztsXW5q6ZPSe93JdkNtuEZpjnj+d2CGCUQptdn1e/x/+6nquEL71JQlMnP4dh0MRzx2FYB4ag\nGwlo+zYhQVCJLpBuWZer1+Oe6dSkNV2ymrL0YihxbBFPM+W+JVlNfbpIv8eko3e7h3dVJewDvRjr\niPH3XiI9IxTxzGT03VCHs1mLAq2q1BIb1MSOTVC8bw9nowJRL42+v55AEiqdSYT0XwhjZsUxNdwL\nTqNaqFrhjuyMwHNbtkRr6S35znoT5jKHg4oFhhsu9aBd4k8Ler5mfOwEeuNmR5RwS3LOx44GtRlx\neBic7kroriLCyxJ7GJo5r6rwalG+f6rcV+XFsvC9E7y4P/PbXz/yN38If7CGxDqlP/uzWjiVMEa9\nKMq9nhCMR/Nwe6mytViWJ48w3jvRqGwjUFEeSsjG1QPatl7EUwlp3wN0uC63FQsx9V0RRJTW5z8n\npaf9IsGwpB8jDHRVIpNxFQMxKsLJhU16Zd4o8tH16pjitH4ngeEypriXFSehexBGeCaKxvMuJBCL\nzCoWhLsShVbL/Iww0EoIRs2xMNSMfp650xLOtwxFtpyJ/txHmSS5XCJl+Toa0XLDWcn1Gfp8BlKJ\nIEV25pB9m9kon9YzFJFMDnMdhspgWoBkmHXWPojqSU7VqIzUYw723Znf3z5ybkKCuysVgEl6X03/\nc6k/I4H3MYIjPD6ec/P7QSTq/rkU5atF+aWl8mCNDfisVqpEOOtX58p5Ee4dXp6VX7g/8dW98tn9\nmV///Mwfe7Xyg7cXvl6Dq3sSTEvm5zitRVDLqUTYK6pIxtYXVc4In4nw5L2gRUTpbcC9hC57qQXr\nHqXiqGoWBoliJJ6rdHWnSa8NGMxFPbwCccz3El7inDzGvOaMlNTxg+jDHKxC1gnMJS6RrGRpfS+p\n4QS/mSRhrgthAIhh/OrhtJLzFD177qTsmVYskU8gRhVFcj/DsYlJXy4+ZQV0ap5et5MJWRY2nKCj\nkKw93LcXLTEPFDQYmRTQUDS2rLQUkYLXHoulRCVlUpXp3oUeJ+j5XDtL6q7HjC9I5tgrggy2nWX1\nc6PmfG/x91tMBn80ZiAivwN8nXO3uvufEZGvgP8G+KeB3wH+bXf/yXs6uNa7O7um2wo6NxsrZb9W\np2O3Ig2Zzp8ZxREVCM9/ODIc3SXpy6r8yt3C5xXET6BwLsp9cT47VV6eIt/dzDhXYRXn9y+Nb9oj\nd1X5xc8W7pdIBHq7bjw1cBMeNuOpwRONizlPm1FqtyzHPgOdcagoGCwirBgXoFphTZnX3DEpeMkl\n76E3NtMBhVeHNR+/eCyqLSMGu0XbHFxk7LJs3bzgu+ZmktZ6dinU56+M3ZF8SvbxEf0YQUbBnJbp\nNbrAXvJTMtsyloW5X91noatbPoizKWkctCHVY3/HzhSMHYckg8n3u/vsZcQ0dBDfn7t/6Qw0Zrm7\nUaHbgoQd2RRxFu3FYGsaA9Pd2FEQEzlMeTuzfaL/UXwYFPu2bpAxGlnfsRQGI+yM5EPtj4oMHPhX\n3P0PpmO/CfwNd/9PROQv5/fffHZlTvgeo85hNrL7ee+Bjlzn879NNTga8nrnR+YyX9M/91kkdMB7\njUIdLyucUxKVKvmSlSd33j2sgPKE4S1SWDecFyqIKqdFIw7flZUspuGBBDysTNQiiGSBjmKoZmEx\nz3x5ibBcxbkrSjHHinBKab55nysfUsncsCJRpcidNY18s61TCXi/u/gY86xO+tTDmFa6SSXtJUgY\n0nr5Fs9XKSIsvuuvNkUeFo3zSxoeq4axzIcUjcUeEXgxmI3Qn0sJYlq0JGFGtaLihHSU3UjXffJX\naSr5rjXP71GNMqR0d4kynlnIQiQTc+vzthN9X0bBVIpkQFEyg1NRFp2Q0EDGIfjMbewK3ZfjbBDs\nDK1nInabxW7LSLVGNPeZZN9C/rbEHO1noSYc7/BvAP9yfv4vgP+JW8yArgDMRHvodiQIHZT6IeU/\nxAg6w5D9onHujYvk8Lvu16sI56K81sKdKpfcqvxha9gWL/pOe7lsp2RN/9YagvD6xZnXNcJYvYVZ\nqgGRqh/6YkHZNF6iCKg6kdWZ2mqmAksaq7wqly3q3FXCPeUiWT1XWAd89TQZCBgUKSwYqxsn4JQE\nG669eHqbYjLcnY2h0LGke8/FqSk9HUnjno+w2iDPWKCLaOivMEKC+0LWtFM4aTXPXY6LBJM1szAW\nqlClRHZhqbHjkljmO8SORlt6CdxlMDN3GWEeHZZD1kuUXj8hGJfJtFx8MnCSRmJIgu9JQh1NkPYM\nmQx3EZRUOkMowSgKAfPnfRXmNVgpeO1Gy7j3CN1O3UpT3Rr31n0cQmcMk1pCooefc9kzB/5HEWnA\nf+bu/znwfXf/vfz994Dvf6iDvmdd72y3FfTPBzWhu7WuCJ3pGvbz/78wgv53XB//aok0WBH42p03\n28aPGpykJByHBedzNb5YCp+dla9Oha/uFkoRXCIPX6sjLVi1uWeiS+xe9OjAGjsBmQT8lyz9rVoy\nmk8GsVdgy3F1Qm2W0N+dJgrWhmFqQ0fQTtTlixWikMk+UaVI8HRrJeR3H6ESl5yasCcQFmxnBL0s\nSRyLROhx7FgUkW8nVTQde+TiDOYQC90ljWEesf4nQm04VcXSjXguylIKbhp++Bk5CDQ0siEz5qC1\n3EvAszox3ZgnV6+6VypubsFQEbKECXskRRovJQlwENjeR49krLqHEXcvgyaS0bRxMAi3mysSCZDo\no+hV/9o9L33pJyoZZdRzDL2K0igN4D5QBHC1H8Ot9kdlBv+Su/+uiPwi8DdE5O/OP7q7i8j7R5Bv\n5FmOwkzIV8Q9IYSZaTxDFwfEcIwgnO9//LyLBhAwb6yWFuacVkmuL/nS70VY6bXmCivCYxrrXJz1\nceUB56EpxZSfsLJ46OJnBdcS0lLBXIf0j6E07kpFRNkIfdhRHp6euKvLsMLXAuQW581bEJBrJqn0\n8UXNvm4R7VPbgUBJqa9YSOn8B8F0MrolVTsihDjzL8L/XTgnM9O0AFbZq/LagNOR6hu/Ra2FLY1l\nKhFUs2TCj5aSUi3SgHt9wghoSteltQxcyifLQq4DHXSB0glvkEc3kDru4cWKiMjZtRf7HhTpBr9c\nI5qE5nuZ9O716AY9Tbaig/h9WnIh6PoOULMsCy9vr7nYvSPJGLp6M9bHTl7mOlVWjt9GYlSPVPxA\n+yMxA3f/3fz7j0XkrwJ/Bvg9Eflld/9HIvIrwO/fvPh/++vxwkTg+7+B/PKfiJfWGcGYNN9X7Szx\nj5L+irC/ZeDPVBL6u5mi+wjiIuD2fD8X2HLpiSlNlXdm/GSNwpxvmvPNpUZRUBOemvGI8MPtQmnK\nE41XqtwV5fMiOwzshCMBjU8aW4Q/ZHhpbOPtrN7YNuHCxjkJZRF4cS6cmvO4GZdm4fMX4WKweWS0\nt6zzF4VMwd0yyk7ZBJZJJ13ohj0ZC79n3BVkMIulhFEzPBV9C7aI8nPvxTyDCPvuRVXCW9KNYJbS\nrNsZSr4nCaG5VykSRgizI2gWbAlmAnhsnT7g/1S7IVBEqjndJpLMTRMNRnCS55YSAeWr5C5F5G7R\nluSue7k07Xhc+qqVoXYBIxBtFGyXLrVzbmeDhs2hVt0UmRWcE7X1uoyStDGWrwQC64bNv/u3/xZ/\n52//rZ+KMOTbdll574UiL4Di7t+IyEvgt4D/CPhzwI/c/T8Wkd8EvnD33zxc6/yl/zRNs+kOYbIh\ndNPoIPqwO1+hhYHz9Do8dwYMvY/jwSMzONoerlAJ10bNUD53fVGE1yq8FDhLuvYKCMpPbMVMWVEW\nVzZXqm7cSTCUs1QWDSivoqwe0P6uFM4asQSlRN68i7KowyY8QJYUX/mF08K5KBXjroYG7QqnUol8\nduNpM9aWq78UnsyCObjRWkjVzT2Kd3gsPvMk+GRWVUkkIyy5+JZSOFXJlGPn0aIi0CKxIapIRBdu\nucZ6Pn33f5fchShU+cxRIBe/O6olqw1HEFXLYB2QIf2KhHo0hF6iMU0JHtmGnvUQPIyCOS7LXYzb\nZOvoQVOkaqbaic6HvWDJHaSLBFMrotTcYq2rRWEMzWrKslcm0qH6+lADhqFzWmYKWagkeYzsiV+9\nj0BLXV2K9+TuOzIYdg8frsq/9Bf+VdyfYXHgj4YMvg/81dTBKvBfuvtvicjfBP5bEfn3SNfi+7uI\ndNDuXhHAu7VnmLJ98iL4tU5xJNpju4UArn4/fOnf535n26UmJ8/QTsmXH1bjwkXhwYQ3W+TGPwK4\nJ3RulNJGFZonjOYbjw0u3nghhebGE8K9GXdK7GZ0CX09kEJKRxPe2crrorzbNpzCSQu+OUtp3Iny\nsjr3GgT72Apv1y2z2+Cl9Tp84Ytvtns0VouKvpfcaKRqbHl20lBpzkU55SqePbqC0Lxwsb5XYC58\nyXulx6XrJH0fgGa7sbG5jK3NHPC2hgSX3PJsWPkH8A89PYR0jCN3OBaPas5r7n/Qk6G6Xt0TlYRI\nkx7Pksut75TUjXwCOyF6xGN00DrnBwyXRXcZ5sXejZvTnI0Kx8NQSNY0DF99r58YgKMbDiNmJPYe\n2j0fOhkNS1eRbL+XmaWp+v3tn5gZuPtvA3/6xvE/INDBT9Fk5GM7slffAboB73rVdckvXBH6bD84\n0v8g6MFR9uNX18nzawcjiN/ORXlZYqehc0bJrWZsAm9a7C24emOdeBgSpcdbwv9HwrV3AZ6sseWm\nmg/awI1G4VGdYqGTN1fcG2crLFV4UUB8r3yzivMi4TBSaOyBLSLCeSmcF+dclyjR1fcqwKklpHRA\nYxnWdMFHaXEV9nBp6frxroe2XNAhRWNjk57hN8itS8AsQnLZjNZCWm8eOwU1jyy7HijVzMb87cjR\nYRIWYccB3LFBuBHlZ3giir2eY+LLSJ6SyX3pfb6ShrW7ENnLo0u3A8jV/PZKTirhJq2p54uE7Wcs\nqyRQM9/vNZaZ7zJvKj0gdPWIyWjpFDfUwBS8auS3zQimx+kk6hIPT0n7FjXhI5c9S2IcEL9bQdn1\nr0H0Pp3LRLg+ZnZkhnUotmMwBiOZC47AzgRuzpPv10lAxiKhY7/z2OziYsaKDQJwDv0TsfkPkmmw\nMCLL2qhkG67AuJdzIRbok4GzxmagvdJvxrN/Xk5sNNSUi5Yoy+3Otm4glbU9RQxEU+4ldkxatIRW\nlQu6qlEVToXh+nN6qe9gJDV1/DA8glASxSVchxFr3zxKfzW3rBAcVwQCsGCcnrsSu7O50BLKt0ly\nFQkvjid1SomKSdtmNM/8XclIyyHsPOMwAvoH8UxGOOkwPgi0SC8WEq7HXaJGQFIhmG7UOtjjDTIr\nI9QY2Q29IpPbMJfM8AjkegwU0BnTpBaIjLTuPZOr95NSf6COxCppjNEWG9dKjq+T0dgDUnOsPFuW\nz9rHYwbzHovAhM/y+w0R35/mOnpk/Dyne1xlCHZqP4CD8fm9k3SNFp48CoqKZSiqyYCxz10i/aWG\nMeqdd2mav3WWPTOqZAZ4WLejS0U0nEu+GatGMtI35pHn3pyv16fYPzGlnNE4Z7KKiHEq8KJXDS7h\nEjypcreEpZ4S7qyazHRtWea7NSiSBrLCCODxILzNfRjunNz7z3bE0NKt5+S+C5BIwtPAGPDei0RW\nJnVHETkn1j0kWQC1td0OYB4hvxbsair4IaNqUtUob7ZI1F8UiTLqmufUfPZiYRfpxUa7YXMGlfP2\nEJ1mpRPatKSYXmlHET0D1yfGsEsrH2pL31yFCa2o78VayGeI9Gwfgqrv99DDpIXrgij4d3gTlV5p\n5hlD6EQ/AMEknTmcfny4WX24kv7TB8n7HFWNfs14y8/7seaZRz8ZEoZZmn3c4x3vaCQ8fLrrksNw\nOz3Y4CydUcT3DQExXrry6PAkEdD0SgXR0L1fi8YuQ1pioRelNUM0rNohQY3FYw+C1Z22bjw1YWvK\npVgwCo1xmEf67lNu8NH94OFyTJdp5kZASKFRoESC4JtZlCbDByGpSiTVJEzfNweO6zePe176DsQO\nWMZgqOR+Dd0ouBvL5qjF4dWQ2FKuinOSjGIUG+62KDegkdUnET+xZNDQokFw9NfQzx+wvaslfrVU\nO2PsayCyEnfu4N4jHT29M912kGHk/ZnzHZB2gpIBeGVav534g4nkUs11JbJvBd8D9+TnZTP4WbSA\nc7NUhElR31tyvytEcPUjjJ0xD4fzTnnsA5zxFhOJQe7HxuRGdt6OVvLN63TjwWy6MtgZwA2GM4+h\nK42DR0SZi2LCCylsYog4X4qyVPilZeGtNb53KkDBBU4Ir5eCL85jawm4wrLtLjyZ8EQQefVQX06b\nj23GRbq13sdYikawT0kj4l1VqlSkZtFNtxB+JpDhvUpue95iX4OIpShErKKjRXHLHYsN6PsWuuCu\nIyw69kQEC2sjwwcvSuvOOovxh5U/DZbJuKoKFRlLZOvjyuQv1COxit0Q2HwPue58PRCAZnhxHh/G\nSUbBVPCR7mj0UGnpmyPt+j8Zs5GqlA1G19deXBDMVOhBW/R57LYT31FBV5e6YbaHfiu7MfR97SMX\nN81wTIIAACAASURBVOl/ZHDTbpz6AHa/IdW7BJ4J13cX5fHace8ZiUzXHQc4C/Hu0bhKsJqk+fHy\nq+/9uvyh/3581GE7MSjOaymINVw2TsA9wssKn50rv3pf+Xrd+P5doYnwzSXKZT1Yo5bCxTQiExHe\nbm3o7EJUHzoV4UVV7kqhaqoEiUebhSGxERb8u6Kca+FchYcWTKkTXjNCvXDNWIYgdkVYtIxgItJf\nv7aIwFzTGR8FTMOQXIO6KRZrQ0s35MUGrUuWjVxbbPAauyCFTUWyL/HuLcm03v76CAZh0wsKt2EW\nHUlm1FWYuXWX55ZIYazVJOTme2ZgXwruXVHKziXcl6hksZM9VqCTdDfOxnKWEeVpHoVaCpoh11kw\nJ7m4DPeBjGXbjPB+lcPD3Ggft7iJ+xC2+/cDcfaH62Krt4PrJjtlRxjsEnncFLiCSodzrzp7NmKG\nlO/XXSGa6drBMHw6p6OKWUVJBpLXxCkhAXoSVwHuzFiLcBLNIKMoYLI2+OHjhmrl956MB4S3q/PU\nMtmFNoyaRTxKg6cr7ixkFeCgrDWJ1HJu93TXPfnpbTPeNYNLJpjhnER4uYS94ak5T9uKaOw9UHOn\nI02p3Lrkw1k3i9oLfUo0DHPhQhU8LXEjqCfXhxFBTY5wEuOl5nSPvoIx4BmALX0fhjQkZmKTjvfn\noyJzIeMKZM8CdBg7IXeytvR0qHZ3Y6zfClnodUcLu/cm10GOM/JFgll1iSDEDtEk2sB7iHImnWfi\nmWiMr7CnV+9kE2oSQtZOiJGbfYeRgc/EPOA2u8Q+/nZF1NO5R4YnNz6Pv0d4LjCA1DMxfoMvzGjg\n+FMn/onAkV11GMhlvp1d3dZVc+U5iy7U/PFd8dRKnLeWG30YvBHnH7bc4jt9+FWcswnqGqXRNMnZ\nA+JWgthOJeIHRDUs9MRyRIIwt9xKTCSkS9/CPCTpbjI7SRi9ThoxCg8tsjXPpWRIsePe0LQpBPHF\n8hZKeBLcEAs/OskAIwVXWWS38IepQVmbx0KXyJ0oJZBJ1vVJr4HuuQtJZNFnMIMuRSWfe1j3JUjZ\nCPXJu1dE9lfVJTbI7h0ocmVIjCKugmvYO7oLdhcAuQuz9FH76CuWV8Y5eBiBu1dhbAvfk6CG+zJd\nnzK5f9NGFennfkC9z9vHrXR0hMndfDpBnV0nZye40WYJ3c+d/k7d7OfPB3pko986+cBY+r3lcL+h\n4O1jHwxhYmRujBjZno05MbX+4k2V4hG0hAubhk79uVXOVXghysWdd2y8kIVmwlmUl4BI46yFrTAZ\n1vaSjC6he26erqotCLG6c7cslLJw2Rpvt43H1sb4s2oWkTITtvseCHNRoTV4SZRIP5XwKjRbMVGq\nlzQYxjNa9lUysnHbbBRRFQFJr0Zx51wyd6E5m2+R6ozgJfR+cUGLIhiaBgFVRb3FZioahKM4aDfW\nbaB1AMQg+kSlyay2Fq7ivjRjQ1bLvQhKGGnTHdlddj2zMkxbAr4bBJsV1tzMxN3GmugS3Xs0qFkP\ncp8CujyrPUs+X0cv++dhg5CJsdHtFWN1JjN/f/uoNoOesehpGBxI+ooR7F93EeoHSdxZ+jNxzc4w\nPgyR3jPC58xmMK95jAfFfz50xcBk/NfH6+KROYhGaWsLglWEx8xVeOEFVHnjK1/Vhc9d+LxWNjc+\nLwVR506UNyaso4RQzE2wu9A1V7LunirNInnpBCxaeNiMH64PPG2xC9FGhNmWIcm69AwD3SJh4Y7y\nW8ZFHCmFU6mca7gIm0cJsFok1IYiHfiEdVzgftFkVt0b4CwlEEzUITQoilsvaR7TuiyVbWspDUv6\n6UM9ap4pxNZQaWzpCg4KMZAW9oVh/NvfXVQxylyLRFVV9oQjTW9DzV2NqgbU767Koh2MW+j4Bhfp\niKobR31onEGfWbZMegzDcRWmJ0d1z1QUD9VqxBT0pCfoHcypBj9N2sFHjDPoelEs3j0MeSasXNhd\nwbuyE8yM4sgIbjGGqb/5+iGpR2cTOrlx+dW17NBf4NneDP28YTgSqkSewpquOSdSZxsetQ40s+ei\nygeqwguPvIUqhW2NWIOiUAxWdRZTvhHnTUr8RcJOINYXt9AyeaeI8IinYTrs+nVKuHEXGpq+6pRy\nXUYlsYoQ6ofsQTer/7/MvU2srtuWFvSMMd/vW3ufc3+pW1XcggKqSEEC0QYpJMYYQyKxYSI9jS0T\n7dmwK3ZoErVhx7aANkRpGWNsqA2NMSEawRBDhyIUVIFV91bde8/v3mt975zDxnieMea39t7nEEqz\n7puzz1rr+3l/5hw/z/gH5jmBGmqqxJooSL2Y4hyReQde52C2HpnkzY3Zh0uNXEziLYufED2xbmYt\naRjt57XwtDrM6MjQ3gwmGrGg6lJMa1UHcNBfkLMM2WwFlmjDlGaV/oULm5QMbnn7DvRMo0yKh2V4\ney48ntFZgEQNizZIkAzLhwKttWC/6El1ByTbBWAwXKk1JNJKlskPm9vX9j170R6I2gzA23GIrLQL\n+H1vVDNsAvzuPHcMqNfeeQ/vIgQD9nh+MXDHdrbXtusB/ZkyCaLjTQB/79erkWUE3kSOtwgHwMQl\nRT8GDMsDr23gtiZGGE6bWL4w7IIvDTWdZ4YBcWKZ47oMOIBLAGslIS5qiRXZJ2FE9gpIpxZzAxBY\nJ3CMTF1NRmktM8o+VndiRRsCg+XWnZLsGAtYNrGGILzn9OdIJsm2BXn/gwIpsJh9lBryRo89gg1e\n1yqBYq7hp/m96ziyn8E6YWa4+shW6StwHYMafVX26IMchJbJPDYGHXOZxHVx4HoMXO8YnVodyhFg\nmfVgxSaYjLUpGENQkzuuQXPF0mmayr8jBkA6JQfTp7P1IoUu5x9kwdbKHhlDRlqSzVwcHhvSja1U\nM/MDd9f60PFywmAthB8w9vYr7Wq55IjNUeOBUBF7Jc2CRtK+Co00sElSABvj23vyFTahEdvn6/Xo\n90t87wJHAmK7xjNnoiG16G0t9p4IVqGYVC5gbHE+HGMutt9eWGb4CJkl90QOHeF4ou1+Dc4xjIFH\nyz6K6mso21PhtJO3pFZcBsA8AMxqP2ZAdSManuhBGjE98gYLr5TewzPS4aGYeAr0sZmobsnQAx0V\nALrD0sxWTV3AFNlOfa6FcFOLgtTUKm5TWTcCPqrCpVqUG/J+L5ZwXk1REpEmEr0gy8Wd0YyLszKT\n/7IaMc81RZQUbIPPMJT9CYqoIDKjLhhueH1NmP/25DOFEoWM7ODZt3EGJpRsEIz+EBlEALaqdDlR\njKIMzhBk5nVY0WEOdAnLCNRXHS+IDNT4qjVshhf1J22rMhH0RcFy3/7etPfGgAXht8TsusZ7UQba\nknjf+7xcfRaA0oc5x0tYe/tM3tsCzYKslGE74e0cMPhyLDbveERgDuAhDMuzG/GDOT5C2vo2DJcA\nLEbewsj+gFNxa0JGQ2olRGo+B+RpwkQXH10Aprhm56bDhARYxsyvHSTOq+e/w1C9/aT555oAmRFh\n1QFoR0dzZSrzudLZqWlHC5YONSjxKWkkZ5ksRqGy+YodA7FmliW7M6nJKbyioiZXRiUOB4VEhktX\nqIlLRxKy1TrK/j886zYSeueeOekIls7Ug30nBs+hlOJ04KvU2PgZw9NkIVah0W4sOwHWazAxy9J/\n4blwOZuDBKwUA7fsC+E0eQCvsL15Cua5zq8RBS+dZ2BiVlal7Q4Pa6lZ5oGKjN6r3XVibNraWlPT\nZKgr7NBff39IENTrds/oZRI8E0z7F5Vva6zKBAB6g9cwAGk820r/wLKc4XeOhLHT2NADC69XhvCM\n5sSDZ4VeIIdrAFmyjMieAk5b0dnw4iCTpzsrPdcHsonJlfb1cRheq/MSUDZowuz8l5/PAqedacwW\nHpDhu0GIIS2lFmAwFJNP1l8slho/LbWDS+dbdmd2ljAvtAfAqfWd25GoMRl74nDHxQ8cngLh8IWr\nDVwGZzc4fSOrIwJjZFmw/CqK16tRl1P7Kr9fvSwMCvGBRUrU9AR+6iOgzwByJDqjC4ng4MAaTgco\nquAruFdZj5Cf1T2pPmOQzPNZVvkXVhijPyAdfEjD5fHCU5i5G885cGOaBgSj37P3f5YvbObBvSDY\nvvTu9+umnh2l3fev8Rd7j+TYP48oh+AedXDL0FlQY4cZXsHx1hdexwEMZ5PTiQHDx9PweDh++zjx\nnWV4MsdDDFiOyoGKvny1I+tAevHdOLvPRlYuMhFHHYFHRPZ5HI6rBY4Argz7gbJq8nkcwGFs6AEJ\nRs/Jy8HrOBnHM3JxGQm1L4Olvm4ABtYM3OaE0XH8NBcezyxmerxNPK5gA5ZEBpm34Fgr+zcAYM7+\nQPiAwTF84UoBexGCGemgvFg6BNMbn4pgwuGRtj2gicrKTVjQjLdydFN/CGjKuefUTcO8mpNmjQGV\nma8SHsOyp8UkKjoX0Q4dtoORlBjZJetcWe691qRjkp2eoovmbASceR3DR/l0Mr+BXY+WMhk/fLzs\nFOaC+tvLptRk5Vrzw9XZdUvtEIMqoL4x3DsIQaq8NPpzAXF3E40A3uH3XRjZ3cvPZykatVrlNdHO\nvoQBPrPDzshowekLFwRew/AYE9dl+Mkr4KOZG/8Aw7nSsboW5/iFsU25Un6jsueuBfXBXoOZbHSx\nQcjvLF/uXP6P2GQ1rYheq0wMioa81kU6sHTqGRldGXxZUZeOretgCA5MEnLHuBqAo5bw6bbw1iZu\nEXjlI6dFxW51JaRHZC9IR8b8DQszsjR7mLMmgevMYaUybxS6TAoiMpVGNeENOmiBBO2c5BwwLDZ8\nCEvbnltQJGloZNA1jxrrRg3v+fxr5fSl22RDl8X2cLGKnC+e+zYtqzWr1CgyEevkIAsL5kGEw2Ze\nwxTmZFjVrcfcfeh4wdAiWovykJ8gnYrJQaocC8hO2/x3hQq2BJ7Y3rs7/2bsf50Q2EOY+3t31437\n90zZYiiH6EFAO7E4f2/kzATPLL4zsrUZ1sTD4biuRAPOtOGHMzP8Tlt4jQPwgUs4YiwckcwykHka\nhpXNNZDOrFfDcUFgjGxpPtgBSI5BMerFkWnOw/AwkOW9loRRCawGwAZtz4xOaPvSa96mAuTrgRjT\nau6Bq6KS99vy2nC9Gh7GgcdzVsGPQdl5C0hMA8ORQokOPjdFEih8WTZ9sVz5YyDNFpJJIgMmL/li\nqNJY15CIKY0Rll5Plf9YO4jpi0on4ObzAtOv6dpPElx0elrROJBzKQ+uzxNTlnv+IkOOwbCqGW62\n8HhOnJViDFhkqPJkCPLiYM5OFB+4OStb7V2afna87Eh2ZaY5HR4LQEUXRGqoh2gpXGAN99g+yjkm\nUt4dlPnr/reVMyaGbXHYqI8NOgZX+QOsU6l5X+U3ROBA3v8lMp3VYZjuCMvw3nVl92EPx5sxMeIC\njKwe/MIS+j7AAQ9cAukwMsPjPHEZB2644SEOLEYbKt0VuXZvsXCZwFN4avr0TMEAHLxvG+D8hkGb\nfFHotsMx1kwhxvjuBQsXMxYJ5dqvmEypTQ9+ORHXQoXWEJUWfNjEwzG0qxkd8N6DhwP41oPi8zva\nS8WwtqxAM8cxDhzDMdYFGITSPF/inyTv0wbTijV9meXaQowubzyqwcpB7T0MTAwyRrS649E+eyER\nmZf339uhxAiNPp/nGupkbNmT4lyB8OxfudbE9NXC6AAuy3AdB94+3dIRLSsYAFb6ms6Vwi9pNBvi\ngkISADDnV3LkC89azJ8BMObjzbMGPHfIlQmxn8Z72WFKnckjtu/fOSNL3cX2N0p6h7StsesP7fqE\nlrS30aPIAIadNvl0WubDP8bCEc6knsXikrQfv2UXeOSQElvA65FVeelnivTwAzWh2AN4IGGbOU5L\np+AupCwC0w1Pa6ZX34KedMuGJubwmXrP5sJ1Ol4N4O058foy8ADDdUmbpW2+IvAWC49iXt7jYYYL\nW5krVnYMwzg0JH3BPOsFL9RcaZIEjnFkCe/K2Puybimedu8eWcr1cGc69JY+bOsGjAGzzA8YQIci\nubFHRMbm1WyFZkeCbhb/LlC7Om3sRA1mhnDCd7PusSi8IEQBq9eVpSlVZGjfQvlikM7dBeC6LpmL\nwWpPjIGI9BcsZ3mzBSbXbc70F1S5NB2y5wrcprHVvpK+wPdz/b7qeOG2Z7iD8y0IqMq40AAZ9M40\nyFf780r82JHFc2ECCp+oa0qn51uGpVCmsSNPMF06gCucGXE8nxuTckK3S6if05FeL44OBxTWBjxw\nZQdeR4YPwx1rMusNHGCykJWK0bUFbsAIxxwZAdCQVHlXFjT0NJ1+OSuQWhyclOyLjT8CV7LDY2TV\n4uPMmY4PihLQAWYOxumtmqpezBAeiDNt+etwzpEwXA+OIzeF8RYiZmrCmRWHZhPwFBxjGTA5pzkC\nc53ZQ9G8nm3QWSsBLGXnAM6ZQi9zBawGpqLWLYoMFk2YCBogREOwVhhjeJp8Eq5K2KlwYWFW5BCY\n7F4dYVjzRCwD6LwF0Z72Qfue6THM/GRq98EIiuZVr+XsOpVZqmlqZpuz6ZnFmU1kWAMxc2yeHQM5\nW3JRKP6UFyq1AOgNrxCiGcphqDeKwRNCC27d+/eY7lqXsEIeyazZEjvKqYjqwe/hnGbmOVJ8MRtO\nZ/Oeb3+YY3pqlmXAAzLmP43ho2FZOWgTVxtZPciNPAiyPbKh5TUyXfWA4WQrMCMBZdQBHWYN/rSA\nLzBuPRAxSze5G3yln8KMOf7IjT48veqO1ZmEkY1FwpCVd0cirZmqEhd63M85sZyZdGEcYsJGIUhm\nXZbTlo9Itr0Yhc4xsq1ZBAyDjTcWEfrCKwPiGPQTKcKSOzjnbFQ2F+CcsKxntWzXLmpI2L4g40J+\nAPUVGMIDxowD2ulrLfYL7GxGIRUPZFQlurIQlhGXat0ubz/9V3MGE7KIRqbyISxJeMl0MFqcAayV\nDmFew4cDtmBnXis8ozbLFqZnaHIuYA7yyALMFnoCUytD96+btPiiyEClsPngxaCGXCkSt5JMyvAl\ntIOQApBavNAyvc5mTGBBSQsJEBDmCgWYMQEFwEFP8gIQI23ESzgRR27+wMKFdx6Ww0phAY+FNYCx\nWHLrgK2ZpbhwDB8YAZwO2ErtTlM9oSjkJ0hhEJGRgaCdCkI/QdYRBouz4uO5qgsDSpKZcHhmGDJt\n+GKGh2F45Y5X7ngYA8Mca82cveADry45Yj41Jwgxj0zIoT0u+1eEnJB/YtkgfE1nmh0B88nQ4FHw\nf0lZhpNZE4rTb8Z9M6zjyLXHwpDzkIyoAiGlAwdD0bEa8SVS4neWQ1EOIQKBJ6qGVjz0T7gBIz2j\nWVW4Fvs+Cn0wO9CEbPvc0twaqzZt4QjDQVquvbVGJp1rk/c/zIDDsxtyoLIXM78hk88G6SS3LAWf\nTE01YUGoz/KHjxf2GSTlF5I3IKR+2fXmrhSYH9rHUfXpom2zUIXbhhEoa/Js7Vm/0G8wtfBiAF5D\n2nmyE0720kvimmH03meGoFl6918F8HRwXPjFYCuwPNNBhwPXcIQbjrUwbcBNhTmJOk5bXS0YCtWB\n97zSg17ClJGC1QM63BKGLtryBACEi5nk4/Q6y28+mKBzGYEHn/joyOveGO8fCFyH4eEYHH5S4ppB\nGBIerNJ3UyiknjqXcX3y/i+eBkRadm3TJh8G+/zzHDGx8Xe2QQORAG3vxBR8JncmVskESKHoBxDB\nEfOE/0aNGpfBmg/DtGjSweJAFjFwlkwv0uSKdpB2VyKaBpE+u0U6Uls1W9HurWBkhWHOxKkhdihB\nuzwbzBjSlDBmmhqzNRGLw2jV0zHLpTVToftJfPh4UWEQYmwgGdUmJbMXSKiMTTeGRwAzx6IZYZGE\noBl5Bb2gsBtQ3V8iPzci7fbB/PcTwNVz0mAW9HDeIBzyv14jQziwbmIxjDa7p5lwmuMClFd9ENou\nZCZhEk9unJlXSFBZbyMY+155ziFGU5IPNnPBAV9Z3jvWoqBTXJoVetGNLhyBq2VnogOuVjsJjzNI\nD0NmFw4zXC8D37weGACe5ky73D0FggtmixHIFGTwmkmAwJoZ6Uj7e2UnZCQSOkC/8Qxm0yW+UZmw\n6p3NFRdq51iuBoVPpGB0pjwvy+upPDg7CjEvzdJUUfYlaA5qiC6QkR1Zh4VRS1FwjcMwYTQhVF0I\nmjRRtO2SYDBYZOTnxMyWcHR0Rv3bzJDtCGR41CMwMWkaZtJW+soOzDWx1kwxJXOT3oc0qjIj86uO\nF3cgBqIFAu5/Gr1hAbT9Q+bYgYGcRAMZYlnIzDYL5zbQOaPPO1gAlOd9FckA02i70+s/SBHDgl2H\n8vMHNUGY4ZUPTFs1cmyUBE5CnZ5DLR7ofFK2G9gSbKYjgJvHnv3upcol6NwCsVoDgc+VyTgZoVAl\nHDw1xAg6FSMdgg8jR6FdmeB0scHeBJmjMAbgR2bzzfPEDYGH64HXV0MEbX5TrF77FGXjO1ChXzOD\njwMX66Io2Tqmz+bDZKMT0kGW9OZ1LkdGIlYsnCfF8gCwFswG3LNv434YUElPRl9CdxAKCq4cPqvP\npmIlpeizPK9TcFQsr1ROYp4w4ZPc3075TaiuNO48HYWCUbGFVYoxtgiJ7kH5FLKHzQx+HLVObpYC\nASxEGzlLc66Zwo2hco+kwa8JJrygMIhoQxedt6/woSRxLp6LjlK7hEH9XNSy2jBxxcKTMbQTFa0E\njJV9hpr3p80OLtgiwytmnITCacBBEoj83mGU6ITJCgFe0D6KLBJKweGepkKmp64cEMKKu0GHICyY\n6FO+oGK6tJgBs4UAUUfGqQBbXJ9OMwbJUx1xQGZMoZqZe68Ow0fHyBwJ1jfMMNwmcIyFhYHHOeEn\n8MoGi31y34bT417Gi3aRFwAh/DrZjNRp7dGx5VkkJfZaS+YdiZfPZoTNbo5xyKjJMfVJF3Ik80x8\nwB4lSBRl6WfR7WpYSuYt5GeUdRlEhzIxCCYY/0/GdUeaopHmmjpBBb3+okulAg+igLwjK5Ri+tu3\n+6ZplXk3XWcAmRiWNOQOXA6n3yGvvSJDv2uN7NZkC+ostQopffh40WiCehTETlR0DlVjLVMGGDW8\npaYkAswIAc2Ig9JWBToD4OaAAzKN8fOg194wzfHI+ItTPrltJbMrw42L76f50XYykIJE9qozl17D\nSkAz5qSAHx6MXwOKdDAvqKufxecFh6Wl9OyKiqQNy8ZfZTcb5O1vB1vAcKrw5ZavPxjw8SUdhl/O\niS+ebnhaaUbMCxAjx7Wda2a7LyMjDGPdA7v8mPLyxcAUxLHKc982PQmbAg6r03qzkps2caiIB3c+\nJRUny1dhvI6YKhWF4PCepAReBLoytW6jU7UeT5kn4YLaK3OrASdG7XQuY5u6bLteAmYRcRhwA4WC\n0cTxVEIzgvThlbAEBJO2chF3AVuC1gH5L+VPCpnGMRCeAvuYHPRDn4yQwoeOF6xaBJo2BA3l1k1t\nKaZQT7fAKs/xot162OKCeIbqSCEjcsS4g95vI1PU+ZPB5fAT1RgJWhunDQj6HTS4U/XiAVT2miGl\niVPyeyBDkOYZevSo51Auf/7NyADV0AJyitKaOIzTlCTURqoCX5lrbmqEAXnXUzjcNTnNJ4DaJ5xY\n+GQGvpgnPr05fuZ64PXlwMNDjlM74DA28A/k9Ogvz4mH48DVHTEXznnLxCPPGgf46lwKtCCT74QR\ntcrelDYLviZEGJBDuXJHkf0LxMCOtW6oTsFm7H+oZKKdxniuLZcgJGhM7s90XGo0WwocYSvuPe8p\nZYJUcTL9QatveTqUE56jSphXMLswkikrAuGsf5iArQX3ReFGiuC9068IFTMla/A9OTPVO5HrtCzD\ny/Cct6EMyoWfWmHgBVtbBcq2S+ZzEkmO83TWegMHMh472I7qMMOy7CF4hVWTDRXFEERD5qWmCgbv\nIxN4sv9+ZnPqPvK+DIEL72WVttZtM3HE+TWThzrKi1zohZ2BFgWY8SQGpHfYOwYuON95EVk3r/sy\nV55CPs2SMKWmVYeiQftZTs+069neyxzTgE/PM1GXZ7rxq2vgoyPj94d5pvKuwNt1w/JsqCHH4enA\nMTLL7wKv1mGJFqgJKzbP9dlpYGv0kYNnpSEUD0g0lV+PqlmQAzNYA91+JwpqHSVoYhM6Vg6799Im\nkCaNbHtC9ABzDpCJaBnCS4zjVCge2Whm8t51hRXAbQLLM5HNS7OzuGwlIlbVo8w70YcEFpbMHvpl\nnLMvKVjNEjsligSWS+BaOaE/dLwsMgilmKbRduFE4sXuOtdNS8cALmC6Mm02ZezBEsofkXX2Hl28\ngc2+V9pFJtxolqE0uZUZUH0HkNI6XWoAWPGmWLliuAKugoXyJjiTjDJcaoVSFJaqWDC5tLzzNAEE\nfRP+UXgs1hHAcCxQI4rBksKMjEgMja40TGEwaLocBrx2wzeOgddHOhcfBvD6MLy+dMefPHNHSArV\n4R7cnYv61FDSMQMVeR/qqygNpWYnZSasUt3Y5UfUOtEM0eiwzeQQ09B21I51oVs55nbs34ylC+6w\nXNcF3677Rv+9YskoLySgTkdSJOVgBMqfIX/44mecWYhqnhw0u9J/kjGN9JWACCfvRYlV06zWypgl\napYJYovZtF/XFPXFhMF1GU5qwsMHTkEgsMSXcHU4MwPd8PF03DzRwc2Aj2NgGXCzDAW+8pFhIcL0\ncr4YWjuqGtJSgwyCRdntYZnYcTBbzMnhQSefh3wHsssZdgrG83m9YYRpke04luzpAL26uTHDPDdL\niMOA6/Jsne0LiCSKC6DoNr/JTDyaLr5lATGPD4CESkdVmnstNf4MmA882MA3L5YTmY/AwwBeHRzF\n7p5OvKTmdKbx/CaNG3RShuYMJPNGBOs8BMppFqD9QdBrFKSC5e8VCAiGmfOzhQj0noEFRkQBsSO5\n1qjdpjzqXADarjb5B+R4VbIUzadQfgqrHFaiiMYDcj5KaubrsbIWZe+DICSo0LB6MtoyuE8qZuMK\n8AAAIABJREFUBM8MSaQi05rV/WEXeBSu0c543wTIh44X7XRUMXEBXQs8sDgmLLXqky18vNKRdeNY\nrcsE4sgH9sgcgMWcUdUlLD6cGLwKP02NJlpDKiwmZ2bD2wasC4o2UNZbx54lxKypDqWntvMoG9AF\nPWWGSGtH5g6ELSxn5aNlAxIlU8Gteuc5GQwu2Axq1WQ0+Vpggs75WWkl82w19iYWHiLwCo7X7ng9\nBh6cTT+Z7xAEvoEUICupF9WoFFaRGVhnhy4wWSaEoqgdyUwaHQa0AKMyJ0slgz5HIwRXcKuxphIj\nhPIbk+jnFrLLnxI4qxyCMN2foZyccl4JfkM+BRA1pHBZYAblUgJWIX0KhXwqiyxhVvdo6jr6VYzK\nLBVcy3ghXZq7gWyiVaiQAkr3hOcOw68WBMBLdjoaK+0md9q3acdfLfPdY+QwkQezFAKEkpfI2P0D\nDNMWHsiBE8E8fBarePoAtBsHCMsAyCcQctaBzS3NKLX5tVTMaeMH2Egk71W0U/Fy9EYKZOZ9ZERi\n3zR9J5SOGg33TFVzvE72H+DgEs8pSfpsEReJquKa5CorkrX6RqKc/LeQWnsZ8DSBL0/1A0xSPsFO\nRWawEqdKo4lCYKDjDKXdM5Q6dK+me0Q3h9qFpHnF+0tIlDjls/DLcgQ7/SZeTGVci00wbH6EXBoT\nv2uB+N7ozwSKoVJAE92o4YnMC6CQQK7zqqKxCbAvQZsVJTRlGtU1WhgYabNazhFKpqm2Kg17ak/b\nusk9I8qRP+T53ATbF/Q9x8uZCdwci0yIWehQ0QOYPGQZHTh9IVZWaiVcyk24mtd4cAcq17/gGYke\n1oM3iR8YS0b5JFLjZ32CkTgV7roQESy6duXcCV6n0AKiGLlpL92XR6icV4kpYql7IklGoI3vTBhZ\n6X3GJjTEGDvE9Ur4AbC6I5F05J4Qo5Hm5zLc4PgyMqT1eC58fgY+Go6H4RyAYpU+rDBhMnFeUz0D\nFbrLIzMPc3JSCoKDSKbi9+h7TwiNEl6t13W/1IruHIhipaWzH8GoEl3lJsjsALhOMkU3iWQK1OtK\nSSB3aCLHwcsfEByEoosrRFhiGVloDaYfhza1+jE45MxmOJAoTfeh94WmZkWosr+C8dkkPPKhJTwb\nocbXJRY8O15MGMgRpXCdDTnqMpcgAnBPn8AD+wc8IRnsiJTQF9tyBtgURY5CaQU5DStvnddUiw0z\nhZLyuzlco1QrTY0UOLK/BlAwEqXxxeAAInPJh4jaUI7EDAu1tAiGBaWlLBhVsJwrcMJhPqmRFjw7\nkySaiYUTSmrq0JQTvotJlZNeEYztbufK1uqBTI+OFVhPib7ejoXL2HoRsEWaOggb7/GwbGSi5quS\ndYk+5LhUkVctUd4HzR0HCIk7YrJnDuquO0LC80BaeHLeQOZcmPoOgghpRx4tyRXGgLk3yvO+t4Tb\nqLoFxevlG1kLmCuLklRKPCzj/Ce66WlGMPJc56b4ENn3EbN9Hhr5Lrp6Yps7p0DNhjDyGVGd1O+2\nk2HSvNb6a0yFF52opFTaTP/NBhUHrEp2H2zgxCpmfwXZk8rVb0eU8zMIEio3OxXWvUMKUOitIWOG\nAZmyE6WvqeVX3bKj4X5qaJ1EiUzSRfRHUAlpk/K7GZOXHpNzCZL+0ePAHJPnzJObB2xaCQ2ZP0Nx\n03ou3WV0Ln/QKDIhKOvnhOFgmHJG4HGxoQYMk36KVzD4cCzGuV1oVfe3IvdLSABauxZBNpL5EXnP\nagKSTVS1OrlwTm1ZoeBEzTTvgs/am9jDVoTgOlpRexnx7DO5zpGTW2v/FLM3yyajqPAmKpJU5kPk\n0s5g7wE2MT0DVWa8oCnUwWoU3XMUWlWCWs4O6SyHNRk6RhbEjZHRths7SWWIMSqELSRSDkbe7wbb\n3nu8mDBIqOlVUzACsJHEvciUStcNaTRqdVBgCGseYSUI9rx9+lzLq512WL5rz6QvCCOtEkOksQtz\n3Tnk8q3dKy7V3s/n/GW3NYVBdlNBXzOISaME3NUDr/0CR9qOgUxwuWEiInDYwDGC6MlwW8ix6TCw\ntrGhvckwoUMSygfIax4GPLD//+EZUVB3YaewMqSwzfBsjhl7ODL5xq0hdwooL2Z0bHkHNG9ykGnb\n+0PPR5s3BWj7IYLFaREo9BdZokcLQGbTBDa6yXvYEBnmJnjY+4AVoGV33xX1NEIJYGs/f/8RKZvs\nXJzJQHOh2q2tFZUWnOYGexMuhaolbLJTlCIWMQyKYOg+sA2bWUI4a0GVoLHf11pQ9vpXHS9nJriI\nv/vxZwRhYLrhsuhJN8+mGtjDJGLKfG2gN10CwAz3G0Y6WJZeeTGdhIG87SlYo7Q7v1roopa5NGts\nGpLaGwnZBlQJtwkK2SYemX3GHRqW2l4oQ3kB4DO9csNHRw4ueRgP+OL2iMc18fpy4GrARyPw+nIg\nMPCTxyd8elv4Yo5Mg6YGc8uMwRQEi23LgFfDgVjZavwYeGA586sDuHrmI4AJU2mmrUxQugw8HIZX\ngyXJlh2JHRmenRFwH0RMex+ETGQSImCbRSjmc1iO24ulCc3UkfTwhdrjleaTtq94xIaLeO7orD4g\nEDM/67545U5cCiSNFKpw2+hElAbsDrr9MOSQ2fADQ/6EWIJQOGc7+tbKRKQFo8VC8yNQfRm0BgEK\nB5mY0c1VhByzerTN3CxtdzgW+zJ8+Hg5YUAmcYCQOdt4HUu1+lb9BeRtFzd56PtAmGe+Pz+rsJSB\n2I1dbmRbjVCBzXbI7hJJKmpQwoEfQxQxbGIir6m8UQNk/pgBGhQKNFTVM4SjztV5EbGFOg2wgS9W\n4A0Cnz8BD4fh9XpMbX0YTrbGfnRD3E5cx8R3HwzfeBj45HHhzblwhuGp4K9ChgMXy0Sjb1wcH1+G\n5BBecWry64uXrZqPt6p+IAV4Zi1eh3NYiXWjleOCcy7c5qya/8nzGM8jN6EzSQaMDID9CkqGhvw1\nNM4K0aHUXej+tAdbmLN8MmWmpfc/Ih20VqfZksn6Ckmn2p++JOmB19jU7v13QYsks0OrOpLUluFL\nOia5AXNb6yRjmkX6m9eNfY0kqEJJdqzXQFaFIgCLn1Jh4AFgpHbS4Cc31ecBcM9uvkh8k8wR5fAr\nKW9RWrg1QF9HzFcMF6hyX1GH2SpnixyEoik5eoQUmnDA74twRND8DhRZYMqPhBWSuF2Zk9jRDP30\nvE9YaqzBPXwK4O1p+BwnW57RPJgLxrDgxYHXntD942F4bQNvA3icwWw3Zm5aDhl9fTg+PoBvHo5v\nXBi1QEcQVk45zSpFl+BSdSd7ArAkeO9dmWsflWiF1cipDhL28gJEFZCoKEhp8/5OHmvPfCotvUoT\na/9b8BvfMO+sw2xwIkZPtRuFOrBB883k8WfmhxynW75H+SnADZbwJwK0tbJXI1amqQfY2yCdg0Y6\nSFoog5f0RTRFk6Z6ciZcggXIU/KtBAayl8JXHS8mDC6WJbcXqAciB3wO9bDP0d6pJeUIFHNRCjKr\nLwkzN2+Re6W/jfmdRaMSILyP+ik6vtPj6Go6dEitkAf6JOWwI8VIandtATVzwoh8Hnq/FVVSoFH5\nCooEiPCAHIQSM09+rgXEicMHlnE0WQBv58I4s9vyK5bPvrLUMGoOcngKjlcjsv3Z4ThG+iWy3XcQ\n6gJPJyF/GGPg7fPInHtGCuZKlMYVmmGZGCNBwOfXfooJrZAY11W+GCGzivVRm4bCuAGzwbVUghCZ\n9blCIAQHlC2YfQBMg1Hq/WYyfU3SRX6HdNjRJ7LRG/hZoYQVYvhtA/kZl3Zano1laBosJHrVfRtQ\nIeLFMuyc/4DKJ5hcf6GHWAsXc2jgqvIWvqZo8euFgZn9ZQD/KoAfRMQ/w9d+H4D/GsAfBvDrAP71\niPgJ3/sPAPzbyEzNfy8i/of3nffB+OBQZxyD0X7yZq1M9uFiLyjxp9OH5QDTYnvZ7R2Tl6TOB2Ke\nNxe43ygMydRalOYW86v1dOWXlXDK66cCjNJ4auOVpkveh1dqMzcUzSTpNDQSSW7wZdOQwwBfM2Pe\nTEd2etarIk3ZjTB8MQNv12TNASE/pCFTO95W4NGA63kDIiMH1yOJfcbJrkM5Vv3pNvk88smwt0Nl\n0dkWbUnEl4y1ar0qwUb3wn0Q4eey3ycM7apeOIxKMEOIBZ1JJ7NzGcD92rY3owQImnYUztSkrenz\nIt0pSoIAua8yA3ckVAijeAehmSBBOtJPczqX9WyL9M6FIDw00mxwXaKQba/dGJnZMMntYTnBamHU\nDItE0L93M+GvAPhPAfwX22t/AcD/GBH/sZn9+/z7L5jZnwDwbwD4EwD+AID/ycz+WLwn++GVATmB\nBiRqepItc7dPs0IFYvBAbn5m0OVrrrg9YtPgqqrbHEg7bLPOHJTG4u5h974DyrDDXQHSPXRVL4Nu\n/TXQhSMSSIumgZnQ7e7fIGKAGBmApSBYzDzL52sPuUyeohtQVVh2T4q1EO6YEXhahjeLE5csnX2H\nZ3nrMODNufDlNKYgG16N/Hd19V/ANhcw7304cHXH8sWx4M2kK7Kd2lLnZarZFIYoJsrPN/w2U+Yd\n6rUZUUIGAMIdmmeQWnLVqhWqqnMIcdDwMJBeAOLs/N3BvZFAiD6HmB5RZpJMjGW61jNTRkJQf1EY\nyITRa3NpujSdg4HNrKGPSwIgWkAOrZngFDJ/ZYxg2nNS76CgKDX1e0UGEfG/mtkfefbyvwbgX+Lv\n/zmA/xkpEP48gL8WETcAv25mvwbgnwPwN56f90pKzpwATYrNhzhKMKCYU51vRf0BqI0f9PLOqK1t\nCDeLwPRJJQ2hN9ms4GH+vS94E6kotfMH9XpUZZ2EQBWXkNiqPBVWDUpqIIjuT3Yq0Dn93PRqwEGm\nCnR6csXVebNKNjLL6U4TwFMYxlJDmNbox5nNSi8OjlsHIxfpcOyBHElalwWcA3hAjixXU5W1Ypsd\nKPjd+y4TIQmYJbu1pI04JDTU/8Cczzw1FYm5CZGNyUQnuVZR++aQjd+baGT4YuISUKQNA1SvUAJB\n64q89yUCfE5/fP/+//n6okSUYNBadUaBVR6FWDqVERuemJCp1zlrbBsgG5WPaXcCRIrmq45/Wp/B\nz0fEb/P33wbw8/z9F3DP+L+JRAjvHgGYcZSWNoJCIHbmj5bM+n8xU22gNJNVYVCVsZYW2uw6rpk0\nqzRUb0tvvAgi6nM8P6J6GxgfSFrpcGm0JMS5AmtQy9ediOGtiE1arDWTVdiytBsacZRwjHRKVSKW\nbUFTUz7FtoKmjrqRXZqi+yjcIvA408N/AYe30r9wONjGzVlUBRzT4CeguHdpYDMg0v+jnAQ3RSKk\nwTtKkIxLFOC2kXsObAGFgVv2rrCYMCYqWYwSMDn2TD4NMX6TnZTODghlOta9w6DJ1nfC4NmJEvJb\na/u7q+QrGT5cpfmDCiCnS1tRgdqTyQhNR3MnGzXZWiEt7GjD+rolbCVMN2T0Vcfv2YEYEWF33STe\n/cj7Xvz1/+2/K1X7zT/8x/GNP/In7r8iIUAisUCHkdHMnWvQUJOc04xr0vBipk1iS0hIoOSpoJWW\ntkKfthg8wlA57rFpaDNOSM5CqQcfmBa4RbBMmwSK2Bqi6Hl0Lbt7nhDDm1UoTJ+RcAzYVntADUKh\nqD9qTVDGSBKUtYNuBqskPTXZzQxjAU/GUezOQasUvpmVmecdfDYlEx2I2ojdNHB3Jhtx3JqlH2JQ\nCIwt994MVVciQZfIKCc25cM4E5LUb6FDzfIBqOnLnifQSqQLlSTINCpeeS33HE8KKoHw7tGl0bWR\n9UxL1bIAhVwjjMVwuHEtlRgm08TQQldU3dlOTfOg0Pibf+tv4m/9rf+raOKrjn9aYfDbZvb7I+K3\nzOz7AH7A1/8RgF/cPvcH+do7x8/+C3++HTW0saQiDKrJ16KgNiYI31zaU/83QLkExUxtoBUTgsRS\n5sCGfUvy34WjSq7W+VKbRTFycPG1wTNSEyzLvoNJ0AldOzmXZgoFnIeqLNl7IFqABTk+e+Wn7Zqa\nKc+UPflBIdMOU9FMmTd8vZrCbgzsRYypWSs2b43I1OxTzWYHE5KGWaUW17TjcipuaMC6A5JbQ3Wh\ngeHGcm3ejwQJDL6iS755bzv6QQn1jgfx1fzp3ibldh7pj4je9juBEVa+qI3gNtqQQHoGD/T1Kl3u\nb3SnaBRakGiXeauok5fUyIyE/E5UurrVRfmkgeyizX3/1V/9U/jTv/qn6up/+a/8VXzo+KcVBv8t\ngH8LwH/En//N9vp/aWb/CdI8+BUA//v7TrDXaWtFhiQ/7zxt2kBsXlBpJDFKM76+tml8MnnlYtai\nN6Np31tjAhKxBquNAKI1byEzSuvqSNyUIg12i1k8lVA8mTjppy+shKZ6rx8I6vUn31DZtt7dmQre\nPns2Y5oyx+1s6cc9P3HAKwks7z05Q1ryQCMVN3BsGjAszZ6sXEQVMXndY8q6FBBWwsDQgmFHDLmc\nm8Dlb6YW17XqQjvaKz61EnfYAQpGGL32yI5VcxmZT71pEiyK2wGwxbDl/ed8p9NctKQ48T3heZeu\nM1F4gxFV31BmGs8TyJBkVGFknU+Vkxpao3VS70515XYfOS6vocKdIHvf8U8SWvxrSGfh98zsNwD8\nRQD/IYC/bmb/DhhazOePv2Nmfx3A30EWY/278YGczdLieQ0SRBRzStpqgMb+TO0xtiRapKc+0Fpz\nID2r3dee14nevI4QoBBIEhrvgyq2NOyueTetooZYhg4NNVHwCozxb1Tebdairw8ES7RRqacaIyYu\nthV1r9WVGQHB3eYsCYZeb4VtBy+sJqnVfkuML58HXxvW+QdXz2nFbo7DAxeLDe4z9Agrfk2B0RYy\n0GgB/Lxi4W77veoxVu9VSPBuzyla4H1idNKO2sKmTGAlwkqBsgsmkgT3IZOButYin0c9FyyYOlzs\nCKJWmQZRDLybktvm7LIt6Y2JRpWTIqHIQqgUlBO31U1LFhFoIQ6tqxt8nVn6DivB/Hs2EyLi3/zA\nW//yBz7/lwD8pa87r8tLjtapRvhYCjPQXYPz5AAHWWY/PqCTQVZC6dKO4LlqxUsIbD82AHcvszIi\n8Cw0GaWX6hxisLWdM/c+CUCp1ua90aVN0I607n1IRqj7szL7876iCLnMFxFx9LMWmulbKibfi3Yi\nMlstU4IZltX5mU5fTLeyA/VcAcPE8BRoy6xa0ScysM4dMVR7elXYgRq5TJFQ4VM7H5MetvAcEuUE\n90brXypFyWXMHSjEEZ3ABJM4J7sz/GeKfEdfG0hGTkfoktre1pLmppiRz9HOPa6vKCgkOgI116EU\nzDN68hRenbos5gdzNtJBvThzUwMRHJG5Oqsnee+W724+ve94wbZn6vhjJZ2VEFOEW+oZXQykv9FJ\nK/pCiwIxge0oErufU1N3ttAverspHGLzRt+ZGL3fYrBRWFc2Zh77cBi+Un8H9tBoC8fd5Nhj3jCr\nGXt1H0RGxuKrCktuGg2bQKnzwCokoc94nXP7pwvte8O19rrfvOxCZNZh6Hm6MvLeX6DvWwn9WnOz\nWhM9t1CyZjIWc2O/v6hzBM220I0pXY/CQuinovWW512rg3wp/NLvE0RQ644mpO3J4MqFIYSvJypp\nZoUjKtQt5qfAvFh2oy4nNm/bec4MB2d0CjNTwNVVuughIsesucww7kPsauz9x8sJA+zaWVpjt3vv\nGaMgOiVvIYuC90kIgpZ7PoHtRLtB2CaEDbEVFJRwF2zepCxvbhPw2x3sbbi48dHP0ZENQMmGwVFr\nYBu4yjugFJKQMzCcKQEDK6GnJi/72hqTnGJnXOtz1YNuzljHllGIZuDDGCEw+gc8oyYXWxh6Zu0d\nNS5WwvuVJybKCQpmoyaWlu212pFXLVRE9hyo15tO9OJ96I/vV/aYciOzzFcXUUn1CsNpyuLbBHBj\nQ5YaK+25xQYQm9mwGQ+hTBQU+mh6MlQJPKVwdrWKCplXrQHXapnB4fCRqdCLfoUI+SNW84hvCIf8\n83tOR/7/65ATS/3+vWClbQQrydnaNYBitgIFRRx2/39rAt2ZCtasq9+lgnL/yYTW32sVFLWJYv4S\nLLySNOhuTy7axWu7Q2m0FIKKkKwq1qn3A410SCCVlSfGWvt6bAlIBqiCzWHb9WjPmpSmIjjrTlAb\n0hzLSEFUTcPFAhfPWoZh7MBjdB5SyKaAMj0GAqjhpvSKwMKqSrX7IvVKav3uf198Fjacs31uApVD\nCRkrNJE00WKraMuQmYnLYJgIJUs1W+f6e3aGuoOT6F9zz6LoJ9FS0rh8L2XcWZtFJgEsTYa+ftGf\np8mcfM7CpVBsSsnoUcNm++b4DPFTPFFJAlulvopXl8KCmGqLOVPvVmstfq94Ffe/dwJPM0Fr1Twq\nww07qBaTbTbfM20keL5defsNdwlNAB2hsdnwQY0t4oASdZCNUvW8gTKpjFA5Iy8c8sr77IpCadt8\nGg0gyeSVKG3c/xzlatjXiQuZa75qFsBaybLZE5Aw1oxVkJZ+BBG6dyOURiHbmmitaa/s0Dv3BhtT\n2kY3Egwp6Lr9eQsx1wbu+xeqNHGtRv4t4e+Gix902hExmmB/2vo50Ir7xNLi2FDk0u99WtTN6nJA\nralBSVhEYFuyUy5uU12mnIMCPBBFKBywAnVftDZVUlaUH+6rjhcsYU47a0QWDKeWE2N4M40WpbRe\nwEw9jVEcWPY7iW7PYNMvlXseeeIyDfIMbcM1bsAuZdvZI61r9faOAsqpCcIzy+zAiPS6C4mEodp6\n98O21hoRGduXpiciwEjCufLZzIIhQlSYTzGU9GVkjYI0BNCFWjvCklZrJKR8gUQNB02Dg/kFGhS7\nkAlVJptgE9CqOalrRPsdKr9LzwFjCfX+Rq99/S5tz/ZgBnWUbqHaviTtg85pkH1XCoECBVoPohuE\nBpDkfe/1BmD9RXYyEgKgUikTD8XokgIVUUJ3nyrhuRlbZgYfd9KEvGA1lm4xByKFZvoKZGLuyEbC\nrR0Y7z9ecCS7Bpik2KpQo7dWsyIq/u3SXIEqJXr2fAW7BNVDmt4adUg41P/JyJtAgEUhBY03q8/b\nRqq2ExWK2Y3TkYFN49te4UjBJM0MlPBoM8la02//AFROvyP7Ggi6D88KRXWPUo9EoDXXjNbLemdL\n7oTCZPrd0I4/5zMeJo2P0nbqDQAiFgTnQSLeQSydZ5B7n/kjs2zl58+775iLUGr/82KK6VcPxU3Q\nxUZD1fhjMy3qVHryO+yvjc4H3YeXKBUoBYJiC8KwxCEyV63vSUhAjWIqDbuQcn5e5xISKcEV3R5O\npdItCDr7UYIiv/NT2s/Ae5WZgNTWdGoQpYHq9dT15XASg28wGyK8krC5Xd5LSpC4aYpn2Ya6vjZ6\njx+nxJagUv4BRQZPU5lzfK66u4gWBrzXMgVabaIzK60YBYYSburUrByBQDDMFNks0w039sJL+z6L\njg7PNN+DDLkQiNJ6csw+x7atFctfvUm+mocJfS0JWd2B5UuRISBEoH3K5VMUxJ5B2bJdKGy0e6rL\nT82sEml5+GOTIGpVNze6s4oSGrfetj3CdhXUb3fy6A64RO1/mblURaXtRQvWeQ1i9vy3UaPFJqBQ\n2l0CSP+ySYltEZB7jXhfqpzmhNksdfah42WFgaSfFgkKIXYlXuuwlIrOTeskHWkbQDL5eezW0Z78\nFhxNBvf3lV8S0QKoBiclLKRtCmzch/tQ2l3CCHy1DRM9UyKk1kq+EYOQkYRECqo9jASop81ETke6\nTcPjDK6hVcLQ8M4QvDxDG+JxD6/z3ivNFGaaV2CWnu09L0SrdepZg23mjePa+Yk7nw3NtswczEWe\nM8ggUfdVvoC4J+cd9UYJGC8zbQY6H6P2x8qfIO3de4aSBgGUP6n8haV7mMTE3IxCTZYrnuPV9zCq\nEBAKUYhGen1RfiblP1Ti0Z3G7+jXWr1+LVA2Kozo177aQgDw0uPV9Ds9zhooKhjZ2l5M4MyrT8Ix\ndd9Fr6kSg4qRdsjdVy/YeH9TTYB5PsXM9YrOS6Lcklsq1810NUUUFAaVPlYGXQsQhwRLMCsv7ijY\nwCYvfICabOyGGhazMY9VzFIRBLbOiCwtvu2azABXKTP/CcZ6JUC11Z2CJ5urZN+CNBdOfk/RlYw+\nGNzWlploLWyxC9E8t8wIt8X7yIa4gteal9A1Brl6TvMx4j4aUfezvRYyk1Z74KHwMpXMWoL+ybBT\nzYoo4KtDd2Thljo8i2bvBYzUhSjPIA//8+RchaBj2/tdIKjsueY2LGLD1Q5URRai/oe7+ZBfdbwo\nMmhIT4eg2l9tkBx4npizaU7kqHYRkSilt16fA8plTk1rdd7oD2/Su5i/PhL1XalCZwbapuuoVbst\nWNv9UdOA1uawSqbvjkjGtWHchNfJarwsBiIxao1gHNe9Nm2f8FM5A7lu6rFPUWQb4i3VEX1ONKyN\n/XUDrNDc3pWKGoynSoHR+7L7CyTsDtidgEsThnF3Xi/hfKs2N8NU/wve91L6Z3iFFGXeGJGmBToi\nwso/2fgSlLrmhCYpg0JC8ybYMMQbwWmAy8UHU67z/Jhdi9LNGvVMqOdpeNPi4o6maCLFCjosV103\nW62T+afuZbGPRfrWQt/fnvFDxwsKg3YcilhA5q7avtgQQjF8w/R7vR7b5wQPm/B23Va8DxLOJmx2\ntFj8b/eL2DqSf8fuJOT3rE0EpU4P5FTjZMZ8PqLSAgJHaVCrEKpawfuQvyPJ/aJe/5AAAP0UxmtT\nYyyug4iCP1299tTIQ/dK+/ZS8F6NNe6zDnch+M6v1utb7wnu83YGFO69h9RVo4AWRAjCZ0NpTuN1\nEJo41fs/AZoVZNrI0GAy/8yF4hXkg5BpODf6632Ou88rI7BEKJFFdcnmdzSFqeA8H/iOdkNuSMmG\n0H8dCdDulQmxKiV5reyDqM+mkMi1XXco5KdUGBRBbWHDfF0NTA3VLVj/D6EJERs9wyHDYjEdAAAg\nAElEQVRmiPpsEkprcV2jNsH6M/vGyE+hhJ47iPeOcLA6kbE9WUA01GXBoEY650TQnqwsRQkry6Ex\nh8nzzsIr0uMCMGdmCwyOY5qMKGjDh1tqEGv70syB6DkC99mG/OlKYkoEs1ymy+oCJCK5XX+Jq+VH\naUfD5gfauu/Ao69rbaakA3nfO65NKPSq/U4NX41veN3SfvRfeGgeot5vBo66+3a8iU8qHKm10tOa\nQsUyWdsMylBrolNB+Q59xjv8pw7Fd9mSwJ1PALCKGER0lAC6Bu98rsVJzKu6WEdoUbd9otPLNoTy\nvuPlhEFoFh59BPV6JPEaWGQitJDrOkrjWgnr0paCz9o4afmC7E1wTcj5e2uxewdkQV90yW30SbDv\n6Z6fUMRe95kMMmm35+ez0GTAOR5dkBdFXOHKydAo9uxlGCtgnLlYvg0ioPIlcD0d8z6dmv9fRAQr\nNHZdREkTyAwnGU42v3oW3Jlrldglrz4K0UXmWKewia5H0drKhl5EU4macjTZc+ejZO8hGSwN60c9\nWECCrNNvhUaKUait1Rau/AO1Oux6rNfEW4YariK0V9iMGn1FroM0ca/5lgj0zqHw4f37u8Aytztk\nJOcnzKhg6Flbq/YRCMTyWt9N0r33eDkzYU1mzRF+MvkoMw6TuJwLJBQAEqmAsITETuT3EYhNg5Fp\nSrNLE8lJVwxrjQAQXZ9wF/LDJnmxXW+TyGVuJBfKlhfDLlO0O9+fcgYRH09p182mNENlMkooqVFJ\n1DMgUQmsKtVK296tkc56X9kolS7zaXfwAWR31QqIB6y+BvkRctzaBrFXMtDh26h2t+qatG0CQJSU\nzroox1q+xZhlRK+1JwJRFmYKRO1xdMdpvifhEiUMrOB3kpwQRXk9mim12KHb2KG7lSbfBUKhEWn7\nuxUFFKa+AyYSBRrBFnswvunQ7D50Sh2XZ9ADYduHrzheThjwqZ1OHrP0IbiL6LsmvYjZEupoQxS7\nhRi0tH/Duf0QXdvz18ATgkTF7UqH5paIVPdjva76G8+0Zb5ATdkaMM/XzryMLbCf3929WD3/iKhX\nIkjcPH+HYJs4dwEZQDm70k1BAbxRZBV7SbBYohTBdI22qTXWQrbiJFpAtjSDUms7AxHYqiKhXocU\nDMZOR2r3ZU7zcUu6qQXP6AIUgTJD5qgkZxTLVpYhQ4OzlcjcBBfqU5uQtH6w5zH88rpQkVf35339\nCsjzMxElJLrISbTST2jPrgTSRqYdTypGK4GP7Rp1n/xdNQrqAxHbfn3oeEEzIXozoxGCILq88lXo\nQgIqG8hyM6v6S0JB74ssynRoz39vfat4F9QWAT5DJHkybESIWug6Y6GLfP25DVqogg657OKU95uh\nvn4uoSQFI3chpqdzqhOD8gbUhBXlLzk3Aqjx3XrqQHnu62Ompr9Wry/5BWgHy+aXIJTwWED1QEiP\nvLGVGzVYAD7VZDUwAjiptH1F5UM4ZjpQaZfJH6HhqC2QVdwj/4uGzkQhF4AoIVU37zG413o5SCNN\nK73Sm29DjEUGV21GcLgJL9Eefr7YAiEKSTXYEdPfC4Q9oqDzIyIbVjF61LyEolfJGTkNGxx8jSTA\nCzsQuzCJdnrgLoy099TfGTU3hsJDmySEid7knQHvtftuPMT2O4nM2r/A07Q5IT/DJgyEQ8rdabGd\nQxe2PmdsDKnnxhZCjb7wqLTjZgIJPq91srqnEencujBn43EtCoR+pirsMQkxhSUNiecbWeV583WN\nhRtQhSOZejcHuL7G6ywEz8812gXkJnQypp+SJIUJ52JaI6vF+3LP6UISBIQ/2HNXUMyUWnUjEVRW\nKQUKynkHMu+GGMwxqemtpUd/n88ZK5jqvTZHZYP06K2v7/eHNmrb0a/2Vw7EEgjPGFsCSQsbQPd4\n0v9+moXBO1781lp6pWBRORuFGBpBtKaOgr7352lCLBhYTkG85zvbfZWGByRR9LliKN57lVXru3KO\nYbsvXZPPBJMpsl0O2+cgOue9U5NkK/GchGyRQ0z2Lw4DLkjhctkqvvJ86avIHIl8PqESs1XEC36/\nymojugGHa3ir4eKp6Z3TnWvWRe2VV6hLTroe3IrS6KlN2WoMEv7tdNvDahZOiB4lEtOUWrWnLRQq\nY2j7mZAo/Tksg5bjTTMflmz2ufkWuiNS3qM8G4E1o5KVAlG1GaKze3RZRJL7v9EShJg35s01WbUe\nEtA9do4nfsZTfbQC/arjBasWJwxeg1OMhCD4XX/nm6Xxc6Em8W1A3XRQxNMmRx4yJVJ3yyEXgtjc\nnKoD0CEkAC1itHDCJhCSnmoD7910934LfXNPMDThVej6e2gqobkLGnlnCR6WacUPntOPDk9GGSRu\ni4XhRju+K+TqLgrVZJafu5CWlRZrFEJYDaGsbF7rRkFrKZxUaAM0WskmQ2nuTE5kSu3e4dWs5HOE\nqYpkEwKbMNghPQAYKwdhztTcJZ5IvR1a100Jc/PNGJ3xVpzFr4ZuirKE6RrEt0efNMTzVG5EpLAn\n6G30WmfoBPUklW1A3rb2Ip6e46B7jfpMmRe2mQiiHb5WdPfVsuAlhQErxwiZKv015FkdTOPt17C8\nIhAwjZwGVDx6x/TFmPl+JtjMYmYtrXixzrUxDNBEvR+lsbUL4PdJFC39o5hL4qHPvj2HTCUJJvTf\nCmWJuIdTkyCw5sT0gWkZGhyeTDr4gOmgyxDmIPx0v29DJhGmNnCdXYgitYWsHVi5lMBSD0GIRUnw\nzHi0VfMIQUG9a0QxYgoph68uqQ4VLuneSNFk9cRgzKco5g01KE1hkM/idV/YFEDZ8erRcG5RBH0I\nUZ9V6m8hpuI8bLST197NC8eGbKK1sgGVep5HmwBFQxuRdQVp9GclBiQUngn5Nmn3fIUWZh86XlAY\nUMtUkhHDZGZsbZ05Bkp3LbQAb4EKwSlqQGhRCRc3gjRIq7d2L5Mg0LZsSMo+N2P0/+D93jsI3zFz\nti/fN1hpu1ZzHg3yn0i0r0ID5Uupa3U6KjzwFBNzBm4BXCLbl1+o6X3lpw/P53HINt/bmidEP5nK\nmiPmOj06b3Dzj69kvr04qZ2s1FPGfBAZ4ZtWfKdEGciUdIYF1eU87vaJp3CHTGMxQrZAV/dkCVZB\n6FV3qJuVRl9ca6GN0vTlO6CZYFsfoR0xbehup49doMuRuclBhmt74A5gqIlQYR3lqUdv38bCArwb\nA6pq877SsXMb9hTr8lN8xfHiDsQIhoQLsm/tuvXZEFRCxdiLwbE55rQZ5f0GNnWkT9zpZzGoEkf0\nfpFQiPl5Izql+pxj2zvrj+jvzc2UQod5FAaW4tp9yE3CKC8y69admm73n8AyXwEIPCIbZboFbljU\ntmT4QA0+EdR3hvQuhR6oe+hpV8c+tLxD6zOtu2F38BVNqupQ6+j72ucJ76r4DAmric2XSXsD8r2E\nFky2PIgwVvC7vcaRF6AXXnCN15JdL6Yn97aznbv1zPtOsip5vWca3n2K4WhJl13o1XOj94K3ulXF\n6rmt0KCEmzEXp6tle3N2odD5DI0eOtz44eOF255t8feNee8rGhs3aSaBGLZoj9/dm1WoOw+K+dFw\nfGd3ESUM3VH4HnXkPbXN1pZaM1f9TTtfUj+U5w5qefSmuyQ2Q+dlX5YA01oZpBKrCMqKjmFYsAk6\n7zSu3ljUY0WMXQmKqlqsTDrLadhmgRUz5R0oiAoJaW2l5ds21Wcr8w5GHvTas12wVBv0UtrUoqYS\n4/yOGsBKW+9HCq3IxqtAyf2K8uheKDB3j3ydQHugdWEuZplKQjKiBd10S0goVdiKHjr9e0+zvj+s\nBIDuvdYjKKzqgVDPT6xVCCxNq/ycUp33Wgit7dfjghdueyYDKRdv1UK6ofIQWqOTkRQ9EIyMtlfV\nCKS/F9VincvGS+5owZoJa8d4TgqPvMe1y4+8g2CWXfR3BAvVPqy2z0DC2JOmKBYKQ0Y6VOWYJAnp\nY41iyHyh7r7N6G6ejsNA1RtYXVsPKLTCMmQz2ApMy0hBOgczCWhs393t3udhXi5oFlO9A1vbC+7F\nXLqTvMHn3XkyaphrN1fcCZniaSysiS1Ls57qjtayTV7v7e7k7AXOY1A3iYYM2z4VXcYGHSV8eq/a\nhic62Zix/Eekr9p6CXa+X8iMC6JTVuLSxtp19lIOyoRsAS2z6KuOFzQTMq8+PfwdZuuMuoaiMKsN\nyQYcHBpRzCSYamSyPKcWcPcq2935gXYlNvPVuStUU6u8KQU5Kft8+qSeUJsOXk1DWdpQiQ0Gi9i0\nFny/hBtaw0cjK5Xs7jkENaQDmel4MSU1RRFrhfW2u828AZ7NkshqD9CONGEd9SnQewuArX2e5M5I\n1JXRKADYmEHOAD5P4akAQ5NaxY2Bq7mHnoLIgu3mdzTS4mIXRGmStn+okUNg+7k/i5TYaiTY953c\nF/DetHrKKBFVqKuEVyPQbUMaLdw9d69hnT0aBTR0yFWMQL3301vCbGxWwifuPIJVmh5IB1EQJjqc\nmkUwjrZkCQt+Buue0K3ZD9v3U0A8Y2ISN99FCRtep82DjmlDQmh7vmIkA2pKNAWWbd637lAV2xrw\nb60VUBA6G5Zsz0ePW2jNPAdrpHmVyURLxEQhkgU21s8A28Kjz/41LOFS0FND/laG4bpDHlvhz1pQ\nA9s+KGitIwcNxzdThsIuOElJIUexjcyraJdAnePubmL/xWpvar+j+0/kT0eLAflntlPJLtrPoys+\nu3AZVdZ+GTGsyp1LcG7ftxVaprt+C7twiEIpIRBVC9FIal+Dn1JhYIRP6Wu5E4Mo+5gexu4aG4Ax\nPwEKIcV2TjI6dubeEYHOt6n4kpb3G5u98rYzTQC++TJKazvN4t3rT9FTSGUjFJ5f7++Q02PbbGtB\no6EmVpSTd7osozItUDOtN5ksBa2bdacbpJGyRKLhrAxEttNG0O8AWK1TShCtYaElalB19S3dVz6K\nXgeZAe33aKYvR2IdTeigmbP1JOo9DWnhRCfq9gN9t7T7M2Wwry9fyqgTAAxWi5KN+oL8uSkq32g2\n2qdUlFa0ZdBgXq1RPe7aviIYv6/FivJHwgyxUgkMa1OJqh/Y1xsUHuQrUfF9fOzd4+WEgcaLlyRk\nCw8DLOjE2R9G0F8Vc0ATjEsrRGvq5wRHIqxy5sr826+xaeUiuGdCAZLg/R0JlPzEBh+5SS44i3bE\n5alb04mllqPutSMTC12jwWsYoEIqyVJ16DWgPr+6bVDruq2+wC3KLyAkU8qN59VIt3Q4otfKUMlH\ne7p2ayHDUHg3AA2GbeWZam8innnD65bLb5Ol5NsK33nztYK0ne+0oN1dcb+GBEKrkyj00d/F3Sfy\nzwb8IS0fCmPzsyUINn3zoaNuLwrdAOgci9j6aEZsjZPEI1YC9y4pa/v+P8nxosIgx0pliaavbg5i\n7L1voIZj+KrhE5l7KUdBVYASAmLOKEKUeKx4vgFy8qHg+Q6rokNiG3EnAW0aWlCtuAf1HZFu5Tds\n6KFFA0ohmCnMyutL66+6iWQq3+W8Aetdma/tnxrrZRIyjKlvjDDLG95j1dTf36A5DPaOQ9LRWr0E\n491NZKuuEjKhceLaA2Ubosy1d+gEPLFs9T41NCMRcLoQtj0roZzY4l449H62Pd2vtyzp7wgRKOG4\nfFilKOwe3ErY2LoTBoVRTJ+jUOPlSrlE74/pPV5jKZ+iPIR51+/4Bug/UrOdrztetrnJ6nRjxzYn\n0VNAGAIaaFkf5KbISQRPiKiOt0ZCvvd2S0N3/BuS4lZb2fdWQgWFXADQ/t0+p/r5ENtTuwYFkdOM\nWQ1LA6jpuolEOukKupS0pOVmKgRZjrylZ3tmEoUQDZeKgqrkIdFECyej8JGjEJDQKuIzVTF2D8FQ\ndiS6xuC5BhbprZ1Ao+1f3T+x84YseA9WRkofsTFPiJmVqbu2Nba73IZd277/sLqmbG1d/Lm2z4Ku\nrnywXRhYz0oINeixjij0tfqcdV9EQHo/3+3ag0Y8cl3vK2N4nkQQ9xIIeO62ec/xYsJgrYlhCxYO\n85GETyZ0RBKyZofJJufDOOi4cjqzdm1qu1ZGES1CGr1RwHNdcScoVOPATRAziUAkrVOza/wZCcKc\neQPMON/uqZAKIV7VN1gSsZqVlJlBalcoMamtCagiKxB7NxE4kQCsQ4/pPO2EfEPnHOi6fQ6hkzQH\nxnA6tEqsFRwu7bOtazJFvq9OwxAy2JxntQ7FsPfnKYm932MJj43pdc+1dNGvbszxrmDYBYGYPbbL\nag93kU1TdbUAK6LQ+4ESLvdxpB26B7Lzks6zCqXUagg2FHkyc9IkJHg+kdYmvOrHZj586HjBTkcL\ny9kdObJJRBbLeNXPI7y65YStEqphnibGys8Xk5cUbwIpgQL91Dn4azQKILd0iah5E4QEQQGVThqp\njk3Q+jc03M0S4ys6ny2kR7wx45aVuRHvHWzs5iYB5jmYWpA3GqxOyfViMM07W5XwUfNY2MqZ7S4X\noDU8gLlqYG5Er1lB/xIOfBzo9S0fkQRsIR2aTKjU51jU9NvF28nY64RNIMQqjkQFCTcNX4xWt9Y0\nsh/vs+9Dm77QVordf8L6121B785cX7o/fQurfjNKqd2v6bbG2MwbtGKT41RLJCGhYTI/xaHFiYiR\nsHWt7GsnFQoyucnO3kJzYYB39VuhAhg2lhTL9TYIVQgii9BatBNG0A4MAJioEmkAq31xefDaHt7J\nUAVfrO4vbMteDjnbUmuvkINRSE5+iPxb+QROoeHqxOStTetZTOgHbVNCNBbsAXAUgzbH8R7MMLGy\nyxFSQzrPn2VeGcHYaJsJYrp2kWpeN2R+yOzhPpGoK1EG2QtgWML7BH1e12hZ2WW8u0DYzToxRa+x\nTEadqKNGJUyKKoWkorRF0dn2uTbq4pnw2P94V7tLmBepI4Wq4oIrtkjKzvASbPy9GF+v9oMXAgiL\n7qzMtVeG4oeOFxMGt8cF9wVn1Z2PjCbUrEIW4gCBOBdweAkDPfvwJj+EYblhxNZAY7PB0rkQRawB\nAQZdkHqbi9ouBRG0VexXW17mgL5OyA/6EoKtcNw7tGRkc+M92SYc5Gu39IYRdaRvpLSfdc6FnEYd\nkbk3E6xc/yCRrFJ/XSlH5AGjf2Yj9ogaoa6AmFKtBeIrmQkSTsoyBNREMV+PQlZabqEWCQqxZpQW\nEwPUO3cpYvux/yXYLiHotr/XG1jUsPkh8n2i0BIIfYJdO+u6YvQSSM8QSHn5674MBSsR9CHl9bSn\nuxbfTQqlKevZYsVGI0IU2zkCuJ03jFFZDh88XkwY/Lk/NvDlZ2+x3n6OHz0NfHn9GOenP8Enn7/B\nd37++/j8Rz/GH/oDP4PP5sAnXz7C5xVxGTjxEQ4E1jJMm/AL4HEAkSPBzQYcJyKcjTCdzHJDUpyx\nWKiltOgje4SsdJAttr8mweZXcxMV407UwtCmtGksRHhCcpAw1qJ3PorhcjOzKnNVXoXDyfSyB9uO\ntSLEIh7IMRlAoacc+BqRcWnlY8damE8nHo5rNluNZGxlWsoPEJWnQIYvc6CbjlS1ZXBK8Za45ZFm\nXjk32TzR2O1DFpvsaScSsAhMBIankJu7T8ENsRKvhBLVINJecKVUwxBuvIdVgmBVaTsbohjXBlaC\no0al8X7uGBAtqNCgodBJVoOimLs0ic7BH2vpDyEToZMKit6JuYr4tNxIG8qy0UxCx7zeiknJnApz\nzYXwwOeffobzPPH28RG3m4bfvf94MWHwx78NfPLqAb/zj38b9ru/gz/75/5F4Hc+xyfnd/Dqo0fE\nH/0GXn/0Cj/+wY/x9P3XePvmht//c9/C3/1/foLf/vFneP1wwF59D//4d38XX/z4d/FLv/hH8Y8+\nd+B4wMUdH10W/PBkTDMsGxjHwDDHOSfWPGGxMM0RbrA4U/MMB2wgYmG6HIUE7NpMo0BIRweWsAY3\ny86FOLKEOAl/YoUnobOTzjCHhSM8m2qZGWK2XShveAr3CcwMs4apbFXMwoYg7O8gxiyEsUFHm4GY\n2UhDxk9ezjfB6FhrYgI4RqMpnT8VZ0dVAsQ5kTA/rIuLsj4CaQ4VSusQa1hgLpoEnnsVU4I3qJFV\ny5Hm5AKwhuHAwBk5in5Glve6EGIA7oMMTnZekzkcAzmZMg8NiI1YOMYF5o7sl8KZCGNQCAXLpY0d\nlqxQIGxlyjSlPLMVEGtx7qLX58X26mGY58r7nGsi1sI6W7OvWHi63bhWC/N2w/n4BIfhnHndc07M\neSIW8MPf+QHmWljnic8//wKffvIJvvXt7+DX/t7f/1qefDFhcLwaOP/+38Uf+tlv4ydvP8XH1wPz\nYeDy3W/gkx9+gu///PcQBnz56sDP/v7v4PqN78Ke3uBPnobx5kf403/mz+C7Dx/jGL+AH/7W38ff\n/bXfwL/yz/8Z/No/+CF+4zPg6bO3+OTpAW/OwHH7DNcx8Plnn8Jvn+LbP/MHML/5s8DlFV49DPgx\ncJ7AeTOcYTjjEcMmcA4ACwNRQzzNDZOowN0Ra2JMMsXhiHXLOQS3gRWOsCxDdkw8+SoBcVr2DjiW\npaaXoGc4Mk5qzaUpTI7TTjZ4sjSdLAWFD0Ow1gMAECfDq8ncHobb7YZ5OzEuEzbsLt8/sDDGwLAk\nsDEOXM1xu03YccB8YK18SBG2jlKgljkNFpM9RhIFLGOINYKzMZ0a2xJtRGD5wjonLscB6ca1FswH\njuOKwdbLcS6c54SNQf+JENPE4QdGQrTU1hZwPxIxeZ7rqoS1i2POBbPAeTtxuz3hAsOnP/5dwAwf\nPbzG4/mEx8dHfPLpp7hcrzjnicenRzw+PuKb3/wYWIE5J87bDWsmOrleLni4PlTG5xeff4HzPBED\nePP0iMfHJzy+fYtzLpy3ZODb7Ybb+YTb7YZzTUTkWlikcGCFNmKeNDDp+4GlA3qlOaqR7BMpILIN\nfa7vb/yDf4jLOHDOu6bq7xz2T5qd9P/lYWbxf/5XfxHrt34Lf+8f/xi/9Au/D69/8ZfxxQ9+A5eP\nvptE/vYN5u0Njm99G1/85m/i+s3v4dW3v4llwNPMmcOXAC4ffRtPP/4JPn/7Br/v+7+AmDdcXr/C\n0wp8/sUNuHyMH/34x/jBb/5D/Ny3PsKPzoEf/ujH+PxHn+Pt6fgMA5/dvsQVjp/71nfg14/w9vgI\n9vHPAjZgthDjgCNRRTCHIb33KfXLmZUrij17cU76FoZlqS2TYBQhXGHsCsRMMxsZ2pIT0Tg7YEuA\nGrQRxxh00qkyDrg93XC73fDxxx8lIQI4jgNPT09Ya+HVwwWPb9/kRizg+nDB649e49PPPsPT0yO+\n9Y1v4ic/+QRffvklvve97+GLLz7HmideXa84joFzZcvueU6M4YgznazH9cBxOXB5uMDHYLJY7TeA\nYLdjCQPQPPL6zJsvv8QYDh+eCCUmPvv0c2AFnp6e8M3vfBsP1wfMpyc8rRMeOXfRYZjnxFoLxziy\nKen5NsfULwBzYs6JH/zwh3Az3M5bJU/M88Tt6cTrywVffvkGYcAxRkZI1kxGHwOxggNwJnV7miVr\nzuyGZMBtnjhXdtMqB7ZlFyqcE09zIdgSXk7DtC+yacuiYE6nZ4ZU1lrlezmuSYM59DYAIx0cF1wv\nF8CAy/VaFaduhlevHtKUPQ6c5w3/2V/9q4jdCbIdL4YMhj3g4Q/9Ev6X//5v40/+yi/i+tG38dnT\nb+L1L/4M3K64nW9g5xMiHJ/77+A7v/AHgZiAH3g4Jl5h4OnNp3jz9gt88vQGv/D9n8Htzad4G1mo\ndFxe47vf+Q7cA09fOn7XA9+6DvzyH/9l+PUV/sb/8bfx9/7O/40/+8/+Cr77/T+JWAPnm0/w9u3E\nr/+jH2M6EOf5/zL3JrG2rul91+9tv241uz/dPbetulW3XI4dYzsJ2HLkAJEIAcEEMUEIIiEkmgES\nEp4AQbKY4AEEDAGMjBCZMQiKIqMYhGKiBNlO7LKd8vWtus1p99ndar/mbRm86xxbcbksYUXlNdp7\n7aW9dvO9z/c8/+6h309EMyN5z24c8UB0EwLY+4gPgeg9MZa7QRICg0QaSY6etm0Y3ISWGp/TwUsA\nWisiGS0llTFvxpEAZd7LRWvhXrfkh7EgxgxKEWMsi1xDKIItpchCMB06AGsMKQRiBiElwQekKnoO\nn0KZmbNAa41RGu88kNFKFmWnFDzVhhQ8gkPhIRNeKwoPF3vMiXRoh18PuK/NOeX1h7vRoUC+no3l\nQTvxeoyRooxbSmtS8uVnU2WkE5SlKiE6jDHU0uCCRyvF5CNKSkIIVHWFEZJ+6mmrCh8Sg480Sh3G\ntbKoNAJKSVI6RJ8JyTYFUkhA2V0olX7T/8R8WHiaMzEGUiy7HVM86GEOVS+lgtdoY0hSEl8zNFEQ\nsiQU1xVGGbQyGKuZtS1tVb+50RijqawphdXYgv8cxpWqMuVuf8B0Qopoqd6E0SIOCt7DeKhU+bsI\nMlmVsee7Pb5nxWB49ozt9S25v+Fbnz3nq0eP2PmR4wC2rcmDp799iT4+5+jRBXRzpNGoLEn9HWG/\nIynF6YN3OX0rM7meKLa0yzP8bo9VCWESQlVoLZA5sNlfc9SfcPdkzdOPP+b87Iy3Ls7IMvHxt36H\nrDt+4Af/BG/fWzGGAd/OWV/dwDTSXTzA9yOdUqjs6Y6W0B3x2RcvMHXNZrOmlpqsBUJZnj+9xMVE\nf/WSxcNTnlzegFT0biInWG32+JC4dv4wb4PVhpAKbqGkQGtFrSxScbiYBTlEtDEHhFgXY1FKRDcS\nMkw+IIUkpnSQFicUUBtTZveYaIREGnXIEcxIEVCyHCprFS5kQgj4yZW8gwzSB4Q6aBQSKKnegJdG\nCaxSKMThzsbvdgEcItikJPpSwF6zHLW2JCDkxDA4tpPn1e0NTVVRac3QO2TO1N2c1c0Nb791n3Hq\nebVe0diKm82W2lY4PzGfzfntT7/N6WyJPb3g5vaOKo58/Uvv8ve++W20Mex2Oxe91DAAACAASURB\nVGazlpwy4zQWwBaBpeBJUoBVhpQSe7cnA7aqCTnRtQ1t02KMBV0xuohSitOTE5RSSG3wEYRSaFMd\nAMXCs8SU0FVVsIdUnKRSgTbqDRgqpCQecIIYI947pnhgf1JGxkydC7gdYiKkUK6LlFCHoj668Q3o\nmmIAEbG2wg0TWhuE/O5TwB9aDIQQPwf8BeBVzvn7D8/9J8BfAq4OL/upnPPfPHztPwL+DQot/e/l\nnP+P7/R9vQGn4K3332M5q9mNG87PH3H77Anze/cQMSGswTYGMXtIGPdoNcOPG/xqzae/9ssslkse\nfigYtaGuOupuVgI5KsV4d4dbeUTO2AxvXRwxaxtUO4NXN3ztQcujr7xfLlwluWLGTFXMK8EqNlTU\n2PUldQOirkA4wvGCtL/lsyfP0M8+453332OR9gzXE48vzlicnBNC5uXzp/ypr5+jguAfPI388A9+\nP7/8q7/JWWOZHx1RK43panY+4dYropDskuLF50+xdcV2c8cew7TdstlPVPMljRH0Y+TzTz4h1zOO\nqo4+Dmy2I4vlEqkybj+Uu2sWhChRShIFhCgY8ghkFImYwfmElqq8Zkokmcq6cRfIKRJjKu0ooIQq\nzEzwCAExCWIqnYRRBZvoEQeZNIQUSDm/0UTEDDHB5D2zRUelLMWhFHHeM2XJbpre9BOTi8zaFjeN\npGSJ2xv+0r/8J/hv/sbHfG1RI6Pn1Try7vuPWV/d0hhLZwxfffw2Q0osGktQxwQEKyf46ocfYYzG\n2gptLFLpMopIRQiZJAVaKJTSUBlETLgMQ8wg1Rt8KBww45ihPbAF4wEfEIhD2KxkjBEEVNoUufZh\nxUwZBws2o9VhneCBOQoxlk3UUiGVwhpLjpEQC77io8fnREgRqSVWVKWj0kCIxJypbIPWihTDAXtK\nGKVo6obsSuf0RyoGwP8E/FfA//x7nsvAz+Scf+YfKRxfA/4V4GvAI+BvCSE+zL93/cvhYZtztnef\n80989AhlGqRpiPstzcmC/e013ekFup4z3K6Rbc32xSvmbz1k3K1oZyfc//LXqKsKUVuW7QVJC6bN\nHT71KKmxixPSfkdKmfmspT7s6Ms5M79/ga0lTTMvCLDIfHR/zqxp0ELQdR05TThvqdtTwjCR8Gyu\nntF2Le998D6by5f4/Y7b2zsUAltbNs+/hR/2jJNk+eF7vPjN3+JPf/0D6nmH8Y6TL7+HdD03zz/l\n/OKck9PH+NwjbMMH5w/4QK2YffD9XH3+CUeP3mZ69hmcnDGfXzDisVnwy7+Q+PDHfpRn3/wmTdvw\nySfP+Yl/9ifZ3N7xzW89Z9KW66sVn1yueP7ihhgcCy3Z+0TICiUjUgis1vgM292ASB6XBY2psGog\nSE0UGuEjj09aksyMUyYkDWQ6W9iHWVMzs6UFv96P7ENBwk0UtFZz3FScdDPuhom7wWGE4GTRIY3G\nasMQAxKFy+Wg1UajtUVri38NL5gaKxTPneQnfuKC1gi+LCsygtYYvAFQzGxVaE4pCKEc1IhAS8EU\nEolIipnJx0OUYpnzFQc6kQxaE2KiMpJTW2OlQMjyWill2aIUf1e0JIXA6AIyp5QIh7EjhlykClIQ\nU8THRIjpDdMQU8EevPO8VgjGA64AkGJEaoUPnkpbXAgFq0gF3I2h0OQxlf+l874UE6VIORK9P5Be\nBRgmRuqu5na1+qMVg5zz3xZCvPsdvvSdBpB/EfhrOWcPfCaE+AT4UeDv/r5isL+ld7e8U11g5jVh\nvCYJGFc7ZkcPGTcrop/oFh0oxfLslBglFZpZTmRtcVkxRonf3mJqhd/dopf34VD9VZzo2gXbm5cM\nw552PmdmKrLUKN3gNyvu7m4wWnFqE7OjJbvbl+R2gakM+9sbbDJUdc243nNydoQ0muQF9x484PrF\nF7z1/rtUdc2w2aN1jTltaI3ld37r1zBuS57eZnu15cN3HqC1REbopMXoDrKjao7wRqK05rNXK77v\nKxXKVEhR8ennX/B9b3+NHDzn58esVzf88J/7p9lvnoMQvP2lr/Lgg6/gx8i8a/jxH/9TDDfPUF9/\nj8FvaWb3eHLb89knn/KtLy759OUdc6V5uOw4nneMIbNOGaU1C62pBHSNobKaoe8xKjOzmkYXDGu2\naLFVw27nud1NDAFQFUMSvJUSY/C4UDKs9j6wi/CF1qTZ64xGyQshEbpgJEooKqvQRmGUxihByJmY\nE1praqmo2gorE0lrHqlIdBmXCx3Xx0DCEKYRFwWjC1TWghQEH0BJYoosqopaV1SNxWgDIqG1REuB\nd46mqgjRE3xACYXziU0/ECX03qFQjH5k8h6fElpXSKkYXzMELkAGHxxZFCGdPBwtgcRUmhg93rs3\nxyb4wDQ5hBR0bUs8FAIlJSGmN4t4D1AAQkBwnrZpGN3IOEzMFnOmaaSpa/zk3ojb2rah3+2BiDWW\nfnKYAJth+qMVg+/y+HeFEP8a8MvAf5BzXgEP/5GD/5TSIfy+h3nwgA/DD6AXHWG/wSzvo0jo5QXT\n+hlaWezRKcN2RfYJKTTGOGgtdzfPC4UXJciAPLmPHwI+CdL6CjNboExLXS1JUTE/vsdicQRoJrdD\n6oq6m2OOj3nwtR9i3G+Z+lumzTXCdixPH5CGFRfvfYWgGoTzLL/8FjFl/LAnKYX0E2dKYpoapgnP\nSF03CN2iz464/Px3OH38IaK7oIobxHGHjBF5fIJJmuxX6PoRcbih7S5QUmH9xM03f5nZ8hwpI2eP\nHkLec/fiM+h+gMl58s4xjYlHb71Ne3QfkeCOK3JWbHZrpK2R7QwGRZCSr3z4Pl//+kdM+x37/Z6b\n2y1Pnz4Dn8jRE4aRYYyMAXYBXqwmYGJImdvBsRknhixxUjEFR5I7ktGkrCg34B0iOkIsCcXSGIyx\ndKZi2VRUHkKOxJzwIRKcQ4Y9ulKkULQdPhwCWI0ixsTMViitSFMELXBR4X1PazTaGIwwaC1R2mNp\nySqQtcZPA3VlwSekKqBpyBkRCw6TFYzDSFYKoyTTNGKsZbV3dLYqLIBW+Dwx9RNWWWpTEQ7AoxIS\npRRaj7zWP1RKE0JkdA6jLTkopFGYxhTwL2V2ux0CMMYSQkRrxWzesFhKnHMopRjTWChBpYhuKl0v\niRACCE0/7NFaMXiHQTFvWoZ+wBiDzNB2DcF5vHO4yTGOA/NZxzRNpBC4vb3FKPOPpRj8LPCXDx//\nZ8B/Afybf8BrvyNqoRP0+1tsu6R3GXv7kuN3voxWFhcW3N3doaZrbK0gJCqbyCkT/ETo1+ijc6bL\nZ0yra47PHiCbChUU/u6OanFKTBMxAyGSDnE+4+6GED1aTYg6kL3EeU/KmpwlQlfkBP12dbArK/y0\nJ417YizUnHcjzbxjdfkc2S6QMTO9ekGWjnR8gYged3vFxfk9js7uMa6fs98PLOcLgl+RfGRmBauX\nV+TmFKk17sUX5PMHBCIxG67u9rD6hPb8bb74xjdoTu4T+gli5jd+9Zf4YgN/8Z/7SbbrnuB36GpB\n9BOiNlhlCWGP3+7wfiJs95jZcUlKFpKj5RGL2YxpHPGTY70b+LWna/6vT9d8sRqKCEiWO5ShRmmB\n0BktDaYyGAFaS4zR5BhJUZLRRdiVEjJltBJERpLzOCGIMaGUoZYC0VaEIIghYKxB5kxnK+KhBVay\noPwiS2RtkEZDv+do3jBkydjvmS0NPkV8PzJqSaUl0zRgpWIYyjo0ETIyJ3yCTKJShqkfaOqOEDNW\naoQpY8+9hSVOHh89Rham6/h4SXATk3d01pY7c4yknImuMApKSQZZPAVaV0BCKUjesx1HEhllVNEe\nxMgwDOSc8V4wTQUf8aEAt1VVE2LEuYnK1rgYidFjlUGksgtDC0UIkXQoSlVVIcgE78kH9ZQypci2\nTYN3vjAQTYMfJ3z8x6BAzDm/ev2xEOJ/AP73w6fPgMe/56VvHZ77fY+/8r/9n7jtHVl8xp9874wf\n/6GvYm3LfhpI45b54hjZdbjNFTNVE+Yz8JJ5u2Q/DNjjR+R+IHvPTErM8T18pdgOW9qze4Tdhqnf\nE9xEymCqDi0qhFL4aWKSkdzVGKAyhojF0hBcRPqelCbu9j3t7AjTtqQQqdoW3bWEzS2m6jBKIaqa\n5uE7BNdjFyeEcSBnx0Ja+rtLQr+Dowe8Wm1prKVrZuhasDx/RJKJrCVSHzFcfsa7H/0Q1XzGr/zq\nb/DDP/aTXH7y69T3H/Pqs2+zuP+Qqmr54Gs/xAdVizIV+75nMVviQ4AckFnjh4FMwClBWO/ZhsD0\n/CnUHaenF/gYiCGjtCIq6BYt/+T3tfyZL9/jk6st33ix4oubntvtSEQRpCZkiQsedVAABgdeHWzV\nQqK0whz8BVOOxCRoTV3EMQc9hDaiAJZCEQREqVDaEoIjx8h8NkdLXdKelEBnQR9GRIaumpFF5KLS\n+KqmaVuGzQY5P2G72zImOOo6Yk5YZdiOA5WxpCnSj45Z10BMWK0xShLTBFIwjnuqumXcT4wxkIXA\nGEVwE+uDEKi11UEHJfCTx4WINhqtS0sec0BkWYRCKuGCx5oKrTXBe5SA3WZNiKFQmlJT1xbnXQH7\nUiJ4z9D3CK1pmxofPWGaigiMTMiRLDIpeKy1RUsRAuvtlspaurah3/ekULAGJSTWGILzfPE7H3Pz\n6mVRWEr5nY7iH60YCCEe5JxfHD79l4BvHD7+68D/KoT4Gcp48GXg//1O3+Nf/ws/BnlkuLqlO54x\n7CZGe0d49RmLd76OnM8J6yuk1Hz867/KV/78X0TZIpVFGowIrMeRyjS8/O3fQJ2/QueyqmvzrX8I\n7RHDsMVWNXFcIbJDSI2pLJaIX71kch1icQEuI5sF0Qu8v0UYQ7QVMmpStvR9T//5bzO79xh9eoau\nO9rjhmnYoQEnZxiZsF2HNoa7J9/kF3/pV/iRH/6T2PP30EDPxOe//vf46p/750l1R7//Fk13is2J\naBv2k8TYiBCaH/mRP02/XXH0/vdhnWd5dsF0tWI7a5ifv4WNkudPPqNta9Y+gZLsxh4pepLWCJ/R\nzMnNDBkCQg74ybG9vsPH8h7JjaArVExMU8/W73lcz/mhjy7o3Zb1zTXXz5/z5HbNRte4kw94Js9J\nFNVk8B4hy13ptW5fxMjZfIH3/uA7MAclYREd6YNZppKWrEvrHg9uzM1uizKKxlRM2x4hJUZrqspA\njviccX5iHAdIAVTR4z++uIcUkil6Xlxe0rVtGTelYEyZR+cnbPsB5ya6rqVSkka37PxIN+uotEbM\nGupxoNEGpGKhZ4XiGyei5A0IlypF3VUooVjvduyHka5tsVogtGDyCY0huYiPnrquUVKzH1YoKVge\nLTFS4p3n+OQM7x3JJJwfSaSi+DwwF04JBu9wo+d4vqCrK+5ubjk9PmG/21NXFQ+6Bt+PhGlECxhz\nQmeB845+7Lk4O+WxfIfz+w+Yz1ta3fCbv/b3/+Bz/YcpEIUQfw34CeAMuAT+Y+DPAj9IGQE+Bf6t\nnPPl4fU/RaEWA/Dv55x/4Tt8z/x3/pefLuosLUnrNYgJKzQ+SSY3UlcS7wMSSYwZWVforiM6X/IM\npgE7riAXTrx68CWS74kIwt017YNH1O0RQlucC/hpj65m5f38HvyItg2BTEoWVXWoSiEwODchlMXY\niuBGpNS4YYPAYaUAoYp4jITUhphgGPaoYU/IgbadYapjbi+fYboFdVORmgYx9Wz3a2bNCcpWhDAw\nxcTqs084e/fLiDixvr6iO7+HzBLTdnhhkEKxffo5upJMLrIdd7R2UdSKRjANI4qDas4HRu/wo0MZ\nXQpbCNRNS/C+cGOiiGf6YU/TLbBNDUIy7nq6pgHhCW7i+tU1w901bQo4qdi2D7gUp7h6Tnd8VNRw\nKeFCZHKecSxy3RgjMYTSEodQlIq5RKAZpVBSkTJYa0ghFmGRKnRbdL54E4pEsXQb0whCMOtaRCxK\nwJgiWQpmtmKcJrQ1KKWwxiByZhwn5rMZq826qBaJ/O6yalmKitYYqYu/wXvG5FFaE0I6KPgyRll8\n8lilisRbKrQ2bIce76YS3ydKmz9rakZf2nGNJMSAEKIUshDQB/FXCqFoKaqqFEElWc7mjOPIfhiY\n1w1KSAbvSDkTfAEa67rBOQchMowjpjKknJl1NUob8JHJTaWQ5YyWgtoabF3hd3uigJ/72f/y/78C\nMef8r36Hp3/uu7z+p4Gf/sO+b7EiR7JLpG6OcBW77BFTaadjBq0txImmm5Palv00UnWnKCuRURL7\nBWwukWksM32MyCTANhgMzg0EF9D1Emu7N9t+le7IYsXm5jnYOd3RMTFFokukFNDKInzExxFZKXLM\npf1Sc7JSZd6Vimm3RcZE9hPS1IRaY7s5qoLt1XOahw9YPX+GtBfUIdMniVUz+mmHEbC92yHjjou3\nv8Tm1Qtsu8BnxeZ2hR48k7UkP6J1i7Fw/WqPUBIlDDebG7TShCnjgmPyjkpKkpJv/A0mRVolDwYt\nqGqL0gqXE4RAUzdUShODYxq2iO2W7fWID57r9RpNBhQ7IcmyIaLQIjFOE7u7NbW1hT4LkTAWVWZK\nRXOvtGKaJqAUgbZu2A97fIwEH2jrhrEfUFpijcYFX+bxGBnGHqEt0XtSitw/O+PlzWWRVkvD8XLG\nfr9nco6Nc0ityYeW3Jqal5dXzNuWcRwYhv3rBcZIUYrQFEZkgqN2zujL4RGVRrtSBAIJnzxVZdm7\nkXnb4J0jhERMESVkYTtmM2IICCEJwTP05fdDCoTVxV8CaGsKgDo4jNV0XemewkFFmcn0ff8mpXk9\n7pnGCWMM87ZDqRqpBHNbM1nDbhioJIgEi1mL9yNjHJjpitt+X7qjg5x6sxtht+HR2Tku/TF1Laa0\nw+gF0WosgpASlWlQZoEjY8M1UtSEKRPCRNqNWBex7UWpgELA/IgpeCq1pQLEyQWTy1Qi4Y1GJQCD\nVGWmQyqkLXZa2Z3x8W98zuUnf5s/80/9KEcP3yfkUOS4cURIjZ9GZARV18hsmMaAriRWG1KC5cV9\npv0GF0eEn6hrQ86eGCzV8hHbJ58xu3iLfb/m+nIF0uFHj9IVkT0aRZ0bnq0ukabl5e0NCkcMpTUd\nxi1WVNxsv4U1NZW0xf1XGwiOoDVNY1mIiihqfI7Yqi2z6cGE1FQV3m3ZrG/Y70ZscFTWkIQDbbma\nHNc3N5xXhrvJY3TDrJ7T1ccM44hPiZgFG33CZSiYQ9tarKwYnWe33x8cdpGqrqmMOfDdiRgjxhi8\nc7x48QJtDYv5jO2wZz8OkBNdXTP2iX4cQUBTV7RtSz8WwLapG65vb6iahnEcOTmZk4Xk6uaW09Nj\n+mGg3+x459FDpFJ88q1PaeYzhnGk6zrqpmO922OULgEuUmIqi+gq1rsNImcm52mbiuN2htCaM21Y\n7TdYJF4blNJv3KV105Fi5vbmFqM1Vkq6ukFkwbPVLVppRMqYxnK6WKKFYL3ZkHLiZLkge0/sR5qm\n4bbfFmqxqkkhYCrLcTuDlFi7gf1+D4BViv008PTyBY/uP+SsmzGlSBKw3q05r2ccLxZ8+uo5tbZ0\nbcsUJoZ9z4OLe+zGPa+ur7j3+DsSe28e3zOj0i/+zL9DbWrkfEnWVfHPuwEXB2bH98locp7QyjD1\ne4TUUFm0c0RdIUVCSYGUlu31c1Qa8Bi680eluoeIqevifhevjSUSoRQ5R6RUPLu84W/8wi/y7v0j\n/oU//2fpXfEokg6KPG2I7pA5EF2hxbJAWkvKkX6z5frlM9K4ozk+JwiJyoKUxBv76ugmNqsVi8WC\nKShOFhXD6PAUO9roHI0UuBDJylDlIjZpFzXBWOK45dkXK770/e/TKksWmuxdUZ4hGNwOIxQWhe5m\nJFWC1Xw/kP3Efr+jkkUYlHJktdlxvV7zcF6hyYzDSN3MmELGx8g0FXdeyJ4pKaKd0esT5PE9bveO\n7RQ5PjkpLX2KxHTwPqRAP/Q4H5icJ6XEOI5UVVV4cOcIKRUWImec86VYSFnGHQXGaKZxOJh0JFVV\nsdttefzgPvtpZOxHZIYpBeZdR4oJYTTZebTRDONQZLk+0NlCo603O3RVMex3NFVdvBLJU7cNMsKY\nAvNujgiBKfgS5nLoZJTRaCFRRpHDa7twIuaMTxGrDU1VMUV/+D9W+BCYKCNBLSQagbIGoRXrzQZE\npq5qQs40xiIz3G5XGK2p64bdbosbJo7m8+La7QdsVVEpxeAmVIIxFL1CVVtmbUsms7q7oWkaRM5s\n9z2trRjcBBLun5ySg2c39vzVv/IHjwnfs2Lwd37+PyUMAyomxGKJMC1+e8fkBTM1YI4elDuOlChj\nkd7hRURISw4Rpcvz2XkwhhRGCIewCa0Rpi7pLkIf/Oqh+OMP3nlx2PrbbzbEfk3V1dh2werVK/zQ\nU3UzXMpIWQ6+G8Yyz+byzwVZLME5krICXebn6+sbTHJFFZYVs7piN0WsFbgoSg7DgbpbHJ+grEEb\nw+b2FiUVs1rzbLXmwfwYM6+5ub3i1Ys1P/ijP4CfUqGHkifHVJxoLhC8IyZPnkaSdzx58pT58REP\nLs548uQ5fnKcnB+zXq2Z+pHeeR4sagIaFxPD6CAHYpQMkyMg8aplL1rG6gjRHaGMoWpbjLWUvIXi\nyFSiOBl7N+FCEd/EEOiHAe89Qhb7dHIBoRVNXZFiwoVAXVVIBLvdjqap6ZoKrSTb/UCIEXkw5+iY\nGGNivV7z3jvvsN1tCg4QPGOO+PWO2fES5x1KKryPkCP7vqft5mit2O12dG2ND5GT2Yzb3Raryzy9\n3e4wlSnzf0okWQrqvOkYvQMpcG6CXPwjRmucL5kCVhXX5+RdSet6vcsCwIWiDYiewbvyfkoVD0LM\nDMNAEJFF0zKrG6YQSGQ0RX9QjF+ZedfRuwmjNavVmu1uy3K+AJGZNS3TMKIrjRElH6EfJza7HXVV\n4f1UfCmqGLV+/r/7b//4uRa9j8h2RtjeIUbHb/3Kb/LwSPLgw+/HpZphv6dZFq9BjoGkFDhIsUc1\nLT4ndAJhatLkUNIQRCxS1uCRwiGoSxKMTAhpYHIoW1DocRy4/OLb5CQ5efCIT58+x/hn7PqhvN/w\nBDtf8ODRY9JhzZA+OOvcVJx8hsx+mvCDwxqN0hI/7cjS8I1PX3H/bMny7JSLi5aKTHaBJDIx+eLd\nj55WanJbcXH8LnnwxOi5X9WIWByRJ92Sxbsd42ZFXdWgJC4JJJE8jMiUif0ekzOjc4zO8+R6y0dn\np/gYePDoLabdmqoS7JXg4Vv3efHiFde7CauLacYfcgJ6F7nR99H3v4SsG3zM1FqiVSYCPmfi5A6m\nqUNyj3DEEBiGkZAKs6EFNNZCTiQfWDQNsSnW89V2w/2TU1pq+n4oklqZcW7C9SPKSEzT0NkGkRMv\nb684Pznh4dkZOpWgj7NZx+QC3351TdM2iMpyvdnwzvkF+31Pu2ixQrJabxE5MvYelyKdUsy05Wa1\nYecnjBy4P7/g4qjjdj+y6ydOlh1WmCJd9wHnPV3bkm3GTwUMjSEgkOzGkZh6zDRQGUWlNEoqQozk\nLBiChyFS1zWNKerHkGKJz8uZ05MThnHkbrPiZrPm/Oik5G6MIzInZm2LD4EQE37yTPuBRdMSD+E8\ns3lH21UMuy0xCa6ur2m7GT5Ejo+PyJNnuWh58fwFX3rnXfpp+K5n8nvWGfzSz/2HaHNK6FdEVfPp\n0xcc71ecvvcWzeIeDkEKPUrXyKZBZknWsYB5gMTgSUiliXFCiUxWDUoKjIyk0ZOlKtZbqUlIYgyM\nQ19CMqYJHycEhbeVVUWYJoQfkboh5sjt1SXTbkvbNJj5EVFIpPc0VQE4P3v+nMYabjd7KiFZnHR0\n9QKpy6gws5mnL16x6BpOLi5wGUIIxXaq1CHUNKIx2LYhWl3irGIkxYiPkRwDwXvqqmIcehpjqWZF\nhiriwXrkekIYQVq0FWyurlltdhzNNSTNq6tLVncbqkZSyQrbzAnJweTYTIkJTS/nPBHnNPfeKilR\nosyqAknMiZBK8lCIxXRT/PdF0JNiQArFME2InNFGI3Jmtb4jKl24cVmUdVVdc3e3RpGp6gptFDkm\nalvjc2az3WAErPdbjo5PqLUpnV2MuGlikzwn1Zzj0yM+/uxbfPDgLW53W46bOVklru5WTLuRXGuM\nMpzPZ+ymMl4c3N8YbRiGQKMU3cwQlGImJT56pjEyBYeqK0SW3GzW1FbTGkuIgvWwpbU1QmmUApkj\nyWd88EWgVDUsZjPWfiq5BCkTXjs5DwlXvRuYnEMjqeqmZA7Ict9Kk+N6u2UaRx6enyFipqotQcB+\nt+Wm39FVLfePjrm8fMnyeIlIUBuLrS23N7d0s4679R3Hx0dUWfL06gWtrfn82RP+1t/463/8xoT/\n+2d/CmMbpBX4fkKISJoiIeyhnbO63vD43fdIUiF0QdCVEARVIspwHlG1+GFEaI1UB024qggpEaeR\nOI7E6EFpgpsI3hNCQCmDEpqMJGaPDxMkweg9Wig6WzGEgRgC1tZMfdGgx0NackiJtq6xxrIeJuZt\nQ9NUTDFgDpui6qph12/4+//wUxazY776wUOak6NDjs8hzJRyey1xfcVko7Q5GGcOacmi5PdFXxyY\nOQVAoYXAk1A5lKwCXYC74Abcbs8nn3zCk6eXfPXxMTe9RuKxKrF3mU4V49I2amJ1xIoZG9lgZwu6\ntsPoQqsVvQAIqfAh4EPk9U4Bqw1Sq4ORJ7Hb7okpUlt7kB4f2B1hCsJOIsaArSrqqmEc9mWLs9SM\nzhULcSpApK1r+n5fJNraYIxmt+vLKBYiMkbqecPddkNKkmXXIoSkaSyruw1ZFCu2VaocpJC4W21w\nk6OuNMIohLD0buT+fIbUhn0/kmKkthWTm0hKMG/b8rcPge0wsJh3dEpxu93TdS2jLxSfVYCQJCmY\nvKNtmiKb9gnvAhOR5By1LvjClMLBICVLboEy7HYbFm1HSol+cgglCqUafPbAAwAAIABJREFUEnVl\nsW2DGyeqLPCi5FdM+z1H8yW3uwJQ1pVGVyX2T6XEfuipjQUJcQp4Ij//V3/2j9+YEKZA1Si8kEgd\niAHkbEZFh9vfcHR2xN3LJ8yPz9Ay45uOJA1WtWSpiJVERkddWaYwgaogBHbbK4IL3F1fsTw5Ztis\nCINjPzpubzegFPN5w/lihg8BFyLtbE5VV9gsWN3c8rIfOD894WY/0q9ecr7oqNqG2/WEi5mjWbn4\nkszMaoMk4cOEshZjiqPOC0G9POWf+Ylznj99yXa7w1qFsDVojVK6pP1IWaStWZKiJ/kSviGkQhlT\nsAGrD9SmJHmNzAmUQMcSEuJHx269IYSeqR/5/Pk1DxcNz9oFxliOW0HOkv3oGULilWu5MyeMsyWm\n6uhmDSciFbo0Ftedz5nB54LNxIQ/eOtjTggpQUsiiXHfI4Sg7ZpyIe93pFx+n5wy22GF1gZ5UB82\ntiITUUYz7HsyxSBUa42sSpvthhFzUN9pZQoWIQptqlNmihn2E+eLU7bbHT4nZrZmtdqwGQZEhnfm\n91n1W6aQWHY1690WgcAc7vILW3N+NEfHxF0/spzPuNusiN5ztFyABD8NLGczYq6YzTo22y3Pbu6I\n+XdThLrljBQjzgVmdYPq5kyxYCZJahCw6BqkqBhGz7GdM04O5zyKgm9ZrUr3lRP73RZlDEezI+Ry\nyeQcRpQciT7siAmskqScMNpws12z73vmdUNXtQzTQNaawXtm7Zy77Ro/TXzw+DEvX736rmfye1YM\n6sWcab3GzBYEHxGNJfuRMCVErNhtrtl6xfFsj7Iz0mZNOjlnN2zQpsYoQU+iTpmYAvurO7Z3O1ZX\nG45OOo6Oj9heXTP2A7ayxfhhW+p2xtuP76EUrFcbXl0+Q4+RRw/v0aKZRk/ddkRpuH9keSUU18PI\nxULxta+8h06C3TTivcNNI01tcJNjGjJ1neFIYXVFTIGYBfsR5mfn/IOPP+fmdsVHX/vKwUpdvBZK\nlsBNpEAqi0i/a7FNB4/769iuqjJ4BLhAHCeGuzXXn3+GmLV8+9kNj+YtoqkwWnG1WvHle2ds+g2D\nKxfa1im+4U6wp+/SLZccGUUWobACATy+vLcp6r9a2SJfztA0TQnlyhyWuiRi8IfQ0dLeK6CtLTEm\nVv0ehOT+vXtkKbi+uUXXNXs3ldyimOhmc3w/oEwiUopRDIFNPxSBTwhsdztOT0+pjOBsPudus+Ko\nm7PNjjxMRCLHtuPJ8xe8+/Yj2tmMfthQtRVy3BFSZH1zy9nJkoBkXrWcLma8urtB9Bt2EY7rGX4M\nKFNjDOw2K6KUTD5wvd1jKSEnQhsu7t8jTp62NkyTY7PZII3GHbIMjxcL6qamsjU7N7Lerah2jrkt\nxeD6do3WCnlYtGKjYchwMl8ijaIfB2ZNQw6e9bana1rOlg2r/Q6rBE4KImC1YsiOeddyerQkkpnG\nge1+i4iZetaihYQQ+ej9L/HZiyfYxn7XM/k9GxP+n5//y8TdSFKZqpkRw2FBRmXw2x3by+c0bcvH\n3/yCD750n37Vc+9rH9Hailw1jJPj7vaO8a7Qdq8uX/DFk0vaSnN2dszJyTHX6xUvbrYsq4qL8xOk\n0ex3PVopQvTc3K7I0nJ0fELX1eWHyxkjwGpJEqoYfEIJ+8hSEGM5PFJprK3RB7NLOCjs6sqA0OQ0\nISIIo7F1S10ZblcbyIl2Nn+94b143N+Ek5ZEIKnkIRIbNOLNQtHgigMt9nuic7x6fsmLzZpWSbQy\nhKnHikREshsnKq24GwIOyzY1fBFnqOU5praoLA7bnCRWSUxd471H5Yw0urj/KOh0Ofup6OtTKpLw\nFMtaPAQpRbSWWKOw1jCMjugjSmp2+x1CFeqxqWvcFHB+orYWYiIIaKoKLRX77RZU6ZaIgQen59zu\nVogk0E3Fq6fPObr3gO3mhkcPHjLuekxd0W93CGuRMTJrG/bbHUkJTpqWz66uUcrQVZausvgcmUIA\nIQjDyOnZGf20Zxh6lvMllam526yxooSu9jEgUsZaxWbX09R1sT7nSKs1o4tMIVHpomzStSX6QJgC\nTVOj6jL2qZjwIeN9KB1FY1nttoyjw40Tnsx81tFoU2LPfenAeu9Ytg3jNKCMZbPdvukkGlvR78s4\npY0uEe4HZaZGsNntyWQabUucf8z8j//9f/3Hb0yYXMAoiwgFLwjjhNYaWdVIlTh6/D7D5ROWRw11\nZbllw9XTJ8yUJDYLxnEgDB5qxTT1GCk5PVuQk2A7RuY+0JiG+yeCy5s7pqeBB+enzGcdV6sV3/z0\nOeMUeXx+gpagZWmByYkYMwOxZCS4kaeXd/SDx0jBvFaMKbDajYisePvBBSenR9RGkw4yXKFASosw\nRVfvnMPHhK0PphcpyC4QCEhpDtr9giCV4pxQouwCiCmiXMC7id31KxCZ0YEWib13XBzNGfqeFCYG\n53G2InjHmARjsqxzxSdDgzh6hKws2lZkipJOH3YrBMD3e9xU7LTKF1uuVOUCl7KkCZdHQT1e71GQ\nBxdjZTVZSIb9hEue2WzGsB9p2hpHJg4R7yaMUhhTQ8hko2i0JMfIfnRgFLXWTN7hBbjkEcGxrJe8\n6ndUXcPNesNbJ6domZlEZNxsmFWGMSTaWcfcaj55vuVkseBmGLg4WeJc4Hq1wpycFwejsaScODpe\n0iDpk2E/OirjWa/WLOYzJleA3tZI2qpBypJdOHjPfhjIIqMp+QtCakJOxBAIUhC8ozY1CAjjhGnq\nkh15ULIPfiDGCbLAVsVQJEJgHAdMnUGL4jWRAmsrVvs9+jBanZ/MAcE0OpTSLJcLcoZpHHDDxOQ9\np6dHWKOprGXqRwY34Xykberveia/d1HpOZPzDlk19NseqRomdnS5RndLsvfsXGSfYXO9IibJs+tb\n3LDjq2+/RVUvkc7jXWKYdkx9j3OBi7MjVN3gvMNqyxQromh4tdugW4Odevr1ng/u3+M3n97y/HrN\n8VFL11qUVaSQEUGWCKwpY0TFh2+/xWac+Lvffs5vfONjPjqb82M/8nW2rnBsKUSm5EBIfEyoGKnb\njrq2+MkVQ4r3GG3ItiD0vt/hcsaIRDUvij6nR2Qs8VlhGIh+Tw7gtyu8d2x3IwEB2bGcn3BWa/os\nIUkGF5B2Xi7aqiJpGLzkk41j186pYyL3Ayl4pIZKK8axjAW6qjDWMF8uD8nLpUvT+rDj6ZDUHA9x\nXmXRiaSyBS8hxrLHICUqDfud4269RslIq2uWTcvdIYZdizIC9cFhlUZZCXju/IaH846cSieUZUWa\nIttdJqYBKyW91Hx0cUROin7vmRyczmrwAlNnjuY1u7sbvnr/Ids4setXbEfF+WzBg+UcR6DTFTf7\nDceLOUTB5XZNN7M8XJ4zO2m4fO64vL7luK2xtqUfI1s8UxgQQjMNIyEKKmt4cH6GlJLNfsveOXxS\nnDY1wWk+v77CCs29o2PCNKKsBUroyqKy7HY7Rim5tzxidkhYatqGfr1FomA5hzGwXq/QRiPbilev\nNqg0MV+0nJ0cMw6eq9Ud52cn7FJkuZzTdE2JU58cg5+wTUWlDTtfYu++2+N7Nib8wn/+b/9/zL1Z\nrx1Zduf323NEnHPuzEsyh6qsUlWqSlBbliw03DZgP/rbGQb8kWzYMhpCN9BuqdAaqnImk+QdzhDD\nHv2w4t70g5V+sBtZ8ZJMMi/JvCf22mv913+g213SSuVUpQqPhxPeC3318f0j2q222U2hPVjdMZ4W\n+sHRiuJuv+f26prHcSanyuV2Q7PCy7cGVKvsj0eWrLg822C8MB0Px8OqXdd8eBhp2nBxseV8e/Z8\nAHxw6Jb45rt3vHn/yO3NJZ9//nM+7Cf+7b//Z37/7Vv+5PUZ//ov/4xuGEipQS1yUwa/Wn0/BWGs\nycxKU2pCK4VVsBQlTj99hzZaisa0kE570unAcZrpXEfKCasNi2qMx5nHD3ecXWz54v0DZ33AuY5p\nTDQDCkWKhbFU/ukR3rsrQn9BRjYExmhKSdQcSfPMdndGGHpBo71nGPo1D6KK7VitWCWod2ti2bXE\nRMlJSEJWc384ACL/3XS9WH2lgtWO42lcU50SORWC9zSl6JwAjBZHQXEYRwZjGLYd45Jwqq3mKWJj\n/uFxj26a892Ad4b9tNCrjrvxATs4XnQDd6eJszBQqMQcsdrjOo+zcgj3y8iLzZaqDQHF3WEEVdDO\noWvhcT/y6c0VX98/cBhHdrsd58MGZ8Epy5gXjuOMM1ayLGrDWYfxms46UizMKZNKxXpNZwwawxRn\nFApjDTknGhprDMYo6URTIuUqwGJrdN7RW8PhtFBao/eWzhvuT0dqKvTBshkG9scTXejQtXCcIsYo\nrIEQOkrJxGVBvMKln+s7x//8P/2Pf3xjwv44MsdMTYrDdCQM5xwe78E4XFPobiBYxZwWam6UYoCF\nzgeoGqUym16xLHvIhcMpchxPnO96nHMoZwleWtoPDweWVLi5OsM5gw+Bmgy1KV68GISRqBVYjeu8\nUFPHiQxsLi657c+I88y3X37HMAQ+uQ6odslnH92gQeysmhIMQD211HVdra1dhhJatPjxNpQVq2ya\nmIe2cSTnhenhnu+//obL6wtiVnhTqNow5gI50nDcz5VN0dycX7LERQhc1lKrrP/GpfF+KexrwLoe\nay0ti4RbWw3Ko7XB+4FaRTjkg9xcp3HCeSeOvEZMNHJjtdUS/626ZjammmnRMPiA9+JrmHNlmhPL\nNNJ1HednHeO8sMxtVakqvLEcT5PoGKy4EllT2fU9hcrlVpSgeV5oJpBzZrc9Y+M13z8eUbPGB1A2\nczPccFhmCopXVxccY+bth3tuthcsJAblOU4LF51HtZ6HceFsCCwVVMsMoed+OhCsxwVLNYrbm3Ou\n0haaYi6JeaoMthJrxaDJVdKXUlmYlwUzGVLfrZkGEILDG+mAjFHUnHg4jnRrB1afUpxKxWCpVXNK\nAkbfhsD94cSw61Etc5wSpTb240Swgd2ZZ38c+e7NO/q+g1pZUqLvLHNKaOuxRgGG0HVYbTgcDjjv\nmZb5R8/kT1YMChsm10EcOSZI40K/2Yh7LJqxRc5MIC6NsTackiSZaVFk2/A+sNld8ocv3vLt3cRn\nr8+5PutpqnEYj9wfNb33dJ3js5+/ImhH33tiXvjq99/x/nHk5atLPnr9mq4fULpS50iZTuSSePdw\n4s39iWWc+bM/+YTPP/8Z+9PE4/fv+LCfRDjUe4xeI1Ga5AOqVtArb0CtLXepGd30iglqrFVUa3Et\nsWAwx5G6/54vvn3P9eUAKlCmkcuLC/aPD2S/4zguLA/37K6u+ejFObkoWnN43RhjpKjKvCSW3Hic\nImPx7MKWbw970rSnKAfOCiZg3EoOEqPu1lhlxRLhpZKkG0mcmn6WxIpjkRC5yvp1yhmCtmhViElm\n0xQXfNejjGKeZs43W9T5BWOciPNMipWhG8itMeeK8YY+eBbg0gfmceawLKRauTkfiDnjvSXpxicv\nXvAP33wFfkPeH7i8CHxyseOwjHTWEGvj9dUV284zFYMzjXF/wtOYUgWVmRfNYUlcasNxWTjlzGa7\npSiN8gaTGme7Had5oSwS/HtaJs42A8dS2fYdNVcmGrbzGDTWGkwTU9JcxUNRK4MOoocZ+o5pWWhK\nsRl6TFX0PjDFkaIa55sNAGMu9JsBtOLm8pJhG8mlYFVPrywPy8Rxmbm4uqSVwpwl+GY7dDweTozT\nyOVuw/3dA9Z7Hu7v2Qw9Z+dn/OHLL3/0TP5kxWCeRpb5hG2F4/FAKne021eEGrFWwXGkXe747t0d\n3+4bF1tprc9DYDJwfr6l5cBu2/HaaIZNhwsWrSr/8Q/3/O//+I5f3pzz159/wquzHSVnlhxx3YbN\n7Q1f3P+BN2/v2HqPf6Xp+gE6xeF45P4wsdtt+cWvf8X7/Uh6+MDbb77FWc/28opf+A0mzgTvKVhM\nlai052CRklBqRdqVJB51wUOTuLJyfOBv/vbf8SeXHa9//VsO+/e8efM9X331lqtwzfbVS7754hs+\n9VsI59TjI8F4vhwjfngks6HmyHGZCEiqUqYJdjBHjilQt7f0w5abIfHuzVdoN6BUj1KG1oRSPJ4k\noKQ1sN6KB6CSiDJtFMF7Ce2cZ5x34re3gpo8BXcUIUEZ73Cmgc4E5+idZYqR704juTbO+0AHbIeB\njOKs6ziMB05L5tx7HkpG5cyHY8Roy7DdcowT4zKiFXSdp6+ZTd+zsY6PhisYKl8dHum9R6WGPneo\nOOOsYj8d2TjPtDRudmdsho5truQCTYs126YfUNOJm4tbvn8YaSlSTg7lHTkvBNuwyjNrxd0o/gxX\n51uO00ROCe8dm6Gn5EpcElrDduNZTiOD93TGsOSEBrqu4/ryAmsapjbG48IyF1CG4EGv8m3rHLlE\nHh8m3sTE2aanc4ZxmfjycWRz3vPR9SVWa+aYMM1jtZItmVIEYzidJhmvaZyf7xj6gbu7e7bb7Y+e\nyZ+sGNzf7Tn/+AV5nLk8v2ReImed4e5YOMwKawPHOXOxC/z+/Vv+17878epsy+3ljvPO41zF68h2\nt+HV7QUxTeRl4m4/kavlv/3Nz3h1teX1yxuR0WqF9x4XDL+8PacvH/GH7x95tx/ZbCeC78hVMezO\nGHZn8qKnxIvOwEevmZfI4/0DNiXONxvqxj/Hprc1UIQVI9Ba8gnVyjIzGLHsjgtff/8ONU28vjxj\n1ytMiUynEw3Hrz67pvgt7XDkNFYOpxPVdnz3bk8/dHz28prHKaOIGKvogqD+MVVSaUxLZc5gwoAd\nOjbX59jamHLl8O5rdM2S4uR7chWLcOeEhx9jlJVrbYKIlyQviJH8hZoLdQ1WbU2s4mpN5Fye49KK\nqqSUcDawtIa2lp+9uKSkQltza2sptAbH8QQozrtAZwxXfQ9F0VQhxcJ2cMxxpNTKNnSk08Sw3bKP\nM0PvGdOJXR/YmkpuCbQoC3MSTr9pYIKji41lHlmKpFBt1hRqHzyKRj+IM/LN1vMhwjhP6Jox/YDV\n4v9Iaby83MnquxZenG0ZY8ZrwWFmDVqJiUytmavNwFIK+2leRyGhXD8ej5ScsFrTFFKMamWeI85Y\nSmn0QdPZDl1FcdhbR3CWTOPlTcemC8zzSKmFZV4oteKTpu8Has5Yo+j6jsNjxDhhiKZlYbsZKP85\nPBD//3j+8HDiM2+4PN/Qq4pV4nIz7vfUCr/59AVff/+Of3qzZ4yNV9cXfP7xDSpYuibzrA8WqzWp\naEoNKDfQ73r+/FwRgke1QsuF6izaWVIqLEukKcXu/Iq/uLxak/4aaRnlNm8SU4ZzuD4QjyP779+R\nUashZWaaJvquRzv3bEiBkmRgCRrVwtJrkhgMmlQU42nki2/e8WmofPSrX1If7rh7+5ZWE+PpxJvl\nxKssstdjyjzcPRIuDduzc+K8MNdEF/yaD5iebPZRSvQZUy6MzWL6Ldp3tNborOXF7Q1LaaSHbyGO\nAia6Dq1k/hUcppDygjIW64IAoKXQtMSFrUny5CxZgw7JAFBacAWtAWVoJQNZ5lXVJIuxc3gvBiZO\nWZRRjDFiFKjUmFPGGY2y8mOlRANxe7GhzpX9PHNzcU5qkBexa9PBMcaMMo5NsBxypqZIyolCwhjF\nxls2O8/dA6SUhQOxzLy6vuL+/oBykny9CR0lZn5+e0WLmSUlgjfkmPDOkrMmp4p3jkYhp4JRsJQM\ntdEFh6NxTGKOEnMkNrjcbdHryjovkpJsvJfDXSUJOtaMs4paM8dplvd6DZb1WlFa4WGMKK1ZxomU\nIlZLyCta3JmtE9r13fsjSim2T2vfNcmq7zumaRRz2R95frJi8Ltv3vDdm/dcbzcMXnN7s2HOhQ+n\nkV9f7JiWyPup8u++eOR86/irX77guvdULeGa2mhOS+aUCs5ObJ0j6YwNMg8brUBZSmvyAinQJmCM\nw61ZhRJFAUo3MQNZwy7MmgMYx0bJmaI1b9/fUYswFbdnG9EO1IqpSg6/sc+sQQEN1+jNqpjjI3Wu\nbLdn/Hd/fcO7f/wnmA7MceLNmzu+HyNv7xbuHva8+OszHg7w17/+lFwrD/uJbfAklBiJloJqSmjP\nrUh6dI3iEVAqWVnxHmwNqiDIKMX+5oqRhjp8L9ZYtdB8QNuBnCPOOnTn0dYwzzNDCOQomw9tzco+\nbEBbHXkzQ99hgJQztWmcNWy3mt6Ls9LpMOJ6J8GoMTN4xyllOqXZWfkMTW9EM1IbccmMMXExDExp\nYVAdkxJDEor8efuo+fTqnLePHxi6M7RuoCxVG5o13F5fcFomLjcDUTumeUbrxnYzYJykRqV5xjqR\nwtcCmcrSMn6RhOTzzUBTmeACqTVM0yxK9vxkzfvDgcFafLAob0k5CzFLK5aY2O4CGxNQpTGnRcAV\nKsNgMBp6a4lZMedCU5ouOHZ94GwTeTxNQBPnqhBoDXZDj7WKxzLz0etbPuwfCdryyfCCcZ5IKXM6\nHtltt0hyE+x2G1JKHA5HDoe9dKnmj7QY/A9//im/e3/CWUffB2znKIeJf/PbT/nd1/f8zd/+A6e5\n8OtPLkQvnjNjkpjsh3mmFkm6dZ2j946LbU/oeoatYggdKIWyhhQX9vsRZwxnOwdV0bRC60a3puc2\nZdBVGHn5GSirpCUS50jKUTgDJZNipEaPXVOJa63UnCTU0uo1Gtw8Z+ZpCt98fYeOE+Fnt3TK8oc3\n79h8aLy+vSJ0PVdhy+0u8s9B8d33D/zVn/6KxyWxrGuqnEayVpQiQRq1NWoV4LI2SeTNtZGLQq+m\nHhZQq/qxt5rbjefNvOXu8EBNCyqLUYvJlawU2SdMslgr5KlkDE0ZWs44hUR/KYUyFlRDq0bOkao1\nymgxRMkaHzytVMaSMT5IvqJrEmxSGt5ZvDaM0yRS4ZpWpSkEJ5Rnrw1h2NCoXIeA2TimnChxZnvW\nsZxOvNheyEqvbdjPM59e79Zo8owOg0S3t0JVYk5zHEdccNKFZcN2EKC2axUXCy5LDF0sheO4UAFq\nZugCoXf4omkUGgXnDEtKLGnm/GwLaLRVbJxhmSI1FvzQOCbxhDRKLga7JlOXKmY7eUkYgCIp02Hw\nvOgsrVackc0ENBF00Xj98gXj6USJhX1ZCNZhtRJlbhXLOesk0i44K2PRZsNmECelp6CWf+n5yYrB\nl3dHvnhz4OdXZ1wGS140fej44s2Jje/47OUFnenYeSu22kbYcrvdlvOLC1mTaAkYza1xWBKnXHHe\nUJWWUMqi8drw6vqCWhLzPDKOiX7Tc7bbgJbOoT638wq9EmtcCEI9LpmWC2d9x7AdcN7JQU9JgjvX\nVgwqqkgvXde8TKgUGp98+hFlHlF5ZjrMvHp5xnya2Z8SeUl8fLPhH789EothazqOcSInKDSC90xx\nXteVckvXLBZcpck/cxVJMTx1KQpltJAEm3QqF8FRzrccl1uW/SNMD9S5ULXH+IB1imXKFGNw3pJS\npGHF3RjAGJEsr+sylCLlinXgnQTFeqOFDl0k4dk5oXOnJDwJg2RRqJX8kkvGK0VpCmU1WlXONh3B\niX9EbhqrGvuxQKmoTaCmwmnO+BC5MI7HOYLR7E8TtVZ2XUfQjVMstFrEtoyC9opN8JxKgtzQrbGU\nmZQrXec4H3qm3HDFYBUUFOMyizdjrcQCnVMCBCuDGbTIoTU8HGeC9RKe6qTFrw1ZI7bCtIjpikMw\nk9wKcrwrMVeM1ZL/WGGal3X9bUhJgMkxJmrJ1LplXiI5ZgoF0wVx8qoLu7OeeZIOsVVIWYxplYLD\n8Ygzlpb/SDED6wb+q1/uuD7rhHQREyo4bMvMh0TzllIbUwbvFMooNkFi0ZrSOG/RrdAH2XE7I07A\nWmvm44mSEqdxQinP7e0NJS3cv3vHP765B+V4fXvD2fmWfhPY+l6Sc3UDVUhLYv/hDt91aBuINTJP\nEW3s6qEn8WC1SHy3xGDV1eZ6ze1bAUWymGt2WhFPld9/+Q3KNK5fv2AeE3038OFx5p/ffuDrD5mP\nLjsOU0Yhh2xpwhuLpRCUeS48GihVRgatNVo3tJacAo3cFiDEmForVsPlxhNvLvi2KQ5xxi2PFAtN\nazgVyfMzjla8tMRAzRWnxaefVvHeQ9Pk0qhFaNIteHa7LbZJt7AkuYEU0FkjNmiq4JyFlME68Yss\nikai0lhywzVYYkFtDSVmtLakWhnniAuOc2uJTXF9ueXweOI+ZXTnuBk2/P7tA5fbjrOznpoTbx9P\nBK8pKXKxGdg4CFURrWMsgiVFVThOC7pkri8cvW0o51mKfP8HFdDGiBfkLDZ7zoBWUuyC0pKCrCqq\nVXrnQFtUgxQjU5b/N+89tTZKruxnAX97b7HekskSvFIrD/sjTYlBn/eG02EmN7nsaIqHxxPGGbpt\nTy0Jo1ZeiJMV9na7gQpxNTHZbjfM88J3377h5vqK3v24UOknKwa9KRhgWma07znOC3963vFwPPK/\nfPuBw1J4ddbz0c0FV/3A1nnR+nuD1+BdT8yJogy4wGk84ZLEm2tdyaWxNJnZhtMRHwLnNy95UTx/\n//UH/v4//AFN4U9uL/irz3/Gi49eEvqOEjUlJqY4s8RI3/e8enVNNYpaiqRDp0rViookONNAP20W\naqU1EfI0pam5cn93j4l73u0jqSi2veXCG/6PL77nn756SzCev/r8Y16/qpxZzeAsS4YURRRkMWw6\nQ10ysZRV+qpXrX0lZSlE3sCSIy0nWkpioFIbrSgqDWcqt1tHK1t0uuTh+5GaI75BsxbrPZVGjDOm\nOEppdKuASRuhIZcqUWOS7htEZKUkQqzVhvVWQLSaafNMtQ6rLamJtl+XRmcUeW50XaBVBQWUklFC\nGUUtjZwVwSvmVDnfBnKuHMcJasVWxXY7MObE7aaDVri9DtxsNnx390AXLB9dDQTf8WG/x3sNRXGI\nE0tpbHqH0vB6d8XeHoixMMZMapGaNaVCsJppWuiCp/MOrTQhWDTn//iXAAAgAElEQVRwnDPTMpGS\nFFxjxVrvcBjR2tANDqOFu7FUsYK3TmOV5oWXX6utYZQm6PgsUrNB0drqh9kqofNsVlGddH+Vzrk1\nCdoKk7PzYsEeC/O4x7u1cCMaCaPh5csbTuOJPvzniVf7//z83Vd3fHxzxYtgoQpN9u3DSNOW6/Md\n57ny6iwQnMKYtnoYOjpTqTExxhnvPFZDGUeccWLRrTS1itFnTZWLvocVzOuc5Revr7h9ccZxadwf\nFlpJxNbI8yx2VMYQhh7j/eqfL7e+URajDM1q2hNaS5WvoUkUupE8hVYLtSTSnJhOMzFFpsc9Iez4\n2fWOXAtffH3H/ePM7cUFn//sBl8zn78QgcxhFL88tKIV6QxaEdMU0+Rgtyo3FUbhmqYUhWoNVRMt\nzaTFrCAq2LWjUFXh0bzoLerqjFIix+NRchJTpuQsmwNjKbrRWiWnSGqVqsBYh3dIF+LFwQeaaBWU\nGLM4vRq6ek/NWV5CF4Sz0ArKCpjYNJiUsFavAGTBGo00JA5nGxgwTosVe64Ya+icZ5lGeqXZesdx\nkRXfaU5sXSIYi66KJSdKkjh4o0AHA7rD5cqyJA41Y+xI0LJ5mnMWG32tRH1pBRtppaDQeKvXDI+C\n7zxh6KhVCrNCgmmdc+h1hqc2dMuUSTwUnXWILQwSq45mXu3hZZqTxCMJXFW0Cl0w1LqOHCvZK3SO\n2hSH0whZMY8T7qkAz5HgHG31pXNGk3Ki7xyKnv83bcJPVgx+/upC2ta0oCUwl8O4sB06/uJnLyhZ\nJLBKg7UGZRRUcDTeHvd8c3/ixeacm6sBa8XyqSaZY6syZBSHWUwsQxB6cmuy9z8Lnsut45cvL3DG\nkLUhlcoyjRitsH1PHzxjntdDWFG1iOuQlsOIEnaejAt5lSKvhppKUY3lcX/PssxshkDe7Kg4UmmU\nVNie7fgvhg6DYtsZxkkxzwWlGzFlilICalVp0ylFTE+UCJlKyc9uSXWVT7cnf6SSKTGSrUcZIwVN\nO4np1pXeaS43nlQusc6LAel0QhVxgnL9BqMLJotNfXNhpbkWqHJz1VrxPuCtkMFUE1LOFBOlKWqO\nOCuGtEsuaDIoSLXA2ll440mtyZqtPYGMkkmhlWAj3llaKhSv2fSWoDydURzGE6YPlCZS796Jw1LN\niaoNWmnuT0eMG6gVGsKHcM7QhyDEqZqw1omxjpZb2RnNkgp+jY+LpWKd8EeMlgAYqNLJADlV4iLM\nw74LaKNYYmScxRT3eBoZhgEQizujFXmpWGflsDfhAcSYZJNlDTGLx6ZeI9V100zjTAieukg+RB8s\nORUpBNqwzPE5tKaUpwAbfjBv1ZLT+GPPT1YMfvPRJd5U/vaf7/ji7gODNbzYDuyXymAnXl3tUKqQ\nMsS4sNsMLHlkP3YoG6g2EmsjlkYzoFOjFTHkBNheXHB9dSnCnZyZY8R6h9MeqzRNFeI0UrQV7n0q\nmFaJteBKw/c9MWeW04i1lrAZcE4ouis6CDI6op/ZCrJ7b+uLTefo2owpigvX8/Y4MloBkrSptFyZ\n08Lbh8KrXY+zlsMilOASI6UqMOLNR2OdJzVP4rJaZWPR2uoKraQ7qFX23a01pLWQWDqtRPQFUFLG\nlsqLoZdAF60o80hdJlpZaC2Rm6JajyoTzizUqLChx/nw3AHFCHMtUDIG0NrgnCgzlbFi/ArMacJb\ns2Isa85iFeWiWvUOpVSMMpgqDEiy8PqVblwECRJNJpFaQzuPyogEula8Aaca3x0XNr2jd46u6+i8\nfc7XfPq7xJxwVopHafL97byjNk1ME9YYVKtsOrFcq7WRShImpjPQKkZbQKGNwoU1WSotmKLW8JeM\ndYab60u6dTSYZzGOlELTxGBXV5o14gRlxafTpIazoqA9nWZygSnOYuM+VwzgnFjVB++oZc2ztFYK\nvhLT3nmOdMHRqPT9IDZqP/L8ZMXg3WFhYzVFKebcGHPhEPfsfMfPrrcEp9E1M+XMY0x0zoKzLEX0\n6L/56DVBaaaaoSlSSeimUblSWqY2hXaWs8sdZll4eLhjPIoZZgg93juJ6qqJ2OAwzTijxGUGWJaI\nVRq321IV63xeQBeUkeawgdB39dohIGhfXSKVgl8SuQn4V1rl6qzndIr4zrI/jNAqX7655+1YabcT\nL69v8U5zPFaW2hi8R62rTkHXC1pLztFTh5BLES6A1mhVnpF6rVeuw1okaJVWmhCrnrz3XMIZiw+e\nYdhw9+g5NkWjoK2AZ01bAQrnhahkJFEoMUGpBbse/IzYslm3zstKoaomprg20oqMxgVLSZlUIikV\nWhNUXistzMQpMisoTbPdBrwxeG8YT7Os5FSkVrDGoLUSb8pcMJ2nNs3t1RmlSqd2semYU2JehPyk\nQKzbckWhoVWWPGOdFQBbGfF4rI2KJlcl0vBWRc3a1PpZtB/YpkZRqiKlijZSeL0LeB+kUFeho9cG\nXRcouTDPkVzLc7QcyFZKUfGr36dsa2SNqXSm77cIx8PSirg0LylCFF2MtXq9GBTOWsxgOByP1FVw\nltJCa/X/+TCuz09WDP63v/uGs2D47NML/uLjARPEOmoTOoIWim/Tmm7oYKhrxbNYbYXVphrJ1tUL\nzjDGiFdyG7WqKDmJcjF4jK5M30z87ov3PCyZYej5s198wi8/fkWqhdAaoe9FpNPaevE3uWmt6AxB\ng2pUKm0NFm2rE7BZbxxdkVVlzuRl4e50QNOIOQlYlhPTnDnvDF++feBuTry7P/GbT294mAsvdaNm\nuNhumGohxyKAJA1lNC2tpCP1dOSVzLGtiixaa6yqa4yWUIStVmiz6giQnEVBvi3RO2pt9M5irRMv\ngVKoywlTkoTNmEJTBuU85smleJqoMTFr8M6sB9OA8qiqybWhlcMYhQ8ddV7IrRHTCoBU2YZYIzTd\nphsxCVHMWMF8mhI1aCuaZY4sS2S324oBTZX9+TKdRMeCZZkXeucYpwnrDJ3VjPPE6ZSwvadzFr2G\n1RglRCetJPUpeEdZRWVaGZoWkFShcEaxTAlvAsaotYAB69caBNOQYowUiXW3rJpYwpWmoDZyy9Qm\nQbTzaiSjAe8t1qgVtxCgFqU4pokQDMF1kupcpJCoVRmrjZXYdy3ejr0Nz+E03nuM1szLQugCyzIL\n9fxHnp9OqFQrr4cei+Z864llYesNV5c7lhihSUJvZxpnNjDFJO61vScYg+nVKgPV7Pd7/sMXH+iC\n51efvmQz9OhgmFPi/Xdv6IaA7bZEvWcfG9hKagXbWXSzTKeZkhtaG7nhW4aSqEpBFmN2te74rbVg\nhN5aa6amjKpScdO8MJdCyYm4P9A7xRwh5oUNjnFqWFU4xoWzzYb3aeSzlx2/ejFwKob9aSS4QC7i\nMaibrOFkQyH2Y0rJGqq2Rm36h5Fk1Rp4C7HM1DjRgqc1Jy+28IVXbKNgjWE3BNlbpwxVceY1+mLL\n/gTx4QMsBe0DzUimokHArFqKkHqsIS4zrVaCE429ftowJANOwmZySfjgaLVgqmZZCkVXZg2KhtWN\noetRNAZvOZ4iZzvL3Yc9BcN4ilzvLMsU2Qwe3Qsx5xQT3hpSakL5LZHzIVBLE0fghBCiloRXYIeO\nBnhjyTmhkK6o1oo2hrg6UGvVyKWJR6U1+ODW7/sTA1NGLa3lVn7SeDQk3xCFWMrXirUyRLamyDmB\nVnKhtCoxen41xq2NWqr8vWt59n4I1sifqSQRLHSenMRFurOWlBPOGnLJq/O3pImldMJ5i3WW4/FA\nCJLb8GPPT1YM/s2fvmTnZW9/fT5w2FfuDgt//9X3bIJl8IElZ24vN8SiCNbifY8PWpDmWknzAkbz\n4eHE29PMRa2olum8wuie0sEyzYyHjLOWv/rtZ3hr6KzCOsdhfxTgaNXZa2OopdKKWttIwQMK8gHV\nWKjFYKx0A0rLnvmp+aqtMi7iTvPuw4E/+2jL9esb3t8f+Or7Bw5LJE4zqWr+1W8+5b++6Km1cZwn\n3p8maHC103IzABiZV2utayFQz8xG1A9rvtJEPKS1FASVEiVOpKXHOIexioqYq7QV9BRIQxGMZ1rE\nHKNRuOgCXhseSmM63FHijPcV5wdS1ehS0E1yKy1G9upGE+PEPj4yu5VmbIWG7IKl67x4UKA5TjMN\n2Pie2sT8NcaMIVKbJEZ1fcfxKBb3tVS0riwJ9o+PXHPGtg/MywmDhPPuOv1c1BJFkphrYdcHnJEQ\nks77dbyREVBbsW5T+ofuqlVkhWqMxM2XioU1Ek5RaxM8QSmx5Vf/NyC3rSPB0zZBSYFurdIQIFAp\n8YnAmOc1X0pF+CJKEZxZ/3sLVVKpa2nUlokx0ZoiBEcfxGJOjFFkm6OAGKP8fWpjmRMuOLw3Ipm2\n5hnq+peen45n4Nxq+qlYcmHjHHub+Ju/+4YeCMFQsXxyMaCM5tc3L+iHSIuW/uqcZT+JOKharl+8\n4L+/OsehCM6xzDNKaZwPErjiO1paxPizwTJFMaOzmjwnSdU1llYTTclt0Fqj5PJ861stFTrXQo2i\nX1Ba/AD0GorinEVtCncf3uJNE9ORaaKrcD0EYml8tyz8/t0D/+VvPxVsImcG77GxMc6ZJYr9e61P\nWgC1ZiesuMX6cqwLrRUPaGgNuiqMUhglgFcpSTgCVqOl7pKzaAtqa4LoW41WFmMU0xKJMdO1zPX5\njr3VHPd7VInk6UB1PaqWHwpTibQmRdSs684lVVRWuCLjzTw3ltmRhkHYiKXSeUNUBVXVeugaJfQo\nBbswoLRmniOpZealshs6dDCEGmjA/vHAsPFk1ZjHmcUo3ny456PrK4JX5JpxxpKzHF5RE1ZiLDhj\naFHWtIWM1ZZc8zp+GZYl8hhlzTn0nRSYnFYlqhbFYRMuSV2LcF5Ht1JEN6OoLMtCa+KYVVZyljXy\nXkkn8gTwsorCsowNyshEqmS0gIqzVjCg1Um7pAxGANyyhssYLY7W2mh0p/HO4byjlERzTkDa8ke6\nTXg8LhQUu8ETc8UrxWaz49OXl7x9dySrRqrwhw8P7DrPiy5wjI1dd03fO7796j1jMXzYJ3Z94KJ3\n9KFfJblCM25LRI6r6PZLSqinub6UdWbTOC0VuZQqNF8tu95aC/WJ4queEHtBxOs6eyu1dhPIreBp\n3L64RtX3vD1EHu6/w2jH1fUObUQleGiZt28+cHW+o+s8NTUuh8bFumosrYpmohQBC586BWS1ae16\nU5UmLwkCMj7ZqTkNuURqWqglkJOs2qxCcI/Vt7HVhoBXhs3gCcEyjTNjK9jScLstm37H6bgnjnus\ngjGnFb3OVK2wvl9ZFgKgVsQKrBRxIG6lUessSsSc0NrQEhyPlRrBdZbt2RnONmpOlAIkiCUxp8Jm\nM7DZWGxwTCdh+33z4YHrckYIPQ+He9ywwYWew5w4G7Z8OB4YwpZaRb24pEoqy6oOrCJOqgllLUuT\nzzmlKBwLrSSyc10V55QppVJUou970QE0nkHKVqEUwQG0MZTVeWiOQvqyDSgyWojrfV5j6WQ00EpL\n9mQsGCNr8LquBlVj/Z6J3Lo1AQhTTNggmy3nZYSx+qljESDRGFl511V411pbA3D+5ecnKwaKwuO4\nsHWGyxfntDU1+V//yUt+13dsLcypsR0sF33HThfG0tA+YKsYefztP7/lm33EtcbLXc+ffnrLn19s\n6EJYD2tD2UCaJnqnacUIOUgprHUYZSg6ktZWX+knYkldIUMl/bRaqzFqZRzKS69WBNgajVMiWiq5\n8urlJ3w4Ft58+Q1b30hxYdgZdtsdH6dKyonffxh5PC389ue3+OBJ4xNQaLBNY1RlQV7KUquUtLU4\nSCegV8KLwrQqcIBSWKXonagMY5yoi6NoRV6t16UFVrQqbXBtDWsqQYHTGrvpGIIkRceU2ClNb3fE\nPqC0Yj8tHI8nao7r90iYcamIZ4Fh7VC8R6sGJTHnwmman1dpta24uBHfhzRPfJjnNaDF4ENH8AZn\nLa5mHh8mWi4UJTTm3XZDxqBipCqDb4rOd0zLxP1+BCT9WgGpCIo/zTO2OmJZZewozs8cOSWsFatx\nGlijuDkfsNYIGAdY58S5W8vqD5lSyTk/d21tBZ4bgt6fn21lzVsSzon1Xa3iIUmTG5218CsF1uu1\nYysSnKNFhGZXiv1TB0LjeQVpjVmVjQKwC5aTn7vIeZ5lZWm0kM7+WMeEV1dbbi42nA+Wq60FPzCP\nJ768P3J3v+eg4C9/9SmbjWe3GYDMpXLEceLhMPHi5Sf8Onf8siZQhm0f2BmxGKcVVBVzUNXAaIvk\nFMkazCh5aeVD8EIUWok0rSFpumrlDawyA7SCJjeL3AgraEjD9IGHD3fUnHg/FT57ccavPnvNV999\nSwZC55lTxVfF2TDwmVOU7x6JqfAPX77n9npg2+9ITbAJp8zz7SQfouAapWahshahHxstjiFGK4y2\nNAoOI/yHVihxJp+knWy10mpHNUbGBq3XF66R8mrXZtvzyx26Jwv3ypnuWKx0ELvdltP5ltMcOT18\ngLxQmqZog7diMFKauC+nFKm54rVbuQ8SCw/iGj2cdQxd4Hg6CkBKW92UMqc1/CZPFT9smGNm02la\nAWMN6PYsAX6cIttBMfQB5S0DIvjJTTPFhe7arizHxtY5HkujDx6MpqaGD5acJVW6Vemy+uBRXlr4\nXCopRVJs6+ZEQLpaZTxzzv7A7Vs3OC1npmWRz4+GIsncrhWqCbMUJCZNa4VuYpxSq1w6dX2/Si1A\nW1WJ8nPGCLeiNhHHpZTXjmXlqGTpZmKKgp+oJ7s786Nn8icrBscp8tHlDuchz5P45cfEf/rujvtT\n5GbXsekNF9ue3DRnl5cEE7hr70hN2qK//PgKFyy4jpojJc1iUDpHOcnWQp2kBCixBqtVoslSK5im\nsNrRqszedUXLn4g5uQlAZ7TQjLVuYvSr1DPeoVuh1MoX7x6Zpom//+7A5X/zC/7so5/zr377Genh\nAds0S4HDGLk623A3HiWkpSoyiilWdl2TYJPayEpuBtdENCt9wRPwp4TnsFqP1/YkdOW5HWxNE6z4\nDIxpJDZhRYKiOodTYk0iDkVidSYj0g8gJE2AsFLBWVCdl1sNuBw826HjXY0c9w9Y3aG1xdZENpqc\nEiVZqaRGiDs5JVIRLCh0Fm+MrOeqdAM5LczjiRACxSdybmjbMMoRvMXbLVqx5jkYUe4ZQ+cd1mi6\nYCBlTG08jpF5mcHKry+p0HlZOQu5x6B1hSK3/sODjKV+pVPr1liSoPPWOjlgpVJyoZr2rAh1xq4e\nl5WGWn9cMFU4AlOKOG1FZqyVZEmyEsKUfG7SeK6fTWXdaPBcrGlQcnnmlrRVb6O1xqz/3lpjnuXn\nnHMrKU3hcM+mtrVW2Wb8yPOTFYOvHyZA0weHt4o+T8zVcnW+4dXVBbcvzjDK4rXj8LjnfLdhXCau\nbq5IS+TNt9/jrGWjBoKDtLrMCNFDaMe1ZEwzktBTV7S3AishCSo5RiHjrL2fUisBRGl0W5nn61qv\nVjBtvT1XPr5Tcjvf3t6ynyc+73Zsdpd8ePuOXlU23cA4zuy85ZAaj9PEu/uTAD/Ar2+vxLVGSaHR\nWq8GK4JIxyWirV07AbXyXSqgSSk/6xfqEzLe5PexKDovU/xUI3WR7D+jFbWu61INGLO6MjVJSmoK\njRSbp/ayloL3ApCllGi5YlXh5cU5mxCITbwXx/1IP/RMpbDMwjikZZaqscajjRhsqFzonGFOmVMU\nWW0rYIzHWU9uDaMUy5LYnfXokuSmq5BapmTHVDJeK1on/IjTLBbuWiswclNvjKZ3jnmO7HrRH+yX\nGdMqqirmeQGl+e77R7rOsj0bCBsnKH3O5JiF60HFOyOhOCvPVCkZH1OCXLPYwynDE0HVWYOz4iYF\n0s2llNdtA+uq8EnYtt7yNLyVceLp4Mt6UoxzlHjrsSwFZcUXgfVzqqWuBDMIq8x+WWSUySqvAOcf\nqYT59sUNOc1MKTIlxRSlJfvF7SXBWYbtjqoMsw5kJ+EkJWW03jIvCfqO7W5HHWdO48L9YWRDZrPd\nYLuOJWXIUVKClRh4KiWoukLR1ltGNTCrkKdVUeC1VmVkUGZFkWHNp5I8gSa74lplHIHEpYefvbrF\ntMJpXPiH//QtcZk4O7+iUonjidD1fPnuAaUaoTX2sWBVYxxP7IathCohbaR4EAqZx1tHLlnmhidh\nVJXuITcxyqirdPnpUVpWU50DYmGOI0utKFUlYVlbiSQzrC8irMOm3EJIF4IGY+zKtitYIwy+aZ6w\nWnF1tiGXytFqagoYDNp6Wk7UnIQcliu6kyTs1Bx57amVNXjn1x293I5NNXovugRrDdM0s388kGrF\nhh5tNc5WLoYt8zJzGkdybqAMMUUuzza0lMTN2TtSzmw7xzjOnGZJeFqWTMyOvnd8eP9AtkLYGoyY\n2E5jJJayhsWCs5pGppYmlni1rgY2K9NzTaZuNBHMZdEu+LV41FaFNr+a0kCRcUFpnlK2Wdt9wYNW\nNaR5kqwjWwyg5EgfepT+gYBGA2Okk8sproC3vAtPnYNSihDCj57Jn06bcHvGNGf2h5nvH2e+OD0w\nRqHcvtjtuL1odEHmoLPNObk2alXc3z2yjBPBe2xKTDlTWmNwCqqm0kilMi+FYBSxijzWIKu0kgUw\nahVY27uiKwpD02uuYW3rfjdRlKx0jNEYq0E5qioYZbEKYqwr5z/yf/7uGw6nI04X4pj47ONLLm86\nDmXg/tv3uNp4d3/AecUfvp94eb3FeYe2fl0UNlHnrR550LDO0Kq49dT1cGqlqRWc9M2UJpoFRaOu\nNGVQtOdPt0HKzHkinSpagfEbod2u66Yn2rJaxx+ZlFbmJ0rMQY2luSYpzamQ4ogqiW030J0POAOp\nVNxS2O9PBKs4LieUka6md510QM5IulQt9F0QokzJlNIwxsGSOU4nri8uuD8dSEum6zd0AYJ11JYp\nc+QwLywFttbig2E7nK+0Y0PfWXKuOF14dzey2fYUNHEW09DDsogHY7B8fN7RsmJaCjvfGOeZOVdC\n8ATdsMYDhjlHQLQuuSZxijIKtwbVOiOKxPp0aainAlDJua7bqB+o4rU+GcEIGB28X8lschlJdya+\nm0+MwqKEgo1qq0OzFyKc0iwxys8FL9aAWq9eCnXd5vyRdgZnHQxuoMbMf9xP/O7diWlJWGN4OCRq\nbrw891xuxBbsEDNqs6WcHqElllPk5DTWWpwzOO1BF5Ylk2ax9LLGkZ9ooeuH8kQN1euOV9hgjWY0\nylooldYUSokcuJZCLAnrjOz4owRbtqZ53B+5vH3Bru9pSTEud9xNhY/OAx+/PuPqPFDnhdBtODs/\nZ//+ga0PZFU5KcvFJqCMZwiOJY7ULNVeW0HSYxbEeT2RqJUW/4xgV2lHFYJbCBou/Ifa6vPNw7oW\nNaUx5Yl4AldWALWJ2SmrzZZa8ZDnZWb7QZelV6WmDQqaZzoJ7bqUTHCWy01PqQ1vE1Y1pnlexUcy\nXihlUKtyriD6hTRPRAQJR2tMK885j+M0oprm/2LuzX5tW9Pzrt/XjW52q9vN2ft01bkq5ThuCHGE\nYzuJEgUkBBcocBEkBNzlApQrkn8gAi4Q4hKJCxqBiEAKSIQoRgRIh6PYcYJdSZXLPnXavffae3Vz\nztF9LRfvWOscOWVbihNVTalU56y11zp7rTnGN97meX7Pquto6xYdZ0osjCkx6EABNt0ap2WI6qzB\n54zWirZ2hHnm0M+SDFUkK9FHz65paLXGaMmsDH1gP3rhY+SIMoZGWdT9liRnmqbBOpkvzUHaFnTB\noBeV90KILpkYZTUYfVzcpIsN2eoH0VJKWViURb5WLTbnez+JvMrDweB9wBhD8JEpiGZBZhlp+dwi\niTfir4gxLk5MlkoXpumH1Kj08eUBhSCtVNPx6NRSaejqisY5LmrHycmaqnJQaZTXuJywuzUvXr9B\n1xWhaByy580RqlqCKpX9XBpqVEFl2b/GLLhvreTpl1MBK7p9o83SH8sBgVYoKpQuKJVAK+aY+cff\ne4Elslu3fOfDN/zckwu2j065vXzDl9864f1nZ9S1w1lL9gNvjjOH62s2XcNxHvnKW1vu5ky3OaEz\nEvs1jqKTt4t7LflA7SoKEZ3BOMs8z1I+ZhYN/WKlRm7StGjpRTUJKGH2aQpOG5TTaJ2gJCY/MudM\nKpmmlfAOg0ixixJoixwIy2BLqYe9uxYBHcWC3XSM1jH5CaZRRC9KCbxEZ2xtUHrHNE2ERbasgBI0\nVVVjlWw6rJWZSUkyHK3qGpMzwzDgnGQTGKW4uhrZ7hyrtqOqHZVZVqipME6eaZ6pKvGAFBJNXVFr\ny6qxlJKoGoNPjtmL0OzoZ+6OE4OLC7INxjlIIpKzpKSYQ6QfR2l1rMxxTBFXpbUitjJaUPNzCJRU\nFoWjRWswyAbiXqKccqLMcsCmIvoXoxXRB+KyFbi/iUH+nLGG4APjOC6rYGFVmmXrlaM4brVaKFvl\n85YkhAAsmQz2hxSIepsM8dhDu+a9x1vO1nd0tmGaEyena3ScWa1brm/uKCkz5oLqoaoc7XaDtQpX\njHAKYkYZiMiNYKKgpIoqoOVCU0laAW0tZJkA13WFWowxFiVVgawTBLahxUueFQ/RYk8uzgEZgL33\nXo0uienuBlJk3bTyBDQQssYUS9cVqs2a2I/ouuOTyzdYEzndPcHawsvLG3bbDuNqTMms24oYAlf7\nnpPTDkJBIFaaULKYamIRQ80yzMoRrFl23/cmGSMDUF1EYisE1YyqLEolpuRJ44FkNMYagZcsFYG6\nl1d8YS9dltYhF1C5YJVBWWg2lpBrjseBq7sDXVvTNQ2alhA87cowTo7rK1FX+piouxpnEDWjsXKY\noFh1a+I8kuYBlGwCphiYZ5mGr09P5caOnn4/Mhe49jOrakVQCuMsWhlqqygGUAVbMuMQMRU45Xj5\nek8xmdY2zKlgNPgwctKc0FUNGI1dnuAhydS/Hzw3tyN1ZyymaiwAACAASURBVOgqR06Jumuwi8ch\nzAEfxIeQYiSGBFHcpF3rMFYz9SNlGe6FlEjLYBIt750zRtrXUphmL+rUyVO5GleJuAjAh8RwnIGJ\nqja0XUvXiEPyXroeQpRWErkWrNWS7vQgXvv+r9/xMFBKvQP8N8BjZIz6X5ZS/gul1BnwPwLvAd8D\n/s1Syu3yNX8B+PeQSvA/KKX8te/3vV9eXZPnxHvnZ2ys5eSko787orSmNY4pB6IvjLNH3Rxx24ba\nWfbXN7htR2cMJi+R2EXYAApDUeXz6K8l5AKWIZmx4rxTkFGkUrDlc6lxzgmMqAxV+jx5OC/jLV0K\nbz/aoRcdwMUplBw43NxBkVRilEZlDSWQlGJVtyinGVThvNL8+kefcb6pqFPAKi3Bq2lmP83kUjjb\ndEsa0QT7ImYWa1g3FT5HoRw9rAUhRkFjUzToJX8il4en8P26UavF9ouImKqcmZInjj3aWCytbCQU\naJZ0JWRivggXRfWI/LvV4sk3WuLYndGkXLCqUFlNtemYRsscAtpZ7PkZx3FmGCdKKfhBiNXKGtn+\nGHHlBT+jUdjKiLxXm8WLodi2NdFP+FgYfZQEoUrmELW1WA3rSvSQVlthDvYj1jps0gx5FBFXVNxN\nE87CZrNFYOmZum7o+55xyAwhibJ0YQ8klSlFYuXmGJn3g1QGWt6DlCFEQe1bY2mcVFpDP3I8DuIJ\n0ZDC0jbkjNEy9C0FQhR3aEpL6T9HfMjENFNljdGS36k0NO3CUtBKVIYF/ByXDYS0uEXFxdloZODr\np9+zziAAf66U8itKqTXwS0qpXwD+XeAXSin/qVLqPwL+PPDnlVLfBP4t4JvAc+D/UEr9SPk+Rupf\n/eAzSlTczJ7z1YanT3Y8Oj9nOO7Zbtb4mxkRYBdM7aiqijjPGKsI80wwIhIJIcmE3FmUL7jKUIyl\naBkmykRbL7bZQCnxYbMQQ4S06MSRE+R+gluW/XKpBLZxv16MMaONVAoSLGLIcocxhiBkoQI2JWzT\nkAKMwwyVZldvePLkjHVdsT8cUG2LdRVjGJinSMjyVHhxCPRjz09/9SmXSWGnmcmPWCpcnYUgpEWE\norQihbg47PTn68koT4eEyK810k/GBa9VLKRY8H7AD0aEWfczhhLFKmwXrfx9qVCWtgGIFIwSNR0x\n02jDk7Md0zwTF9GLlNqFrBKrTcembdn3I8M0M5SlqknCYLDWivJTSRbkPQyVHDHO0rUNx+NBDuiY\nqa0l5czK1szRk2ZP0YVeQVaFumiOkycqWBnD3M8ko2mWliPmRF1rVlVNiULF+uTlIH/fXPBKyndb\nQKvCZt1w6KfFf6CYfMRE+RmVYgnVlXZTJM3yfWISVaqWLHqpMo0GXdBOC2K/wDCMhOMkQBgjLVld\nu2XQmIgxYI2S1mPhRApkdYHP3b83KS9shMIwjChtF7FXfIC7/FMdBqWUl8DL5Z+PSql/tNzk/xrw\n88sf+6+B/2s5EP514H8opQTge0qp7wJ/CPh/f+v3NtrByvHq5oDVlvVe0aiC1WIB1VpTrxvU3uFD\nokoRazXjMdKoihBE5x3mQNU6nDXSIeeM0YKgVlFYB8qAWRJocoiys7eyj04+LhwDmZprbSheACZW\nGbQVMZJFU1IipoipHMQkE/+QKCpT1RX1uqVtNR9991M+vDziY+IP/vhXWa02DMcBlTPffP9dPv7k\nU4wxnHYdQWnCZMlmYrOqeHMXOF5dsk+Gfph5drpjHhrGfESXwpurW05Pt7SVqCjnGHCuIqdESgVt\nlbypRlaElTb4IE/zlGWT4IxZ9t+JEhJ+2DOhaTdb0ALQSMu6URnxQ0hHYpbGRNoG7odfSp6tWina\nxpGyIYTIPE4oIk0lPMaq0bTVlikkrocGPw3oDL7A6L2Eh6eZbDUGzdgfKBicVxADOUaqpsPVNUpZ\njv0Nh8PIatUsMFdNvz+iUIxGUa9rNtYxz4X9PNDWLXNWXGxbMo5+HOlvLsX1ubzPOss+frvphF05\n9Mwh0041SlVLCnOirRxNU5GCJ+VMa50cCAWmKeJZDufFEZmCKBCTCqIWzXCcZvwyjJzmQEgZlTO7\n9Zq2NczTgDKOymm6rkErJZFqujBOEg+vlcJPQURPWTYMdVNTOS1tsFZ0XYNdthf/1IfBF19KqfeB\nnwR+EXhSSnm1fOoV8GT552e/5cb/BDk8/onXH/jyY5ny25pGK7qVY/KR7aZmngI313syFft+ZlfD\nza1ns+5IORFSwSmHKgmsIWmN9rLSUXVFCUmsxUURl70wOHmyKYNB5LqqKKpGNPcyvLGi6oLPS7n8\neVCJMVJ+qgJFWwyKYg1xnqi6lpILf+cf/Cbf++iSm2Ogtpofu7nl5MvPOH38Hr/4t36JogT+Wdct\n/TBRrRva1qGKILtTSTxZW06i4dcv71Avrvk3/vhP8cFn0i60i0dgUcEzTwOpkojwQial8rBFKKmA\nEu6e9IwKnTNaF6l2lnaDkojTHq8LVVmhqxptpboS7KnYfCn33/te0SAleVGyRjNLkpSrqgUAqmjq\nuEhpgZJw9aIWVIXgDFpBKIpjP9FPI7nIYbZuagbvKUkAps4K3ksZI6zDcZL2zjlQmdo6jNaMJFTR\nKJUoPnB9cyQUTcgRWzxdq/DzyOAjGUvvM00rQbHaLg7HZBiHkZQKKSqaRkJ5YpihSF5GTImieCAg\nzT4xzzNzjOQkkmEtc0ORixuF0QJ4Oc6y4pvnwBgi2mratqXOhZjEOTuMQWY2KZCjXIvWmgXPn4he\nAK6gFyBMIiNehlKEvjSMnrp2HI89lbPyd/29HgZLi/A/A/9hKeWgvjBZKqUUdU+H/P6v7/u5XW2X\nfrNhPwV0Fsnu9WGmqxKnFycQxGwSVUQXw9DPrNqGfpgBS9OIRj3HRMgyZS1R1FxGZAcLsUZ24woN\nC/Xn3okopZcQmpXWy2GzrPQWOTJ6majnz3+gBYwuEtCqws+elDIOxztPH/Ejdc1uVaOUIUyRqpp4\n8tZjPnv1hnajeX17EJJQcMw5cnk3s6k03/rkmst9z7snKz7ae8I48Xf/8Ye8te1AGdrGPRiMQsw0\nbUtRi9HK6AcXnTBP1BKCIiWkuf+5S5HhqrJLCIyAZOPcC+K8XWGrZvFkGEw2FFNQmgdBi6wc9VI1\nyPQ6yWABlZdZQluhklv27HKTaKNxKtNZTVIVVSWzhnXj2I81d4cenSLOGp6enXLbT+zzkaI0UcE8\nDeIRKYrKaVzliMFzPBwWHmAgZhn+Xt/NoMWerWLG5xFnFIckLaQxkNKM044SI7OPZCWpT/PYY7SV\nmwtZS4I4MzWCOj8cehGJaSE8s+hUYFkIp4I1eoHmFPwU8THjk2hIlNa0bU1dWQzgF42EtjKvUUrI\nSuMsNHDFcu0Whc+Sp5BjWOzNUFWGylYP18fspcoOORArR9c1v+N9/rseBkophxwE/20p5S8vH36l\nlHpaSnmplHoLuFw+/inwzhe+/O3lY//E6xd+6Vti8dSGZ08u+NLpqfwAVhOnkbpZ4Yc9ZycnhDBT\nWcvYz7SuQ9eW/TTKOkyLEywZizZFfAtGDDgqCprbWENC0mV0ljdyTgpbOUxerMjL+jGViJ8mnJML\ngSi6Al1ZEpmSlpZC3QuUROte0KgceO98y11/lB4vKMasaSP4yxs2uvD2+U7ozdrCPHE9BDatw1nH\nZtvxjbcyfYz8xnWPz5CL4Rd+9VN+9FHHH//Jb9DHIulESoOSGYoqDXf9rezineQ+5CKbBV1kC6HU\nYoa5P82QTB+jFLU1OF2YQ8L7gTl6QtVR0hpXV1Cc7BINYgJbKgAxF/EFi7UMakky5NSLU1KZhReR\nZCePKkL3Xay2jXHYEDHKYdWK28OeYTjSVR2P1h1tZajblus3b8i5cBhHNusVWluG21smH2hWK3RO\nqMoSE0zek4rMV1L0YhLKhakfUa6icmpxByqGQ8/sZ1JRhBQ52WykQrDieBTOgIBUjLWi8kOhrCP4\ngJ88caFJKaVomloi02dPKjD7mXGaUBmscTijpTJd0OjT6DFaL1F6ATVmNtv1sioMFAXHYcTY6nOZ\nuDLE2UvLaxS1q8RMlRcbfhbX7ovPPuPq9cvlwfd7qAyUlAD/FfCtUsp//oVP/a/AvwP8J8v//+Uv\nfPy/V0r9Z0h78DXg736/7/3zP/Z16q4jzx7bVAzjJOPKGHGrNbc3N5jacWYtWkd0KCQSh0NP0xim\nOBHrlrubnrPHT0S0YQyuqTnc3lLXFXbxhicvNlHtxE+A0qQUiJNALe5BJdkPYr1tK6kIjEJVNbaI\nv56U5IDI9w6zIk+WqDjZtWgdOYxH/tavfo+Prg802jAMI3/uz/4Zzp6d0PcH1PUdfuh5dtrhx4bf\neP0h4yFwuupoXM1752tWmzV/4zuvuN6PBBJznLHrNdsObKmYvUSv2awlIKVkQoRNIxF0GOm5SxQx\nUmVExZgQqeu9TkHESwW5QxOVlTZijp5pCJQUKXkFdU1xFaZoilELCAZRKmaFhH3q+xUOwIOuviDD\nVq0Mwn5Ii66joJNUbtZqjK6ojKGpKrrGcTz0sGDmqhQIk0flhLGG85NTxjBwfZxxxtBtOtbriv5m\nYO4Hdl3NPXtwHjxKZ7rK4nOA5aYZhpmmqrCVZb1pUb1mXhD1V/s9zmi0l7i9tm1wrcSn5RTFmlyE\nbRlCRmvLqnGELHmGOQSmJEE+SsvDyWGYkqwMQ1wYi8pIhZkzXVdjKo1ztcwdxkkAKUoGhW3ToJRh\nHid8zDgnswSBuETBni1KR2sNfT+gUJycnvL8+Vs4K+K7v/dLv/xPdxgAPwP828A/VEr9/eVjfwH4\nj4G/pJT691lWi8sF8C2l1F8CvoWs/f9sued6/9b/sDEScRUjxYMuEJfy0enCphOzydgfRcseEofk\nebTdcH04sm0qxjniVh0USbMJzlGXJcEmxAWdDk1doZMMz/QyqdVIbNY8xcVcZ7BOUy0AUYVgriii\nI9dKfSGCXSbqRmtUEYnzNEaUdfy9D674jTcjt1NBxYBBuHfWKXTwtJsOt16hb2+xKvLNd5/w2cs3\nbDpHVSmOUfOltUN99Smv746YtiGGnpOq5fKuxxTLNAe2509IRqjLkNmuO9RyW99j0ypnJMMgy7TZ\nKiUHgmxSpW1Yun9rNFGL487oggkZ73vGOJPajrpdUaoK6yxpcejJk1/w62Vxcyq9SKGWUl6rzwU0\nANqaz9uXpJmmcVmzabq2IsVEXRkqbZjGkXYjIqL9HGjaljlETlct6phRaSYC4zQxHvdoY5nGiRQm\nVps1ldGCSS+Km9sDTVNhEMBNCDJ41Siur/fkxZVYVRVV06GUWICHeSYrJdqAlIll8Qwo6dOtUiiV\nCX6iKDEPhWUlapzFTxMpyLjqHr1GuR/DytA6KQGW3NOnFAJuZRHDWZUgRiJRthBFoXKmaWq8T3jv\niWNaDHbqAZ8vsmfhMpRsFl/Lb//63bYJfxPQv82n/8Rv8zV/EfiLv+N/FdAWKqNIUdJoq7bBhkAM\nmVxntHU0VcXN1Z7NbsPoE7Vp+PTyBrda8fxkR4yZeS74fkTnIGvHYyCXRDSaMHusUVTLE8ZVkpEY\nk1QK917wfhKC7Nnq5POet67lQPDSC5q8KNAWiahSGmUNKidc3RFCpOA4fesJf3R1wpQSk5+5qBU6\n3NFfz5RxoN3uaE4e8SYk1NDz9qMntHXHcR759ZdXnDeaT/qe06bi6fuPSRH2R0M0hdvbmevjLSdr\nR7l+zYRi29XYDBMwF4VTanlqyzbQKkOgILxkuYisXiLWl1KyqOUAVGCywuqC1QqXJEQkDj3JB6qu\no27bB0qUsZaiy+diFoV4JJRMtu+BMSprmXXdm3IWzb0xC8gzRExtmBcFoVWRVSeBs45M6wy5JPTm\nhHEKVEre87ffOuezN9d0qxUvXie6RhQ8tqrIIRJjoChFLFq0KCFyO3iwjq5bkeYZoxJhlu0RSrIL\nu/WKHNNicRY1l58mCpqQs2RTLq5CZfTStkmbWVISrqEpECTYpHZucbwLxjwvPX0Ms0BQlViVnRZa\ntE9JoMDI76xrKzElaUmHWtViGY8xMg4DSktrEmKQNbP+fMU5jAPBe9ZduxinfvvXD0yBeNiP7HaO\npxcX9NFze7Nnt90wzSPTMFDVDXM/4XYbqk2DbWvurgcePXnOv/TH/iif/Mav8vrDT9nsTonB8/ik\ng6S4vrri7Okjhqu7xf0nSSdGI8GgJaOLIgeZjDvEZLLvj7S1rG+oNdtVK8QhW4iTJ2iFTpk8zsIT\nsGax+iLDRyDNM29vtqgTGR4pa6jSjO9n1HEiB5jiAXuYpe3ImWzgfLdhOzWsVmuuXr3gwxd3jP4V\nbb1lszY825xgE3w0TVzOM6TI7GfuRsPHFN57csHJifTQzJ6YRRE3x0ywoklvq0Z0F4oFjPE5bVkp\n2ffLk0USr40t6JhxWbIcRz8yHSTHsV2txc5bCiz2aoBFDY36AusvL9Ld++qg5Pwgb1Qo2rbF2yiE\n4CRPzMpZrMpsu4bXH13yzpef0QaFyZ5r76mtY3NW8Wjb0fcRbSJfe/8xt1OinmfUfHywmGc0u92G\nq9s98+R5cnqOUp7jNFO05mbf44zDFmiXsBNHIhlHU3f0/YH94UBjLLZyZGBeTELaGFarFYpCiIlQ\nCj4lQojUxuIqK5uqGBZsOvhhIC4Mh65rsY1hHmeGaRKpcsokMqtuJahz70kJ6qaFLOa7QqHve+Y5\nLvqPJO7KuiFqkUJPS54EqdC2LSkn/PxDmptwuZ85+hv2/cjFds3Z+Snr3Y5tily/foMpmkChsxaX\nhD6zO9sQjea7v/z3mKaJujEM/YHVdkeOiv04YrqOtt3Smx5XMsoppphIKeJsouoEvJmLiDWS0RhV\nYRW8ur5l03W4Yuiv9qw2nXgY7P1VLqvEUgoqL6pHq8lEqRSMXcwvMp/I1sCcKCOEJQZLa8s4jNjK\nCeE2JopOWFtYhYA9P+Wkbvjw9RU+SEhKVhndreDqijdXM6dPtyTv+fjlG14M8Cuf3vL7n++42DZc\n33l88rxzvqNqa7wxFLesFReFWix5GTBK+K08ocV/QZLtg1ZKjDXLQaoVzDERhgPRz7i2pW46qrpC\nIU8cWTlm8uJuuh8s3ttoRR0nLYvAZOVp2lRi9TVKLXJokRN3taM72/Dy8jWbrqbd7NgpxTB5HrUb\nDne3PL3YcbO/o1KFtVNkU3PrR2yBVdOinGEcJDrOOIvPnujFXGWMrGpJWViJ0S8Qk0zXtpQUZI1J\nIZSIVlaUqBTUwh2Yp/nzNkjL79ktBCmZ2UT8MvG3S4Va40R1OAU8Hh9FcJai4NCUlVbQKGn1coyM\nvcy2oir4WTgMxt6DS2TVmedAzolqsVQ7a+W9jomcIvGHNUTlo+s7VrWjPQ5c7QeenO4YRomD2mxX\npDHS1i1V01GGo8AgsazamuQ9+5s3tLZCdy3NdoPzkfn4itXJKVcvX0sqTS1yYTFpGIpxxFCW3q+I\ncrAoWuuoKstt7nHrBmcNJRX8OFNKEf2B/nzPXrQMzYQwltEFSkqYJfwjFTCVI4491ekpXfIcbw+8\nuOtpuo5xnLHKsN7UdNtT8tCTlOJuf0dlatq24vn5KeM041Ydqt8TkuftTpOfXfB4VaGc5c2UedR4\nirF8ernngxfXDHPmy892dJXicLzjLmQer1uUatBKcigVRVyZS08qCb8ylU7IDStGSREUucXnr43C\nx0xInrkP+HHEVQ1121LVok0wWqOtQWmDNuVBr6G1kQpkUeClh5Xn522GWQw9MlyzOKd4+viMYZwZ\njgdu727IWXF2dsZwHOmPkXVraKpTjkOgaJns79ZbGpMFKFtVTONIt9kyThPDPNHWDj9F8v28yhoh\nJVMoKXL0kXkepOxXEvaaYniAyaS44PUAVFqGeY5UitCotSLlTIiyQtSIOKtEmTuEIq1qyllaNHX/\n81ucc6LZ0IvPIcmcZxpHGleJld5Y6qoSDqJ1hGwYBhkY5pRI92TmRb9QSpZ8i9/lnvyBHQb7OZBN\nxZt+QNHzyXVPW8k0+UefP6IA9ph48qRm9fwZ8yRwCn8YmFLkOPfEGFmtGkKObHZr6tcV4+Ud7cWG\ndrVlONwIkCKkpbdTTPPIXArWijFI5JwZZxXnTSfinZSX2BSDKYkQI6WpqIxM6EvKC4xUyj0Qim02\nmrlktE+8vr7l6fNHnK5XfPrtz7jte37t9Z5vfXTLv/oT79A+esrZScX2S8+ZvGL/7W9j0ByPbyAZ\n7OaMMN3w9Okj9iGyOtkyuYbu9oZud0GcJ/7A07e43B/47PbIp1nx8U3g7bOKd09XfOnxBamt+NbH\nr/nOBx/x/rvQ6BqjFxSWEmGOyjJgnQiSwmwkDNRaQy76AdRh7mEcFJwRtZ6Pkel4x9gfqOqGdr3G\n1TUmCeqsJNk8pFJAC/G5quyihFOLD0KeoveVhOzXpSc3taaQWSuJYAcYDj2qZMIs69/Lq2usrtE5\ncnqyQZ9umObIp1fXmDnQKItVGlUCtnIcvWceZnyI7HZbamO4e/2Kfp5Jy8OhqzoKmaigRKEdGVPR\nugrnDGGaGfoBV1WQFFonxiAyz7qqiV5gsiJOWjDp1tI1HUpByPHBfai1XtjSEpJaSqIfD6hiRIKf\nRMyUl1lV3/fUTkJkrLHs9weUFSxfTCI5jilSVbVoDELAGujalkPf/4735A/sMDDO4MPEnAupFMbj\n4s3ThVf7Pe9fnPNTX37OOE+4/R270zUu9BzP1uRxptFPGHIiDBMvP/iY+v13cV2Dzz02a26vb9BW\nUoB0bRl8wrZaQCIpEKNHLzzEjMbnTG1Z8OKeZC3Ji47fhyhOR6MWG6ic/KoylCyns7E1kLHZgk4y\nVR9neu/5n37xu8zDyKw1N70n7/e8/5ULqqLYf/YCNU9UF2dwd8Mv/spL/oX3n7AykYuzM/avbnEn\njnhzxebRU9TdLd/+4CO+/u4j5lxhXcWLm1t+/vc/59XdlrdP1nTrFSHO6FnxaNXy4vSUYQ64rmby\nkxiNlKgpy/Ikrp0hW7Xo3ZMEiigFRiGoARErqQeL7BI4UilizoS55xBmTNVQtx11XWOsJZsFme7M\n4sf3AgFdBm4RaQvuh29l+Xf1haGkteKsjCmz2q6YfZRINu9JITJMd5yfPyHPgTkeUdpx1tSMypDj\nyPZ0h0USk3fbLfM04efA/nAgVY4eMF3Lpqpom4bbw5GuXVFQ7A93y4q1QHTMs1COlIJpHMQs5CrM\nEkXvp/mBQWCspXIObUV3EVNaDHVi9JJZQ1gGriL6SjGKqE0rhkmyQdq2FsNZEuFciJnUz1Dk88UH\nNHKYUIrY30uW1i9LSGxYEpp+p9cP7DBwCy/OmYTTS549GtfVVEuAxe3tHc/feUIYe+6SwCxU6Emz\n8OnW644ZD0px8/o109TLcM1UTN5zdrHl2I+EMbNabYilkGJm2PfUbUO37TApk33Gi9dR1oQhkPqJ\nbr2iGPGSZx/QbS2iIy2qMmZ5GhhToGR0Lg8JRudWYriny2v+4Nff4XrK9NPMj1ewO1kRhkSpWq4P\ne/S4Z7ub2HQNp9s1btVilfD99seJF59c4/zE0xz59gef8MmV53uXV/RppiQF2VKmzI+caLLJVGSu\nx4L1AxWGH336CJUSytXEAil4KVtLkUjwsKxXl/bH6PvyXS1hrTIjEcXhEvcFoOTPplxwJhNixI9H\n0jwR6oa6afDG4uparOR8TvYt+gta+WUyr9UXMiGLDMrutw8y4BSYjbWa2j2mHycO/cD1VeLm9g2b\nbsPFxSm+FMrguesH0jBz4hxt1RCMxlQVoy3YdUc1OIZh5KRZ4XMkFmmTdquOEDNTTHRtS20lWHUa\nB0nfMk7qRmNQLORkBJ2WksyPSikMw4A15iHjMHj/gGWXwyPK9bowB1gMW9ZaQioPnI04eaZ7FoTc\nBdhqYTUmSdcW9Fp+IFeJWUki7qcpisbjn5U34Z/1K8XE6cmO959e0PcDTWXYtAaVHcrC+49X+AJd\n1fDp9WvWXU1QhmmY6bZbtNPMQ88cPF23pnKKcVJYt6b3IyXP1KM80V6OI68PPWdn52x2OzbG4srI\nziZoO6Z+oswBpzRjKqSwRIMrQzby9CImpnGmXbWQC6VEVExYLRisqm4EChI8KE2eZ0pVoUrm+XnL\n06RJ5ZR61WFLT4gQ8kTjGsp6y/XrNzQKHq9qGlW4eXPLkyePsF2D8xN5VXEzZvoQiNry6RgocySU\nTFPgb3/3NX/6p7/Gm5sbdo3mzZQ53ezQztAlR7RBNBNLfDeA0kr4C9qJTbgUKuMwRRGjp6S4pExL\n3JyCB+aiUnJjK0TBqY3cDC5JalKceuapFy7BakWXVzhtqaoKV9kHgMr9ijGrZQ6zAGnL4sUvy0DT\nqAUVnsEqCbHZrFqaxnF+smUMnk8/ecV3/tG3uTg5YX2y40tvnXD058z9gbvDHY8eP2YOgUpbamcZ\n+szZ8yccj4M4LUOkqu5zGCNjPxKMwmA52W1QZc314cg8e5y1KNMsa8GCIjJNI+LqlEqn6zruMw1k\n0CehLKUUsk4LVblI7HvKAjEJnpyLHAJJmJMaTQpykKRwX1nJA885J6j0SuLrYgjMcxDNSZHcz6qq\nKCUSgv8d70n122iC/rm+lFLlJ7/5DXRRnHQttauoneZ81wopZvT8xFcfsaocaIvbbDje3lFCxJeM\nsoZH52dcv3rDPdy06RqSj8wpMOREjSOFSL06oW4dRUV8dhBmamc42Z2xdtC2sB+O5OpEVjPXL/Dz\nvAytPMkYplyIs7ATu65h1dZSZitFIlM5h60ESmIVaFMR80z0kvBbKo3VFn8caeqaaETZm5jRtsVh\nlr7acvfqJUUrbqaJNI7oqub2+shXv/5lxjny7Nzy3/31f8z3Lm8wxRJSJHhPVUV++u0zfu4bz7m+\nPrJ58pgpSFtjKkOcItpYfBC1WilFdALLTVaKIkS5Vkq0mwAAIABJREFUkAosfL60KDbNookXKXfM\n+QGbLuavhcK7cAdilG2Fj4lUoChpz7rVmqqu5X9V9SCKuecuKs3DQSVDNdniiMFGbhyLpdiCTrKq\ny8sgLyZJHDoeJi6vr7l+9YoUCienO1brjhfXN2yM5p2vfJn99YHRjwx9j6kqfBKepFEwDQMnZ+cE\nBdfDREmRFGf640RT1RhXoa1m7AfZJKApRrgUKkt1lBdq8X3smig+5eeJMZFJD/gz2c7K4DCn9CB4\nizFxeiqUqHGSTUgMcvMrYJjG5VDWyzYjU9lFsBTC8j0CZhnWtnWN1pr/7a/8L5RS1G+9J+EHWBmU\nZeJ6OY4000QGXt0NOAOPt2tujp7ZJTablkeVo318ztyP7K/vOAwDVwtTPqdE1TUC2ExS2m6UJnqP\nbizOBMbDLD1hq5lCpsweM9+xvXjC7BP76wP1qeP09AQ/C1NvniI+K+aQOHoPpbBSmhzlokQbYhHl\nXC4SAhtzISgFOXC+3dDsDOP1FTkaboZbvvPhNT5l+hg4HDNff7rhZ/7YzzIdb4hHz/HmEqzGBU8X\nAnfAm8sbUol88J3v8uhkQ2rO+bHHG0oxXO735LkwR0PUhbpbsd6tqbsVN0MgZ4FrlGNhu90QU8BV\nBpUE/JFSJGvBbKcQF/CyBHuwcPtTknzJotSDTVYrsTYv1fziATBLzkKWC3B5Lx6Sg3JkPNwxHi11\n21A3LXXTPFQG95iwHKNUB1+YK6R0305AVpniJfj1nhAJmWoZVJ6fbdjuVoxvPyGMkdHPeO85OT3l\ncHXLr/3ar3J+eo5pG6rUCfsizBRtCTmgq5p+HOlWHRebNX6amftMt61Q2nCcPWA53e3wzcRhHBln\nT4ywblrII/08Yp2jciIWksMzYY3FVQtLMyWMsUvmYiZ40QXEGB7CYK/fBFnJKg0LXDUtTEZnHTFn\ncXIum2/v/eJZkTmQMYtYS2t8DFTmhxR7pjMUJbhpn4RNOIdRtOb1RMkb2q6j261JJJpVh/aR1DZy\nAcaM2rYonyhaY7qWME2CB68rpsVfj4JSaQ6HA/0hs21btqsV/e0tt2miOjvj5PSM1in0/prQT3z7\no1umIqKd232PMopdW9N1Neu2pqkWfsAcqNpK/PwhMvkgJh7ruLu6JjqFnSIff/wZv/z6yEfXRzSW\nbdfwYn/k5uaGP/UvF9Znz5iOgV/7vz9ivLtiheLZl97mWcpsdjspG1PGti2v7wZaFfjD75yS7WP2\nhwMZTWHm2arm1asb9v3EgOLZo3NK1PTjzOvhirq1bDanaGXJOi4iF1BZnlzWWupKLrKQJdcPCyZb\n6eFLIZlFgVkWtr/WqCJrMF0kWiwj2QA6RqISRFtaoJwheaajZ+qP2LqhaVuaboVddv16ySzUi4lH\nlJQaskIZRcrCdUwpUhbWm4KH2DaVM04rqqYlV5lSVhImkyPzbsfl1Rs+fvmSXduxWW3QNeh1Ja4/\nt3qIYj/OHh8S0YvIKxZom5ZVU0GKZB9o6wqtFZ115GVAqKqa1shTPOck1YyRv2cMHr24OzOQYqAE\nyVS8NxHJNiCBysxzRGuRyYdpXmzpWfQFWj9UQyBELoGnLE5bpXDG4qzFWJkv/J7gJv88XwWxC5uS\n6ZYQkccXO5racNE4NpsKVxL9zR2ubWjnSD9N5NpJvzcMVMYSVMaExHx1gypZYCOLndnHmco6YR34\nSHN+weat53D7hlINfHg70qUjJycn3Lx8hWs7PvjwFW/6gVFXtK3h/OIMpwq7tSOHgE8BEzQ6ZbCK\nHD06O4x2tK3GNDVx39P7yHeuRsLNnvOvfo189f9xvtqQyWxax81YcRMn/sHf/RX+yJ/6k6zfO+Nn\nfjby8uMXXF++4c3LF3z9a7+fNx99wPvPz7mdIPuR7tEjfJy43nt+9KLhzeYxZu6BlrxAW9O6oQkz\nJUOpG1pruZlmPnt9yzdcIbgVVmlWzjKnjHU1xjrmmFApLrTfjF9KdKUSKQNFY0omLxdVyhKprhF4\nTM6ZKQhZymhNbQ162RZV1jB5T2U0VsvXhunAYR4IwVPVLc5VNF0LZGKWkjj7yFwSVdUQfVxw4cgT\nMGdUFnNUznGpJJbwEZZBmlJUlabOFfPOcbJZ8aV33ubDzz7hw48+IfYzTdexPrkgzqOE+J5u6FqL\n3m2YQyTMEasEmqOrVgC1KXHzei9P/MbiR8/UDw/hN6pkXCUuw8l7sIbaye/NpEQOkovoFyVjXJ76\ntbMPGyuQgFg/eLpuJUDUnFmvV8ScsYi8OeUkmZVJKglrjQS2OrvI6zMxRb5vb/CF1w9sZvCn/8TP\no2Ok6ypUTjS142zbibY+BlZNTSyZWok02FnHMXh0Nox+plhN3bWkaWaeZzbdikAm9BOulotq6Aec\nsWgDx16gm2jN9vSMx2894tWLS8ZpYt8nzp8+ZV0p+v6KGOTiq6wl9JO4qJSCEJZ1GeRxoRU7iyky\n0HJK42OiOzul+MDc94RZ886Xz/jrv/RtPnxxxbqx/OQ7J/ztD/bc9J7f9/YZ/8of+gZtU7GfZTft\nk2IcBubbW17cjEzDHY8fXbA7q7h++YaTzRm+abj77BNAs+vW1LXo5l+8uuVi1/LRzYFHXcN2tyOE\nGdtUoK1YuClM0yQrMjSmqilEgWKERFb3T3/NvaUml/vocVEQij9DPp6WNJ/7PjklGZTpRe+vlLSE\n9zh3wbXJ78rHRCxQMFhb0a5W0j4sfbRZvofWaknYXgaX98aoxYmZl778i9DP+9QjrSVJqyB/RxCZ\n+hwi+77nxWevuby+wVYOV9U4Y/FzpHGWzboRF6efUFGe/s5WdHWFrh0ZMWqlZdsVk2DN/TJDua9w\n7unH2miKAh+8XD9KE4Jf2ilkQ/AFQVZMUQ4VBG5jlJFkJK0XtLqROcRiTIopLi5ceY8q6wTuGsQK\n/dd+4X//bWcGP7DD4M/8yZ+jVnC+ackl47SmbhzdqsPEZdgVPco63ILWSjFTGccQg4RbImATs4RF\nRCMXWt22OGNEH1AURhX640jKssO1ribFhC6Frl3RY8kl0OTIsO+5GUaevPWEt56c4ZpOiL3jyDB5\nEgLvTNETtZR4+8NMPw48Wze8/ZW3WbeGcH3FdDhQcsVNv2efHL3W1Bkery17U1E5y844VO1gOFDv\nziRCbDywahtss+bu5o6XN3c0pbBu4FsfXfL07ISmqyWkNWXGJa16ngq//L0XtK7w2UEm4rumZldV\nXPczz09XdF3D65s9e594tGt47/GZ6OpVom5rjtcHulVL16wAAcCkJKEpqRS0tQ9pv3khMd9vrO41\nAiUXhnGGZR8PoLSAOZF7EYCQBDoqT0Wx/CY02spN2bQtdS1PYmU+D4u9H5QpJbMnozRFF4G9L05J\nreUg00o94MjKItOVDUBexE4CvrkbJm7vDrx6fUXJmfVqRQaCD0xTIOXCtu0oKokBzDnJajD3DETQ\nxkqLFSIhRmEKKKFv38NPYgiyucji2E2L+vM+YTultHAh5Tfqg+c+del+6BiisDYBmqpZ+BJyIJbl\noBXX4gLkUUJaUgr+6i/81R++AeJvfvqGde2ougo3z6x3p4Tome722NpyumqYb4444coQKstMll5z\ntYJSaE5XHG/3dK4Rs1CKGBRmzkSVKDkSpkDRltW6Ed22MdR4nLP4WPjsxQu+96pn9eiUrYo03ZaL\n3ZZtpXBlhvqMfHVFbQxhvSX1NygfICRCSQyHSTgHDWgbOX/2lEfvPOf13/k/yaPman/HXR/41Y9f\ncDPDu2eav33lWTmFCYUf/ZFnvPOo4vJyZPXmmpNnTyhk+hcvaC4e0ZTIeWvx+wMutfyBZ2v00yec\nBHi9H6kvajaD57A/0NSOi23LZzcTXzlf8fp65s0x05wpstOUpqKua25Kyy9//DEXNzXHKXC6qvnN\nq4nvfHDJ9mzLOxuDKpExWuaQePfJmq+/9xzHcpEtCK2cs7jrilB48yI9LqXQdq1sSO4l3KWIMYuy\nYNvAYSjaYHICZ4kxEXIm5YDvZ8bjHmUMbdexXm/p1muKj/iUKSpjlabqWlnXGXFMyumjyTHKgaD1\nw3S/qIJVikwUcpUW2K1xgd2qYdvWvP/sgldXN3zw0QtsLrz/7jMSio8vb7jeH1itOzarlsNhYh56\nnDPYpqGxDq1kU1VrhXVWFJrThDGOxkrUWzGa2jZQCj4ErHVUTUM/TUzzhPfiLxDkuUcnu2gvltY6\nZeqmEbqS95QsLdH9711rxdj3iw9F2uV7wZb9XQaIP7DK4Ce++fuoNPz0u89wW4fLsG4rzBIdVrUV\n4+HArumIrcMfBooTaEcIiccXFxwPB7CGPM0L91/8cyHlBzx4VTnWXc2T862wBqMnTxPHfuTybuI7\nr+74tZdHrvYjlbX84fcueP9shTaZ3dkJn7w88tmr10wl8db5KU/PVzx79zHHu555OPLq8pZffz3w\n5hhpG8fXH295drplf3fk9NEOrwy7VuMT/MOPL/n40z0v+oGTruVnf+x9xv2e3/fjP8Xlb/46qXge\nbRq61Sm5sujkKSnRmIq9NvjbW/7+tz7h+UXDdi2DrGq1BTJ10xKTws+BYRyYsmd3ck4AuHkFuuai\nGjkmzesh8Vf+0SU3R0+dI2+fbfjme2/hKsU0jHz39S13/UxdGz67EeHSj79zzo995S2quiGEuASD\nLDCVAnMIQi5ytZB7U1wewHrBqkVSltYh3VcESdiNMS9qORSpJFhaj5jBxyWt2DqMcZycnlKcw1pN\nYxyJQt00hBSpllzMjAzkpHpYoG9aE0umUlbWkYtWAe75FpqSBSxamZqkElc3e66vbmkqy3q7JoTE\ni9dXHG731At9iWzpx0m0GDljSqHrGuqmEmWqcxz7gUM/kooM/HJamA9a1opGaRF/JVlNjuMo2QmL\nDkGCViQ+rVDQRoA2JSViSAI+XbYIsKhkF0GSWsRdeaE+/T9/82/88FUGP/b+W7ROUWnDxjlyzFRa\n0+7W7F/fMA0R5Sx9msl7L+ETYUIph6k0tjOEyxFbWVxdMYdE0UswZkyiErOaafKsKifqtXZFmRTz\ncSR4T0iBu7lwmCPZFIYc+MUPX/Kdlw1ffnrC1zYXvPeNr/LOV97h1XHm2eMLKiIffve7nLczrjuB\ndsdqBWenLSebltO2wpNx2xUYwzh53n3vy2g/87PrhqunI6w6WR9WmqvasLKe001FKS2mqTj6kU7V\nHPojq6rC4ykzrHZb/vC/+DX8NBO15nh7B8oQjwPKaW7vBlpT4UPi0A/cHmZ2iwvzMAzcpJlV15KV\n48n5GdrsKT4yJLjrb/kj773Fav2c568P/P3f+Iy7vuekjby4GfmHH1+iVOYnv/E+Z7s10zTjY743\nc1JZjS55EeyUBYIhkW0pRawGpST6S1tFRDj/qhQqc7/GTGis+COSzBMqZx40DyEkbq4uQTtMZdls\ntriqoswzlEwwss0oWi+HVPn/2zuTGEuSs47/vohc31qvtu7qvWemB49t8Bh7RuAFcfEyHDCc4GaB\nxAkBEgcsc4EjQkLixgUjGR+MhBCWOVh40WCBwJ4Ze1aPu2fr7unuqnq1vKq35suMzAgOkdXTHtxj\nG4vusnh/6amy4r2q+kJR+WUs/+//v21Yqp1n9FV1JYAv5fZsvqosGY7GdHtdFEJhC0QcS52UTqvB\nPMuZZRk4y8WNdcz6KlleUBQ548kUXIE1QuX83sh0OKY5D+i0W4RYlFgaSeTdoauKwviNPl9+7Avd\ngjDAhVDZgFYaU5Qlk9mcqvRqXLeL7epyI2cdQRgRaC/Maoy3WLu9jKhLyF3lZw1hGKLkmJ4mlLMp\nvdPrRDpkPpsQ6IjBwYQVDSoIMLmh0Wsyn84QayhLRZq2UMoihWWwve1rhW2JituIy8jmBaEorAQo\npwkkZJZN2LUlxhhOTnLa7YgkCamqiM3NAVc2D8gqEAKvSiuKvBSKrUN6yx2agSWJNJfOnWEymPDS\n5Su0Oi0C0YwHE+Io5OKpdXTagnyCFQOlJUy8W9NqI6V/4wZhvcMeUJKUJQd5SbPRox1WZOMhOk0I\nVOSTlHUMBockzQaD0ZjlTsev2ytHNZ5SaUWv0aG1EXG4N2DrcMSz37nKrPKyYFlRkhWWJFBsLLf4\nyPvOUOZzpvOSvdGEi2sxn3ioQxytczArGA9nrPZaHGyPGKZzmmnKSmpRubC0tkJv1bKzN2KSV4jJ\naMRtdNggmGWY0pd0ox2iS5Txx2FFWWFtRagrHF5qTaxFB97bMVCK0nhSjrGOAL8x6MttPTvvSM3X\nWeUtNBBMZcjMDJM7ivkcpQLSZkqaNrBh6AVMxYu/BnXRjgTasymVQil/E1bGb+4dmcq2Wi2veu0n\nDd7rQCu04F2imqmfzRSGYj6hzGaESnF6bQ0JNNN5zt5gxHScUTrH1nDEzt4up1eW6a6uECYho+GY\nyTSjqglcyjlCFHNbEtbeIFVVkkYBodJoEpQKmeVzZlmG1srXVdRK3mW9FBJ8AZhXOPLiNaKEIKj3\n1ep9iTw/pgzER3/uEZqBohUl/Mp7T9JuJ9zYHtBMUuI44WA0BbEoCYg1ZLl/2nQaIaO8wmHqTJsR\naUVTB6gwoNGMscYSRgGlKHKrmU8yQgnQIbSigNVukyJwPPnSmzz9Sv+2CIdoRTPy/6ylKVmONB96\n37s4uxzTTBtkpuTm7oCzD1yk21siq4QbL75Id7mNKh1lWRJEIYE1GPA8fRRmOKF3egWVtMmGI6JY\nqJyG3BJ3GxSHGd1uzP7eHlGjSxInFJFiPhhjXUmgoQpCYhsiccTq6VVWe5pJf5NnnnuDb7w6YG9W\nQFXiVEUiIau9NqosefBEh8O9MUSaVFcknR6v39ilq4WPPLLGpbMdNgczXrk5Ym9qyAvD6/0p+7mj\nk8RcWk14z9kerZUl4igkn85JghDREcYKQeiY5TPySoiCmAAvQV9q5YU6Sj+V9X5qgjVHrDzvuGxM\n4clOStdVkwFFkeNqhyXPKfDj4+p1tidAKUrryAt/Q6A1aZISpSlJnHirtXpj2YpXERJ5S+ZN3d5k\n88pMlbi6gtI/qeVIkwDnly6lL/ixStWCpMJsljGeTshzQ6RD4iAgqwyDwwPyovIsxv093GzG+TOn\nWD+5QZ4bRrOMeWGYz3O09ia7R9JvOG/GYqqKKI2xWIqiQukjolhFXlVkR9Tnqqxl/DVlre4U1iXk\n1nrikac2+xnGN//jyeO3TKiUZeQcrpxwarlJJw1IVZfXtwbc2h2wN8vJjCegLKUhaaDpJjApFJO5\nY6OXUFUZY1NiKih0RTaZUmQhTiwnOimrS21GWcE0ASeWeek4nDvysKLRaaJ1g0YjxZQVlfVqx0X1\nllORqSxxJyXqNJiORjgVcuHhh1GTIS89d50zJ9eJ2x1oLTHr77F3MCJKI7pJSqQts4mhcMJSr+Wf\n1GZKGEZU0zlhJFzp9zkna+AqXn5ti5XlDlEIhhJmJRJpxlu7BM2UZkNxUOSU05J+f4t153joEx/m\nm1/4FiP3lvfiapzwS2darHZjVKJ5+vIurw7m4Lw564MnHR9//BJihbww/MtTb/KuSycJWy3y6Yhc\nFK1eyKl2jNLCC9f3uLw/40Jvl0fPr2LRhHFMpwmFcXREMHPD89d2mec559fb4ALOrXdppSkmCCkj\nVz9xHeaO48iqMoShpjRe89/7OzjCQFNaiAMNVelLnbUgKiDSAfM8R4ea3BSkzYhrW3usdtvMRjnF\nbMpYh8RxRBgnpGmDOIkpVa0QrfVty7mj41FE3fYjsFJ7StTHc/4m0dhA18xrX/ZeOv80XkuWEbw9\nmjGGiIhOM2Y2mzM8HJH0lpg1GtzY3mWrv0u326XV6fgNy2aDoigoCsPWTp+N9XWv+FTTi7PZzB8Z\nOpDIs22ttb7eIDjSNvT9KvL89gmLtV7QpKqTQVgLsRzbQiXBa/Y/vNKik2iiVkzPVbS0sFlaBvOC\nzAglFf0hrCWKD7zvLEJO3xnMdMLEVUyykkgiSi2M5wU6VIRpzF6WEylHkRXghINpQVEphgVsv3Kd\nRhBQWViOA7IgZJLlKAWNIGC12+XMcsyFiydY6bQoDsck3Q6Hkwo1mnJwa4unr93kxLnzJJUlyIfE\nQc7Kaspg/4BCO6yO0J0mRX9IuhwznsEsMGjmDAYTmp0WptJMRwPa7RaNdtu7TM0tB/ND2kmDINSE\ny12C0lIMDjE6wDqhCEL28oz3dDt87Ilf5R+/8m88tNpEuZLHH+jQk4rxvOJgP+f8+hK95ZI393P6\nhzO+f+OQ0eHzPHZumeVOg/+6sskbA4PTYK0wmRVYYDCaMTOFN5El4upBiXJ7/MLpJeIkYlYY4iRk\nWhqSQGikCdf3p9wc9Ckq4dGDAa3QqwYvr/fAhQQqIE5jTG25Xkm9sRV6ByYEtPLr4ShQtyXSgsBb\nqftTCUsSRaCENG5SGMP2/j4XNlapanpubmbk5Rwzm2KyjDhNSZLUK1sruT1jqKylcur27MA668Vd\n8WpGlb1D7t2XQtS29b5A62iDzwmIWOI4qGc9IWmc0uu2qZzFWGE8ydjf3WF7u8+NzU2iOKLd7rC6\nukZ3qc33Xr3CA+fO1GYpASKK0loKUzHPptjS+Bdens05aMQJ2TyrzX79TMlZbzSD9bwFb+fui5uO\ncTIwbDRSWg3h5mafl7cmXFju0Vjq0Rw7TocxV29tY6oQHUWc3OjQbcLhbkEkMDaOYQ7b45JTqeLA\n5JRaoSYFYSEEaJaX2kgrxOwPsVjG2ZTDyZxJrrhl5igJMEVBGmk+cG6dhy+cpNfpUhyOybOMk6sb\nOAqmbsD1V3dIeycYZfscGsNgOCM/mGDF0d/aItKOCx94lNf7z5O6jI7VvHFrm/apVd64vsvyqTUi\nHKYC3Va0T56gurXFfhny8tUdIhXw4Lk1RoVhHsLy2pKn1ZIynhlmoSFVGqNKklJQLc3w20/xi6dW\n+UYakg1zXD7mmWnBxOa0GytEccWlEy3e3Vvig5cCrh5W7O1N2DyY861bY9qbmVceSlKub/dpiGai\nFLk13tlZBYRWYWSOiGI/E/rjKY+uJKg05snn3+TZV7dxQYjTgrEloiHREMYdHrq4zFee2SY5yPnl\nR85zOJ5hDw+JAk2SNhCtiOLQG7+UnqNQ1XL0lTE1k87zHMJaRKaRRuS5oapKX0EughLQ4tWarS2J\nGiG2EkxZkY8PGU/HaBXQ6S6RNhtEccx8Pq/9HDy1PFDKG/EesRjrkwhXG9+Lr1LHiRdcOTKOcbZe\neKja/7KqajFYnyRwikgsa70Gvd4FNs6cZD4v6W/32draYn9nj267RVkUYK33/KgcpZkTxgHNRkgj\nXcJay2yWeWk06xmhtiqJAk0YaoqipKgMpnQ4W9W+DG/FQ1nednK+G+5bMgDFpHDcHFdc6Q8YzguC\n5gofOrNGYS3KBTxwpsfL1wdok/PzGwllXjGrcqykDOeGvdEcYy1XhxnWaQoMVyvIizHtOMYpzYMb\ny6yev8iFpS4Wxc5gyPatHYwxrLQCNtbbjLMKDGTDIYNZzvrpEyy3T5FNBmSTjFubA4IkYrDbx1ae\nmTYej9jav0mkE6ooJGg1ufXyZR67uMLWzX0yW6CaLeLxhMZaj+k449o4Yz4e0kwTkuCWN/PodWgg\nXNvc52OXzrN1WPCNr/0nNq+4ujlipaXRBLz3gw9R7M/RQYKUhmkR8p3Xd5m+eJP3XNxgvQUje5H+\nzhA7G9NNNOfWevQ6HfJIM+jvoU3JY+d7FA8EDDPD5mDC1acH9HTAXqPL1mRKWHnPIL9Wdijr3Zpm\nZUVV5TR2LacSYTk95L3rmrR1jhdujhhOM5CAJI6wrmKUG6Lc8WsfPM+XvnuNf/3uFR57+DTNbhst\nEcYZVCXYsvLTYO2XaTpQ3tHKeYIO2jPupHYXVrYkbcRe/ccrs/ifE3+e7gL/hFRa/KxCK2J8TcNs\nuMd8HBAlXqYtaqRUxusTujD0NS9HnhDUtGZPXeRIwBXniWtHbKojLzHlLK50t/UGcNTOXV53sqoc\nzlmaUUwjjllZepCHH7rIwWjITn+PV27e4sbWDloHJGFAs5EgBmzpjwfLsiSuS73z0pCkIcb4JUsY\nRaRhQFWF5GXJPDfY0OtDFKao+R6+svSdcN82EO/5H11ggQUAjhcdeYEFFjh+uJtBygILLPD/DItk\nsMACCwD3IRmIyCdF5LKIvCoin7nXf/9/CxG5JiIviMizIvJU3bYsIl8TkVdE5KsisnS/47wTIvJ3\nItIXkRfvaLtrzCLy2XpcLovIx+9P1D+Iu/Thz0XkZj0Wz4rIE3e8dxz7cFZEnhSR74nISyLyh3X7\n8RqLt9xu/u9feOm/14ALQAg8BzxyL2P4KWK/Ciy/re0vgT+prz8D/MX9jvNt8X0UeD/w4o+KGXh3\nPR5hPT6vAeqY9uHPgD/+IZ89rn04CTxaX7eAK8Ajx20s7vXM4HHgNefcNeecAf4B+NQ9juGnwdt3\nYX8d+Hx9/XngN+5tOO8M59y/Awdva75bzJ8CvuicM865a/h/wMfvRZzvhLv0Af7nWMDx7cO2c+65\n+noCfB84zTEbi3udDE4DN+74/mbd9rMAB3xdRJ4Rkd+r20445/r1dR84cX9C+4lwt5hP4cfjCMd9\nbP5ARJ4Xkc/dMb0+9n0QkQv4mc63OWZjca+Twc/yOeaHnXPvB54Afl9EPnrnm87P736m+vdjxHxc\n+/M3wEXgUWAL+Kt3+Oyx6YOItIB/Av7IOTe+873jMBb3OhncAs7e8f1ZfjADHls457bqr7vAP+On\nbX0ROQkgIhvAzv2L8MfG3WJ++9icqduOHZxzO64G8Le8NYU+tn0QkRCfCL7gnPtS3XysxuJeJ4Nn\ngEsickFEIuC3gC/f4xh+YohIQ0Ta9XUT+DjwIj72T9cf+zTwpR/+G44V7hbzl4HfFpFIRC4Cl4Cn\n7kN8PxL1jXOE38SPBRzTPoiIAJ8DXnbO/fU8RS3vAAAArUlEQVQdbx2vsbgPO6tP4HdTXwM+e793\nen/MmC/id3efA146ihtYBr4OvAJ8FVi637G+Le4vAptAgd+r+Z13ihn403pcLgOfuN/x36UPvwv8\nPfAC8Dz+BjpxzPvwEXzB43PAs/Xrk8dtLBZ05AUWWABYMBAXWGCBGotksMACCwCLZLDAAgvUWCSD\nBRZYAFgkgwUWWKDGIhkssMACwCIZLLDAAjUWyWCBBRYA4L8BEXB9iNhuVz0AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(deprocess_net_image(image))\n", + "disp_style_preds(test_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whew, that looks a lot better than before! But note that this image was from the training set, so the net got to see its label at training time.\n", + "\n", + "Finally, we'll pick an image from the test set (an image the model hasn't seen) and look at our end-to-end finetuned style model's predictions for it." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "actual label = Pastel\n" + ] + }, + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "batch_index = 1\n", + "image = test_net.blobs['data'].data[batch_index]\n", + "plt.imshow(deprocess_net_image(image))\n", + "print 'actual label =', style_labels[int(test_net.blobs['label'].data[batch_index])]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 99.76% Pastel\n", + "\t(2) 0.13% HDR\n", + "\t(3) 0.11% Detailed\n", + "\t(4) 0.00% Melancholy\n", + "\t(5) 0.00% Noir\n" + ] + } + ], + "source": [ + "disp_style_preds(test_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also look at the predictions of the network trained from scratch. We see that in this case, the scratch network also predicts the correct label for the image (*Pastel*), but is much less confident in its prediction than the pretrained net." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted style labels =\n", + "\t(1) 49.81% Pastel\n", + "\t(2) 19.76% Detailed\n", + "\t(3) 17.06% Melancholy\n", + "\t(4) 11.66% HDR\n", + "\t(5) 1.72% Noir\n" + ] + } + ], + "source": [ + "disp_style_preds(scratch_test_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course, we can again look at the ImageNet model's predictions for the above image:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "top 5 predicted ImageNet labels =\n", + "\t(1) 34.90% n07579787 plate\n", + "\t(2) 21.63% n04263257 soup bowl\n", + "\t(3) 17.75% n07875152 potpie\n", + "\t(4) 5.72% n07711569 mashed potato\n", + "\t(5) 5.27% n07584110 consomme\n" + ] + } + ], + "source": [ + "disp_imagenet_preds(imagenet_net, image)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So we did finetuning and it is awesome. Let's take a look at what kind of results we are able to get with a longer, more complete run of the style recognition dataset. Note: the below URL might be occassionally down because it is run on a research machine.\n", + "\n", + "http://demo.vislab.berkeleyvision.org/" + ] + } + ], + "metadata": { + "description": "Fine-tune the ImageNet-trained CaffeNet on new data.", + "example_name": "Fine-tuning for Style Recognition", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "priority": 3 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/03-fine-tuning.ipynb b/examples/03-fine-tuning.ipynb deleted file mode 100644 index cc90b16bb..000000000 --- a/examples/03-fine-tuning.ipynb +++ /dev/null @@ -1,947 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fine-tuning a Pretrained Network for Style Recognition\n", - "\n", - "In this example, we'll explore a common approach that is particularly useful in real-world applications: take a pre-trained Caffe network and fine-tune the parameters on your custom data.\n", - "\n", - "The upside of such approach is that, since pre-trained networks are learned on a large set of images, the intermediate layers capture the \"semantics\" of the general visual appearance. Think of it as a very powerful feature that you can treat as a black box. On top of that, only a few layers will be needed to obtain a very good performance of the data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, we will need to prepare the data. This involves the following parts:\n", - "(1) Get the ImageNet ilsvrc pretrained model with the provided shell scripts.\n", - "(2) Download a subset of the overall Flickr style dataset for this demo.\n", - "(3) Compile the downloaded Flickr dataset into a database that Caffe can then consume." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import os\n", - "os.chdir('..')\n", - "import sys\n", - "sys.path.insert(0, './python')\n", - "\n", - "import caffe\n", - "import numpy as np\n", - "from pylab import *\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# This downloads the ilsvrc auxiliary data (mean file, etc),\n", - "# and a subset of 2000 images for the style recognition task.\n", - "!data/ilsvrc12/get_ilsvrc_aux.sh\n", - "!scripts/download_model_binary.py models/bvlc_reference_caffenet\n", - "!python examples/finetune_flickr_style/assemble_data.py \\\n", - " --workers=-1 --images=2000 --seed=1701 --label=5" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's show what is the difference between the fine-tuning network and the original caffe model." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1c1\r\n", - "< name: \"CaffeNet\"\r\n", - "---\r\n", - "> name: \"FlickrStyleCaffeNet\"\r\n", - "4c4\r\n", - "< type: \"Data\"\r\n", - "---\r\n", - "> type: \"ImageData\"\r\n", - "15,26c15,19\r\n", - "< # mean pixel / channel-wise mean instead of mean image\r\n", - "< # transform_param {\r\n", - "< # crop_size: 227\r\n", - "< # mean_value: 104\r\n", - "< # mean_value: 117\r\n", - "< # mean_value: 123\r\n", - "< # mirror: true\r\n", - "< # }\r\n", - "< data_param {\r\n", - "< source: \"examples/imagenet/ilsvrc12_train_lmdb\"\r\n", - "< batch_size: 256\r\n", - "< backend: LMDB\r\n", - "---\r\n", - "> image_data_param {\r\n", - "> source: \"data/flickr_style/train.txt\"\r\n", - "> batch_size: 50\r\n", - "> new_height: 256\r\n", - "> new_width: 256\r\n", - "31c24\r\n", - "< type: \"Data\"\r\n", - "---\r\n", - "> type: \"ImageData\"\r\n", - "42,51c35,36\r\n", - "< # mean pixel / channel-wise mean instead of mean image\r\n", - "< # transform_param {\r\n", - "< # crop_size: 227\r\n", - "< # mean_value: 104\r\n", - "< # mean_value: 117\r\n", - "< # mean_value: 123\r\n", - "< # mirror: true\r\n", - "< # }\r\n", - "< data_param {\r\n", - "< source: \"examples/imagenet/ilsvrc12_val_lmdb\"\r\n", - "---\r\n", - "> image_data_param {\r\n", - "> source: \"data/flickr_style/test.txt\"\r\n", - "53c38,39\r\n", - "< backend: LMDB\r\n", - "---\r\n", - "> new_height: 256\r\n", - "> new_width: 256\r\n", - "323a310\r\n", - "> # Note that lr_mult can be set to 0 to disable any fine-tuning of this, and any other, layer\r\n", - "360c347\r\n", - "< name: \"fc8\"\r\n", - "---\r\n", - "> name: \"fc8_flickr\"\r\n", - "363c350,351\r\n", - "< top: \"fc8\"\r\n", - "---\r\n", - "> top: \"fc8_flickr\"\r\n", - "> # lr_mult is set to higher than for other layers, because this layer is starting from random while the others are already trained\r\n", - "365c353\r\n", - "< lr_mult: 1\r\n", - "---\r\n", - "> lr_mult: 10\r\n", - "369c357\r\n", - "< lr_mult: 2\r\n", - "---\r\n", - "> lr_mult: 20\r\n", - "373c361\r\n", - "< num_output: 1000\r\n", - "---\r\n", - "> num_output: 20\r\n", - "384a373,379\r\n", - "> name: \"loss\"\r\n", - "> type: \"SoftmaxWithLoss\"\r\n", - "> bottom: \"fc8_flickr\"\r\n", - "> bottom: \"label\"\r\n", - "> top: \"loss\"\r\n", - "> }\r\n", - "> layer {\r\n", - "387c382\r\n", - "< bottom: \"fc8\"\r\n", - "---\r\n", - "> bottom: \"fc8_flickr\"\r\n", - "393,399d387\r\n", - "< }\r\n", - "< layer {\r\n", - "< name: \"loss\"\r\n", - "< type: \"SoftmaxWithLoss\"\r\n", - "< bottom: \"fc8\"\r\n", - "< bottom: \"label\"\r\n", - "< top: \"loss\"\r\n" - ] - } - ], - "source": [ - "!diff models/bvlc_reference_caffenet/train_val.prototxt models/finetune_flickr_style/train_val.prototxt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For your record, if you want to train the network in pure C++ tools, here is the command:\n", - "\n", - "\n", - "build/tools/caffe train \\\n", - " -solver models/finetune_flickr_style/solver.prototxt \\\n", - " -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \\\n", - " -gpu 0\n", - "\n", - "\n", - "However, we will train using Python in this example." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "iter 0, finetune_loss=3.360094, scratch_loss=3.136188\n", - "iter 10, finetune_loss=2.672608, scratch_loss=9.736364\n", - "iter 20, finetune_loss=2.071996, scratch_loss=2.250404\n", - "iter 30, finetune_loss=1.758295, scratch_loss=2.049553\n", - "iter 40, finetune_loss=1.533391, scratch_loss=1.941318\n", - "iter 50, finetune_loss=1.561658, scratch_loss=1.839706\n", - "iter 60, finetune_loss=1.461696, scratch_loss=1.880035\n", - "iter 70, finetune_loss=1.267941, scratch_loss=1.719161\n", - "iter 80, finetune_loss=1.192778, scratch_loss=1.627453\n", - "iter 90, finetune_loss=1.541176, scratch_loss=1.822061\n", - "iter 100, finetune_loss=1.029039, scratch_loss=1.654087\n", - "iter 110, finetune_loss=1.138547, scratch_loss=1.735837\n", - "iter 120, finetune_loss=0.917412, scratch_loss=1.851918\n", - "iter 130, finetune_loss=0.971519, scratch_loss=1.801927\n", - "iter 140, finetune_loss=0.868252, scratch_loss=1.745545\n", - "iter 150, finetune_loss=0.790020, scratch_loss=1.844925\n", - "iter 160, finetune_loss=1.092668, scratch_loss=1.695591\n", - "iter 170, finetune_loss=1.055344, scratch_loss=1.661715\n", - "iter 180, finetune_loss=0.969769, scratch_loss=1.823639\n", - "iter 190, finetune_loss=0.780566, scratch_loss=1.820862\n", - "done\n" - ] - } - ], - "source": [ - "niter = 200\n", - "# losses will also be stored in the log\n", - "train_loss = np.zeros(niter)\n", - "scratch_train_loss = np.zeros(niter)\n", - "\n", - "caffe.set_device(0)\n", - "caffe.set_mode_gpu()\n", - "# We create a solver that fine-tunes from a previously trained network.\n", - "solver = caffe.SGDSolver('models/finetune_flickr_style/solver.prototxt')\n", - "solver.net.copy_from('models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", - "# For reference, we also create a solver that does no finetuning.\n", - "scratch_solver = caffe.SGDSolver('models/finetune_flickr_style/solver.prototxt')\n", - "\n", - "# We run the solver for niter times, and record the training loss.\n", - "for it in range(niter):\n", - " solver.step(1) # SGD by Caffe\n", - " scratch_solver.step(1)\n", - " # store the train loss\n", - " train_loss[it] = solver.net.blobs['loss'].data\n", - " scratch_train_loss[it] = scratch_solver.net.blobs['loss'].data\n", - " if it % 10 == 0:\n", - " print 'iter %d, finetune_loss=%f, scratch_loss=%f' % (it, train_loss[it], scratch_train_loss[it])\n", - "print 'done'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's look at the training loss produced by the two training procedures respectively." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false, - "scrolled": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": [ - "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\n", - "UlvRigAAAABJRU5ErkJggg==\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(np.vstack([train_loss, scratch_train_loss]).T)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice how the fine-tuning procedure produces a more smooth loss function change, and ends up at a better loss. A closer look at small values, clipping to avoid showing too large loss during training:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[,\n", - " ]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": [ - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(np.vstack([train_loss, scratch_train_loss]).clip(0, 4).T)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's take a look at the testing accuracy after running 200 iterations. Note that we are running a classification task of 5 classes, thus a chance accuracy is 20%. As we will reasonably expect, the finetuning result will be much better than the one from training from scratch. Let's see." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy for fine-tuning: 0.570000001788\n", - "Accuracy for training from scratch: 0.224000000954\n" - ] - } - ], - "source": [ - "test_iters = 10\n", - "accuracy = 0\n", - "scratch_accuracy = 0\n", - "for it in arange(test_iters):\n", - " solver.test_nets[0].forward()\n", - " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", - " scratch_solver.test_nets[0].forward()\n", - " scratch_accuracy += scratch_solver.test_nets[0].blobs['accuracy'].data\n", - "accuracy /= test_iters\n", - "scratch_accuracy /= test_iters\n", - "print 'Accuracy for fine-tuning:', accuracy\n", - "print 'Accuracy for training from scratch:', scratch_accuracy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Huzzah! So we did finetuning and it is awesome. Let's take a look at what kind of results we are able to get with a longer, more complete run of the style recognition dataset. Note: the below URL might be occassionally down because it is run on a research machine.\n", - "\n", - "http://demo.vislab.berkeleyvision.org/" - ] - } - ], - "metadata": { - "description": "Fine-tune the ImageNet-trained CaffeNet on new data.", - "example_name": "Fine-tuning for Style Recognition", - "include_in_docs": true, - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.9" - }, - "priority": 4 - }, - "nbformat": 4, - "nbformat_minor": 0 -} From 08edfddbbae6abc66aa51ef655f782eee5109f97 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 23 Feb 2016 23:42:11 -0800 Subject: [PATCH 172/458] [example] improve brewing logreg notebook - create solvers inline through python protobuf - drop manually written solver prototxt - remove ordering prefix, since there is no real sequencing constraint for this example --- examples/02-brewing-logreg.ipynb | 5771 ----------------- examples/brewing-logreg.ipynb | 1164 ++++ .../nonlinear_solver.prototxt | 15 - examples/hdf5_classification/solver.prototxt | 15 - 4 files changed, 1164 insertions(+), 5801 deletions(-) delete mode 100644 examples/02-brewing-logreg.ipynb create mode 100644 examples/brewing-logreg.ipynb delete mode 100644 examples/hdf5_classification/nonlinear_solver.prototxt delete mode 100644 examples/hdf5_classification/solver.prototxt diff --git a/examples/02-brewing-logreg.ipynb b/examples/02-brewing-logreg.ipynb deleted file mode 100644 index d36871fcd..000000000 --- a/examples/02-brewing-logreg.ipynb +++ /dev/null @@ -1,5771 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Brewing Logistic Regression then Going Deeper\n", - "\n", - "While Caffe is made for deep networks it can likewise represent \"shallow\" models like logistic regression for classification. We'll do simple logistic regression on synthetic data that we'll generate and save to HDF5 to feed vectors to Caffe. Once that model is done, we'll add layers to improve accuracy. That's what Caffe is about: define a model, experiment, and then deploy." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "%matplotlib inline\n", - "\n", - "import os\n", - "os.chdir('..')\n", - "\n", - "import sys\n", - "sys.path.insert(0, './python')\n", - "import caffe\n", - "\n", - "\n", - "import os\n", - "import h5py\n", - "import shutil\n", - "import tempfile\n", - "\n", - "import sklearn\n", - "import sklearn.datasets\n", - "import sklearn.linear_model\n", - "\n", - "import pandas as pd" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Synthesize a dataset of 10,000 4-vectors for binary classification with 2 informative features and 2 noise features." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": [ - "iVBORw0KGgoAAAANSUhEUgAAAiMAAAImCAYAAACB54oCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", - "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmQHOd5p/m8mZWVdZ9dfV/oRqPRAIiDIMH7ECmJkqjL\n", - "lqxrZK3Xno0Zz3i0G2Fv7EZs7IR3YsYbc2x45N2Vx4csj6WRZy1bHh2ULZOUSPGUCJIAiLvRDfR9\n", - "Vtd9V+a3f2RBbIIACRJoNAjkE4GjMquy3swvK/OX7/ceopTCxcXFxcXFxWWz0DbbABcXFxcXF5eb\n", - "G1eMuLi4uLi4uGwqrhhxcXFxcXFx2VRcMeLi4uLi4uKyqbhixMXFxcXFxWVTccWIi4uLi4uLy6ay\n", - "oWJERH5fRH4qIv/xguU+EfmaiDwpIl/ZSBtcXFxcXFxcrm82TIyIyK1AUCl1P+AVkdvWrf4y8F+U\n", - "Ug8rpf7HjbLBxcXFxcXF5fpnIz0jdwD/0Pr/E8Bd69Y9AHxcRH4iIh/bQBtcXFxcXFxcrnM2UozE\n", - "gELr/7nW6/MMAz8AHgX+dxHRN9AOFxcXFxcXl+sYzwZuOwdEWv+PAtkL1j2tlGqIyBmgA5hf/2ER\n", - "cevUu7i4uLi43EAopeRiyzdSjLwA/BPg28DDwNfXrXse2CMirwKDwPLFNnApo11uTERE3QxjLiIa\n", - "dPwWPByCbavO0ooHnuiDl/9cKXVqcy28ttws4/52iIgHur4M7zdhOO0sLRnweC8c+ppS6szmWnh1\n", - "ccf92iMSvAf2fxQeOAceBTZwqAeePaVU+lsb//2XdjJs2DSNUupVoCoiPwWaSqmDIvIHrdX/Fvg3\n", - "wLPAnyilmhtlh4vLdUg/DLS/LkQA/E3YnYGOuzfPLJdNZgAGE68LEYBgA/bkoP2uS3/MxeXtERGB\n", - "+P2wf94RIuBIgL1z0D4mIrG33MAGs5GeEZRS/9MFr7/c+ncReGQjv9vF5TomAOGLPCFEK2Akrr05\n", - "LtcJgddnttcTqYAnfs2tcbnR0MAIQiz9psWEFBDgjeEU1xS36Nl1hgg7RfiSCMnNtsVlw1iGeQ2s\n", - "C1zUswkonN4ck1yuA5ZhThzX+Xrm4lAc3xSLXG4YlFIWVGdg+gIPSNkDKxawtimGtXDFyHWECF8E\n", - "fgz8MvCqCIOba5HLRqCUWoX5n8NTg5D2Q02Hkx1wUEHuhc22z2VzUEotwewr8PQWWGudF8c74WAD\n", - "8j/bbPtcbgQW/wGej8DZBDQ0WAzBT/pg5XGlVHUzLROlrs+klZstuEmEUZwYmgeU4rgIvw18CrhH\n", - "Ka7PQbrK3Exj7qSzm7dB272ghaB0AtaeUkpdNJj7RuZmGve3wwli9d0OyXtAC0LpWOu8WH37T7+3\n", - "cMd9cxCRAWh/CLz9YKVh6Smwj6lrIAbeasxdMXKdIMLfAC8oxX9ovdaAl4DfU4q/2VTjrhE325i7\n", - "OLjjfnPijvvNhytGrnNEuAWnWu2wUpTXLX8U+NfArTeDd+RmGnOX13HH/ebEHfebj7caczdm5Prg\n", - "N4GvrhciLf4OCAMHrr1JLi4uLi4u1wZXjGwyIviAzwL/+cJ1SmEDf4RTPM7lOkVEvCISFxFjs21x\n", - "2RhEJCwi0c22w8Xl3SAigdY16rq957vTNJuMCJ8F/rFSfOAS67uBo0CXUtSuqXHXmPfamIuIHoL7\n", - "k3B/GPQCNFbhqRI8ey2CwW4UrudxF5FkCj6RgCEBsjC3CN9VSs2/7Ydd3pLredxvFEQkEIcPJ2Cv\n", - "D8hCbgF+YCl1cpPsueSYb2jRM5fL4vPANy+1UinmRTgKfACnuaDLJiEiW9vhPi+kKnDWB/ZeuO1u\n", - "mAlAswTGs/CRw2DhtDxweQ8jIr4e+O/vB98ITGvAOYj/BH5DRP5AKZW7Ct8x2gH3eiBRhokMPOek\n", - "+Lq4XBkiEo3Bv+yF3TFYaYOJTrCehi+JyB8ppaY228b1XLcum5sBEfzAQ7y9yPg28JmNt8jlUvhF\n", - "9u+F3/gItH8Wyu+HsR74F/1QCEATIAiNu2EuCe9zO1G/99Fg23aIjcLy+QvlIGRuAcMPu690+wGR\n", - "O26FX3sUkp+DyiOwcxh+U0S6rnTbLjc3IhLphN+5HQ58GFZvBU8T9o/D8H4opODezbbxQlzPyOby\n", - "MPCKUqTf5n1/A/wrEbxKUb8GdrmsQ0SMfvjwwzAXxjn+vZAvQXMOtm9z6sMAEIZ6AEyc0sqFS2wv\n", - "AcG9EGiHwhRUX1NKFa/N3rhcLkFoS0DjwuVJKIfgsgRDa45+BNp2gW3B2lFgAjAHnXNqNtj6ju2w\n", - "pEMqB+8HvnEVd8XlBkdEUhDaA/42yE76IbkTkoOQC0AzAM19UHsGtgjMmpd5/l5LXDGyuXwC+N7b\n", - "vak1VTOOo2Z/vOFWuVxIWxt4zwsRAB/U/FBahVQNdNOZmiELZgkqQFlEAsAwiAlqXik1LyKDMPxr\n", - "sEsgXoGlnXD0ARH50xuxsNV7mRIsr8KbgpJXIVCA2bf7vCNEYr8Mo/thaxFsgfE74NRzUDjc4VQ1\n", - "e4PYGYJVP2yT1uT6BdvrAOkF1QQmXAHrAiCib4Ntvwo7LYhWYX6Xl5/u8VNdzkC0HYqGU26VdlDn\n", - "oLsK112lZ1eMbBIiCPBRnA7Gl8NjwKO4YmQzqJZBs3l9XtMAy3Dm+PdXW2IkB+bz0JOGv8XpzPtF\n", - "GPGBX8G0iERfga5BeLgA3QXn5jS4BtEOePyDwJtaeIuIF1BKqTc9obtsLDaMn4K1FHSMwrKAmoS2\n", - "16BahdcuYxPDjhB55OzrZ86wQPMuODRTusg0eQG8NrxBZDjdViMfhp33wBYFVQ9M1ET0byllnboa\n", - "++ry3qM1FWxC76fgg2loO18aIlmjb+sy6f4wtn2a0v5eGuNRSOfAPAeeVXhm0wy/BBsqRkTk94H9\n", - "wCvrO/iKyO8CnwQywPeUUr+/kXZcp4wBVaU4c5nvfwzHdfvbG2eSy8VQSmVSIuNHYXA3LIDTymzR\n", - "6Tr1138N0QCYBbAzcC4EO2q0/1Ob903AYCtIbB/wg/ugFAB92s8rt3qoRy085TLRKfA9ItJmQ/Ec\n", - "1F4DAtD2IdiyDZQSSRyCzONKqYtO/bhcfZRSNRH5+pPw4ZdhTIAcnF2Bx95qHESkDcK7IfEIJMPQ\n", - "MMBsiUmPguEmjCeXKJ07Dl07YAmgAsZzcFcViv3wr9pEjqXhSSAB2++D23KwtgOCCQho0BwWkS8r\n", - "pS7Z4MwRMgy3wT4NvKvwmg0nXHG78YiIH4ydENsClTUoHr4a3k+nhEDofui7G1QbxEZAPQOUYTUB\n", - "9d1V9uQX+ck2H9H8El4tQ3aXQX3yCOQX4StKqbf17F1rNkyMiMitQFApdb+IfFVEblNKHWytVsBv\n", - "K6We3Kjvfw/wMO/My/EKEBdhSCkmN8imGxIRMYHe1stZpdQ7TpFehe88A184B/1xsBdBm4dXy/Df\n", - "ys75fF8X/JNtcKtAXogOlDnTW2R2HMKrMLQMW9Pw8t4kk73tGCUTM1OhFlth9hMZAiXFg6cgvRMO\n", - "fwA0A+6vw8gMWBoc3w3P94jIf3JvJNcOpVQG+JZzY8EHdIOxRUSCwDml1Bta7IroIzDyq7DLhsUO\n", - "8A7ARBIGn4NAqxGZBdjNFfj2U/DFCeiPgpqCPX6ofgmOBKFxBkaeh+FpkkswYEH6HuipQzjjnBPV\n", - "QVj7TRH5PaWUEhG/CXsTsLMJpRU4GIKh7fDgqOOqb56Fna/BuIg8jXP9X1RK5a/hIb3hEZE4MAjJ\n", - "T8A+D3SXoGA607H6N5SyrrADc/wTcOs+2D8H6SpM7IDZ98GZk1DrENp6QjTCeUSfIxP1oVMmoPLU\n", - "tTT8llJq+mrs59VmIz0jd+CUOAd4ArgLOLhu/b8VkQzwO0qpwxtox/XKQzhZMpeFUtgi/B3wEeD/\n", - "2TCrbjBE9FHo/wz0eZ0ls3UR/dtKWe8oz14pVRCRP16BHiAEpJVSKwBBkQe2wG/vAyMB+Qnon2Nl\n", - "QCNR0on3WMg0PKdD7IhONhKhUjTxVRWgaHb6Uc06lXqR3iyMrEL2NvAkYfRHkDXh+AgUBiASg2xC\n", - "JDzuxMkGK1CegNrR9fEDTjCbMeS8aky4sShXhQj0/BpsC0MEONsO0yGRyDhUX4LGT4Ey9H4aHllz\n", - "XObhGkz2grkVJraAbwoikzDVhMpppVRORL667AjlkV0Q/DT84rzcDks5GJ6lOWBTDMGIDZGWK95j\n", - "QzIHqSEodYtIpgN+Yy90DECmCqnDcFcGEh+CZzyOYMYPjdNEPg/9d0IoB1NxEf8RqH4HmL9R6+OI\n", - "SA+kHnLGws7C6k+h/spb7a8jQD1jEOqE0jI0jiulLqySvf79OkQ+BKN3Q2QIvD1QnYboSzCUhp4A\n", - "fPfTIvLvlVLNd7kfbbBjL9wz5czymXl4QQO7H2LdoPngZIefeWMrqtJGpFCiYZyhYdrgBc/7RPRD\n", - "YI+/1b5sBhspRmLwiyf4HLBz3bo/UEr9HyKyFfgz4P4NtOO6QwQdeAD4Z+/wo48Bv4ErRi4LJ2tl\n", - "6xfgI2uQqDhLMz744RdE5CtKqbfLYnoDrQvXG9ybIhIbgUfGQIaduAIqUOnCE5whWvQS81UI9kEb\n", - "8MJIkFza4Kidpz8OAU+dfNSklI1il4ocHILODJg6+KOQN+Gle2EoALdUYDIFvZ+DVaBrBdIV8B2H\n", - "6QdF5GtKqRWR0P0w9kHY2rrInhGR4N8pVXquZe+bAiNd3hpnqqPzM06pn74ZOHkPbDsAfX7IjkLt\n", - "fTD9UVj+E+jyg6cIR7shF4RsCIZC0KnACMOJe2Hme0qpRfjFOTUjIu1beL0dhAXaKYzdZQIjJh6z\n", - "wmovDCyCVQLdgqbAItCXhXMJH2zZBx13wi+eehVEj8O+LBxsg7IF8jTRA152Wx4k2UT1wH0a5MZg\n", - "+haYf0xEvn+ht+e9joiMwcCXYXcNRiegosOrn4YjcZwH5Tf9Lpybfs+vw44ItFVh1YQTD4vIn51/\n", - "CHkz5m2w+1548Byc2gWjM7AQgkO3wcPPOAK1MwEzXcDMu9ydBLTbr4cbLUQg4oW2AKgEYPjR/T0E\n", - "lQ+P1KgG2zALFUqBEvFBgx2fbBAYgdNVEfnPSql3a8dVZyPFSA7nEQIgCmTPr2i5PlFKnXGmNC9O\n", - "K7bkPE8ppZ666lZuDvuABaWc+IN3wJPA10XwKUV1A+y6wfDvcKb6zwsRgHgVxhTM7QKevgpfMtQJ\n", - "YQW6AhFQecxoikB6num2JjEDwg2wbIiUFPHaANlKgEOncniSJfz+PEnPArFeiNchZ8FqwLnAnOmC\n", - "riAMZ2B6AJIeaK9CxIC2DGxtwpEOuHcVnviIiDwBux6Bj85CJgW5URgLQX23iPkDSLVBv18kdQJW\n", - "n3SLa102HdDZDoMzMN8FshdCNlRsyPdAxyyU90LjY5DphIP7oFODYgcMhCA5B8sGtB+GO1cgHxOR\n", - "5Hkx3ApETExARxIK/ZCZRBtZJLmtjNey6TgBJYHpPqho4JuHKT94T0OxAhQScP8QpBegcxH/tjpa\n", - "CBoSoW4uQLwNytMQr9IZ9uBr2GQG4aFxCDShVHLCnmJ3wgvjwPHNPNhXE5HgPdD7O3Bb1LkOTA9B\n", - "/CC8bwqWHxCRM5C8E/p3ivTVIPsCFJ+F1KNwvxdGW+JuFGhPweOfAP704t+WvA/2LTpxQShQAn0F\n", - "mIrDfLgVtA6tv94lBVhbF/g80wPdSUjUYDIEARWmokxiYlPVGkRZZjbuI6gC6HaGALA9D4MWPPZ5\n", - "Efm/lFLWFdhz1dhIMfICTk+Vb+PER3z9/AoRCbfc3m1vZYNS6nc30L7N5CHeRVaMUmREOI4z5fWT\n", - "q27VDYcZgeBF4iuCDfBF3rz88hEnb/f+DvhMAw7UIXAMurbDMRvRPaiaRdNsULJBhUBVwciX6Dsx\n", - "S237QzRe3ktz9rs0Rldp668zkoZEEmwTlBdeqYP0wO46VE0odDmpwB6BjjpkA9C3CN44RMsQ2Qrl\n", - "FRitw3I/NPZCXxG8RZjfA/F/Abu/DT2zcGYIXhgWka++U+/QTYreusEA+S1QD0LNB9uakGhAO2C1\n", - "weIdYPth3xokS5DvhJEKzA1A8EkYmHC20RWFEykgLSLDkPpdaB87jZ5KkzuQZPmkh+aOABW9TMkI\n", - "otk1trwE8wKrEQjkoeMVJ1vz1TQwbUNlDhmtkhrxkCh5MUo1apFFZjtzlHvjjmrxKnxkyMVteguO\n", - "EAEwGoAPRrMwsZ8bRIyIyADseRR8Hhibd8awzYDJ2yHyBMRM6P7ncH8ets5CzQOHH4KDQxDpd+K1\n", - "1jO8Ai8NnL9/vfkbtTBEW20C/GchPeJ4On1AzXAEyUIBx6X1rlBKLYjEq/DjT0LKhmwb+FPChCfC\n", - "kh7EtD1kBDxYKI+PYKkEAYW/UUH3W3QmIfsANBehexnme4HrohLrhokRpdSrIlIVkZ8CryqlDrZK\n", - "KH8Z+PcisgvH1/S/bJQN1zH3AX/xLj/7OE5RJFeMvC3ZszB3D2y/YPmsH7JXFATshX3b4Vd6oXcV\n", - "wl2gCtD5KoTDVBcnqGzNMCgQa4DHC1Ud0qZNW/4MybNF8r1JiI3j81cIVWy0GEgVbNuJNQg34WgQ\n", - "ZKcXb1ChouApNAhYUM2AtyWyBOcJTAG6AZpAZp/jRcnFoV6HgAE9y1AeAX0RRpeh1g1rB3A6Q7tw\n", - "PtbGP+YUWM1PAJOtKYtlWKrCmt85zmtBOFAFSwdfBQwTegNw/FZofwEWvJCNQ7YHFn1O8cvMGMxN\n", - "Qc8K5AWnDk0Ekn/kZ/uWKPEyWOUS4c4Gpf4dZKshPItxYhN9+MpHmd42x8jzcPpW8KdhwQerpyD9\n", - "XaWUrYm8chLz10ZIzekYTYA6IitELYEHTMojWbBWWA6W2TrhCPXzFELgnXbiUDTvZhz7jSG+F8Yq\n", - "MFuCohdiNSerKS6QboeVHtizCNtbHkJPA+6eguWtsBKAwhKE62/MwJZf/PVmqqfg7BYYWYGeMzDZ\n", - "5hQ7PROFs/tgpQjLf3AlnggR320wGoN6GpYTkAtBNtJNs96J6THxSI6geFmTJpqZJaw38eglNHJ0\n", - "LkOyBt46ZLqc6gTXTxX2DU3tXZ/O23r95da//3Qjv/d6plVf5C7g3R6DJ3Bqk/xvV82oG5dxOHkO\n", - "AgMwugKi4FQHnJoG+/SVbDgJ7+uBvm3Q6IbjEzCUgOUiJI9BY45GCXxhCJmAghUTvE2YuK9BLTdD\n", - "Z2wGyo54aOYglIGGB7xV2FqAxXaDSSPEaV8nw/kaZqVEPZilEquxosM9x5z6WLWCc3PMnoT8Cryy\n", - "H3YNQaDiXGfmA45nJnEcFuJOFoZuQ3cWQkNX5SjfAIiYe2H007DdAtOCqfth/LiI/H9KqYaI/rfw\n", - "D1+AnipUNSj6oFKDqG5SSipKugezGqSWylPI1SgNQp8FWQvQIbsTFrvhmUlYfBaYBeOLQWIjXXQt\n", - "amgKwEOlEcHXZ2NWdNomPPgrAINU/SvkQ3XqT8Hk14Dy+t44ChbPkpirUY62I6qG8ixh9YcZOa44\n", - "5dlK+eUiBBdY6bJJZRxPzqAHSiFYsaB3Ag6lIP2OH3Ja6cOj0H47eAKw9hpUD21+gKQRAF8D2sdh\n", - "/DbYV3e8Izow3Q5VCwbm3viZugeiAzDXAc/uAt8CDL4Gw2k4m4TMzKWzj1Z/Ai9uA6sD+tbAOAHP\n", - "doO/AH0ZGMzAxKdFTE2p2qvvdG+clN6+R+DhKSguwultYEV8pK0ONJ+XoLJoSgilVhERBI1KPYtm\n", - "rBJWdXr8oHdAtRPsohMHw3XT8NEtenbtGQFKSjH3tu+8OC8AO0SIK0XmKtp1w6GUaorIN+CZO+Do\n", - "bYBA5nEo/+wqpMcOJkEPQT4ExOH4AoTKUFyG0026UhCvwUIMfBYM1sHjg/xOGJ6FWBXyOswagAlr\n", - "JdjZiiEqe6BUj8HWA6ycWaSZgJiWZdZvojSLULTJwT2QWQLPEfiJ3sHaQCfsyzM/kqGZzOJZhs6q\n", - "E9dQAuomUGvVbgMyQahPXOExuCEQkTAM/xJ8dNF5EgbYAZi74PnjwKtKWSdE5KswfwCCt0OiDbps\n", - "nVxUkbe8ZPMhqismxUKT0PYaQwoGZuCHg1CP+iloMWp+k6ZZpG4W4DkL444gZuO8EAEQmnoEj61B\n", - "vclKQJHSDMyKgRKDM711cn+mlLpYrFm5TujMOe7PnWMlJpQ6+8AK4c1VsQKDMKWDqtHM/Yij4xaR\n", - "EKzd6cQgmQswtRPO/Awal1PM7QLCH4SxB2FHDnx1OPsROLy/FVS9iYJk9Tic2wX3T8FLAXhqG8QE\n", - "pmMw8zSoBcgNQue6InNnb3OmR+98HvwjoKfg1Adg4jDMLsPydy/1bc4UivwhrHwJwh+BUgr6YjA0\n", - "BYEAxGZhLAt/+0siMvEuUqqjEDdhOQKzd8GwBUNFD/8gTdKaQc72IVoFj3gIqQLY81BWbDXrRKpQ\n", - "E0h7wKjDmRSUD8H1017EFSPXnru4glK8SlET4TngfcB3rppVNyhKqSpOoOrTTgOy2K0Q/pSIOWVQ\n", - "19qcaFZrFV5qwmuX60KtwWLRKVwHgAlWL+RPgNeAWgUtACPL0Cw6sQOVMORM6NGdKpwdraDaI+1w\n", - "OgiNPmjPQkOHMyaY54LY226BpR1kVg5T2dlFfMFGb55mMTVPZh7ypyH3zR545BGnWV91jo7JIqpy\n", - "hp91LrF9Cvqn4fQgnBmAnsegqcNUHxzcCrlTIhI/H1B+EzMAQ/rrQuQ829bg9H7gVXBuNsB3RYJ5\n", - "WPs8qC0BKoNemgZko14KHiEftPAEhZ664lAcCAXxWMO010wahsaK0UMzvkzlt6aozesUlEVN1zEt\n", - "AI1AI0tV66aWHab03ALlkSqeRJG6Vqf+LaAkkvqs4+VbOQKcVkrZSqm8SPIYLI3B/mkPJ2NesvUi\n", - "c7GtZI/prdTeKNS9EK0wOAf9fwXlJJSDsKpB8fg7rcHjxP2N3QcfmAKjJXQ7iyAD8NQ+4LkrGZgr\n", - "wz4Bx6bBMwDD81BIw9FemPwOFL8O9MKRMegwnSmctSgUtkBjEXadAzUDy12QGIAXViD3f799Cf7A\n", - "MGxPQNcrMPlx2N+EYBegIJeCxkHn9z8xCBx5hztUdorznt0LB8qgMDjcL5Q8BootKGlH2SVqzKM4\n", - "hthBRnMNYok6/Tk4ZcJEwIk9C8yDlmnVp0lAaJ9jZ2EWyoeUUtm3teYq44qRa8/dXHl7+fNxI64Y\n", - "uUxEjF0w9jnYVQdfPcjTnx9hydxH7UkPNE7CZ4/CqIj81eWkvq7Bd1+DD6UgGAMrC+Gj0DlJiCId\n", - "eaiY8FwnDOiQbDjBhw0DUjqEgqCvOV6K7SswbcCiCd/vgWAOuo5BNlDCLs1DyoNIgKTtI1hqoIwA\n", - "sgwPPQGnwvBichv4klCYhM4mdihB9HQfRTIU9DqaDmYWXq3BnALtY2AFoP0obLsFjt/SKsR0uZWA\n", - "b0SE1s36jWg26+IDRCQKdAN4ODxlEd+q8KaCNK0eqpl+AvkF6tEKZ7x5PBVohGBbrY0l8eHRbZQu\n", - "9GAx3x7D9iyQLxisFWqc8uv0NwXdyjGXTFM1vAR8E1gHOikd9cDkEag1CAvs/BKMtJ6oT++DUwdF\n", - "5DvOObv2DPxkBI7f2SAUWGW+J0lhfg07/gxs74T0PPgqtG2Be2da5cNb2SIFL/zVgyLy83foNeyB\n", - "AV4XIucZTEN8F5soRpRSdRH5c3hmLxzbCyoDy98H+/jrKdXGX0L+E44gKbSDVoEHXnCm6rCgfwoi\n", - "i/CaoVT2LYWI07ph4GF4YBZeuAfaxOmXGbKdhKe+cZjYBeoEl4w7eUtMmKuBvQNOphOcHuxCjzQQ\n", - "+oEaSA7BoGkZ2JqNqVWxQxYLApk4RDTYtQbNEJyIQOWQiNwNfR+D/XVIlGB1BI7c1+qV9U6zPa8I\n", - "V4xce+7ikqlhl80TvPuYk5sOpwLrwC/BI0vOE9CRnmE80klPpcp01yjNo12QL8Pul+FnwLmLbCOM\n", - "M8XWj5O2PjkJ/28V+Z+DGIkqmiwSDtXoaNj402AvQK0PxtGYbyQ546ni16r0WopGsEmh3bnIrXmd\n", - "aZlQENp1KHXD5GiM5aUOmJ+E3TFQNna+Qi2QoelfIXQS+jOQD4D01pEdPye0TfAE6pSiNbyDfrRJ\n", - "k8piHe9rUGqD9J9CaQfsN+HeU87UEcBAAP7bZ1qFmG7Wyq5TMKlgr/HG7KvxJKSfBhAJPgBb368R\n", - "GwlT6NNZDTQpxjvQzE6MchKlIngaIczVBRqJJXJpiKdAs00aXhvNFAJ1DU/Jxh/woed06EiT/VEP\n", - "Zx5ULPlXoatOl1bltidPUp+aZ2YY1h6okfurAjwLY78CH1zX52ZLGqzb4ODJpMiBfvSPe9Da1kgH\n", - "sqS9eYIxYVuygbKyLLPKUn4OJiF01hEiC2EY3waVTtCroOWAqIjkgCEgCKzgVC2+lEBvwMWcKVUD\n", - "7E0vP9Dy9Pys9eci6xtHReQUzLQDKdj36TdO2wCshqF+9mKfd4oqtj8IRjsks2C0wXITyvtgyAMr\n", - "EQg1oC7AWadp5oTJBdcYJ5iZLTgiZWq9t9KJyQm9HwY/B8n94OnycXKgm5ovjJIqNj78YlFgCdu2\n", - "8Gg1YraHiC1sLddYMkH3OJV7vRnwlSHSDp33QGgUfDoUTzrTxP1ZiCeg8lHgT97lYX9XuGLkGiJC\n", - "FOdHfugKN/UaEBVhUKk33zhvNlp1GiJApTUtcyFd0G04QgSCzHUmMKpevJUcZh80j2rAADSPO2Lj\n", - "3Bu3b+yCwS9B5z4I+2BNIHO2QXp8irZjBmqgQWUnbPfAliJoKajPw5EuKAbaKWm9+CrnyItFXdnU\n", - "DMGONjAyzjTNgOk8gXWehELCx6FhE2+jg8njNZqFcdSDipUhH2Y+jydvES1BzgcZDYx9M4Qe2E6y\n", - "YSLNBqVimYo/Q2NXmdAqvBKC0y+COumUp77zzOtCBJybUk8CZru5TlL8NhInCJAQUFJK1QGcKQ7f\n", - "9+GxT8BY0wk0nvbDyVPQOCwiI3Drh2C3lWSm20fMyjNiengl2Is/pxB/lka0SsaroWeDmIt+FoIa\n", - "VV+DQCBHzgzTXjfQchaNkE3NX0G1l2lXDYovTFB/zEv+n9foj9qMzYLodXz2Kvd9Dxai8MOaE3Q4\n", - "VH5j8oORGQzxAAAgAElEQVQGDFUiHPrHe7AiGh3+ObyaQShikEw20Cyb5YCP8ILGVjsH1k6WZl8k\n", - "3V3jXBrO3AOjCjqKUPJCeQxWPgKxDhiOQVQ58Y1TJ1sew4vFF5yFiRqMBaG95CxqChyPwdLbdiS/\n", - "HmiJ8DkRmYfZ2+DVPtg975QOWgnAK0FYeZOHR8S/H/b8CuxPQ2oVJrvh4Ifg1boTa2JUYK0Gkzoo\n", - "A5ZG4HQB5r6/PvjYCZ4e/mXYqjkB7ZNqfaFCkF2w5Z/BwHYYVFAt+chHgqD5MOwGFZpYdhil5VFa\n", - "mYRtYTbzVGolyhmnyFu/D/wLkFiBQ/3Q3nTaU5QM2DUHrw3Bq1U4cBoG1iDSLyJBpVTpWo2DK0au\n", - "LQeAV5Tiip5AW6Xhn8Cp3/K1q2LZexTnh9z7YYj6oaJE4i9B9h8uuHC2Klaef+GtNbF0ha0JWHXw\n", - "6GDXQGviFJMTkRDQCZiw9bOwqx8GixBbdLb1syQE+6Hpa7BnFV5THpIVWAs28fqg/yyMjsMLQ0ns\n", - "vIGsdSPxSY70K/o9YHhgdQtIDSJF6DgNnoZGM2jSU62TC84RGdzF2hELtnix+vLoq+1EFsLk2sf5\n", - "649XyaWhYyhPuJImbwQQvwKjSqW+RLnhJVeqUPsznHbztkjfJQ/jRo3P9YLzdBm4G/ofcgrKFZoi\n", - "kWeg8LRSylKq+pKIzMD0LvAGYO00MK6UskRSt0NXSmdpjx9POI+Keog1LKKqTs4IECiXiRabWHYE\n", - "/6Rien8KZipYVolFslSUh2kjRCQWQJRC5WZI5hp0NCDzqEX5RxWGcpA6A/1rTv2PuVGYa0DXJHg6\n", - "wJp06opYAucSwlpE4a/CYiJCcyiPkcxQjVTo9gpdEiBRqdEMCPFqhsl6F/3H6lTjEZbKcQrNRV44\n", - "AHcJ9OWcGlzlIGw/BNkvwL4X4ZZ1wvTZMXj+7lY/GxOonfeUKKUqIvJN+MEXYWvSWT2FEyD6emn7\n", - "9wKt+Im/hGcehWO3OPVBMjlY+MaF/VxamS0fggfnIFprzfINwq1lmOuBvhUgAilgXIe6BY1OyE7D\n", - "eiEiSdj2Kfj4EoRa16zdHvjhR0Rkymlol/gsDLVDW6Pl0QrYKK1AjSw5rU6FMnVuQbMEpZXxFLIE\n", - "V7Kk1qD3R5C7BWJRWCvC7CrU4rBrHmYSLSuA7Vl4eis0W31zrF/89U4QkW6BbgUNnOvO28TYvI4r\n", - "Rq4tVxS8egFP4sSN3LRiRETfDrs/C/cvQiINNR1evhNe8gF/ve6t8zCXP18Fscrw3CxzwwbpjhCl\n", - "+gR8pAr6Ucg0YNpxyQ8/DN0Cc93QvgW8liNEwEkPHKjDfA+0Bz2cNdvJBxKcVaAkQ8WzxPyOJjtO\n", - "GhQDJtWmTj0IXrMTtVrgRLBOuJLBVhCugG8Fym1QbdcodFvURdGoZ7C8r8LWrRCqovzd5HvrlDos\n", - "lL4Fu2HimV2m3F7E1E+S1PxYmgbNBj1anXTVx0SlrNS6plzZl+DE/XD7umJOKwGYq3AZKX4tD1Q/\n", - "4MXpY/Ie6iDsPwC7Pwb3zkKgAfPtcOiLcLRHRP5SKdVslWh/Q0EqEfFB4g6QHUKyCiVDYYVsECj7\n", - "cmT0OFVvk4LewJPNkh5YRQsa7MvGMCyN6a4oTd2kpFnkfHNo5Sw75+vsn4JjAeg2Apz8lzHOBX1M\n", - "xstM5HL0LVe4dRYWR2BuDWqzUBiHEw8HOPlAF8VkCq1RoGnMszDWCc12iOo0fKusqjS6JcTKAuIh\n", - "ZjXw+UusxIsU26bw9Gk0s5BVkO+As3FHfxuTkJyFrr1gXHATumUBXv0UxG9zigVWiyK+H0PtZeVw\n", - "VkT+A0xvwTk35i5dMv36pJWe3A2EYe3HsPYkzv1x5RLl8WMQjUA2DGk/WBZ42mDwFJzrAJqw0nDS\n", - "6dssGJmFnA23/xwOfUZEryplnQDfdsc7FVr38ORvwva6U6KfWTDHIJkHCTupxzNdwgqQJYUiik0Z\n", - "OIqtp52c3UqR2087mVIzoxA9B7N3wMDzoOcg39VqtFgFzzJMd4O/Bg2fUw/pbBvkjl3Cy3yp46dF\n", - "4WO74cCgMz+njUNdF/mW9YZr0KVxxci15W7gD6/Stp4Efk/EedS6Stt8j9H+ENyefr3cu2nBndMw\n", - "tVdEnlzXdsASkf8Kf/8lGI1DyJ6mmVcsDd0Ciw2wVpwLei4Lv55jLOJkB/gsOGiCsQ2qHa1mvYCt\n", - "QSMG1ZSXfLyLpWYbutcRQyHVgQ9YGZjj5a4I9dUY5UYcO9aNXZumaKRIvjJPxczQdwKWdkM2AknD\n", - "QEVC+KtCIaTTMDsotRXAlwZ7FKw4LK5ipcYgPw6+WfSOXmzvPOlEGUP5ERSa1QQbkkaJlQsKWBWf\n", - "g5e2OU33eipO0OIJu/Xk95beOicTqesfwUDUeWKcRST4hFKlq1FS/13Tuolsg9Q+p2DXyuFWgGJj\n", - "3Xt06HsI7poDQ8Hpe8Bsg70Cxf8B1lIi8hegdUByJ9hNSB8G6dFJ/Hc23tsVpVgTvZanogtSt/lZ\n", - "W4Kyt4K3OkHN046lFSi3z2ApD9snY8RUnXP9u2mW4oSLSzRSFmg+YpTJtNU5tgr1mQ4W93Rhd+/B\n", - "N1WiYqyQbV+jmphgsbdMfAnmm2DMQN/2IKfv7YP+MP5yGbGgFLody7TRghECqonHGydQb7BipkmY\n", - "DRJlm6Y0aJgr2FsVKW2V6OAy6SzkJiFyGiKWk9nlr8H0IOSjMNMHwarjNQGY6IbuffDgGUewrPnh\n", - "xU/BazqtWAylVIX3aOVWJx4s9QXo7XNu+KvDIBXgJORfFpHHLzJd0QGVO0GrgSSgnIKyD2QcrDSk\n", - "JiEB1Ech1YTYFDTK0L/s9ChafBg4AZoJVhQmw6A1IL4I0aIzVWgEnK+qp6EUhJIfzmwxOW30UiKG\n", - "zQgKDaGOwgMUERYJzzoF7AJVaCbAmICXF6Dshe4gzEWcINbgMTD6oNzlbLtowbc/DvlZsLMixj3Q\n", - "fPlyRIkGYzvgzvfDufOZW9vB/z34goj8u9b58Za4YuQaIYKG08n4S1dje0pxToQisAsnhuQmxOiA\n", - "zgue6DUgaeH0Q/pFEJhSakZEfh9mR8Ab8lGdHoEZ02n2Yd8N6RDUsxgfz9F15PW4irY0zBYhmoK1\n", - "GPhqwvwozCY8ZD0+yipO1aehdJs2BR4RmkTxacuUfHXagqdINjrJGu2oagq9eJh89xI7noH3H4Y/\n", - "7IL5EIjfwO9tUkEx6YlRtrxIMIR4YygtCbk0pDzgr0PQxEMD3aOj6UHKWhc5/PQom7pWYk1N0oiU\n", - "8Ovrj4xSqiwifwyr2yA6CJUsVI+9XRqf45Lu+VV4BOhveVVqOjz+IRFZVEqdusKBvALCj8LYPU6/\n", - "DY8Fk9vh6LiIfHOdIPFBwA/RNJzZDbEEdLbK4PdaMNgOP//XMJaB4Tw0NZ2nP9dBdkc/kekVqsEZ\n", - "JuN1Rq0sOhrjZhTd66HfMtA8RdLWDIuNCI1jJXx2hDalqKQ8FIwE3oaNRAwCykO6aVL3pNBSkM8o\n", - "Ao0k1WA3dr1ANZbH5/cTL0fRfAma/jIrfdC7BPeeifD3946x1rmVat1PwcpB6AQEeiGzgDdQx1IB\n", - "sItUPQEsbZ41zcIKZkDpFP1+hpYC1FcKhDNNDjwHjw3D4R740DHH6ze5C9J7nHYEA71wthcWjsOt\n", - "4zB9O2w7BcnWDSVahduWYP79IvLyu+1Ae/3Q9sswuhPqPVC+BQZqECpAcgpy++DFDhH5k/MeEuf3\n", - "0PsxSC3A0gGnR1RH1kkDnhyE8jlY0p3KvH4djAKkBZKHnSmRzgJ4+hyRHNoJS7c5XX1tDRZ3QPEV\n", - "OGc4dVIAKn8PP/8/oSsFvkCUBmEUA0AMwUYoIpjYhAjZGmbQ5lgYjpmwoEPxKKx9BZZTEP4oRHIQ\n", - "TkH9YfDUoPccTIUhuKxRuyWGPxVBH6xgfjpL6ZiI/K/rY1wuRgpuH4OMvi4rTXfmF4cX4B+JyJNc\n", - "JDFgPa4YuXaMAWmlWL6K23wSJ27kJhUjjQWna2Xvuh+KJZDWWdeY8Tytm/GpKNWHIvDJglNTfXEY\n", - "joZaxX9iaF5orosS7M/AzFmY74CVLWG0sEkhbDBnmWQCGppE8YkQpEaGOiXAryCLQdzWiNsG8cVl\n", - "TnQbYMBSWwU9IyiBE51QPQ7mksb4dh+lfg+NkBd/yYNHa2AHB9GtKpYmqEAIrBLiz2LQJGRp+DQN\n", - "H100qFOlQUGgIWEsqwtLy1PZf5Fj0ACOtf5cLoMwGH5diIDjhdqVhZk7gWsmRkTEDMI9MbjThqSP\n", - "9oEq+5+DjtaTa38W1Ag8s53XfxdVKFWcJ/r6AKRa50tNc4rCtdVheBfc9W0IVWA+3Emzv58O04NO\n", - "haDZQU8zS85boIiGoSWINiLQ0NDKAdolR8XfTdlco2mkKQXzmEYYsFD+OrpWp0kXygqi2QX81Tj+\n", - "YJaFPXkavjqReoFQD3i1JhXLwKx6qVehewm2KJjq7CaXCtEIedANA6vUBcY8GFmI6XhUk0CxSilY\n", - "IBNsElUBYjUb2y5z1mjiXa2jHy3TOWPRNe3U5rt1Hv6+6Ljso93QvAu8ORg4CHYbjFXhyB540oSS\n", - "BoNHwUbn4JYYE6NeGt4yRW/ZaUtxpaUKNg2nxkb/HWAOQn8IUhWncNupKJy7Ax7+Biz1w8oAcD6j\n", - "phvauiHe53gUTmvgizqCYxUYLEFuDipjMBeCHa/B0IuQaF2TFiLOtUvbBXu7wXgNzg3AQBmiGrzy\n", - "EIz/BdCa3ihNgnghXjFZiASoEcKDhkKniY7jq3QCv/y24GvCljocPwvz/xWkDIk7IWfAcAo+9EOY\n", - "G4L8h8E24OUU7PihcPKhQUy7G1NLYi5Y2DLN0q5xar8F/Ju3Oo4amMa6GJMZZ2f2JiC8H4p1GDoD\n", - "r7zVU48rRq4dVzNe5DxPAl8E/uNV3u57hOUn4ee/7pR8bitDxQMHe2Dp4MWe9sWJFvvcARiOOPWe\n", - "OxoQOgr3euGpTihWaKxBxf/6pzTgwBH480CcXF8SvRnEW1U0rUE8bWUs/wqWN4GoMGGVo4qNr5kl\n", - "pDUZUAbL6PiaNUy9RNZXA49BrdHJaw/Oc0zqyAQUum3aZ/2cEYv2oE1fo0jRBDyrrCiBagbLC5pW\n", - "xBYPZjOHEgNThKal49FsTCIYdgMNH9VmgpqKU+rSRe6xlLrSWg8+JwHlQkI18FxRw8F3Qmv8Pr8f\n", - "Rm6BhUWIncFIjvPje9f48FPns6VgSx5O/MJj6EzT+Z6A538Fej1O/ZCqDkfjED0KxU7oqDm9ZgpB\n", - "jRO3tEFYI8AyhUEvPUYQA5Nko0rRGyEmDdB07JKGFLzgt0g2l1iK9dL8qSI9tEZnb5WAb4ayP4g0\n", - "TEr1TozsAvVYCV1FKWttVLVJwtgEPQY+y0PEtqhrVZaDRew8dGfAD5zuNiiONQiFSii9iS9gUq53\n", - "0CytQtjAVm0EawUaoSCR2gKNZoBFS8cqBfDNrRFpq7HjGcdt//rRBFbg3CqE74fbs05sSDkKixak\n", - "005c98EpJ15Bq3t4cesI47cMEMx58VYKLCUy8ElTpFRT6vC1Og+uMj4wtsCuAuQSzrXEb8HOIjze\n", - "AQUTOsCZcznbmhbsAHsvpDRoX3D6SVV0iPihUHa6NU93QfsZCC07TS4XxiD6ImT88POkU++k/R7o\n", - "Auyo02fm552gz0H1BGReWudx2g5bVvzkhuPU8eKhgWINjaSzA9jYlIAMtrIoNuCED46fhM67YGfQ\n", - "6ep77oATc5JdcLyEnnPQnYN0L5weDZDr7qA7q1EyAHQ01UdifpnsAyLylbcKRl2DI2fh0S4oFCFQ\n", - "gj2DkJsH9sHpJJQfh/1vdQN0xci1YyPEyI+BPxbBoxTvcVfpO0cpa1zE+CasfhgifVBpwtrTULhU\n", - "f43eAdh6B0yvQWHFeV3cCvoZ2LIGy4vYh2DSA+2dsGXVSaF9fkRYXtuJVRiG/BIDexbIDXrQzDi6\n", - "toCuFihJAp+qobFCgyVSyiKvNNY8eZo9RcpRizZVpVMzWY5XKabAZ0OqAxomlMYW8etRUrYXo6Fj\n", - "aAZ9jXkMvYeZ6jk01QnNVZQnT1Mv4pUIHtbI6xaoECZNllEIFkUBVe9xvEOfEpEXLhGEd7kswowG\n", - "B8RJdzzPdBxyz1zOBlrBr6NtsKMJ9SwcUUqde4d2DA7ByN2tFOQ1aMQxSsM0zTzH+5rc3SrcVtfB\n", - "uqD4Re0gHNNgfhiWukEKkHgN9k/AT1pz/7kUVG4Bf0IRCDaphOso5cNb1tErFpWQh2ogQFgpDKtE\n", - "TQLUu2pglWhKGbvWjs9QZAQqngzm/8/ee8fIlp7pfb/3O7FyV3V1TjenuZMzJ5AccpbLsCvSpCVt\n", - "kAWvBFuwDQkLGDAM2IYA+Q8DtoSVdyUIsCBrd21Ju7LWXIpLcmkOORqGyfnO3Bz6dqyurpxOnfT5\n", - "j68v53J2MufO7lJ8gAa6uqtOVZ3vhDc87/O0rtDzFoj1PJG+gmTX8HYnqZ7x6Lghbl7I7NtGW1XC\n", - "yCZNU2yrDWqEF8IQ8AVqJzvkpwuU1Q47UiLEJWv36LqXIPYZ2kOa1R6xP4AYFsdT2KMYqx0Qu23a\n", - "lYQzD5vsfKILXR9O3Q+LczB3CFQRRj4E28Zl1ilBM4TKcyDPQzOFH3y+ws7xA+SbNkJAozxPcPom\n", - "2NyBR0XklfciFvgXEG2IM5BrmerZuGwIpIkDuZHZV3UBa0Vk5nMwfxdgw2AZmiPIJzDdg2IM5z3w\n", - "+qAV3PI43HXVtDOfugmeexCenoXROWj+HqQDGH0RztwBVQuW+2Ybm8dhIwN4e9ojY2BGaM7ksXM2\n", - "FgEeXRRtEgI0VTQN4BJOWiduQ/E1GAWQL8HHkzfch9MRZHJw+mZ44FnjELB2HAoFKGUSpLxFx1+G\n", - "y+AAoBBypuKRx8i/viXG8OJLcFsCKwXI2ZB7AVQOXp8yBzJHofPzYOQvBu4HfufD3KDW1EW4AtzN\n", - "hx/o/LlARGyMXnJBG87HlXeSaNc6ek1ETsNmDgjehYhZmd3raVagHcJTl8wJ5J+HQwN4fhe+CmsW\n", - "9B8C73bQx2G2q3kgc5HNAx1qm1XqmQS3nFAMLRIp4iRtfOsifekzkQ7IaOjaUCBgpRCwNQF5xhRE\n", - "MUhsjmhNnQka9pBRYUhmlGXNdlmwMwQ6Yej2UGmAnRSYD5s0rApxcAEZXCTnd7g5dNHKoekoJmTI\n", - "jqzQpIgd23QkwQ4CVFwiGbbg5g58XESeei8ksrfex7ouUnoSvvsA3FyHTARXJuGFIfSffbfXi4hd\n", - "hl85AccPQC8C+wzclxf5Tl/r777Xz2HB1IKZQwVgEna2aFFgOsyyO92FC2b89UzeEFB/4jto4GkR\n", - "+Xtg/R24Y88s8Ow0XBCjIKofgDs2UiaDJhulBXYcH1UY040c3HGPoTtJtjOi5ZWYsvu4qod2YmJ3\n", - "SCt1yGbanLgrR7Ee0GdAU2qEF9vo+S1UfpLcsIDf9wj9Md2wjq7CyGqS0ztEiaKZ0eSigMrQIzvo\n", - "cWnKEFj9I3WKVpG+zjBNQKQjurJG7CQk5Bl3zjKe6FDC5oBt0Z0IqBU8KCdUGop2ADuLMPw8pDuw\n", - "edSIYB1W4OZhbhVqx+Dcfph8HcpdMyl2vgHD88AWvDiZRd2bkCUhZJLBuQMkZy3QWVjCJOgf6Pj6\n", - "KCEiOXBOQG4K+lvAGQhehnMnjE7K7hSQg3EK413YLsL5GbjnIageNXySeg7OR7BrGWXVkTY/uyNw\n", - "FLRH8MAel+38NNTvg+kpkHkYHYb0IXB8mK2CnwdvaKZyggQKFtTuhsXfAnkV0jmo9oWNWRAnIERI\n", - "iLBw8agTsUZMD802hQTuXDNGf6ddmFiAlW+88e3dGuT2QzptWpT1CPblQBKobKeEKwFjp8GGKmOK\n", - "wyO6xYBwAyP0eP1+VMDhKbhVmw7RKzvwL5+Am/LwuWVonoQXDhvRvGt4x2D1hgYjhjDIncALb3bw\n", - "3St3vQj8ttb6Z3o8VYQJzAl7I7gd13gjPxPByCz81wdhugq6BlwyYkS//04lwr2s/72MmY42IROA\n", - "5UMyC7Up+PYpWOnAmZbWv7eXwR8QWhua4kF45DTctgHt4pjMdJ9KIeFlO8JOXyHJOCgHvDRHKZkm\n", - "VG02YsNavzmGgjJeMPcgdIAkTdFqxKvuUSxyWDImR8CW32IsEZ6GSW3hxAVia5fESmhainFYQg93\n", - "yTgBRwLFpIa2PYPNBFOEKJpc1h1i24PIRUbzjIMOWNMgR+AXTsOte8ZlH3Act/sNeHoDLn3MTBy0\n", - "12H4no5nBcdPwvFPXUdg2w9WCI+IyKn3+gkSGHSu00TJw2iR7guvEj80ZiGC50xSx+pjwKW32obW\n", - "et1clzp3Q3Z/jsbCfqJOFrXUYryvzvpUm8MbW4zGMfFugdiJOO3VWLFSvMEsuc1L1JbqDCeKzKUW\n", - "aRhSdwV/oKlqHys/wsoHzPbhodfhm0fGlHsNuv0JxrZg+XW2btLoZBLllMhQwB6uM7auYqUxTlZo\n", - "ZFOa+y3i0GY0GrOUHbHCWZpSYIgiJwEzRPRwGMoWvYxidqTJeIoNew5LJshbOeJxn42pHsPamOU/\n", - "MSJn9RXjEH13BJZAtwrShdw2rC/Ba9NQGBu58LXvG50LEJFvCtx1iGGrAEPP6EjQAS8wme/78rT5\n", - "84CIzMDS34ITGdO22PHgtR7svgBn5ve+0prxqOlapoD62g4s+HAEyCZQ7RtdkfE8RJuw1YUnfJM7\n", - "6QJcqcPNZ4xWzMiCU1+C2/KQsQ1npKYhPQkkUE1hEujmoKehE8Mogf0JTOTg8oNw1yXFqbuX6MpB\n", - "UorkGGNzgQEdNC4T9IEu3RTuHYA1B/Rh/5bhoWwtwcoVswdmLhlfqmEFagVQPthb0B0BnZDMDwLi\n", - "W1uks0M67YS+vUNr3Eb/4fWJjBhfhC8eg7uPQFeA83DbGXihBf+uBZen4TeXoHn9/r8AE++0Pjcs\n", - "GBGRO4Cc1vphEfmnInKX1vq5657yS8AO7xIt/YzgXuD5G9RKeQz4b4H/+QZs+yPHw1A8cZ0S6Iuw\n", - "8B/gUeD//aDbNIFv7kFY/uTryE11Brcfo/PCx4gutCBzBnQbvisihWn4zw7C/ARYz5B9YEC8EdDt\n", - "wNpck92FPuNpKOVssmHEnC242Ixw2Q41TjAm6xuR3eUh7JRhMgVHaUoorgAz2sdRDqGGFCFhBksg\n", - "lXW2xKWoYWRrlFYkEtDSLZRuU3T72J7CGwvttMKGWyEXWQTaRqksRSKaqYbdAnEyhE4edn04fQes\n", - "deDWOtnfFMk89l4maN6MvYDvRRFpLsGvrhjZ2JWr8IW8yP/X1/qJt3ttFW45+KbMyoPkIOizsPI+\n", - "lJUunIf+PphY2SMoW+j2BoMrYy6+COcuAc9ord+RJK61bgDfyoh87F5YehDOXkDpXTLJNH3neZ6Z\n", - "Djhc2+Zma4fNnM9Ze57TL9TJ3LaKP69BaVQ9ZlNsnLFQ8EMyXoZursVqachU2OeWSyAWTFSEuU6E\n", - "nz1Ps1ugVVGIexBn7DFxNiVc6hDPjclhM21ZFAJFlgFNT+H1xmzNQyCwSUSGJovAEooeNldRFNOA\n", - "rOthh3mazFDTBUQNsSUiyeSxuku4g9MMspr9ocuum2EwkaMepVi6w8gb4a3AvmdhVcPGFgQuXPxW\n", - "jnE0LfJX2ybCO9WEH7wOD9y7V64fgf00zO/C137KNuCHBnOuqxMw/RDYEzC8AM3va61rMPMleCSF\n", - "/Xtti2IBGo/C7Ajowuv7wKlD+ALsnDUBOIvwwFcgmTIVQQAngul1E7itDI1fTD6A+lW4+QJcPgE/\n", - "DA03vjBpbrOlBBoa1hbgNgWhhkCZqpwvhvyaJqAci57rsX1QGErKN+cUYW4JrElSFAkOcByPc2i2\n", - "yRKS02MKEcx1QK/D0iqkAjszcOX+N4KR/BDS1+FKwbSCChqO/xBuu8qec3SbK2eHnHnkNLVWAtst\n", - "+FoAu1MiX04gbJkgf2USPn87nJo1luDsg0YCdzwDL2qtL2RFvvUn8NmjEDqQXIHsWXjHxONGVkbu\n", - "Bb699/t3MG2K64ORXwH+Df8RqD8C93HjKhdPAH8gQlZr/hztuj8cHIPa9Y9PwtYrcJuI/MnbyFG/\n", - "B2Tvh1s+Bw+uh/CtOmfu7HDh/jOcnxbi1zfh97XW62WRv3ESuX0SJ2oROha2V2S0HPHMoQQKcEcY\n", - "4rThQjlEeUBqcyIIGFpDzmVhVWDBgbyA9sBWRqXe8AYVY5WnRwEfYVcUA1Js1ScQi5D9NPSANSVU\n", - "tcWYMXWKhExRZQzRBWI7pmdrcvYkapxH9R1U2KdXyZJpBnjZC8S5VVxXozIlwtbtRI2vU3q4z74J\n", - "m8JKzIQNr39aRH5Pa/2WfhtvBxHxl+HXP2fMTBqYb2Z9Gz4rIpta67c020uNIpR6898T87/3fBPT\n", - "Wo9F5F9+C/76LCxFULzI5IkRizVQD0Hvs7D7sIj8Q3PzeWdMwv0noaaAMnGtQXA0Jhe5TC8G3NWD\n", - "0iBlYjyk1L3K8zfZzI888r6FF6RMhAlXsjkygyHjXpWtlSq262DpkMha4+VjdYZti7hoo1xNwbKZ\n", - "1i22cvO85M0hic+w2mVYuIiXahbdDBARekOKVsRELLwybzGrNMf2dpKP6VyeIgVcptF0VIqnXba8\n", - "ZZSsUIgsHBkRyiotNEfX8mxbObbnBnhTBwiyHvn1XYazFkXJYccxq9WIaN5MgtibsDo4wHjhVpgq\n", - "QrAJN5+CB7fgd58HrsB9e3Pz6S58O3gb35c/H+QehBOfg9saMNEznIhnbjLKqscXYf9VU63cmoNX\n", - "fgFusmE4gGPfgehpeOIYvPQ9CB8HjkPmi3DqAZhrQVqA4t7UViOCxgh29hkfKvUqfPZl6Duw/glY\n", - "/VVz/qsJ6AhkGoYzv+gZA72LtvGruTk1p0ZX4FRGkTDFscQj1QmRO6bl2JxVDh42DikxWXxyQJaY\n", - "LDFDBqRU26D7UK6bwEJpOHIFvrsE7hJMBiY3eb0Ljd8CdkH+GxD/WiBikPZC0v9jHf4VkFTgP70D\n", - "fvlMF/0AACAASURBVHE/DFZhvg63lmA8Y1qts1fh9XvgvAIOmJ7eMeDCUOsfiMjlVThpgd8yarwX\n", - "gP/r7VbuRgYjE7xRKu0AN137h4j8AvA45nr0HwNv5X4+PLGzn4DW9ER4GXgA4+b7lxpvvmNZkFrm\n", - "z9ZbPf/dYDgoi58RljyP8/ekOKOQ5dMhyy/36U3D+j/WWgcisjyD/5/bTA/PkMw1yC6OIavxhpp+\n", - "1pBZ51uwUYJyBBUXVhW0BTwb5lO46ICnoWbDjG8mFiIMGewyOSwgJqbJBD18Ino0ZZssGWJsInFY\n", - "JWSdSUIpE9MmR0TOzUK0TEKD1qhPktMkaOLMkJHv0NdCJg1wnJDSUHM4jSioBoPlx7nwn/gsdieZ\n", - "Xa+jBe5ah8U8fO0rIvKP9gTh9iYEuDZFlMVkv2tvyngPHoLM7HV9YB+Sm6C7BndhLjZ/Brvw4jnD\n", - "rm9e0yEYgHMB0G/TTnk7aK23ReQfb8ECzPxXcMurkByFgxHku3D+PnjxH4jI/7SnqPq2SKD4LN70\n", - "Jtl9CYmXpylD0lmHA9rIo7czEK1Bth4y82DI7DjA7ziMCppkasSMNWQjKdONllA6pm+BTZ403Yf2\n", - "A84uj0gSqGiL2simmVa5ksvhJIqRaxHNZInyfbJ2QsiABMhiUY6h6VoUEeb3liYmZYSRW/cAF4WX\n", - "htSVoi5FBnpERlrE7hRae8QyTaq32Vh0iVohYyfHenUadw2s/hUuTSQcdhTlWAgFnpuEq/8com8v\n", - "wJc/D7XJPQ7IfmjmYOFx+FhL66+LyOMYQmP3/ah03mgYPsiBR+GRNUNCBThWM15RjY+DaDP6f/Eu\n", - "iPbBdBGWRnB2Hi7fDkefgfsvwNqdEB6GpV+GpRzE89Bagdf1nrBhH64ehANdaA8BGxqfhq9PmcmY\n", - "43kopBD7cNkBncKlGdDaBCg9TEHhuDa7cV1ACyyJww4OKtGM7YQYh0AgZpOIHFkcAlxkr0aSkhKQ\n", - "pT8KiT2T+GSvO1+HAuMX4Ltfg8Is9LYhev2agJuI/DF87zfglpxx7N0pwCsR1L9fhE9k4NMTcLIC\n", - "zwdGRe3wL8H6edg3Z/p7rSfhpqch8SFsQjHCVP9FpApku6ZSsnPdGr3t+t3IQKCD2TtgBKiuLwv/\n", - "LYz416+80wZE5O9f9/BxrfXjH+Ln+0hwndjZ37yBb3ONN/KXPhjZgsLcdfyPVaj0jIvlByXHTXno\n", - "+2fphlnsUUxYbHJhpUn1tKY0gvUMEEDlc4osQ5xCl9xShQPjLP20wUZR8Czw8lAfQsMGP4bUEcS2\n", - "uZJxmZKYUZoyUNNcUFCiydNOwAwxI0DjskaWLAlbZNhimYgLuDSZYoBHEWGKiAl6QCBXsXCYIGJa\n", - "drG0zyhfpBUPsNbGbLs1UidH2xZsbVEadoimtnF0l0rOx0l9JB6R9UaUKpqJfoO+PWJpr5Uy24e5\n", - "JdicE5EyFL4CCzmf/v5pWlNzDFcT9OpV2NoTD7vWYvEyb7GDs2ZesPAOa3DuDDw1hnsOQByBnANZ\n", - "hT/WWrfe6QL1VtjzELFgScPgADzQe8Nt9+QmhIswfhT4/WuvMc7NTGF8VeoikrEoLwRM3w0lS1Px\n", - "23SLEZd8ze4uTNagdBG2y3D11ywWJj2qPU235DC2DIlQrIT+pCK0wSKLrSPyhCSe0PJyJDpmZpjw\n", - "4kSBdlhlkK/Qc2qM3G1COYToTfJqzAIhywywNOxamgsiVLBQQAFBoXCJiEh/HIy0GbImc2zpaXoy\n", - "RyoxKQ0S8YnTCjE5YuXSrIxRhWUuSp8RQ/ITLfRMiePNhMgKuVwU4s2Q5SehN4CdwTz4XUhWYSoD\n", - "4QGoH4Xac4b/93Wt9RDevgpr1kadgOm7jT5G62UIXvywApc98uSt4B0E2YXgnNZ606zvLG8EItew\n", - "vwGFBWhuwqkjMDEHpY4hq44VlGqQzsPuJBTaEN0Kxxw4qQ25N9iBnYNwqgivzBuX7SNNU1QrWOCV\n", - "YFZg9ZPQs2BxA6IpKI8gG8I5H9y9gzxJoalMQTCrIdUm7h9pKGuLoUoZJyldt0xNVQCNRcqQFl2q\n", - "QIeEBj5NFB0SMiyPFZO9lKwHL98OVg8SG2p9E4xEbWhe1Fr/BIdDa31VRH4bardDfg66z8Lw4gL8\n", - "9bshb8GkA/4afGUH4gOmh1UoQVCHXAHsEOaGMLUMOwMo+dAuicycMOTWdBdUVeRMA/7du13Db2Qw\n", - "8iTwXwL/FnOj/D+v+98R4KvAAqbN932t9bk3b0Br/fdv4Of7qHAEaGnNu5aNfwo8BvxvN3D7Hxm+\n", - "C6VbIV+Bfh0KL0Fag29+0O3l4dYSI7uANCyseERcTWDBon44prcOuf8gIk/CoYUBfm2X3Yds5h0Q\n", - "x6dAnhF9OklC3YJBYk70xgoUbEDHFFVMKBYX5BD9NIsaa2K3TESTVTZwSemTJWSClH30KBNzGmGL\n", - "GULKeOyyQIEcFjGKIm2WyfE6iiJTpHjSZQQMrCFjzyKtjcj451H5DEnBpZ/vMkoz2PExlMDp7JCx\n", - "XaAchQxUi4zVJRtrNvdBeR3Kgcn8K/8AZj4GM65Ql1nizi0cODWmXl1i+/IBqHwPvgz8i73duXkV\n", - "5A5DhvhxafcqTLTgqbdbg73g4WsvwQtnYX8K0RjO7XE3PihsiLNQtd8IRACs1CiE5o6IiLWnMXIX\n", - "rHwWZhwYKpGZNbAvJKxIj6KXZSlr4ziKxWhE0UtYzUFkwziEwX059jsRg8hnYhBjTViMMnlGWhFG\n", - "CTVtgZuhnEzh9yFJWuhMi8QTBrjUUp/1eBnLtRCrQqQWiTmP4hlEQpaxKDHARjMl5pL4qtLskjLA\n", - "Y0RMB8gh+AhdNLVUsS5lQjlAIDnQPonkCMhicYW+8kAP0NLHTifwIwerWEHGTeL8EM/xSRMHaRao\n", - "vLaJikyFaX0f7BQacPM2OFXMbfIJMwLyLO/BOM1U2Up/BU7eDceaxufm0hfgpdtE5F9orX8qoquI\n", - "LEDlf4DFm2EugXEEW+dF8v8WeB36f6YdaMbz0y5sfxWe+V/hTh8qEax6YA9hZQOGGehMw45jiL3V\n", - "HJT3kiJ/BIunYGseBjsmaCvsgPoYOAtwa2i0SfIedF04vQQ3KbALxt+qDVzcq8qUlKmeBgKbYqa/\n", - "+omR31dWQuClKMthXU3j4KPRxNgouqRcAVxstkgZU8XmcBqSZjRqFbJDUAuwWoW5i5CdhpXPmMmh\n", - "bl2k/By0v369Yu7eOfida4/zIo/cAYXbYP1VM2418zC0vweTUxCUIbNmyCbPPwnHJ2EiY6IrTsKT\n", - "E4Y5e8eX4esKE3I9B0d/BL/Iu/D+blgworV+UUQCEXkCU6p5TkT+d63139Va3w4gIn8TsN4qEPkZ\n", - "wv28w4X6Q8JTwDERylq/IYH+lxHn4Xd24K4MzA3g1R489+aI/v2gBDcfpfPCZS7fNGY20yF3WKGU\n", - "xeVsgt/VHPsinHUhcbpktM14wifGRsYxqfTxsXGDmLbWWD64FaEkmqtAS2LmRaiRZ1MK2DpGWZq+\n", - "bRNTxaLDiC534fEUJ+hRROMjlHBZp8wYYRqLBIsYjZAhYICDMCYliweAIp/u4EtIZ6pAcWOKud0m\n", - "u8E2nu1hyxTKm8fVFmOZwgZUcoEgzmKnDqsOZByX3O09LlTrzJxLaN4G97pQcWC563J6MsCer9Nr\n", - "TFLe3aFz6DZGj5+C/SIyqbVuaK23J0Se+S7cdwIaPkSXYfIlaAbw0jutw95o7drez1tCRDJ7z30v\n", - "VbBNqIdQetM1rFUAtQppCKQichBu/TJ8egMKe5yjM9Pw2H1gVRNmRz0GZYVKUspD2NczwlSbxwDb\n", - "olJW6NSjOxyxVbJR2QxiFUnSlJ30AEl3nYzXo6dKWJaHlWRBrxImwthaYCwJtjdmIvWZkIC6rpDK\n", - "UVL5IRk8JgnRCDFvtPSywJAYjUsdlxJj2pjWXBNIWKYgOXpUcIG+hMTkSCkgFFDsoPQYO1nEi1zs\n", - "cICXUyx2Ha4kI6KxR7EV0cu00XaPueeN6miifLhlGoq3QCO3R3bahtwP4BMt+EfvYV0WYN+d8KnL\n", - "prtay5ub7+ydsPsahuP2gWDaMDN/D44egYevGMPKkQuXlsD6JXj9HGyvwelpOL7XGogFXpqB+h9p\n", - "rbdE8v8P1D4PwdhUVbYXoeRC4MHaBFzcAbkMcutPzlYowB2BakISQXsOrCKsNCEpmsmZ2IJ8CgPP\n", - "FAB9TIvG0Yakugx09saAI4GzGqZT48YLsK5C2gS4UiEhj01EFyHARxEjXEWxnxLTKC6SRTHLkB4a\n", - "FUM/gtkBhB5sZOHkBuyvw8VpOPgyPHUPPN0C/oyflIgcrMIdRfiCZ85ne2xkZcWFdBbCDXBXTLSX\n", - "y8HVTZj1IYnh1BKcyRnyzdGxUQbOVIzVBnfA+lm4XUT+9J3W94byNd48zqu1/rtvevy7N/L9/4Lg\n", - "RpJXAdCasQg/Aj7BTzF18hcBe/3Fb7zrE9/r9iA4SLI14rz/Mo2/5pB3ynTVLBIpvIkrDD+5jVep\n", - "sObMMDqmcZNtav4Q144pBC65ep6IEWezsFO2KeYVRa3ppTG+MpmqTQaLCNsCx4KiNreXAuZ6PqKH\n", - "w1U0B4iJgRoRI1I8CkQ0sXEZEZKSYKEBjxifATExmgYJwpAF+pkpMgsBa0mDQabKIWyCJM9Q9em6\n", - "wsiOUGkOW9t43jpxdJJIK1I3otyfZ5izeeET2yxOe+gwJHKEvmuh8zbLgx1O7Z/C3oqwcgrIsPdh\n", - "9tCBf/8kXLkE9ynw2/D4wEywvNlI7H1hSuTXD8LRvd/P7cI33qlyYqzrvX8D9kk4M2ssAXo+tEaG\n", - "WNh60lRkZj4Gt3XeCEQAjuzAE4/A4GCRc4VJLMdB6zaXnSbTvZjyBqxuQb0oHAoq5GohmeMttnxN\n", - "XzloEpqyzBAXrYpY+gqJ7DDOWETeyNyYVBXiGbAttNWkbzVJUQh5EBdXazQBWkb4KKZJyGpDanSB\n", - "o2guEnGOiC1ismhcoIDCxccnJSAlwcbDQugyJCChjsUYS46RkYDU0SSBkNchth6inISGvcupxSEz\n", - "nZTCNlQ34Dt3wriSpXR/hkSfYriwSNr2IR6DHRmVrrdNGvd4RwuC+kVtkuhtmxeX57h4Yg5ICP1t\n", - "rN/MiAxGWj//wY4S+yhML8DBgQlEwFg1TWehWYGrR2HnD+B7vwbnl6GYwpaC7e9D9LyZSGUbun34\n", - "xHnTzrl4AU4fNlWS+tdh+Bhkb4XGAWjMwOLeMTi0YVtBqwHDPtQ+BZVpM6GuR9DOAyPoZ4zo2Y4N\n", - "pRj6tvEPrGgz4VLBVEQOa9gQw+sghi0POkpzqNvicr5Chz4pAQFLQI6EESAkxAwYU2CMJkbSGFeD\n", - "N4a4CEsvwvYUeC4c3TLzIb5jjPbu2IQLD+11In7MLcmJfPxW+OUqLNXh1jrkLpsPrnvgrxv2rtMH\n", - "6+tQycJuAcp9yAFnjsPzlnHqda0957/oOo6fbbRoBBOdvf3qfrCD4ud4H7gf+Ocfwftc4438pQ5G\n", - "3g0ikofSw8byAKD7HHSfeKuboYiI4Ay/SvGvjrGXNEl+ho4+Rj7UKDK4jRKxD+37DxF/XdO5RVNU\n", - "GUZRjQ27R9HN4rh92gls/8DlyIpHf0nYZ48oFmyqqcZWCSF9asQM8Uiw2JUGFj0ihuRQbFMBhmTY\n", - "ZIAP2CS4XGVEnwYRM/QpIkAfF80mMKaIjas7KK1Z14fpMoUkDtodou0sEZuspw7aOkCo84TKQbND\n", - "qtqAx4gctnKZ7IU0UWyOfZrhPsgEeJkSqdRoZyJyCrxUM8jEKCKCfI6w1gGvbjx7fkxY3buIvbz3\n", - "86HhU7Dv6F7V5Bys/AD+toj89h4/4fo1zWCu6P296ut/B4P/EeZmIN+AwRXYeBX6e8qwziSU3lRp\n", - "Wa1ANV9iwznATOowHwtWXKLnZLhQWCW/AZVNn3N4nK+OmViOqNgFDgaaZ61FOqpMgEVsp6Rln0jl\n", - "cfU62XQfYlVAlujgg6yi7DmcZBqlnqcnARNpA6XaBNJCE9ImpkJKB8iLoLRmKC45HDJUccgxZJ02\n", - "XebxyTJmpPqElPBoU2caB41HQsgIHxeHPOgeIxGs1MNXAYkecWlmiaHcQmbjLPWZbcaLPQqf0Zy5\n", - "HSSCz/6h4nv358n2xrQmt9nqVUjWM0aRy+Nt2jQiYpXgr+yDO13SqVUaxwf86MAUa85JSusWKg0Z\n", - "FJZg9zR8UUSufLAWnTdhqizXT38AeBFIFsTSWrdF5J/CzgKmxFQHulD8LMzeZ2hDaxPwh4/CymVI\n", - "NGxsQO2faD16fu/7nIUXt6G+DCu3GiHRTWD7ZeisGepT+BzsPAqXi5CbBhWC3YNhAuuYMeCBMgFM\n", - "RUPWgoGGIDXCaK6GldhwhIc1GMyYKp8egpUbETEg5RhCEU0IeAh5FDVgQEhAThvV6SgxxNhQwcYk\n", - "1DWUh+b+H7jGiTmdg5k1sH1MoHDN9K98ED5fgE8lJqpTu6YyVnahUYTWszDvA/fAiyHo12DfizAd\n", - "w3dvN74KKYAH4RCiDtiTeyO/AE3ItMzjdzTb+3kwcgMhQgEjOvFR+DY8xjuMTf0swJAQZ34D7qnC\n", - "iW2TtJ++H548URA5V4JjKQwb8FQIL0HuY5qbDzVxsj72pKKlMjRVB1QJ6cYkJRuiWWIX8GcYNQSR\n", - "PjqXo+6cwfH6eH4HvQbRUxade12KXkA9oylLSrjXn47oUaFGj0MM2KFAzBKaDHkcAobEtBkBNVwy\n", - "JBTR7KfLCE0Tj3N0KBOTY0wXTZ0BIZoe2xIxYpItNUEuHGG5PRylABcHRYtpfCCyCjhJjwQHnz4W\n", - "dfObilH5gFwohNUSUsqg8xZtVWJ/DHGww24mYCJosmXP0AuHDMse4YXHYH4b/vCaqq2I+BiVpsH7\n", - "1Sl5NxznDQPJY7DTgKUanGBPDmBPK+aTsP9hqCroKpHyGZgswb4L4O1Cw4OdPjT//RvchP5F2LwD\n", - "KiOoZ6FehKv7wGcOte6ytS9hnBeyCSRJhX5SZ2d2gtGXDpJccmjvdkj21Rl6PfxRhEQD+l6VhAJI\n", - "F1t5eIQkaoqOFJlKHSLJI+Sw01kUTex0HqFMYq0zsHcROmTI4gA1QkI0CbCBJtQwKy5dUurYZPFw\n", - "2U+D8+wQkUWYokWEyxrrhHRQuMRsoxgS61l8mvQEknQaiFHSYVstEKgZshtruI5mMZ0iHyeo3AB7\n", - "QTFIHF753JB8u80gV6FSH9ObmKVzZQzsmCGEt+S9KThxEu7+FFzuwnaL2qxHNDlDOqlgAxKV0vYW\n", - "iC4lkFk1FbAPYK432IBxG9YrhltzjR7S9WCjAb2xiBzCTIGtX3uVSP5huO1BONCCzUVYseDSArx+\n", - "CDJt6F+GyBERF7J/G1a+DJOekXw/lUDuNExdgf1j2Pg8rLxqpuriEM64cCIxx2RYgKEGdwid1Bgz\n", - "nggh75qpu+kUagJXUuOKQGgqMtYkVB2j2rw9DZPWkAYhHfpERGgiBLBYxOIFPEbkMdWhVy1wY6gc\n", - "APrw5EmwXoWugrUZ8x3yIeSPwtlboPvidedzxoUvhvDXIqjuM30e1TGzylKCyiqoKqRlaDowCMFb\n", - "gScEdn4I3/kRPDKEuVnoNCH/mpEMttagPAvdHcg/D+Ud+Nd7k3tvu7o/D0ZuLO4BXtImsL3ReAmY\n", - "FmFBazY+gvf7c4A6Biem4c6rb/zteN3j0peW2L1rDhoKxj3Ydxr2d5k8BkdDRaNoU9lSDGcUWS8h\n", - "SIY4ToYwP2QQ+ow7GvJl6HWIymO85AoFv08JwU8Vw4U8+m8UqZPDi7Y5k3WYFJsKMWOGdAk5QkCH\n", - "i/ToMYmQwSOz177pE1HFYagLaBmRUiCnQxIJGKczFBKfntPGw6VK4cfZcIcuc6mgFfhJgOfCvNK4\n", - "pAyIKBFxQXkM0x5K24RWQAmHMj5jYJ4RPbZpqBy27ZIqi/JEwDhToBO3uJwpsBhU6AVb7LoBV1WL\n", - "ZsslTi/BwTr8UQgvvSEat+8RmLJMIFB9DRp//ObKxYeFKQgKMP/GX7y74ZZH4eNXwU8MGfB7v2SU\n", - "Mr/wbX4slHd6Br77JX5Muu08Cc/d4XDhgRk61Um06tJe2sbyFSKK2VATBSmdjGbg2nScKdLyncio\n", - "BIdaJElKW9sMkhH9bEAxXMez8wytCG25KFqMdIhKFxESxjjoOMC2NJZy0cmYVA/JJl0iZ4OczqFl\n", - "hSp9AoRlXHK0SUnQmGz6KiFTZKkyQjNilzKKMoodUiwuk1BmFXAoIijGTKKYwWHIDuuhj8sKw+EZ\n", - "LHeMHjkMveNYY0HFdfwFoew6uFGRKE3IamHfEJ5fzlFQp2hPLdLFx+Zp1GCb9Oo6fAemf1VkaQ7G\n", - "G1B/Qmu9CjANdx/bIzFOwPhOtp/5Ef1ftvG8AXrBod+bpntqChrbsKCua/u9T1yErVMgVXhqCpbG\n", - "0CvAqRw0evDQp02CcjUUsf5A6+ScOXYXH4KShtWPmwms7SNwrAqDCE5ehv40PPu/wNpjcPDLcJsL\n", - "VtnwSJrAxWPgXYKZOrQ/AxeOw4Rt+Ju2BZsKrmpj1mkFkOmYSs0gZ2wGaokpCsSW8bKxBbZSo7y6\n", - "oMEpmsDqfKzAdZiVEUMCOgiGsFrCRhCGJLiMGLMCbAnkemaEOGhCqQn7ijBagfMjCGbg5hbMnTPn\n", - "SUdgIiMii8DONPzGMtzrG0vfcAjuGjhzkK4Zx754T6XNTaBwEUpleOmA0cKfLoB9Ef5JA+7JwkoA\n", - "rzXNoIrzTfi4C4sR1GrwR2+nQXQ9fh6M3Fg8CPzgo3gjrUlEeBx4hOtGGn+2UF6B+Z8ouSuuHsnh\n", - "LWZw8/sIsz2whhBVIN8lM4QoJxQSF783Yio/pGFlCVTMyBrQzboEF7bRYQWidTKLQik5TVzsUMmE\n", - "zCQOlaFHlIb4s0XO79TZXvYpKdPr7TBFTIYCp3mFhJg+VWAZizIhARFdLYSUsaWITY5YT6O1SyQ9\n", - "XC1mvE9NkUUokKWKpsiYXXLUGLKrFIvpgKYKsdUbVuEuIQFDCoxIyOCkTUaWIktEaihtuARMskOf\n", - "Bfq4lLtd2pld/PQofqfJqt+lZgmWlWOYTjC6+Ovo37aACNSfwm3Pw4bGGcFNn4dPXjV99hR44Tg8\n", - "qYD/+0asdAv8wU9k4tVPwN3bJhAB05efy5rBnmbGVD4Ajtbg5f0iUtJad7TWu5bID49i3zlnOg3W\n", - "EuPTeTJ3N8iWi0x1bbxmSuzHrE+O6FgJKtomm3QJfZfQA8edJY1iQhUxznaIaZCKxtWKFJ8cN6F0\n", - "i45ShHpMRQb0xMLRHQIJ0HSI7E1KpKzIPNvYTDIiwKWEh0fEmC6RhkQETRHIkENhkWDTokdMgM3k\n", - "3pTNZSaxEMp0KTBiCpuBdlgeDwhUkWY9T7QOUdKl+zvT8Is+8W1D9ExC1fLJBimpK6AUBBovTVET\n", - "HrbqcSD7Gl43w2uZhIliQCsPU4/CfbvGFK62CM/9FyLW72qdnBNwr7ePPw47Y/rf2qb/hUl4fdmY\n", - "BY1S4BI4w/epLXMNWutYRH4Pxquw9Rl4eQaCy5DLwq+8CuW9algzA9/4NRH5LaAPVg4aJ+Fw1uj1\n", - "+XNwMIZtD3aqcMdFM9rb/jsw7UDXgZEHOQsOJKCroG+FM4dgMAlHxpBzDEViWsMhDc8JHBwaLZHv\n", - "zIMXGw2RjmXGbI8lIMrwRhIFT3kwKYZTtqQho102XZebRUgRCnSBDBofB4XgAC0UBYRdHIzD8CiG\n", - "ox2461VwI3NubszB1RKkz8DVAC7nwWvAwXNG/6h+k6JbOQHztrEl1gFYTbAdw9LVWWNiRAgIbFpg\n", - "rcAT1T2J9y7YI2hrrevAn7zFcl15v+v782DkxuJh4B9+hO93jTfyMxqMDFtmdO4NeNRvrTCWw8SN\n", - "ZegCVCHbhgPQWYVBKaGQpCSOx/TuFjt2SitbReKUUX8LGV/G3qihF2cplALGOYc0ux9JQ9ppjdbE\n", - "iEMDiwPuJer7C8xYM/gaRCI8etToM8aiQJ8xDkXYK69buIzxxcFiRJ8hETVyUkFJkYQRCSmx0ojk\n", - "UGgsQDOgRwsLzQEsPBIyohHp0CLHiBSHgIQaMQNm9TZbMktMHqGIT48AIUsGTR+HAQXGjGKbbGgT\n", - "BPvxIps0nSIfHaE+PA0TFWNUcSUx4kb6PM7NWfzDebKHezgueB14ch7SDGRqcPAizBy/Nmnz067s\n", - "JZg8sKfqehkqr5lxh9fgmm7FviJUrquIpXv30XwKfe+NYESx5zjqXHvmDBy7k/i5EfHNOUO6K/Vw\n", - "vDrK2aLmT1K0NGGuQTdtU3QyzLgBrrVDaCe05BA9XcQFhjpPX8ZETJHIPpwUFCGxSsnIRYQcnmTx\n", - "aNLVQ0JrG2UliLUGaYP9aYVVlSNmTA9FHrUnhOej6KJwcYhwETK4FFAoIiw6OHtHUMaENGgcyiSU\n", - "ydLF5jwDVoi44iXYaUwcnYb+EP4ZyKtNso+eJdx3gHyoGSmNqJBYArzUxR8PWS0KytZYGRtXByT+\n", - "gCO7UBDYPQzOGWNsDXCgAdkxtD8vIud9ePkSfGH2OlfXQ7D9LFxVMMqZHlrmLJQumRHh69bx/WGv\n", - "EvdN4Jum6pF/BO596I1ABMyxcExg/bjWox+JVIYwswDrk0ZDMSemOFN1YGM/hOuQi8GdhEJkEvqu\n", - "ZYZBGgI5Bb0S5BagWYA4BxOR6Vxoy/A1ysDTM4YfksO0cKy+IZUeSKE4NHI8oQ1Vz1RwDmLGiFsC\n", - "dZ1nLEMG5EjJUCdGs44wS4yDzQioo3CwCAiA/sBwi5caRqL+2vG/sAWZGcMDKl8Fz1ZkSMk4hrNi\n", - "ewV4wILbIzNOF27CRBV0ybBxaZnIiSkYvwRT+2F1/14gsg6lMxDEcPaDruNb4efByA2CCC6mTfMB\n", - "eqMfGI8B/70IovXPoufP6BS8/BVwZqDQh1LNYjCRYTtaIv0xOWraUN+PlqhHmtcX+xye6VFyPfQ4\n", - "xWGHylaNnarGt4XZWYdJf5edlSZFOUzNqpLRwqT4JK5PqK+ylg04SELeUXhaUBSxdUAiNUpoMtKG\n", - "SwAAIABJREFUmqREaFZIKAGX6LNJhgXGKCCgT40Rlgg2FjC1l/MOiCXGZpOYDCAMqJMScYgURYRG\n", - "YYnDLD3GXCGiQA8Ln0kmKDCUDVIdk+gSwjpDYjxciliEe14WDR1wshHzsdeEs1PC07fYpL0xycw5\n", - "3GkojiIiHAonnma3NEl8qsPcvgz5hgMCaRX8g0bMaWoTdpbh1UXwzmPSv586GPlTaJaNmaS0YL0G\n", - "X71mjmh6zXObsF4yUzNg+uRJE+pzcPI68nItD40O15l0WVDows37zSxmYwD+NjIo42ZPU2nUSRON\n", - "thTiT3EAD5GU1J4ko7pk2WRVIPV2sbVHUSIcrhIQ0JeD+NohpkNHDXH1NqLKtHRKhS4WYyZI8SRi\n", - "zZ5nnQJClgSPLruEaKoIiogYi0ggROPSp0RMl5QWYyxCSmgExWWqhP8/e3caY0t63of991ad/Zze\n", - "l7tvs3JmuIyGQ4qiRJqmaNqOZdmxkQSJAyNCYhsxDCUfEiTwh0RBPgRBYlgO4h3whsRW4gRW7DiS\n", - "aS2kFlIkh8sMh5w7c/e9b+999qWq3nyoc8Wr0XCROAtl6AEafft0n6q6XdVVz/t//ouqdSNTXHcC\n", - "mzJXXdFVjS2N/LZ4L+PPlb+BJ/5iZnn6DZdn94wXZ7LqyNV6tBqbjo0Tk8Wm64H7aaHdyVQKfuAm\n", - "jdD00nM1h9OMzsDJezw+JzMf77N4hrud8Tw+PuPcOY7G1F6hfcBP32P/Cs9G8m3+OS7OZd7fc5Vq\n", - "qfUFWm+Q1N3KqM2N+A52ufdUSX5tRO42SknwMyMqHa69j2/UWU3Kj0qVlYTNwNcTDlPiu2gXZBW6\n", - "kfv10o11W0mKHeMCmqE0H28lfGm5DMBrVThsMwhlGvCxOJcKh2A9lg3Jl0PVWHBRzZIzBno6pUez\n", - "XKEiqmqquaRAb8KHv8IX30e/W+KlUdls3Wovu7V8XHy64eAH+mI6sraXOba/71ZasZ/X+VMt1tYY\n", - "fp3iaaaNchyTB/Id0ozRLo9ss7dLvMkTCaP7HNzlH36vCrrX1+83I29dPYfLMXpTiX7foV5TXpWP\n", - "+zYyvN+LVa6OVz5Bq8rVR1io001z18JZ3e3GQzDxDicy2j8m/7XPuPuJscmpaKEyLZcwo57hiURn\n", - "0vahvUQUbS8lkk5bvZqqGxqEch67GBvaYUk3HTnMghiTUoKbdCQyRUw0w1iUe1RiXWJVYVXmK3q+\n", - "oGnmuD3nsK9pqu/Ioq8bW5GpmbplYmzJI2oGxkaOq9k0NZsjI32FJbkVy7pOSGXGxqbqqta18sw4\n", - "FCrFgWpStSpRUZPHUkY4GtTIMvdPRtX+jvf/X1233ldx8/Syc7f6OpOqUf209cORyqn7tlrLli/e\n", - "N1jq2bhL/z08NSRbKg0Zzx9hiU+d9bpkzt9tbcX4t+fSy/DG5NjtT/G5nyjFaaePSij++iG3Mi5v\n", - "lOODgxYvVtn6Rw9LF4/YHpc5K7f2WdznTDRoDdQrDbXm0PplLm+sSCupJNTlsUc4RFXVgVrct2/m\n", - "dBKtyWUCcdsgDtwKpySidixZH43irnqSOaFcJY8CRag7oeG6dRuGdi3rW9O1I4jW9NTV9EV3JTYU\n", - "Cl23NdUkEtGGuuNSd7RkclOJkQtyLW2ZVBTCLYdxZGWwKD2xbzZi8c9S+xDJsZkTC9s6aaKRc5Rw\n", - "FKO79WWhWDLsHTMYH0rrmceGM+P6cderm6qxolJPjdItn/2RG6afi57ZKh/E4wLTeWbQ3/sVnlkr\n", - "mZnDvdJb6kH20UtvxjXy+pqH4l3m9gfKW97DdbtO93oI4Rwn/1LZKGxiWC3Jr/uBFxOyjO4KaYfj\n", - "Wdlk5JFmQhLKhIT7Rfkc3qmUlvJpUjYgmRIM+kZ5lekohSoV5CmtUN6OFyP1pOSt3KmUVIyKiiKk\n", - "+iFXk2kpHFi2L3HPWE2NOQ4atUwdKVwX7GtE4jaVHTYu8XKNyslUdTnRa3V8buNxo8OOvJ6otk9r\n", - "H92yvXxfb7Lu1sk6Ty6X/JB0kUGFeI3ZKeTlYuCwS+8Yqx3CY2R9lr7B4f2Si3XxrQhG/P1m5K2r\n", - "j/oeDH5+NxWjGMJvjmr+jWpGSvLqU8/xia9SvMjtZWZpdPP9EwaXyj8cOeEmx2u8Ug49VqpPye53\n", - "HNhTWRzLu0ca50ZOazg/gMxGLfqNauFWvW6cnJDExFEYGCZbKgrNrHBHSuypJX1ThUyVMNY1siBY\n", - "w0iQzYctx9Td9C4zZ4z1NPTkms5raYjaBqI9WzJ3TVRc0hdMZIKpsVyQGKpqChKFAwvGJhr2FYYO\n", - "1azEtiTfVdTWHNOU27etL2JkIstqGnf4SjWxt1h4/NdpDCYOT04cvz3ww99gfVTx0vHbrh5b1c5m\n", - "qpsT/XsXJUszjSUWGuy0SzfNpRoKsjrFXoyx963P2e+sHrKdf4Pv5ZdDSP8+e5+kfrZUEO79IyZX\n", - "+IXn6Zxl9CqHL7w+k6bHV67xZxY5Fji5QrZndlTTjw03V6a8t1Cv1GU6akVNlrRlcUcRtgVjwrK2\n", - "TQ1dibE1I9Gyjol9C3ZjZjqH2Ssh+qDgSVE1lNLNL6sZ65vquS9VcV9fzUR0YNeaXEdNZkXXlqGq\n", - "e85JLVhXONR1YFtb6owjh1bmNOkaciMjhanMmpEDtdFYp8b4vw/qf5rjMYqd0rr8QkzsSiwWmaHc\n", - "nZC4OmqZjI6064eag7rVybLLy6esHaWyIhpW2uLoCc3ukZfffeDJLb58isPfeKBamn/+8vzjLa0Q\n", - "wnHWP86Zp8jHfLVG7TxP3S/Hdxc3eO0KLrPyv/Jcmyf2CJ0yA+bavKG4VOdUSnNE6LNaKc1FbzbL\n", - "tU0pyC8FZJ3A7cjjBbWE66FsbnIlPeK0cjwzUSIUaSgTEpqhNDgbKsdDq7gW6IjIHSpB7K9ZFj2B\n", - "RGHZ2C0l3jKVGAq2cGRplFk85Pz/zlPXOXwPLz7a9OKppmrM9bJT9pw0bS+S1ez1tx0trpL1ZI+e\n", - "L31C4vGyk8xf4fSIQZP8LlmHgxNcjLz/dOncNtjgdpUs4Ykh7+vG+I234rz+fjPy1tVH8Q/egf3+\n", - "In7cWxTM987V+g/wxFEJbyaR8wcw9t5rL/lM5T3cm5RD2uoVmj/Crw2pJ2Zr57THLZVsSSyumeXR\n", - "6QmxPnO0Fg07iXFa0ay1XE/P6sRFzTgzji1FSA19WU/Ncr+hs9A1SjJFUThKyPT18YzEIhKJ37Bm\n", - "bMHM0KFlmQoyExNLNi0qTEQVQVOq6kBX05NGamauYqZtpq5mgEKh6simREvdnrqBk6KqsVD03asP\n", - "LMf7+pbVnHDMWHTXTsxUxuecujjw6urM1z41ce8W4zbdV/jEKTZGJDHz7L0rVoZbXryQyOtjq8OZ\n", - "RxssDLi5Vn6+u8b+k7QuU7yCK2/nFRBjfhmXH9i8P/StT32r95RoS3VxX777ouLEGnoli/HmmkHt\n", - "X+s/0ZZXZ7ZWGob51CBUdeJENFSVqWhaioW1cEchEdW0IewoQrQah/o2TMKmatjRVMwbwURfYqBl\n", - "XdW2czKJvtocR9sT9aRSi+55UtS356pUw3FdyxaEuRV4XSbqO3JMX8OCmVRXoSEX9BXqquWa3O5a\n", - "Rzp9t9q/M1Kv7NuNPZsxs4zdNLMQK/qxqR+DNAbV0WmT1wYqGy2t9j0XV+uOWkSJwV5N7/ai2dWh\n", - "bLMpdA7808fZ+SqHb3sWVhnAduHP80M5j96mX+NLS3x+Uo5URPb/P8YvYJON0xyflP580xQpp2OJ\n", - "jCQFa1c5d5W997PVprlYoh67ygZiG4uBVwNFUQq81rIyAO+BGr2uREaWlM1IXdn07CnV6cfMk3nn\n", - "2ztSIjlrcjMVv+G4Xc8p255dJcbyXqWufRk9LQOVYqoyqdkbj6weZ/8+V+OSrWzRXjpTTaZymyaz\n", - "J7l3yKlj9NZl01c43aT+FJN9woTqSaZNRp9ncsDkJAc14j7HU5pd+qulhrkfcI7xy6Uo45+8Fef2\n", - "95uRt6BCkCpTdP/jd2D3v4i/OndPetOhtHeuAsRSHpfmDzQltMfb/NyvlUyx0wN2q7xYlCvgQTCs\n", - "NSz2Y8nmEiUToopppbBz7Jgkr0pDrkg25fqyUDFLa9JYGIsKuVpaVW1PVaWuOGkWVsvVj662266Z\n", - "OS9125m5eVnFSE20KDURnBJcUjGRqwpmc+vvgUJuWdW6qaFUVcO6iZtyi3OCY0/NPSetuW5H1XEL\n", - "KoaqoiLkTqo4sm2pOFCkiYmpdux6XFUvO9A9PXFiMrH18qbtE+c53aDxeZc2MqdC7vSlkgB35mjg\n", - "Uo/JP2TwR1PXl2r2n4qypcz1kFm/VlqPnPgsL6yz+7YoxV5fr2tEflvNE0OPYYXzn+CZZM/uQc3X\n", - "fuA9xuPzijtD6lcoWpavVqSnhvK1ZQ19N8KRNQONUNrP9WxaKnqSpO94SGxpmmppyVTiWCOMLBjI\n", - "3NSIQSfUDM3sqqprSyQaMn2n5kTVLVEFuyrGFqRSDVeMJHjKum3rcmSiBYVDi2bGEtvuWlC3M0dD\n", - "Ts1twpva6mpumyULxrVVORZHazrDpu7Cq3qV0gujHRI3berG4xbzaJJMhfZt1k4Y3D5y9L6gmo1N\n", - "ZsFwSF6smXzt3bIX7ttbfpkz7P61h308vsU5eJT156l2OHiF8VffHBn40g/x/sATc+7K0oSPXWbv\n", - "LF//xzHG31RghRBaLN6j/zjHMmr3ywYjdjhIcIWzN0rEL01J5w1Goyibif3AoChBgXNKa/ndyG7F\n", - "3A23REFmypHNnnJM01GapE2VwX3t+c8FD7AO7sjtYN8Zr2nPL9iOcst3fTN58r7CvoEa8RHjYsFC\n", - "se/ij17x4kc6jl5raT/R0G5nivaBfn0X92hG8kkpP1vMSOvkoxIemkTCDu0luqEMxrn2QtnZXRnx\n", - "rpPs/0FeXJ43Iub/g/jbg9XftPr9ZuStqXfj/lscjveGFaM7IdjBs94GyPTtqHI2nE556ZMMRiQD\n", - "ll4pvXSuwMVxqej4/PznX/08f+GDNGtGW9sOTjQsToP6nQWjStdOyHSyJcM00az0ddPEraQqSE3t\n", - "qsZUkeTaJjrIw1Clkbgaz2pYE2JNPeQqFjQFO674VS0sWJKYSEyk6g4VVkwtqlsxsGWigcSRgQN9\n", - "XYtGgq8o1C2qiw5UrGjaVjERTKwLjmQOzQRbotn8NriSBEsSC4F2OpJqipoqIbcXonHrUH4hc/xn\n", - "Gzz+gyy9f65mGLjdfsWv/aGRR9vR4j2u1bj8OfKfrrn2Y22bZ9sezWrq+zOz2p7+yaEX23z5NXZ/\n", - "juztMPP7rqvkFS39GE9/gJOR7Q9T63HuM7kP3L5vVr3m0g+N9Ncr4tZUc2lq+OTAbKmmbl01X1XE\n", - "HTth26jStiBIZWbJgtXi0FFa/nZH8ySZe8oQtCVDi6p6YWpP1argvjgnHUY9GwaGCuQK0ackZlYE\n", - "G9iU2pHoizZkuoKJ1CFyQWosmJko7IpCaYdnUapiUaFQuG/gQPS4epEbp1uS9shROlGTOpnMbOKY\n", - "tpshmiZkoW0yWtAqegaLl9RrA0tp32qaWc8O3F9eMmj1xDM7XL1YJsf9y+/ciLQ+zoU/09ZqZprD\n", - "iQvv4doHQwh/93snPXYe49Tr8rcSpV/H19f9VmO2XQ73GF4qreI3xiXP4mqNnQlnvsArz3DsqLxO\n", - "zi4ilhyQqTJpd3P+8L2h5IecSHgqlA3GlvL+kysxjW8wz9UtJbZrSjfW48o2Yzw/vJlVV1SkMlNN\n", - "ifH83VEpA0vn/95VRpgvyYun6a4Ydo+MqgvCTldybtux56ZO15tCI1NUc5Nw143Q0K8ulEfYqJTp\n", - "ucWU6hGjDkWj3HZ6l409QoN7p3jhJpd2+Qdr/NRIqRFS/jaSiyzt8cvf2/n71vX7zchbUx/Fr76D\n", - "+3/AG/k3ohmh9SGe+GAwHNV97VSmlmaKZ+i+zM5ff720NMa4FUL4W4d8JJEtTu199LTBbEFlVjca\n", - "jxzOhk6kqVDpykLqMHnccBYklQ1ZGOqFbSvqVvX11LWLulZyqBU6siKRmppqObJgQUNi7MBERTIf\n", - "ytS0VC0Y2nPfTE8u6jl0INOUqliw54KBhqpgaM/Aoba6ZVOXZAYqplr6Kjp2TCw4L0g07OsYmblr\n", - "V9+eXGrdipa6VJSp2VLVSO6YNDI3rXA6pfcip0+x/8flX3zElZufcuPDRxq/Tv/TSvXXWkdotT2+\n", - "07TRQ5kpq7lw214rd/Ufxxjf0rwlyib0u1FehBBWcZLKU7z7eT5+lcOl0pOmEXnpA3z80zMffumG\n", - "o/UgO71ieVS33M3txr779bp68nU951SKqiJ5WiwqqiGoFMEk7LoblsXYNwsTfUEjNoxVnMfQcbnE\n", - "kvu29dy2anku+I6C2x4ztIod0V1RS8OGiolDu0Z6jiGTCHrW3XfVewWM9I1NcCjTct7MmoE7EgM7\n", - "TtiVK3TVlEyEQ73kyAmFs6EQjBSxdC6JRXAz6SgES7perTQlWS4epIrptvb62LvuRM0FlkbXXeos\n", - "e21thx9+iZMHklfHJr8UQki+FYExhHCsY+m/eFQMK7JR5rB9W37ypuPtwtEH8Onv7aqY7rJ9gX6V\n", - "vMrCAasHpcOp34K8xBiPQlj6lVLCm43YfhfDBle/yr2/RW9IzDn/LJtL3KmXzqXtWDYia0o+SGoe\n", - "XjgnpB6hmGfNVJVNxnVl9MqDrOO2b5JZryuRk1RQWJU4qy5xBld0TX4zAOqcsgnp4xVlm7WgZJo0\n", - "tRol2WWavWhxfWQlnTkVouU06qXrurGpYddmGJQJ4vEeSaaoIauWbN0kIz2gXicMyJ/map37B1TP\n", - "sfLLnNnll3+DjxxjrUG8Q+smL+Vv7CnyptTvNyNvTX0E/+Id3P8v4s/jf3oHj+FNqRBClVN/ZNHk\n", - "7FnDWuGwuWCyGuTVHXl7X/xGCOHLr19xxRjvhxA+u0FnKjauGZ0tyI5srrG5TfdE5lijInXc4mTg\n", - "KG3amr1mXG+KcWDmtu14pB5qOkmug3Uzl5NVE0HDxjziYaTQsaSqMNXVUpUj0dRQc1fbvtSBTFVf\n", - "sI6B42raOnJ95Dakxo5M0XRgVUVFtCu1b2jJWaUh2X01LamqmtKhsWpH5lDLqkxhYCzR1ifNzZrc\n", - "e7Ze5pb3qhQvERZ5+XmuvCJ74Uj/bz5o6kIIKzXVfkXejqa1oDalSEv7rfZh/rqb/pt8vkON59b5\n", - "g2dZPhHCrS3+dYzxtxllhTKo6Eef5GNniS9pf6inMR463Ke/GAyPJdqzXIJrmzy6veNDX+j5l48t\n", - "asSJ3nrXsXFFu8gspDsyB66kp43ieWkxME7bFo9Sabpo2r5nV9CvNKypSAw1QkVmRW5x7o7ZNrVg\n", - "z749FYnEyNMmHlE1EG2Jqkp2QWEgkdrEgX1RQzFfSQ/mg5sVhZGxXR2Ftp4chVRdxTFVK2amciuG\n", - "7hnblmmFluNmqnNp+HLItWNwlESjgjRrSiJpUjdsdQxaXaYVrSI1Xs88uUW9mJo1tq2MuT1h7Q5P\n", - "fYZf/xhfPjRHIV9fNT75mNrCOcvXH7y2KE/H9s9sWXje99yM7NzlpT/PB/u0cw4TLh5y4wt+04X3\n", - "4er+Ai8/x7H3lfZDswqanPtY6Vm0scb4iK83aaTldGMZ5yP3lHyRFSX6sakcxVxHJ7IUeDLyUiiR\n", - "j0U8pRyyvKgc3ywqFetT5Oq+ZllVooaJsYlN5Tw9KHGTknFUfj1ThrpsSMJYXjsS0tuqaccpuSxJ\n", - "NcOGVGpJbhpaxpY0JNLQEIuzVA5UZ7tC/l71m3uGJ67LFxZKo7PkFIcXiBNO3Cs94y+u8Mw1/lrO\n", - "xR0+GqmMeeGwRMXeVDnvw/WWNiMhhL+K9+PLDyf4luFW/qhSN/XfxRjftJTWd7pCEJTIyH/5Dh7G\n", - "p/EPQlB7m6zo39QqV7oLz7NwgcVhavbUk6at3KRz2qx9SjJNpKM7xgtd8d/6UrmA+KnXbWPjEf7c\n", - "DzO9wNdGXPw/tT6565n79LOaU+tNxbhmXK0pQrAeuyZp0052WVqJahY0Q1ti6tCqhih1pHBeEE1F\n", - "DZmuPVQ09KTu4rj2PLZs36GZqQtuu2vFSMVJdcdMXNZUV1gSJbiratGCzC23PG1q3UzfoqpNO7p6\n", - "ZmYyS84aaeqbCIZWbTuncGCq477LFvRdMNPW0hY0cel90aXu2LSfMTvL0U1WvkSxXw7KH5bodpns\n", - "JSZZotcpxE4o42S3CqMBb51cvcMfeDd/+Hnur3PzKmuf4y+3Q/jsjJdmvPLQDfFdT/GJT3K9SnFN\n", - "9b3LarObLv6hupBFsZ3qTKdCK3ftR0Y2/xU7a2PrXx37dz/DZz7Bs73cxVM1K7FhscgtZnVfrE6J\n", - "Fbt5YlpkOmlF0Qv2q+dM6i1HlaGaYDV2tELpDxP1dGVyE6clOpjo2XXTRCHXUz5Y3oeWVCLRk7th\n", - "aBEHqkrY/8iSuqjiokOZ0yrWRBW5A7mxpmNzgfctE6cEq/O8565UQ1tNxUw0MpaLlkPdTEeYTQ0q\n", - "iWlcdpRsiHFBOtoltiT1pqEdd5ejzoRhp1SXLG+zUBArPH+P6x8LIXzhjVCrJZ5YkfyWZrUqzTfF\n", - "dMuk/b1cG2VI4rkf5tTnee0JlkrzWLdX2H7hjdGa6rM83+aj/5TL76dzuny2/uIP0lghbNCs8miV\n", - "1UAvlD3NFaVt+9NKVCSJpQFayfZhObIe2Q5lo/HM/PUrSozjgtIT7GvK5mYDh4KxsURuX91YMHUk\n", - "ehRPKFueoXK4U0VXsCjYUgiy0BCrQ4uhoWpspm6sqSUXjNX15tGLdcJdRboqxLrmkCK9pNKoafcO\n", - "dWstilP0n2C3WfY+OuUqbTMpD2N0EOPPhhD+hVJun30v5+67qbesGQkhPId2jPGjIYS/EUJ4Psb4\n", - "wvzbfyXG+D+GENr4V97EyPjvg3oSkxjfqEt/eypG+yF4DR/yNsuLv9cqZXvn/xw/kHKsy+7JxOef\n", - "K0yvBoPNk2JoqkyJFpidYPcGPxpC+NsxxnsPtrPEh57Do3NDriazVDtdVl3YkxRTa92Bfn2o3wyK\n", - "tEa+q1GZSZzVsWRJpQyjcqTrjrtaEkNctOCkmUxiB9FMak/0tKFV11Sldsy0jG1JVaypqom66nJ1\n", - "NFX15MZzYlihYiiRWNTQ0HRgLDo1f/9UX0/iOTUzVTU1LV0TI4c20VXTc0pVx7Ig2MN2yDUFx5Ou\n", - "7tKuW0ub5Nc4gf6XaN7lJx5+sMQYt5ZD+DWu/6llT99t64ymstqWrZMzO7/ke3DQ/A7nvnmBj/0B\n", - "bjVLb4PWmOeeY2WBzXUuvMIfCiH8vRjj/WN88BkOqvPU0HWDrR39Ex3x9Jr2lULl1R33Hk3sxCUL\n", - "tS2/9CO5O19gYVq6tlabtEaFpe5UczWVJYlGMhCStkZMNZIl0/pMv3IkKzbEbCYpMoXUyMQgjCVW\n", - "5mdw11DTKQuW5yqpoUzLfQUOdZQw/En0TAVNqypGcjvGqvpmTgqioUwuiFYtiaq6epI5yH9HZklF\n", - "V/CIjk2ZibFVTY+J7ulqioKJisyujqqOwopZZWqS9d2qMsxzndFlQkdtq6G/OdBvrrl2MtEZDk1a\n", - "fd0hJw+5W2+5+lQhhLHZMU785RBOR46+SP+zDxrECjv0stxaPVWbu6JGM4MWR1/5Hi+R8zxS48Ov\n", - "MbrK/YXSdv3RQPcpbxi9sf5Bntpl0CKe5sQ+L5/g9GppB79UL13RH4nlM7goSlfVS7HkodTn/M08\n", - "zI3KlM/uPCWNZSjwksQ26grLSmzjtJLtcTg/6wXOqTgtt2/gNRWpnr4Vc/2NcrCzPN/DFoaqGjLH\n", - "hLAmDzWsyA1FUw1s21dX0dKTmGmIDgw9Zmw7zBw4ob80U89WLU8yMUsNw5osaVEMWR8xXWQ7ozjk\n", - "bI9fijGO+M5k8Tezvm0zEkJ4Cn9C6RJD2bD98xjjK9/Ftn/QNyV3v6B0K3qBMmNg/nrLW7jKeofq\n", - "4/ild/ogfJM38nuqGWHjk/xwweNzItrxfmJn667XHj0jq9clGVEuq6WKYY1Zp/zBMjmqjIU8sy75\n", - "RFDkPY4aTG5LzuXimaphlfwg17mcOVw6rj1s6NWCmKXGnZoQNjRVTBX6ppo6Gqp2dYgDKyFadckN\n", - "K6aaqmpatmSCRC4xtaiE0msqToq61gytK+zZVTgptWDfoWVDTVOpwpGZAwtaggRBQ26gpTBV/q8L\n", - "HSO76mbzx1VVV81tmX1tiyqCIxesCDomEmu64bY7YSg4UM9OmRSPEa9SrXO4Uv7uvvrwWTji72bu\n", - "ZUODP05ncyqfTQx+lv7ferMcNN+gVtdJmuWA3V3efZzaKvdusvpBbh9n9V/xJ/G3Uzot30T+njV6\n", - "9edcPJ862YhqITErOm5uL7u5tSDtjo3CHj/N7E/wyrPlW0dVFg9nqtVMMotCZaay0FaNTZUwEpNM\n", - "Vukq0uNqs32KiWS6Z6WWWjQ2dl/bnomxms7cR/fIREe0oGFgxWMO3VPe8CaomMyB+6ZErmuEVFOC\n", - "RQM9E1sesW5BWzGPRgwObWmK7ipUVDUEE9FYYqqlpq8himpWpEYKIxXXNAwlJE392rLRbFctP1Sb\n", - "prLRSC3NDTRcKthMMktabtgwrudefa6iGHQs1Gqq69tm9S2P3Zn68Ctc/AhffGJOTp1u8/Ki4R9s\n", - "u3QhWMwWtbtRL+zr3iB+Swn2d1npNx9ZzeyBvL903U1qb/yWpEYlL13pm7FsKrobnBlxbYNToXRE\n", - "beSMKmXzsRHnqpmkPFtt80tSCSAeKduHG4EjiYa6NYUlM4Voee4dMpVKVGybWMeKoX31ucC7qqci\n", - "WlYiZg/vaeYBEze3IGiq2JJKTUQDia4NSxqqsedG2BKkhqoqFnTkqlI1uXG4bpRumBV9exs9kk0x\n", - "PyQ5SW9AJ6VxhRMj9m5T2X6HwIFv2YzMRyn/Pn7GN+eDZ/BPQgj/R4zxf/gO2172zUCkIyWO9fD2\n", - "/wb+bfyHv4vj/n6uj+Nn3+mDUDYj/w3+23f6QH5n1X6cR289/MrU+V+buPbjPdPmkaQxXMXCAAAg\n", - "AElEQVS5JE4T+SBjOColu0cYhBASlv4kp374SO/5X5cf/5LZeNXhzopjw3Xp7iWj82xUefmJjpWD\n", - "oN440t2oGjVP2Q8jLKjEXAyFmZrMWGpBEWeSOFGEih2bGoK+k8YKQU9i4MCyhh2ZQkvqrJmb83Vx\n", - "amZFzcTYKzqOG2g5sGNNX13mnqmemsSCqVyqa1GmLjiSyzSN7JrJZUZaZnL0NcysmVo3tm1TX8Wm\n", - "TKKYYyin3DOQWddK98Rw1zQ51AxHmufGir8UQvM+4y88gLrnMsy/HkL4h3TXsPtWzovnNegS8vIj\n", - "zTm+zEGfamCcEB9hb5UzIYTlFl+/wY9ulvdyx+k/b+ezn3d4OujMmvLes7pffRf3B1RvlIzE8wx2\n", - "+ewOS0Mqp1hOOXk5SlocLI+cqF0xqa9qD/ckychO2hGTlmntjGpxi5ipGOtIFQqHhnYk6voyVVMV\n", - "Jcsow0TigTLhUPmgWUJd7sCRa1KFtqqg4Z7julIVg7lHzWiOmLVVnDPT1RdkppZNjaSiwlRwYKaB\n", - "aOKKaCw3k7umPU9KWihXxQbUdkzjXZMQnYuFhUZm3Go7CNHdg7rb4awsrCsafTFfVx1edvjESGvy\n", - "tLWvpO5duGb/Bs/fpn+WnSdDCAfn+egmcdVsOLXXumFv7ZAvbPN3cDyE0PsesoxucT3yXKVsRh7U\n", - "1dXSW+SNav8rfPY/oLHK7DHu7pceX7Nx6Xg+nZs3Tx98hLkMN5ZfXyovGW0PJLnlo21FOcK5JHhR\n", - "piM3ELVFGb6mpacl1TYW3HPfVSNP29NRM7JkoCHYFZ2c7+mB+HeoxFJOCu5ZEm1YVtM3NnbPkhv2\n", - "rTnSCcHYSV2rmqaCbdGyFVU1XS1PGdkUdOWNVUWyK5+2Obg8Nz/p0tgpQ6e+fpu/+TDC/HbWt0NG\n", - "/hM8HWP8Lb7/IYS/olQhfadm5EjJ3qH82/stCEiM8S+GEP5r/GslivLbKoTwUw99+ekY46e/wz7f\n", - "0QrlgvZj+M/e4UOhhCyfDUEnxm8GWH3/V5Ez+S03m+js9SPhYluRvKR4/nz59zoL7L1K44CXcZXk\n", - "KR79CM3zM+8ZDPRGFTG549Z7x7ovN8TByN09Jjn7K4VrjZHFbm44O2V/dNp48WX1atc0tDWM5OqS\n", - "IjMJQ2MrYnhGIqjomnlWY27bPbMuU7HjtprEMYW2iTtKTvyCI+ckanNS42uqLhoJ1uQacotSqwo7\n", - "em5J7Mqc0ZNbcqTtrkKu0HRgWYKKroapmcKyzIJEW3TOyMsyh6aWUZXoWjdSVXNC3aE03KLWczKJ\n", - "Gp2ovkDxJ/jaMn7+4bMxz4d5W66fGOPhWggvf5l3v6dkD8oJF1la5ysPDA7muHkY8sJXeC5w+jz7\n", - "Q2q3aUzMfuUTDm6cf4gH80XObllu8vSfLW2/D1K+8Q2+8gLHP8DRCWyX4WNrzcIkO3Ji2FJP+YpT\n", - "DprHTZNCDIs6aV07vqYwcVrDVMMgVoxCw8RUTTJnAk3kUkfmhMFwA8cERzoKub6luUT3gpl9Ffct\n", - "OjTVsoa6qUJNfZ7cmkosGWCkZmhPXWZFUMgtmKmpaKtaldqdS4HXNa2rGBsZ2HPbmp6I+9bqHZ2V\n", - "mTRPtSosTAeq1WNuTZ+QHubydqGorJi5oKh9TZjWnekf16vccns9c/awVC0tXzhu/6MfZ3iGn99l\n", - "bVAGvXR+VRqjR/50iTgcJCGsfYP9f/a7uD6OQmj/HD//Yzw9pD7j5iIv32b8LUZASZvsAmcSkpTe\n", - "U2zXqO6UI57bsQzEe7xKCORFOXrZSUolViVwS9ka7Ct1LReUdMdJeYV6BCtzs7u7OFB3zIozElMT\n", - "UdUNp01ccR+FoNCRWRXdVqIgm8oxTV/ZXT+Bm5qaTklVZeioSlRVXFZ1X8t9j2CsaaBuRUUiM8RE\n", - "jCsKaxiIcSAvFhW9J9nfIjnGYJ1bFfJPcWybX4184Xd6Xt6s+nbNSK4cz1x/3esnPZQD8m3qc/gL\n", - "+KfKccHff/CNEEJ9bh889m1MVGKMP/Vd7Of7qd6H3RjdeacPJEbDELygJNP+HuLkHH6elz7MDz6E\n", - "jlxeyw1/7haf2uYn7vChdkllX88ZZOXd5FRh/Tkaizxa4ZH7R3YmU7feVXEiHjl8ZlXv3mm12ZHe\n", - "2oHT91pup5u6g5Htx56TH1y3tLymFu87DJuWFBp2ZcmB3aJjPGsL9VWJmYqawp6ZmsK6DLkVIz3X\n", - "deVSBNsqDi3YEBX6ojIL56zomlNmclM1mY6KTO6cmoq+Kybz9qEp18Ixyw4VbiscUxHkhtpKPVDX\n", - "TNNEPrfkKt05SyCjpq9QaCjMNMOuakitSzTSgUYHZ6l+gLXnQlg9ycEvxRivv/3nnn3++ecIV3im\n", - "yuwyJzf56g/MlRLXWdkvx+mHZVBa+DuHfGCFd+fsbvMvC3Z/gf/oMc4u4S7haxrN3I90ef4hvsup\n", - "dT7V5dJPcuPjtD5Sl38k0WwVnpwmWkuJnVhzWGuYhJFZmKkXFY3YshRb+mEkN9YTVUPHvrF7ploq\n", - "qhKZ3JYVh8V9laSQFEOSixbUpUgMXVBxRsW+RRVta/Zdt6ZrJtewY2ZJrjQPH+haMbEg05EpXDFy\n", - "TM8JdX0z+xYsq1rWm2uwqp7Qt21dsKhtz0k3Xbaiomeh2JOktVIOHuuqRXS8UrjZDhyMBYHJiuJ2\n", - "hcVvmG2QJwWhkM4Jo/0ag3yFE2fnfKIN9jbYy4THW1Y+3PXH/gnL0/Kh/qV38dk/xuvsQr6LinHw\n", - "2RDCHW4+Wxqq7b9C9vUHtvQPVwhhkcc+xCf/H177Uer9Eg17bKUUjZxPy9yZGMrMmLVYsjVuoJ6z\n", - "ntGrl/lCMyUy8l7lY4uyhTiBvtRUoSVXinVaFqWaOFSTz23yjjRdM5HY1NVSeEK0qlzd7yofyD3l\n", - "3HQdd7U1VHWVbJVF5fDnlorcxFk05yESuaimak1iaqYvhkf0swlplBXHOBhTG5UypF187ibHbnDi\n", - "Ki+M+JkY4zsmePh2zch/jl8IIVxWtoaUY5rH8Ze+04ZjjF8JIYxDCL+iDE16IYTwv8QYfxI/HUJ4\n", - "l3Lw9ntefvpQfb/wRR7UA97I76FmpPtpvniC7UdK46r9wJVddv7vGOM+fqodwr93ij/yFFunuXtA\n", - "7bP8xMsmh8zW2JiPEzYORypXq15bWXFseFpyt6py4owTu9fsre5q3F9TZBXt7JrhJp1Yk2tZidvG\n", - "4UjfQDurqw+WZfWxLB7KbSvCigWJVMdAlAuCqkLL1Lod++pq9qVaFmTqc/D2UGLPkpqKVT0nROdV\n", - "7CrcEnTkcmNVUeaMqg0trfn2S2b92F253MSyhqdlJqK6aDCnxE1kBloyE/U4kocojccsh4qankzV\n", - "oqAWc2t5kFaCyXujc6/yxJPcfSyE+s/EOHlLAs6+Xc2Jcz8TQljBmRP8+Dr1a6zt0/w6ky3+2QPe\n", - "yhy5+WWvM2MKIfz0bR5N6eQc0fkpjp7k1z/I2i02X2U1Y/kptv9Z0/TGedMfXbJ6OBMPe7Y7267X\n", - "F4VYkVSqEn1F7MuSmV6s6iRBHoODwIX5g6in6oKamYk9wcApNYXFpKvq0DAZKuamd1Uja4IViW0N\n", - "mUKwoGmqourgN0c6ZZNZXhk9M2cEOxKvaqk7homRkQpWdWyLxkZm1pVr7aGRzB1xLh1tWNCMa/J4\n", - "l7CiMyvUJ1NFJTespnq1iSIdyVdHQh5JbrNWYViRZ2Oj9l0xFM5ts9sqH6WTlwt+qPDN1WVB2NV6\n", - "nE6X2rxxSfDcHV573++mGZmf8xveUMb722qzXDvHCq0aj7/M/jLdhdKUNPY5vsQjB2wnXF9ic1be\n", - "d/oJ/QqNUK4xawXfSErmwaZybENJJ52omEg0REOFZYUxqnJBrm8mmurHRAh1U2vGdvElpRj4A7im\n", - "7LKfVbEukZmqKuYco3LUsK8vOHRMZlM5bth54I2qbzDPf+6aqBoVU7Mkp1gupVFypi+xusW9nmrn\n", - "ls2TR46Ppto5N34yhPQfz2MX3vb6ls1IjPHnQwhP4oNKhCQqB2YvfLcyn4flvPOvf3L++T/9XR/x\n", - "93d9XJlq+P1Sv4i/8U4fxO+kYoyjEMLfZ/csX1pTopZXH1xzIYT2ozzzh/lCfY7QNZl8iOSuo5V9\n", - "g6QkJS7Mx4uToqFbKQxqBw7ONKyly4yOK7J9rXtft7Ld0Hv6QLJwVjKLYlq1rDDTtV4MVWcdL7UX\n", - "NMOKUegK6loORU0zNVVBVXRkV6Fi0TEdB4ZaDtUtW5bPRwupmZEDYzNn52vcfW2HqngUA4WmoCeq\n", - "6CpM5da0bci07SuzgVMbcomhzETTTEWnzEjRchRzuZ05fXHfSnxMEYOasSIEE7lQjKRZtDQN8kBn\n", - "xuVlfvA+78o4/LEQwjfeDknfG1WM8QAHIYQruzy9yKkB98e8/O3C+UIItYQnFuaEvIxbrP1lzvwI\n", - "53oMcu6e4uDDpXdGq8rGf3XMTv0RjVZm8Wiit1u11VgwTMcahmbumYZzqvm6UNkyC3fd01cLhUeQ\n", - "S8yMta1bmSMaqyaO3HFgJo1DUeqkqrvhpIkVbVftqethKpeoWVGZJ988pS6Y2FXGLy6bKeYi7apS\n", - "BlxzzlKZMm1iVaFjYldHRc+mctJ1oGXJqqA9p7kOJHOT+qHgIEanMmLSVplNdGZjr7WDpLgqhkfF\n", - "8QL7N1m5zMJA2rvu5pk9J77OV1e4M+bO/xZjvLEZwtVLnHiynHOYm2stdW1epvXQdZTG0qfjrasQ\n", - "QgWxdDOf1KlHtjeZnKKyWDYpzfrcjGyrXGcXGYs9JifK9N6kUg5Lhkpi65pyDHNXiVMMlaObqYnV\n", - "+XKhdAcZq2k4mNOU12SaduyFQrRk36pvcoh+XbkqH+GYVGXuv7qEit580FOfK/iObIo2zCwpsZkj\n", - "QaEyx2sL9/XiWD2bquSXhGRN3OqUMcuVfWoT9vbp3fToYu5Dn+HkXWpZ2Vj+v38mhPA/vw38sN9W\n", - "31ZNM5f1vOVOi/8mVAiqyhChP/tOH8tD9UVcCMFGjHbe6YP5bmu+6v1Wq5/VddRfNyo8zVGblX03\n", - "P8sXf5wf3CamNZceW9CfVdypL+ofHxo3busunLH+1brcwLnZ1GxcczG7olFhIJOYOVvUrZu62Dwm\n", - "KdZUYlMt///Zu7MYa9LzPuy/t6rOfnpfvu5vnflmvuHMcIYixUWUqM2yHNlaINhBYiGB7ViOEyBG\n", - "kps4CZIAgQPkyoETJIDtq9iOlzheEmuxSFmyRIqWSYrrLORs3770vp/9nKp6c1E9JCVrn6GGSvgH\n", - "+qILp7vfrjqn6nmf57/MNNJrWl4xclOhodCWOj6/EVxQuGVqQTzPmuibGcs0HRrqa0qtyowEXVOL\n", - "XnbH+x26LPjXoouCD2HbVKblyJF9TC0bnDd9l84zboZuOXNBMG9s38C+TCqol5lOXCYcSOJ9kqn9\n", - "cslUA1v2jH3bgCSNyjI6yRnmrA54daNt+p4mf+G8s/maqkO8qepV3/uDKlLOb4qfDSG8ovI7+O0K\n", - "kfkN/vy7WL9QhX/V/rX2swPPX+DqA1ZaPD7llSvVdO/set1+2pIvzUkXeyZJx1a9JYaOvDUnuqvQ\n", - "lZUXKpePpKleLkmcCfGBmATHITG2KDPS1Ve51TJV6jjUNVYvGsqkStmdhcvq9gxdMdK1YqhuXuLQ\n", - "kR3RM4ZmgvY5GTHT1NCUmjjR9LpCsKirrYVS09jeOfG5IZzTmjnQtaergbpEet5ZuycI4UgwZ280\n", - "dCupuTApxFlpr73iVClzIA9Hyk6T2bFGvmPTyLWXo/Qur+V8+qfwwpu8wn1+6hP8+R2uLlbf115V\n", - "HA1dv/vrr1S/XtWJby+qOADvovsjXHycRo+H13j9lPoi9XU2I2+0uHFSlXWP6swusPA55g44XGLQ\n", - "qIYkF2Jletav/htt1Ufgy6q9+Z6K3fEM5yqXWKlsTFx3pNQ8l/UWJhKXBK+7oRr2nKsAXcGnVV2w\n", - "mboD0ZnpuRHayNB9YysoXTRUN7Kq4k5lqt7XialE34k0nmjGmYXJmfL+JfHRiNXXqn92Ms+D72Xv\n", - "nuZzhff+Ix7b+toZXB3y5Bp3r6sMUv5A8S0H1rcPH8TtGP1+meJvO2I0C8En8Ufwj97p9bxN6J2c\n", - "Ky7S6o4A9mlXc9D+/8oLD9n7cebbXb1RYn/lwwaTC7I4UmSv6s/fV94YetevsP99xNgxfzTVmZu6\n", - "UJtZzOoWyqlhaOuVTQvFsZ00EqvZfamBI4tuG9hUk4lWznkeZ6YuuSB36nGFV93Rt2wiFXR1nZoK\n", - "ziwKLijwgr5vMzFWmlM9+Sf6dqVqOiaOTaVaenZ1najLNY08rqrLtk2cyl2OJ2qmYtF0GEemYcHj\n", - "9yem3XteWRtK4qFWMlaP3MyiVo2iIDtk8ZWmf/Z9jzm4vGwQrnDpHn/2K0wvkFxV7QXvcRZC+Ht/\n", - "EKz7KvRu7ce4cZ0ghI377P60qse/hvGb6oxF/sSzPB81Vl5VrE3lBd1LNaFVc3Q6dbCYWy5Zyri5\n", - "0HGcXBf2U83ljrOVDTG2xOFQ0ZoXkyFSsewqbcimO/LWUF4eKkPQVdcwcikm+mHqSEtDTzCTaciN\n", - "pHK1GBRpsBQGUqWeh3a0DTwndWLfQE2hZtnMzMSKuiOlQzVtM22ZR2qOTS3ZFB2anPfFRgozTR0N\n", - "Q7dM1eTn+q2GU08rZjvu1MbWlMgc2zC0J8RTrWLTcHDVg92Zo+WORv/MMJbGzcfV+os6oxPT1uti\n", - "Z+TxQXT1xeg7P1o9Bq8u87EPxrj9pneUGONhCOEf9Pjz3cpvaVAYf54vrtGacfmU/Q6fW2P/n+Gv\n", - "vA3vj2Xaz9O4wNxzrH0bTy+x0ac34daUV36A9UBrjVspoVc9wmdpNfxIVhh/H0dbnHYpZxX/tlji\n", - "QlnJfx8EishCrMzRFrEYqu7TnqrP8UBwLOpIva5wxdCZlurstyT6alZVXZDa+dcF1dBnS2pJTd9Y\n", - "du7K2lTFcS7oqyktqNQgB77mS5KJemIcyl12Ib+kUQz08ruONqb0v43bnYptKyUe0ozShOEaxY6v\n", - "cn+oOkh+C5n0NxbfKkbePnyz8UXexJu8kf9PFCMxxpPlEF76LM9/gIcZcUDts2wc8H+d79j/Xgjh\n", - "/1nkL13k+6/KVpc1lWKaSeNlZfbA6NLY8fvZXuc7XzjVf+ay0DtzvHxqy0gnLTWlpob6tahd7ihk\n", - "euYV5lVtw4FGeKA4v8G07YvGpiYOzbTsOfOYka6hr2g4taCvo6lpoCZTw5K+iz7poeXzx8whElHb\n", - "qZG+jmjJnvw87TfzuJHU2EyqKdc1sW5fNyyJedv8tKcVjz0cLQrlRGzMdPIdi0UUa1ErlBbqHB+w\n", - "/oCTAUebm4ZXV8zNUtNJVFt7zmxvxh97F//8qfP2+30WP8afCSH8tW9kh6Ry3Lz0k3xvnRvnvLU7\n", - "q4mf+28vOjzZwIiwHsLdfX52Xe3fPzG3NjW5tKDTnKpnDfVuYhYXhJOa9ta+7c2+Rit1nF2TzVo2\n", - "5gtntZ7TWt1wNjRr1YWwzOweWVMMmaJoCmFByLdlouW0Zq2IhqHUCzVrZlKFPWMP5VpKhVmlegl1\n", - "N6KvdjFyA9EFD3VFHaXxuUB3XeJYdCQx0XJipCczMjKVxa40ZE4kJgo9afV8OS9yN9QlprYV5lCY\n", - "GMd9J9mauqnxeVZO11gt7krHOYP7+p/7DpNXM5PvzGTNR8rLV6TDZUke5Z056XBd1jw2bU7UB5x1\n", - "Wejz2BHLV0IIS+cjNSGE1mX+zPcQbpwbkN1k7Re8Nt131Kd5kfyA/X8Q4+ylyhLorbw/sid44s/y\n", - "bCC/xPA5Dru8+0U6ObdXmHua73idV5Yo5thsc7/Nrw1Ya7MSuFty1qB+idMWP3jC1hxZrBQ1SWQ+\n", - "pYjBzWReazYyq01dVpUDE5Vqrq5hzcR9GRIXNZTWUBclEkEiV6lCgqrXsqgaFmWqjKFLqq7JQxWH\n", - "ZBHLEi3B4TlFdlX18J6oXB1Lwg0L4znj2ciotqm+nVmsvyife9Fs6XkOF5g+YOlTatcnWgVH38Fr\n", - "myx/kY3dKpX4bjj/03/g+FYx8vbhj+J/eqcX8ZvgX+IvvdOLeDtxzE99mvwW75urKv3igJ+dnht3\n", - "VZEltWdzYamU31jUPuobr5UsJLI4lBUtzSHzrzBrMqsNNQZ7Hl5dkqR17DkJQ5tlMKcvhIYsqZvl\n", - "S0qMDDQsy8K8mUeiaMmpXN3YVU2resbqXhNcP6e2tU08NFTXlWk6MxbV5Q4MdM1bseDEIkozO3Lr\n", - "akYKO6oNy5IVmcKZQ01reueqmsRYzWOinTgwiz3zpi7v5aaPzhwkcw6ud6T5TFKe2TiZ6Relr3Rz\n", - "s5yb22RP12yuzEmyKPTbNt841b428fDaU/SOqvvfPlzl5DGublUGDN9Aslv2NM/M866vU8DEcEX6\n", - "7R/mM89U4yNf4eIv8p/lOmu52fKmxbRlpT82bW8YFqdiODbaWJY+7Gj0+vrLTZKOx8ogndXktaaL\n", - "8cvu1xZMp10x36u2iLGBfTGbE5NjaZhZmtWs5GfibOZqs9TJ+vZDIhFNRMuCe2ZIdGIVhnZZbuBA\n", - "X0tpxaJ9u7JzFVaVa5PYkjhRM7FgYOTIvJmOBbuuOQ5tVRDebVwVLOjLNBwr3HbHkZrENXUtUSMu\n", - "eCNsWDJvpKtppOEOds2FiYt1JrOhq48+7o0L847vNOXX2rJRSy3pK5pdIS+V7aDRLMhLq/Ns/xEm\n", - "n2b93xj71nn2mSrf5KtKuKfYP6T5S/Y/O43xs2/XO6PihFz+d/ihE9YHfPl5ru/zaJFbF3jPI846\n", - "XE7Ir7BaZ25As1PxP77YJk0rh4DHJpWNTTFg0OR0vlIlL0VeTSrb9xMMQt1eOefZsnRazvSSaKxS\n", - "19zAktyhDG2PFLZ0rWpJpaYGcoNz4uoTqoLjEK+qmCfXVR+oXHUCT6SmglzdvK4DwZnjc/5Q1RQ+\n", - "whlxJrOqnUehJPSbasOmWllTm+6a3R/TmbKyo7kRPfcoWJow6DNbYut7Of40dzPu/6sY4x942jzf\n", - "KkbeFoSKV/ZB35xupy9jLgSPx+jOO72Yt4oQwkLKjSG7b/D3VHeJkzelfZWd/JWf5N2tvln92GcW\n", - "ekaNDckkNz8spWWuSEqNhKUp8XTJr9y4YmHC4tnEbHmsVx+5nieuKrTCI9vlxO1wwUlIheJYkSw4\n", - "mx3Ka0OtkKvyeJlY0T13Hdm1IZHIPBCM1OQKHQeG6miKqtzVAqtWBH1B32smNqU6KvLijsSquvG5\n", - "y8SCUt2pB04El9V1ZNbVbRpJY8OrxdhkOhPPEgdrTzquddVmC64czpTxoa90p5pxVToa26kfyhd2\n", - "PTmLVu5m8vma7miof7Vr7vZIdr0t305+A0enU3WJG9/Yq929wOqvk2x2vfrEVa1eVG+VpuGAlQ7d\n", - "Fcl772jOmnpzdXOzIIhidlmYnXhQC5bb0cmVxCwGh7WgU0SmpUkzCFlHW2rZIzvpE5z2JfU1ad7Q\n", - "LHNF+nnDrKk96yjzQ2fpkc1Gai0Qy2icFDINIw339Uxiy3VzhmFMLIzC+DwYPtd2rFBT8wWFFUFX\n", - "Q8vMl5R2taWitiUbNuTuuWzRRK6FmYFFXBatKA2NLEt1FXoKhVrMXIuZBy5px7ZZHKinlRNFDcM4\n", - "8G14LAT38obmha6wtOil48zwpYH8mWXtfqK5v2eyMNOtF0I5k9RYOWPS5tFH6P0KR1tvdkXO3xMb\n", - "q+fjgK/HCuO5imzxdmKDzQ7rb3rJJNSnzE+rUMQ3Rhws0Kgjq/xCVvr0O9Q6aLCccn1U/Xg6ozvl\n", - "VsndOk9GNiLtsuoWPCxr5mPd4ijXDwuGtaimcGBsqoo/PJALmHeqo+3LlSGSjompgSMXDM9DEr+W\n", - "yPtmSu/GeXlaU9NDIXOkpq2ukEqMXVN3Ud2JsZFoJonrZrP7Yu1EXmbCtKbeGyhbE8VJLuw+4hNd\n", - "nspYmLoxN7I66bv2a8wf8uoVHj3L/RYH/7uqxfOO4FvFyNuD78KLMfotyXXvFGJUhuDn8cfxN97p\n", - "9bwV1EN49gl+4ilCg3iX9A6fO+WnvvaqC3+SHyh5/AHsevTG625/e6YI5HEs6OuMB9Kkod4o9M7a\n", - "ppcOhUZUS6Kz0FWLK07CgdWi4Wo5MZc+lBr5bHFD+6AmX9+zmgVrMh25iS37nrZv2dCZbRN1+xKF\n", - "qZ6GeUvWjF0z85rbth0ZWRBcFi1IEAUNF/Scum1qZmSi1JCZNyc10DfWtAKmguiGzAMtryttYd5I\n", - "drYgvDJ0y5JHR0+Y7R+5vEwoU9P0ulm6Ly27lsq2ZLBmPsuN2oeu3d2z15mT5rSzqd5CLhnfpP3e\n", - "qmMMcsL9qsv8DeaM9HfZr/P0194DBt3EpDUzbb/ED87T6VJeVG5uGaV9knlljUIhBkJYczBecZI3\n", - "FftrJsef1X7XqUutIzutRUsh1ZmMjWo9ZVrTKjvy5UQ9f1UMXclgItR2LKVTS2Fe587I5ELThWZJ\n", - "vVJTTZOOB2HdINS14gN5mJick437ISjVBKW2ID1XRGSGasainqltHQMXBFdk2mr2nTmzJtFUR6qm\n", - "VZ5K1PWSgKFSQ6JUWJGaExxpyiQxM461qrOTFNplX5GM1CSaIWoXNaNJQ1rMmayuu3Cn7/7Sdxve\n", - "/jgnxwaNTQuTqFk2rA6OHHfGZnjtPazMOGzx6cDOr7N46LN7+JsUqEcVk3TnNx5/i4iUX6fIaTxg\n", - "eo3ThMMLXC9pt3mwwnqf9TO6Q5r3uHmF+lI1oklTGlMmdYpGRUO6k1fiE6FibcTIUpHYz+g3umJR\n", - "Myz6HiTRfMxcDjPXfO0jcSra0HdRdMtYoS1aNnZJMCdzqHQkihJtQVN0X9ueoY7ootQiTnTiSCMc\n", - "OrGEmmBJplu56Bqrx76ZvrR8QaNR10oyg3LFbO/QIOmb/EP835/iekP6I1Nr7ei5F6tzAe+/zdoR\n", - "W9sxxq+8zdfo94RvFSNvD/6YahzyzYqPqqz9/9AWIyGEzuP8uz/G/uL57ut5wtsZ5lMAACAASURB\n", - "VC/yoc/wOr4cQljkmUs8/tW2funGp0ZOrrzgeD4ViqA7HmnGhtU7ibLG0aXgxlbbchnFem5x2tNf\n", - "rRnnuZjmJkUmTqN2Y6aZ5JK5I82k7kJZkyU1szCSaZsXHNoUVMmnfRNLcWwpjKzEu2I4sWdF4VQw\n", - "UkdDy46ugVRfXV3vPG+kbsGxA2cmLphTattz6kxf3YIzDWO0fcUVx5aIU2fxzGn5wHh+T/5saWf3\n", - "itmnLnP/xOgDU735xLC2Kiu3TZtTx0XL+DCxat04HhrXtj21VXh9c01MOb14rHhjxL2LzLWZDmi8\n", - "zPIWnzj3ffkGIn+VV85YX+PGPoPazOEVDjfmKove5ZKjFvcDe++SN7fEzry8nOrmhXQ2cLayQtFQ\n", - "HD9n8PKIxr5e8ZL+c/cspieGoa2II5N8KMmXzeWfczbXFIp1c4OpdPhAq557PCndX5h4VyN6lIzd\n", - "lFsLQZG13UsuEqO6PXmYWFHoahrqKsxsmVg201PREY+talgWnRra0dXylEV1UyNjUWnF2C2FGMm1\n", - "xTiVm0i/mpIyUaXStGTlmCQRY65Xjs8Nc6fGxUArmZFMkcnjyKxcZDhmWDdNZsLirtn1UkhG1Ja4\n", - "uau4fOa4HGjWR04mQ3NHicuYv0m/WYUM3niVyQdwK4TQavPhFb7rK3wg5eLzfLHJ9A4rX2Y0qyQo\n", - "bycqqwzbc2z22HyDNx6jt8DaIeNm1dXYPWB7vrL835nnUUXdsRAZlRVPYjEQSva6VXbNU0c0suCl\n", - "+WAuYaEoHcXSnfGKabJuT8d4lmmkuy6HoIy5k1CJcRfRE23rOLSso+NIZuJMRXVNZbpaFtVFwba+\n", - "XGnm8Xhi19MmoSZ3IsrFEK3Eh85Cw1iOU7moNNZWmIYDWdJz6VHh2lGLhUQRt93anDn7m+T/9Dzi\n", - "4Y0Qws8yWPtaIfLVUznHya++zdfn94xvFSNvD34I/+k7vYjfBv8CfzMEjRj/zTbqHxJcf4La4te1\n", - "gVPi0xzf5gN+y5vdtYe5l25eVlvdNQ0Dodm2uD02WRjZXk5151ILRU16t6ZxPJWs55IP9vQz6gdN\n", - "28sNC6L9WLMyfGCnQ11NG1NDdJXW1G0rnJiZPzc423UaTtUVZjI1hzp2LCv0YpCGS265oI3M+Fya\n", - "d6CuYUMqt68m6jpyqi13YsmpCwptwWLk1bDp9DxabxwztbhoFqbGHrg24cLZll/74VvKlxlPZs4m\n", - "mUmtp6iVYujqHW+Kk23DS6m05LXFwod2tq3c3PaVy2wfUvyX2PolPjzPuwtO9/hYWY3/fs84DzJc\n", - "VXWp93/z2PcK554z/zu/+KN89smGkxvXnfRmit6scmbNdyRX/6X02oHs3g2jL+3KWrftL60bNzPp\n", - "dN/oLFM2N42PHlaihb2PiL+8507nnsceO3K9PDJtv5kGcmJ6PHGYXFY/OJXMdtQXc08ftbVHR27r\n", - "u5+zNKoZ1TOvjWoOOiti7EuymTlt188j4uc0XDHz4LzYvCu3rXRVdNUtIw9sS800LJ1H5JWaCnVT\n", - "R4iyeExcdlSuivmWIqzKk0OSAiuiHRwpw4ki9gWFvTixkBS64YHj+rqZzIl5MwO1cCYmU6NQyuNM\n", - "Wi+tLCTyLNUtPmX1h5ccDDLGN8R//AXF80PrF3ILj01dfsjjh+x22BvzPa+y9VwI4aNr/MT7ufY0\n", - "O0d84ot85FV+JOOLZ9zZrcJV31bfihhjEUL4R/yLP8fTiyxMuT9iepen3yAdcWGnCqH95Z/kU5s1\n", - "83mQ16ayLicliyMOA8M604SzgsMpz/bXfXlzTas4cRr6eulMy9DTh8d25i45KubNOg/UdYUYjONQ\n", - "P42mqrTeTXUPLXrWxC3HtrWxoXJXzRTnxPhKzrsl19Q0th8aeqYyD4kjIeZOk8xqiC656ZFLCi+a\n", - "WFNXlzqQlzetjcfec0TjwUz33OByLuMTn4+x9/WfrzvcusNnrvH8NrWS1y7wYp/xC2/n9fn94FvF\n", - "yFtECDZUvKNPv8NL+S0Ro8MQfEXlg/LN3MH57ZBkXyflfRM1iqRSyIkxnoSw8Yg7yzx+xLDBdGFf\n", - "a9QxmVyW7o08yHbtXDrWaXDpK4XFjTOt+dTscaZFTWsvGN3r612vedTtCMXEC0lNb9Ax96itNr4j\n", - "fy5Qb6jFYFYmJHuOLIlORXVVw3Z0nhHxIe3QMIwnhmFfzbZpWHfqhrpg5kCpo7AsWjb1wH19waY5\n", - "DdGh6AVDIwtqlnUx9UpIHceWGApJWchjYpQmogX1ZMu4W3iueey4+cCDa4/beHHk9LEzw0sHprWr\n", - "ws3n5TdbjIfO2m9Y3KDzauUyOVhm6zYH/8PXJXT//PnX7xshhEsb/NvrrAXsV6Zm//S3+5lz2e7f\n", - "CSEsXOC/+mEe7NH9Iv/h61pLifrkSG3a9O6Hd2xdbbv5pTdMP3qo92SqvTRVzK6YrD7BzUNar2lf\n", - "+VWNH+4b15veKCamnejxAQvZvFmja7g6cJoObGyUFvq00lQjG9haiDY/GT37af7Vj+eOPnBNXizp\n", - "JMt6aTB1G3XBnMLEgb6BVOLMjhVRS4zHgmAcUicmji0YS52Z01cKxiprvMzQ1K556exIMd0TFabp\n", - "qkQmKW8qww6hipsvwpDymrQ8cmbglsJaONUKXffiVVEq0RXKa6I7PtMau65wKWs6KRI7zZZumZpr\n", - "TgwmJ0aDQz6yavrKA2+sn7qal64MeHG58p179+epxXMF6NPv4tqHzz2BFplc52d+nic/zU+VMX7m\n", - "t766v+P7JeAa808TC3qvxhi/So6NMd4LIfwvPHyaxpO4yHcWLD7gwja1AhKLN1NfXC+ELt2MNOFy\n", - "we0GT25Xib15nQcn7O525O+5pDbKDdu5+bBgsyCb7SrqI0t7t714sWZQdsziyKC2oJEMZeedirHS\n", - "sZqU8w1GV7VbylQylQNR3czgXG9VU/eEugP75szMqcVcFk9NwiVB3x0jK46seGhXV4hHUhNFfuLi\n", - "3syH+oQVZm0OWlz7RdYS2iu/4bNUhBD+Pp/8CC99JyGj/wLHv3zuZPyO4lvFyFvHv4VfitE3TOL4\n", - "NuGj+BP+8BYjD+4Q3kva/Doy5S2WD/iVEEKD7N10Ir/wNFfrXclGU785cLB232Nnu5KQGoeeYiX3\n", - "nj0uZby2fGwxnzhNW/rXo8nZ2LhW03tpyRdajwuvXhLvHll7X8v8UWIhPnBvI+pv1qyUQ7N600xd\n", - "z5NyZyrJSWXNTSbXMDS1HOY0q0eRh1ITK6YKmZGpK6pbV9S0oPS0hp4FUdOaqaaegR2Jvr5oXRmb\n", - "xDWl0p6RScKC1OZ5M7+Yz7z43pln9l63nx2Yteqahz1LecNW9ym2+6RHzB+aHadOj+pevzi19DmO\n", - "v8T2T8cY3zbCcwihe5X/4AeZXT1XW2wx94v8udu/0w9XmJ4P9Yt1hgu6Jx3rk450ODZuFxp54rHB\n", - "Q/sXOfmZ/GuE5vpt/mKD6w9ceHriQrfp4LFrWrVS3hg5zLdksbAR5yV5tFW/qjaZOBwfGnXPLGRl\n", - "lTb0Kb7vlzlu0+4sOkgvyWs1pVSwItUX7TiybNFIqalyFkmMLMjtG4ZVLzvSEi2b03bZxIK+fT11\n", - "c7qqFNfcUWw7LHsahuYnp5Yfrtu9nMtrjytNJMmuMj1POA5diXWdsiXJ9s2VqXFo200WZXFoKadd\n", - "ZPK0ZZxu2ol3PGrPKUYd2XhZM2vJ4kPF8pHO6LuNPrZL+ByfzfX/Gtt/iXurrO3zkd3KTXWny8nR\n", - "PMuXfhPS6nVOX38LpNWqEJn7EZ78Lp6cVPuQN74/hLmPx9j7hfPXXGLhPcT3ceE662PiBcxx85jr\n", - "nyKbpW5fzayNg6fLme5SkBfRoxqNku1FRmcc1Hj0OqP/uu3g5zPza2faUutlMFcm0mHTtBjqd8eW\n", - "MnbHbVOZg1rdZpwzCjOkBuVYL4lqMndsGltSnYigItQ8UvmMPMC7BBdE9/VdU2jIykO1kAjhaUl4\n", - "qPBufQcmrmiWN43jfe8uZjaKyB6d2/Se4/GS6ZjiEgffx6O7HP/S153PBZWA5zjG3i+qol7Cm7EK\n", - "3wz4VjHy1vFD3uKO8Q8IH8Xfxn/xDq/j94UY41EnhH/xsSqTZtAgv8f8y9yZ8Qar/wkb765pxZlJ\n", - "WPXis1cVb0wVk4H3HbdtnD0ymztWHNHsVeS1hRHr9+hfHloZDc3iilMrHm5tmt59pPs9PcXzJ0a9\n", - "RB4TIU7laaa9m9ip9xwuzMvixDCsOI3LYkjObbeDoM+57fZMLouJWmgaWVdoqUtMkLsiWhCciE6x\n", - "pKajZWwqV9c2taHuvpmr9u2qyTV1tZJjZ/GKcQhaYWxd1HIkDXXvjdHDkDvsFpbG+67c4rnbPLh8\n", - "0Ue/LdX77OtsJsyu8eDdpuN/Yjvbtf0PVZ2mt7WtXuOZZ2he9TUn4Iv0nmXhd1OMxBhHmyE8vMvS\n", - "InlN83gsS6dmcz1Znkqax2I2MPfg6wPCY4zTEMLfOtL+y6lrjQVbTzylMWtLpmNhfuQ01OyFAyfl\n", - "nGbZ0Z61dGYrRtuHhvXP214YunbEhz5J3uQLP1qz/dy6cdaVxYZQZtJiYpY2TDQNFZbUzkW+ZyYW\n", - "5dblenLXtK1q2JNq6OgK2o4tuevYgkwzTg3DRafjq8rTLxlNF7iZGC9Hg6wlL5Y0JntqnjKrL+C2\n", - "WTaRJrTSOY14Ig0dawrj0LQfcu2SMmWxzOwXDa24qGXBaj42S46VjSFJppYHzXxg89lFBwdrZpe2\n", - "YtytRmXbP1mlHQ/r3F/hi3V2//a00tX+G8+RfhXIdvIbj/8e8BhPfYQfvlvZx8O7En7m+ys33vo6\n", - "7/5TlSB258M8mzM4Zu9eZfve3OSl59g/od9IfOeE1bSmeVpKamPTdhQTFhusjpgbUjvgle8ptI6D\n", - "Ri1otCuufJ6VynZuWnTMQiJMT4R8qta+6qw4FJO2thOHYaadBAvnrLAqY6qtKkKiyszwTPUB6+Ip\n", - "dWUVz6ApKevmtJTl2DRpq8WmJBwpzGsWQShXxOS2SYxaA5ZfZ7iMEbvNiq/SHDBKuXmZ2cvVJm3p\n", - "R3nqvRVP5lAIc5+g/8u/3Yj0ncC3ipG3gBAkqs7If/NOr+V3gc9jPQRXY3T/d3z1NyEGMX4ihHD/\n", - "Pt9Wo73Pl0teof7jK2o/ds1o2DYuHzndWFdPFxWdR9KiZalfk+RVFkS8xnRSRYCPmjy7zQuBTz+T\n", - "VMZXLydieeB9l4LW4cDowquOP7Jsa3fd2cIjZe3M2v3g4OJFu+k1WU633JPU9sWwRMyFUBk5l2VO\n", - "aMrCyCQErZhXDbSwLrNjZlmhRszEMBbPJZxBoVAIcvtWECQyqUVR09RDs9DQsyqGuwgazvT0ZGZu\n", - "yGShsBh4o8G77rB/Q5XyNR7Ke4+z3/W1dOlf5Wqfoyf5jy/glLBW5cL847ejhdtieamykv91WPxa\n", - "BOrviB1+7pP8hefJZsZhJt+9o1zY9/hWaXE319zjpSnq55u+KcQYhyFcHuYWbl+wdW1FOpwpNrpC\n", - "UlNLMqedseZ4wcI46nSjXiAkmVqamLvDcMAnnqfzJMfPN60npU4spWHgLK2UK0nMDMJUDTNzEn0j\n", - "NVuahoYyF6SONWNXQzAK1GPNQjgx1XFi1YFexaQsNpk0Kw/z5vuNJsFo+3OsP2J1lUmqrPflWRRD\n", - "UzQiCbJYiEVl8V8F4o0kMr2MaZmYxro8H0uLtmk41W8sydI6WSGdnOllTdOzjov7p8qN3O7G+anf\n", - "qnvjsw0P/mShsTyTvzgz+DsxxlshhMNX+KFrtNcq4o0jWl8hDN+Spfjis5WCP/26nXut5MaMm8+z\n", - "8WF+eJt7K1yZVGPZnSVajxjd5eET3Gqx+zcKm88VwvuCZgxqI3qNoBWiemAa2Vmk8Smuzdj+z09d\n", - "6B3bNW/+sO9ss7RUTo2bI0lZMykmjjV0mhn5RUl60Th+ySxp6aIhWlToG5liaKKyC+6oBluJKlNm\n", - "iGOlXBbJpMowOw/drPyQJmEk1aDIjEIqDUOxbDrOJ3ZiYbkkafDcHh9frXxCwrCKEeoMqz+3+AN8\n", - "6H186EF1Licpv/KDfH7gm4xa8K1i5K3h23EQ4+8qQfIdxbnE92fx4/jf3un1/H5xPjr46vgghBAW\n", - "pP/ee3R687pnMDGcXzWZG0vXMtPe0LRW15omxEQtlOqH3LrMkyW7XXobXC4XrN3kJD3UfGLNyutd\n", - "te2+etlTv3Rq0r7vXnpirRulmyfm5rv2i4F6qIYxl8a37DefMAodSdyRuKMRpuYdmOqYWDEKI2MD\n", - "mRG6gjMh7osuoke5SrFvVEvkcnNqxuo6DoykKoulDubPg7TejBR/aMXIvNyiKFE4Na1C2CKPn5A3\n", - "qhv3q7We0d/6OT7yTDVknt6n+wLJe9j4AW7XKhsEX+LaJ/lT+D/e6nXrs7VD4+nfcHy3qgp/V4gx\n", - "Pggh/PVDPpQYLQ3F9bHv/SRPHNGvBz/93jXbg2X+8ohiPoRP9/ilKjtldpw5ebIQ6yPFfFeYlGKj\n", - "MGsuSoqbJs1o2o/6s6A4HEj6O+JZ3zMf5yzlV065+u7g8UFHmvTtpxPjtNR12yyQnvex+rHwWpiq\n", - "mxetGZua19I2cWqgG5Jz1UzUNjTWsmzq1KJojaJk/3HSIe0ms4LmWmXrvfNpVj5v1loUi6EYnhaK\n", - "BfVyT9EYG9jVSGtaojxUOh6edKwrT0YOsx2Nsqd71jaYW3OvCBbMdELdSZizE4L6EE7U0iPtcQgh\n", - "WeEn3sfTzxq/UDMu3mD9s/xYCOFvxhhPshD+7k/xp69USXIeMXnI33/Tpv/tR7nG1YTOrHJHfVPi\n", - "u9jn+Aprn2F8n9dP8HIpvDAxeCbTW2BpmBsUpSRUPODLPRq32LrB1gdZbRY292/pNxcdLKfm81Ox\n", - "MbE+Kw3znn69rT4eWa+npum2wzRKnbliQUfHmSO3lYKJkUVVebqvIqtOcF9VjHTUbYk21OK8hkP9\n", - "MG9WFjplXSO5bS/kYlxDUEzvEYaS8VX93T23iiOzBbIF7rbobnHlszz+SqUIun0ZddbexwcffK2o\n", - "axR8cIt73x9C+Mz/b8Y0IYT/Ge/HF74+wTeE8N+rxhvw38UYvxlt1H83+CF87J1exO8B/xR/2R/i\n", - "YuQ3wfqystVVP33zQF3rbGCwWposbxj969c8uJHrjPpiWmrfobnCG484Cxw/k7jSrJn1Clk2opOZ\n", - "a48N3jcRp31pvW+pXxI47vH0NtlGU9mgeWkmNtuaeUeaHlsfftGDViYJhdWyZkNdluyZhcKpXf1I\n", - "M7YkycjUTG5ZEIXyFqEmK09N02P14lCSLmpKz42tRkqXjPRUBklHKkeEkSSuacVbeknTikVTJ3rl\n", - "yCyZ6c1YOeDBJvdz9loc/p95jC+EEL70gOebzB3y+gY/+kGGbxYi8B62XudGCGHlrT5YSl57lf0l\n", - "Lj7LTiC+ysaXq3CQ3zVijHv42RDCxzj8Qf7Vh/nSZXbmbzho/DHx5TWGI7LP8b1foBVC+OkmrZrm\n", - "tZEwV5rVBrJaYjZpOHUkr+Wy6SMPm+vauy1rr2+Z1u5Z22H9hC92WD5kLomuHUc7WbDafs3dpFCm\n", - "dU/GmWkciGHRWPTAsrELEj2JVEMpONDQ0IlDeXliOVnU9dCsXHISGxJHijCgeIz+gLXzJ23zlGfH\n", - "QnYkac0L6a4QMrHWlRQvCRoYivkt0yRRCx2nBurl0Cxc1HFWGZ8libNkZpI1ZK0oT54yGU8chZ5m\n", - "SKnNi7NHyrVbTg7uaJ8WBq8zfOw67/ruysEcfDsPx1w94Hn8Wl51SP7qw0pKAo/e7Er9/nHyFd74\n", - "bm6Erz1IZwlv1BjfJr9RHbt6yK8W9GvVKOreJrt/lHyB9j3m/iIHt6O1L8/svXtmWqMfGc5oHFWd\n", - "hF6gt8b1QL7Heiw1R0denCdPEjtF0+3QkMZoflRqJ/dl+YZaPjCo78uTRY1zPVTbnGAkcWrNffc8\n", - "pSK5vaZyXK2jLvW0zK0qRjN0DOOOvJio95ZlcSa2T6yWhX79TD+ta+ZD2XRF55V1p1tPOX3jl+0U\n", - "Pc2U927wHS/ROTdwe3GT4xeRMFdWtvZfj8UJtXXVtOgtXqe3D9+wYiSE8O3oxBi/N4Tw10MIH4gx\n", - "vhmq9HdijH/lnFTz0745M11+N/jj+B/f6UX8HvAL+Lsh2IzxG21Y9QeGpGGyNdXbbFo5gIlYe117\n", - "kW63pXh35tFox9nVExf2ybaqbsj1l6mFlul7VhWjttatodPLAwePz1sd1SRZphGa0mQqLSaKza76\n", - "u5e8cTwy6y5K03krowf26l2H9abGdIgd7btNnY01l/Oo1hzJ41RWJFbKM+O0o5UemUiNzavZEcNU\n", - "LSl1ponuzraTuX3zLRbTLXlkWF8wDs9IjM8lwyeqgqRFXFLGoamGqYGmM4sGYpiKZVQeVjkdX9Dy\n", - "2l7T+HPHDM6Ja9vOTctC5a39pxf9+pDHc4fIqIrQeEvFyJvcjY/zA1/gfaq0speO+EX81d/H78vx\n", - "sRDCx9G5wE98L4/eHBW0yL+L+/d5/xmLV/lTPByf6NZeJ2wosmCStuXbW8zeY/rxT/Hysf5SKf3A\n", - "yNUtWod8tMmDv8v8uyjGZPUzncGqWTGz0hmbqw8UoZDkhSxONWrBONz30JlSkEkcG0uMNZR27OvE\n", - "oevj3DTL1OOuIk/VQleSXZblW9JmbpSUitoSkWy+FOtL2qEvNbNa3BRD5iReMhlPTWXyWGp0BrrJ\n", - "lrmkNIvX9S1Ii7qNWU2RBdNk3qz4gklzQWFH2c61pxPprNAZJTrTI2eNY5u3K0uZ1z/XZPPy1xHG\n", - "qzAEtQ16S5UH+q+dX48Zb6vD811e/1XKcwLruMPtJnd/Dp/l/vdXkferQ65+lk9/B4MnWBszzire\n", - "yNwV6n+c/kPGN3llxsqYUYJBTb07Z1LOnD02tNgtDCaJYjF1eymnFq3KHMZFY8smZU0zLeXF0Dg+\n", - "shxed7UsdXTcNJGZKbSkOgqJwpHSmWpWtaDijSziSBCk2rJ4RWJPVuwpen3T3dLceNvaQqo2Cqbt\n", - "3Gg0FWpNyeFl5f11h69cM3ttn2ZL3OoZ/RPe+AnGT7Besp/w4C5HP4eco5JhVpGO38T2HOO9t14w\n", - "vr34RnZGvkPlb0F1w/lOfA5ijHfPj0/9JnLNPwwIwSLe65vTAv43RYwmIfjn+JP46+/0et4m7J3x\n", - "erBTH5uuHMva2xYvZy4N9rVe7mkclrYWpl79GC//YxWR/Zij5+aV/1HX0sGC1q1MbTIxuPCYwp69\n", - "hWg5LciDZNB0tNF1L33KfL+jGQvbyVBsbVHPvHd4pl/bN01OjRq5s2Ri42ii2cmIqVJTYlN9cCif\n", - "WzdWs1GOLXroLI61kprh9HGLt1e1vpSI1/atXOJoI3cjb1nJBh6mrzi0KlgRPIOomg3ex5oYn9Yq\n", - "Smde1otTTWOtKRcGNR+9ftX28VPyew0++JD3v8GnQwg//WaLNsYYN0K4fZ/1x6qmC9WJyvaq58/B\n", - "23GhYoxn+GchhJ85/76AtxKYFmMcY3w1hAsXf0PAV0pM2bzBD71HNjenMTvS7z9ULuC0oLzHyfP8\n", - "/Da1Ab8SY/5KCOEKR+9T3Z9+NcbYCyEMOHyNWx8Zeaa356AMYqNUTwuTaeGZT6/YfiI1XTxSLjQM\n", - "nKonTM2bmNO2rhtHSkNH5ci9/5e9Nw+y6zzP/H7vWe6+9b6hF+wgQYAkQFIkJUqiFkqivMkaxXbZ\n", - "HieWx7NUMqlJTSqVeCrl5I+ZZOIlY3ts2bFleyxbXiRZ1kJZIsV9AwmCAAgCaHQD6L373tt3387+\n", - "5Y9zQTRBUCRINAhy+FQ1gNs499zvft9Z3vO+z/s8tok0chTyCWLNIqlJk75YkYaXx2m5OL05ymoU\n", - "mwF8PUpUCihVQ/wIA16KjtkmIsJZT3DiO5FAo9OZoZPUSaswkM6ogEAM2hEfnyhOK4VLFAwDGk1i\n", - "iSSmM4YEOp6Wp5J2SbZhdTuUfg+YdSDZDBtBmA4dFfcJpBoQ64QdGcZmmCUqpZSIfBdeXIH5X4Z0\n", - "T0gT6z0QVhaX/hoe+AXY3QdBFBZqYDdChdXOHfDRJqRy4FrwwiSs2nD7X8JTe6Cd7Cc1NYHM1anH\n", - "KjhjOnGnjZc0GQl8LIljSZSkZJhmDBVY6NowflSjZS7gSgdXisRjPZRkHAuXChESWNiUcMiik6bE\n", - "VsKU0jxhSTUDjJB2NeKtaVpxG7QAt7aCOeOjuduwshb5IMDw4zh5aFlVgvy9tB7IgC2EJ+SZ0Bj0\n", - "O10tnj+D9THCWKcGLF04t0VSD8Pj98Pta9DXgeUMPNsL+T+/2mv2drGZwUiOkDAH4QTtvcw2vw58\n", - "aRPHsJn4NPCYUrTfcMvrC18D/kfeI8HIBfGjOG58G/lSnsxtAVPFGuk1jxsf9Uh1YCIBqzdCawiY\n", - "hsRtkPlwkur2fprrTUqZBH0dk/ZQH9FWh1K0RhPFOB5WwmRe30pQj2IEHsqIIVqGwF/GNGNkXJOG\n", - "1ktNHyIILCLZFRoJi90B9CqDlmdSijSp5aJoJBgMAiJKCCQgJwl2Bg6ndZsg5xFEW2h1GJyFlc/B\n", - "rAm+9OEHHTwZRWQYXdXxpEZ4YcuCpuMGa4iqE3UzDFsZXP00tuNxLjdERY2Q9upEP6ERWH005y3a\n", - "PTU4zoYn2Tw89Az8agAyDpUSJI7AYAEeUEp1rvaaXc39AbiwtgbpUS5aMlih8tXeKaLpJKmOgeEM\n", - "kpyPUBufxY5nYXYADpfBOB2q+M6kRO7ZCfdNhPvkPBwUkYeAKqz+QWisuLbfJqtBoQXKhrufAtc0\n", - "EbuNE0/TYJyOxGmxjoNPBg0Tl14xcYNhGnodL27isoWIVAkGk0xaHbxInETVxKykaE5UMDSfVS+D\n", - "MpqIWsVXJaJK0TI9TNXCMsroqXtAFlH+MiORKAdtF990Eb1GQxvE9H0KkqbjZHHN5TCwaMVgsUhw\n", - "015oCKI7+I00WjCB3zxJs6BU/bsAIjJzBpwoTLXhltugmYDaDOhJGDkBKLvQvgAAIABJREFU9xNm\n", - "tzcDJox+HD6xDNuOh78qx+HBn4dTvw/nfgtWfwFG74QtbbAcqN4OdzphY70Tg7gON+rQuAFeGIDk\n", - "ssbayggqkWRYz2K0M7iLc9T2xZkMPPxYlKYxSDLoUNL6CGQbIjU8qeDLMEnZgsE6AREaMoalejFU\n", - "lSVlgT6AgY9PC4cYLtuAOBoG4s3i6wkQHUcsfL0GTpSeRRdVqNOyYGzbLOmBJIGfxG97JIxltEyL\n", - "0jcewB/cFcr7B+fBPAuHg9BjD+jaFsFsNzjfgNaTcKQNC/dCZACsFSh8Syn/zCat2VvGZgYjF66X\n", - "EGapXtXmJSKfA3qUUn/9ejsQkV/f8PJRpdSjV3mMbwc/weadhJuJ7wNfFmFcqYvumu9mKKXOich/\n", - "WoObbWJjPrvOKIZWIObA0Uko3wx7MrD7CzA3AZkKfOhYwPea/fjSZnq4Str0acfnaGXj6AxidxKU\n", - "3Da+4WLrPWSwcQ2XckLQdQOlDHzlUNAy5PUdRDolTMOFuNDUl1mKWiQ8j5Rfpe07zETG6KgOSjlY\n", - "rKOpDoMqg4ciSplSZpXOrSVip0HqkDxkMBDozH4wTWBqGIZLRGp06OCpHmAI7DaYFjgGAW2CToyy\n", - "7xJRBr1NUMkcEvUZTsdIrfq4UYvKaJKVdJLGB9gQjCilFkTkD8vw0Shs86FchL/yfkRHhC6ydwju\n", - "NWDQgcV8SBY9ey3WXES0CNzaBx/UINWE+hMw/slQ8a5jg/4UbFdomkl/vk27LwIOCDmyS4rqyAxO\n", - "x4JzVXjSDR2fJ3bB/Z+ChRj4HYjm4IMx+OQQPF2GYJ71h1rUT5nIwQi23cbepyinoa/WpNmXoqb3\n", - "se7vISYayBSBPk2bFg4RdN/ECEz6/SjrZgstvkgm4eGkXYi00YvrJGci1O9JYmoaORWn6pVQmqB0\n", - "F03ZDJkmPYGFplxGqNFvHOJcYFDHZcRPkbQUHdWmHq0SkRWq9NPwxml7DrqxCJIiW69iD6UIrCaJ\n", - "uoOXdInlk2QXB2jlMpTcC/OslGqJyH+x4TfvhkgNEisQ5OC53bBchNtF5DGl1BVxfy6uY+xOyIxB\n", - "swCd45fsZzvsyMK2Dd1/vR3Yb8PabVA5BXvH4VNPh/SaB/vA3wGpCLg6aBEwXDA0GA5AVxrTe016\n", - "Dgi4Po2KQo9GaGlC04L+pCBGFF8c1iXCKr0YgKMG0VjFkwaWeJjKwZc460EEXTQynk/BnCSKRgyP\n", - "sKfGxeVlIAZBCnnFGM/EUXFiegqjtETLz+P2wmgTdsc77Fy0aEYqLCZ8qm04WICHt0xT/LV52KND\n", - "tAVnCZOiukj2M7Dtru4tNhDJPA6NRy+07XYzJC8AL4iIvhkPAlcLmxmMPAP8c+DvgI8Df3rhP0Rk\n", - "P/CvgM/+qB0opX59E8f3liGCSZgZeddpdihFR4S/Bf4p7y6+y49E1yflEZGRPaCnwkBkJQ3VW+Cu\n", - "WpgszZZgaCfkB8E26wwvtMhvGSBWqbK4awz8gESQQ/NrOJQpm5BWVaL+ICQMOvYk9dUq5tA6Qdwi\n", - "plLUmv1o6TJG1EbTdGytF1OzKKlVzokCw6cidTSngyERAqXolQjjrkJpa8ybAY7WYlwsegwXScOL\n", - "t8COYy771xT1XcvEhjNYbkBL66DrDh6j+E4E7Ar4W2Clg5ZrEdhVMh2XtG2R8nS8KHg6pHQfFdWJ\n", - "2B6JhE/a9HB2XGYOF4G/eDPzHRO5/Vb4/G1QHITlZeh5Dr6oi/y5r9T01V3d1yIDn74JPnwzFNJQ\n", - "nYP+p8D8G+jtA+lAsA6PxzBvMkg1q7gxhZNMoLk2gbaOrtbgzx2lvnxhnwMiB28MzVd8gAW4eRwS\n", - "EWgpcHsRrcDwv4Rhs5/UskZVb3K2UueZbTaZqsdKsodGsIuYiqArH6ULQhbRTDzl0rJN4lqbpvJJ\n", - "dpKk2yv0LoRmgH064IIz4THhJGhGdZoSoS+iUdVT2Jwgppv0+gGG5jOOju0liTsdIlGPWfFoqTpB\n", - "TOjDIIZGX2OVs7pFXhM0IuATEmrtEobbTzUSug6nG1ESxQDf9CnHTOxXGaYppebHRU4Nh3wcbQQq\n", - "kdDpnn4IzkAPV0hEvoh7PwuD7fCB4cS9IvJlpVS33CbJMMF+KbItiPVD/22wzQPfANOBsRNw7I7Q\n", - "OycjoAO1KCRcqBspIr0G0XiUyRbkzSRmwkHsOP1zgywES8xGA6IGtFQPhvRjKIUvDp6ApmxMFTCo\n", - "WgSBhy6CrVxsimhajAQx+gOFEpcAiCqFyBotNYHpTuPrY0RtH709SLtp0NGaaKZPkKmTrcPuGKRS\n", - "4OqKVMPn9jU4nIBYAEamSyB/lX+MSObjcPAeuHMx7JKxdHjyk/CiKyIvEq5L/UKAdz0HIrCJwYhS\n", - "6kURsUTkceBFpdRhEfkdpdS/Bv4jMAh8X0RqSqmf2qxxbBLuAWaVYuWdHshbxJ8CXxHh3yv17uTs\n", - "vD4KD8GhXwbDh6URGCNs4ojMhJLPvUF44i6Ndtg38yKr+6KoPTvIpNoEotCJoKkkeIvUzVV0T2EG\n", - "FYqxbTitDtGEh+5Xcf0KtuvQMNIo08TDwA8UzUBjTOsjRomEyuApDQyDut7Gtso0/CgTcUVgeKyL\n", - "ohEkiJd1MusdlA790zBhwuJ+2LLLIxeBqWaNsjnPtDlJYGuY0Q6+4YLtgFODhIYrHhJvoNwlsKE5\n", - "4OPHS3T0BI5tYEQAO0CjgGg2ibdcXhQRcxzu+ygspbts/AmoRsArw6dF5MxmtgyKSM9u+ODH4PwF\n", - "i4AbYS0A+QEcPQmPAR2llB2V6P5F6vdtZeBcnU6mSju3jBtfJnXEp/PAxv0akIp3v08rTH2P9EO5\n", - "Gqr8xk8wcLtixyBEzQZmkCJRjOJHB5mXBn4PBG6GwPRpGS2iARiBYOLRIUrEh1QQIWovoOmK3R3F\n", - "Ga2XelzHbbd4alebrRkYMcAxalRUP3XPJaWqOPoKHk00pdHEo0dptMTEdIU4PgmxyBk+Hc/EwyMi\n", - "Pp4fJ9qwMdMGKp9kdL6O1buMN7ZIKqpj2ooWo6z5DokgihER7FYHe7Zykev3CnxY8yC2sQwWAJXw\n", - "jv823Mrv7GZntwFDWXjgcyLye+Hxo9ZhRUIFhY1YzUK1CrnPgZWD8zYYS7DrJZj7IRz/8ZBbm7VA\n", - "i8O8rtGQASa0MmU/xUC7QTuZoho3MWM+yhT0aEBe6yeJhhVEiOk6MVH4dAjkPIo8WVUBcQg0kz2+\n", - "T6Ct86IyqGnDpDFQyiVQgrhp9HaFdKqNqz1Hr5OhrXaRWIkQ+A7tdhUjV8dIu6CHBYTt87A2Br4O\n", - "9QFCHRofluIQvCa4F5EYTN0NH+gGIhDK2t+2Ame+CMNL0B9AVRPpfREq31FdVeLrFZva2ruxnbf7\n", - "+l93//70Zn7uNcC7tURzAc8R1hg/BDzxDo/lqkIpf0ZE/zNY/wxoo7AnCuMvwtQsFIbCTn8zgMCA\n", - "0/scDnoRXo6A4XgYArVIg5aZI+b1IK0qIwsaxb4ijlUlmU6RxsKsOeTmhNJEBT3ej66lSQXQ0nRM\n", - "peMFVTp6Gl+2YEsPcT/AIIZtPc+SX6GhHKKmRpMEPflRdh730VWLSN1j7CjUbwoFnBabEG23SAQJ\n", - "RNUYdM7T0pK0Iz4S7EaVcmBUoaeF4hw2yzgG9CYh50C2lOdsT8BSZpiYpRH18jQTBbKnofLC25jm\n", - "XC9E05e0BQ6HfIJxQt/1q8ozuQRDY+ECvirgGYdyGnbVlPqHC79zcP6/M9g7i9S2pIl0msTrZTIL\n", - "PoVvKaVeZWtfgVOL8GNboOaCaYSGKDINqVUStxXp2ZskjkGvo5O265QnU6RjI2hrfZzrzJKMNkkl\n", - "+lBuhKivcDQLRxUJRBFQpRVYKCwSvmI6PUqlM0Zvw8UebxFLLrGUWA9Fy7QAnBoDHY/AtIloPgkr\n", - "gqV8PDeKpGPoQQfD9tHEA83BNAQdn5LvUtJ8EuUmxWSaTkWIN22izWmC/joHzuuMmgaYLYzgBaaT\n", - "22if8CBdhdw66FnYKyILXcIxAHl45DD84kfAyYLtgbwAW/Jw4urpiYzXoHccVnsJu7fm4fwMPLMD\n", - "9q9C1IPZQTgch6m9sGUBIgnYXYHiFpiLwCefhT/PQmEYBsfA0UF3UwxrEVAarZiJ+DDoNxC/RtN0\n", - "8TQN3zuIVUri9gcYqkFVFfCZAnsa3VxiQDR2+TWU4dIWYUUXskGDKDq27yJ6BN+Nojsm4rUJoiXQ\n", - "6gwWFfcVFCczJc73D1ApW6TiJn3tGDp1iMGgEZaTcwHYSUhpUB2B6Q5wFEqXk49IQlrCAGQjzkzA\n", - "1A645wjE3TALfPLH4Fi/iPzx9ZwdeV/07AohghAGI++2bM4rUAolwpeBX+Y9FowAKOVPi8gZ4AYY\n", - "/UWYOB82qvYXYcaCUk8oCe9tg2i/R0oEo2aQ8DyMHhs/WsSJlXE7TaqiUVgZIZkPuMXoEGg+vqEj\n", - "gY/0BAx4K6x7k6AlyEYcNL1D1a+QZhBLBkn4CsdXuE6DwIoxnoaBehytY9CpWzRTDoG2RjVnIxFY\n", - "v19YvTlL3R7mjNvE7y9TtJpMlKMk4m22uj6LVVjN+ej9A4ihg6yj3En8H0Dj7mWGZmCqBMu7AsZj\n", - "eXKqyLINvZ2A5BwsvgjtF9/GFLebgBc6bb0SELTAtMMAZbNbBjsXOjw2ohFemV/FTVOhnPn/UoD7\n", - "C/h7gRrkH4P205e+34ZjR+EOHcYnoboO+gtEbyoyjk1/DIaUhZ1QrKko6SBCQneImQFoNqKlmCqv\n", - "4iYCKvERHKXQnQKa5qJVFokbMGGaDPk+7SiUomt4fht7Vwo9nWOyNUo9ahHxbPboARXNI2+4BH6S\n", - "ljZEy/WxKvPkYz4DukOv38HRAywvIFbXUSaoiE+86RNfB6/pMNiu0/YszqdXaCY77KrA3Us+AT7z\n", - "YzBh58kGFsdu3ELQHMKa/RTeY+dgz1MwJCJ/0G3ZxVfqZEzk60X4VC9Em0AJjlRDm4mrCAVdrZtu\n", - "R81X4al74OW7Qg5IdRn8FNyowZ55eHEoNIkbaUFzEh5sQvOPofE0VH8Vpm6Csa0+9S0Wq4lRrHKb\n", - "fCJJVO+np9ogG3MotvbjOlPQdPBjffhOAJGTkFoGq8aI5bOdBlFN4Sdhp4K2Fjr+9otPf2WdZipK\n", - "x5zEQ0eCKkryBJ5LrKhRDRxSahndj6Bi/fRaAYa/SCdWZvs6HJiHB++B0XWI29BOhCZ+TgDOGAzf\n", - "J5KMQ/uJDcFEHWoONCOQ6p5vnsD6jTC2DsqAM/dAOhHKwVR+AfKRbhnsqlo9XC28H4xcOfYS3tne\n", - "htTxdYE/B86I8G+VensaEtcjuhey0zB7FH54C+yqhPevhSWYbUFPGvpTsN5rsb2wzkxslERgkCkF\n", - "rCctRApUzrUp/q86tMr0/JZBW3dIZKAfh2LCQe+FiWqD8eYZShJnqR/i8Q5tP0m22Us+oqP5AW7d\n", - "oe2uMJyOMOyZaH6Z3JE4btpBHzzH0mDAkAW3tMFK9SDxKCk9Qll24Fcq1DMzrHttts5FmU0EKFUk\n", - "3bHwhwRpa8SsJIlWjErfJOZKjeMDTRIWqGLYwerrAcUMrJ2GzkNQOweZO0TMMninlVJXVLJRSrV6\n", - "RY4choN3wKJGGJg8D2MVePAaPH0tLkBxFvp3dNuObdCPQV8BvnuZ8a4BX34jY7Bum+SfPAq35eDm\n", - "KpRcBm5PEMehHYOy2OxyNZZ1j0rMJK65tLSAprJItGP0pGL0nj/Pwtg5amYE24eBRpvWvE88A/1D\n", - "DpJUxMw4O1yNuu9SyNTQIj5lv594I0ot4WN6PlHRyOuj1LQe6vY4RnmU4OxRir3Pc3xXk7rhMroG\n", - "yVVoOR7pdVjZCv2PAInQGmZk0eXBKZf2X0DwMZCfgfkesAQaCdi5pDOdmyIen2LkZYty3xpL2/YT\n", - "TBdgMg/budixgRWW2o8thkSO9tW/qZ3rg9KSUqqyYU1swhbiRyD7UzB1ALK3Q8qGI9tg8nlopOH4\n", - "GOTrcOoB4Pvd8/+34MRuWPppB//+FMHoBJpV4GTQINMzRzpTx+pkKDZ34a/GQZ2DXaNQjoE9Dtkj\n", - "6HGfvqjge4qWD/ucMHMRJKAHoaed5pyt04l5ZIM5PEPDS7RRbh/eyxpqdZ3MMWjerrNNXqaxN0cQ\n", - "sfCjRaae8xlNgB5AfxPOCDgJaMch6sKBRfBbocLwc/eF4nvh8a2UckWSD8MTPw4fWAuJvasZaOSg\n", - "72FYuQWGDfAsKKUgKrB9D3gfA759ddft6uD9YOTK8RPAt97tXAulKIrwLeCLhBye9xyUUoGIfA2e\n", - "Pg2nPgeRneCWwf8OzMyB+/PQE4Hh5BKa1eJsNktHdwmcMrrTwvsPSqnHRUQr467ppO+Is6MRCj8l\n", - "GzCTC420xHbY0uOwuw0lDx5J+5S9Mp4aplN0qMUtsijGDJ+0GRBLgHGwQ2QOjIfhyEG4tQl2IsbZ\n", - "qQx+J8qg0aEV6UWtJLGddabH2yz1tkhbilhHkTT7aZWmSNc7qEQnlAQJojTdOFapSexpSHSl4JsG\n", - "nEjA6pdg6Jfgw3tgyIGKCafbIvKnl5Ys3ggV+N5zEJ2HfT0hWVTLwzPNa5Bp667rVx6Enz8F4wlg\n", - "BVQe/jH0Knrd973hOdu9wT4mInMaE/9NhJtbQs5TOBJQMxXTmke/qrHcbyLozGtR1EtD+NYi9kAF\n", - "a9JmZ0TR17LpAKcT8HIE9npw0yHFwgHoiyvaCQ1MjzUvw1CtzarYuLYQCTSa4lJOZ1ljiqDcIdKq\n", - "0HajIBNQmaXaWKD1LDQsaDkwuACmCccK8PSHYUoLv80TNVj5i1BxOLkF6gqa62EAY+6DbDPK+ngC\n", - "vQUQJVMtE98KrenB0BWw7zLz47LB7PDt49GJsBmrbMJ0C/LfvPx25q2w/za49zzMDsNQD0z6cPgg\n", - "3Psg6Ofh6xPACxv0c1zgBHBCRL60BP9zC/0nkyQjLXxpUglSOGcmcactGMuFXVhzs9A7ACyDVAlW\n", - "NSItH8MDbwxED+XW24Dl6Zimi2X246kpGlYBJ57Adj3sSJy+uEtgrJMoN9n7A4uTtwhmf4fdczbb\n", - "j8PIKpzbC8u3QjMDcR9u0GBFwVYLIqlQ6j3mwT3zsHKniDxxsXzWfgaOurD8MYj2Q7sG/tOhOJ/0\n", - "wmICvAHoVzAYgfZ2iP6kiHxvM7Rh3i7eD0auHD8J/Lt3ehBXCb8LfE2E31SK67aW+HYQ6pDkJmFv\n", - "DG5+HpIOnN8Dh3ZD4XHIjkLsYMDucom0W+JEHIbKcGYBeLK7j0Bk6KxH31CDTBuiVmgdcnwYykZI\n", - "ko3noZ2EJQXRNZ/l54u0x1dRO2Lk0lYoiJS20W2fPgVGJFSVbE+AvwqJQ2DrOkEqHRpaJVuY8RaN\n", - "WATlx1FKGDobwa/GaN8eoJvLtPURooFDxIpjrrtEUgFtzSYXwFBXqMwXODICpW9Dz8fh7l64eUOr\n", - "5Fgv/OPnReT3r4R02n1i/RsReZCwY7H6Vts73wqUUiUR+d18OPkxIK+UehtEykvR/9kIo4k42WqE\n", - "REeINJvEt5jMRBTresB63SKyGKNeysFSFEsdIz9gsy2mmKiHRmU1DSQNxpbQ/6Q5FVJRelsOIgb1\n", - "WBRNaeAqtESBmlXm5vUonajBGZWk6fnoxWGCp3yCxjTc7ENa8PMa5SDgprOQsWA5Dc8lYD9wxzdg\n", - "qS8kQk4aUP4k3FqAXWtwZB30LVDrh5QObcOh6fvdYETQlAolikdmiBy0SEVFMiloPLt5a/v4X0Ny\n", - "BDrr3Szd63CN+j8ANxXDpHTvDKx9GLa0oDcKMwNQicHKcaXU6wVKroMZrZPRmxiqQ2ZNZyBQuLFV\n", - "Tgy26aRrEN0K367B+DzsW4LGMOrwCZb2d/jQ87DqgB6F4v6QezbVAjvpcy7aIXBjxLVJfHsYvb5A\n", - "LFUjOtygbUPaBsvwWFuGyl9B9SOQK4aZ2m0vwyM7YSWAD/gwUAyN+wYUNFOQLkBxAIYLYVAxkyM0\n", - "/r0QXD8vIocJVeYdMG+AQ78KgznIZWGHC8s94XHSn4OlAUInietOgfv9YOQKIMIEYery0Xd4KFcF\n", - "SnFYhFXgx4HXeSJ5d0NE+uGGO+Cj5y96XNy4Bv4oPOjAqd+GlV+Dl26AhA3RdZibg7U/AIZFcneA\n", - "VYc+F9JPw8oeMCNhZ07qGMzeAg0dcgrqDdCXYGABNLdOJXICQ8ugmyZRs0JNBWyzY2TbHs2kzfpO\n", - "WKuBNQ1aA7bUHAq7AuzhHFreo9SXptKyUXGLXG2AYt8eEmWT5Mkmxq4qRvoUpfQNTJ7QENehaq7j\n", - "nKtTWoFvToSEuOUYrB4H6zgMfQZuvKQDbKoM/eOwdoE0eEXotlSX33DDTUD3Yrz0hhu+JZjbkiRL\n", - "AbUhRVwUXiyN4zloOsxLls6qUG+uYv/hI+Cl4LYObgvWXLBN8JPQ9GHHacgPwWocxmIhrcY2AjLN\n", - "FieiinjTpxWxqHo2QVExrXWoKig+WEPRj1coYOwuo39mG5qfwusU8CtDFMrH+BY2PStQnYWeD8Nt\n", - "Tqiy2dedk3N9ULob9p2CbBtueRJO3AbOFNR6QXc8ZH4elUhjxyM4EYXNMfo+tkiuDp8swNrdcPgW\n", - "EflDpVT1R07ZW4BS/gnC7MUbQItDtNsN0l8G/ylYuAmKGTg/ANYDUL+srYiIJEfhX42g37+FXN1E\n", - "nHWs+CyFoMyYtk5PxqDzzSUYHAlbWAor8N1iqBi+CmsaHPqJUHT21ACkapAtgjMYsGbEyfktlHme\n", - "FXMcx28iGTAbNRyziorDN3dAvQPrf6dUcEQkWYfSJ2FYh4YJlQCGnwRtFzgeaAGU9bAtP1cFKw1B\n", - "Acoal+lc6p4HFzplTopofwDrfwa3JOBcBIba0NcMH5YmIrD6BeB33sJybSreD0auDJ8H/kEp3Dfc\n", - "8t2D3wP+B96jwQgwCGPq1VbkAOMlSO9UqvZtEfkJKO6E7H7wa9CcgYFPwK5JGLOhZcCR7VAowu3f\n", - "h1YS7CjENPjBGGTL4UXEdKDWhC3TsPKz8KGKRf9hi9k7DIaSARYaS4ZDM+OjYsISimwxfLh/+hPw\n", - "8QdcRk6uUt7vUs5NUF0Zxc0/jbHTImJtQ2/3kGiAaircmE7f4BIrHKI0lsAWi9rZGvwRNF6Ao9sg\n", - "+VkYGIedu6D4b8EfA235tVOkvfLH+7iAYMnBvbkPd7nKyriHmUuBC8v6FhZP3of6ewuMb8Dty0r9\n", - "RshPSn8WDtRC0zYlsK8Vtpg/m4IgD6ezkFKwkADNUZjrLW44CS/mYP00xAcgmISJFuztq7BW/SEz\n", - "X+ghot+E0UqiqxJu3MJv3U5zvoKTniH/LaVUXWT8M9BzSfainIEhBU4kfD3chMzTcKgHSgp2WpCJ\n", - "5TmZbjE3mKHdUkRVg/HpJh88CgPt8D2MQe0DhIKJ7xBqx+DcPXCgG2gNFSH9BDw3DoX/+0cFSjHY\n", - "vx2m4hgqjm4DDBNvt2gnwG2tECs48BdtqK3CEKHOTKHLO8mC2gIL3wC+A/l/AXv3gJeA80GAajj0\n", - "p3TQl1nDxRCfQG8Q15vkVn2smVD3ZLAF5v0iMV0p6+lQB2RuANBg5xdhKAOxWGgGGHVgrg/GnFAB\n", - "Xu/AoQkoHN/Ip3k9KBVMi/T+FThfhKk49DfCY8D1YXgBem8VkZ43s69rifeDkSvDF4D/850exFXG\n", - "3wG/IcJepXj5nR7MJqATunJeilocvCK8IgZ0uvuDSOpjcHAC7py/uH1PBx65J7xYxKaAFCxGoH0S\n", - "Gi3oXQ1JdTcX4bm9kIzD1pchbgunfB1lBfQmBenAQjzBOsOojoObKmP6TYIa/O0eGCzWKMzGKGVr\n", - "OJWjYNt4JwL8uzJkulkNUWnMOVgP+rGsBdTDJVoPE6oyBoBA351w5wAcmA0DsUYEvnkrvLAX7tjw\n", - "JLqShvUyV8l/5r2D4vdb9NyVYjTXQ2TOoRKJUtcGWKnejfpBCpxUeIWfEBEdKENlBvK7wpKIIpQj\n", - "P98LrTmonIboXkgCNQuq8TAFv56Fsy/DthYkBuCuM5B2oNADGbVGsu1xKldDVAPd0uiZj4AUmds6\n", - "hFucCXkddbBnYX4LbN+Q3dK9cFnTG56mC5PQF4PIizCxFOWZjw5QiYbW9c7cMr39FwORC5gsQWYv\n", - "72gw0nwWDu8HbxzGq9CKwok05L/9RhmbLGzNgaPhdFyciEnEAcghaplazKSCDZVuhuGVzGFS5CM7\n", - "4ROThO1h58FapP4d8F1w9sL+J0CL2EzfqdOOKHq8Jba4iqG6hx/xKSRgpQ9+4R9DPkgjAo/8tIje\n", - "UEqdJjxfERlehriCZQ/6HOhLwDJwpA86JnRWoP4NqF5B51LlIah8AYwaNAwwyqHy9Ok0TFRgZQR4\n", - "3WBERHoIy5+la2Wo934w8iYhwjiwm3evw/BloRSOCF8C/g3wK+/0eDYBCzC/DrP9sKN7w+0YcLwH\n", - "8v9w6cYiYkLvZ+NUki5PRT12rMJQE3aU4KVpODoauoimVuGmBdgeg0O3hbpYwxVY7IG5rZBZBl+F\n", - "CYftizrnxz3cREAh3UdLTZGtmehGBG9lHJejRPUW/otw7O998JpwZwE+YIBRh4JFPdHBzCQwW4pA\n", - "HBrZLLWzTbxl8B6Fkbtg4LNhHXrFhZ5BOPjSxYRH2oGDL8CTB8Lsz1A7rLO/HMDKn22mSNm7EUr5\n", - "p0Riv71K+VeiRG8wace20Vo+gPXQMBQAVkMyQH6D4d/vwJP/L5R3QToNjTjMAs0HISmgHYPWLugt\n", - "w5YGTMdh7VGIN2BbBhwTst3AYagCq5Owu2GxFFFkZ6MYtkMn49PsqSHpElhAt6Ol+DA8+6sQDMBE\n", - "OQx2lmOwfAZKsfApG6A+AUUXdi4YzPbvoRpMkjvuoHp6aOV78QZP8MRtDX7q8YvHTisK/lUv0VwJ\n", - "umaFX4LKAcjtDk3xysUc5NIin2jCSaXUZUUo27DugJ/GKbUo9Jv06hEibh07ZrHqKirfvvT4F5Ed\n", - "B+DT93WtAQDykPo26vYlFl34oAMDHShFocf2seodRgwY1YSsr2iyZLMsAAAgAElEQVQ0w0AzeSYM\n", - "RCA8Bw+UYeWjbOhSgvx34PgXYcu5sMW3vxfEgehTsPUYzCVh5fwVipadgaXTMLMDpioQCCykITIN\n", - "nTYXyzqvgoikoe9zsGcXJAMouiKx7yllHb6Cz35LeD8YefP4PGEXzXVlu3yV8J+BGRH+nVJcUVfF\n", - "9Y6ukd5X4MGfg5PjYYfJCrD6XXWJbLmIxAbgFwdo39pHseWyziJnb1zhwPOKm1ZAcrA7D/ed0Hhh\n", - "spfDt6XxzTZ+qsbjcYuTDQgq0F6FgTthdgJuWVcMrQVIJsJMkOJcbDd9nomrFO5qhsSsIkKO0lgL\n", - "V20g4H2vSw41lFKWiDySZ+XfJSindJAIVqdGMDoPWaGvV3HfHGztprAPT8LqTdCehdQGQuCuAjzx\n", - "Mjz6ndBevV2E9ptK/f7XCXt5mMKJLDRsWLXCx9cmwBz0PAI3B7C0ReTflOAQcBgW/ido/T8w4EH0\n", - "NNxyNNS16dwOH/06NA5DdQqCGIx4MPccJO+EVAuqG26IQihj3jaa5EoLNDPjWJksTjqKZ5RwvCbs\n", - "iIQ1voJSallE/ggqH4H4TvAqUPxL8Nbhuz8HY+NgqvDeuvsETFSzPHnnKMmaICh8SUO5l3a5l8pI\n", - "g7U0jDZC7YoTvVC4ynoiV45up9MTIvJ0D/yTXfDJrdB2QT8N9yZFvttS6jX6MQ04fQL+2TAM5WhH\n", - "67QV6HYJ1TIJHnEuo5WSg08OwtZzsFsP+2VnhqCwC/qWWHkEDu2DZi9YKSgL7MtDwoPzacVSHTwt\n", - "VFHdeklZdKAJ5sAl32tJRH4P1j4Go9ug7wXoWYCt+XCL4RTkPwocu4K58kW034Ol/x6CAHQHRlfC\n", - "NuLjitBI+FUQEYGBn4V7xsIHLY0wm/PDz3eV0mfe7Oe/FbwfjLx5/BPg37/Tg9gMKMW6CF8l5I78\n", - "2js9nqsNpdR6eLLnR4Eo4dPsazQS4nD7rTDVj3usjNoZJVPJ4RkuRw8U6G1AwYR7ivDy8HZOHNhB\n", - "shrBaFqIX6PYP02hWlbqb0WkD/KT4Wc9PgD9ymKtrXHSG8DzdBoZncxanPgyCEKASSsClROXjNuj\n", - "6wGilHopKvJ/WbQ/3wN3JiErsHwAynNoN59jJrDZ2g0qthVgRYf8FkhtuIAs5SA4p5R1iPDm+T5e\n", - "ByLSsw3+u3uhMw6nPDh9BA48BB8x4CUbdtwAhZth0QP9FHz2KOwsEZ+HD74ABzbchJ7LQFqD4jCM\n", - "L8BAt5QS7YGXUuAugpaDshfyTVJuWG0LOiF50iifJaugvM1G8ywsPQJH74fnH4KfEpEZpVRTKbUM\n", - "/NVlvstvwcoYoIP0wMQXwBUNL2ISb/k4EZ2a0w/FOO1DM/j3wTMTMFQPZWRWHoXguinharDnRrjl\n", - "43D+Qu5mBxjfhPtFZPpSRdg++OhuyOcgosNoB3rO4MdW4est+M+XdgqJyOQE3D8C+ihULUjm4YMu\n", - "vJAI629LUP0dKHwSRqtQD0ANg6nBLcchWYfDYzDrwvgl5c+VLNgLXIJud9hzMLjvIi/mAvpboI9d\n", - "+Uypl2Dp6xDcA+MKziRhvg4rX3md1t5RGJuE/RvGl3bg1gqsfhh4Pxh5p9Et0dwIPPROj2UT8VvA\n", - "MyL8B6XCp7/3Erpp2MuQNy+iF27bDYUkvt9gddjC7dVJOH20cgW+uxXyX4fSwSz5bZPEmhGM7glt\n", - "GTcRnKnCPhF5sHth+WNo/xjEd8DpJDS/F9D8Sgd+tof2Tou1XTa5HtCVQ9VoUT8DPP+jxmcr9WJS\n", - "ZHAbJG+ExWFoTmPsnSRbarM2Nc/KufBptrcD5hxMb4Wh+VChcTkDz2Uh/7dXaUrf00jCrftAH+8a\n", - "wBmg7oAXOrD+GJz8KHgf3vB0eQ/MN2BXCSMFuUts3DO1UJqjJ/Hq3+dTUJsHuwBHvghbTsNzN8GY\n", - "Bp04rKzB3PNgrSRQv9APCwZWYxfuiZ2EjttT0HMWJuH1+V7dMlKXnyDz8PIWqH+ghbhF1sZztGrb\n", - "aD4bAc+Bjo39FLz0N/CSAKvXW+asH27dGfZNv4I4eDuAMzDFhq4wERm6CXZ9GI77cKIGGQX0gv59\n", - "KDaVyl+6/yH4zBQstGDSBN+EThTcGdh7PiyvrED9GEw3ofhBCM5CJR0uQ38W8v0wU4Tat+DEEBxc\n", - "Cc/BpSw8l4bCV1/nq5UhT8hLM4OLv17MgfOaAOaN0L3mfT8McqZHCEsz8z9CYyQFPZcp1/a3wOy/\n", - "0s+/UrwfjLw5/Dzwd+/REg0ASjErwmOEEvHXXdvXtYDqalHHwNmH9USBpeE6kf4obgPUfwFegpNb\n", - "DfhQgr4lCDSbZiZCqTEU9saOEGpulLvOo18SkSTgK6UsABH57nH4lZtpHI3SiDQguQBeDf70zQgR\n", - "5WDHPpgfCFWXSOJVV2nFs5hAIRsGIxDu9ul5WB0CMwqdPBT+RCl1fjPm7r2GZKiq9Rpl2j5w07Br\n", - "/DItluPgHaXpOawlYduGp/PtRXixDSoGIzoYAZwZhJeaYB9XSrVE9D+F0qdD8bKTWfDOQe17oE4q\n", - "pewRkf5dkJ4INcg34jLk7NeHCq3lvyUiz7XDXPxPDkLdCj14hk9BfA2+rpR6XfG46wCX5Te9Dukp\n", - "09eVl9ch6O3aBSTAMMPOmVdBRCJTMLYNFk6Gi9UzCi0XtAUYmIe/V0pd0Oj4YdcINgZkIH8XaOPQ\n", - "OA88ArTg+Xtg9oPhOdheheI3lFKvKZHABV5M9ml47COh4V3OhsUsHMpA/m+ubIpetd8KP4KsugEl\n", - "yEs4XRtDveUcdGbf6ue/WbwfjLwBul40/xT4Z+/0WK4BfgP4qgi/rxTXnULfZqMMz0/D/XfDfAS8\n", - "LbBUwVk/BFngmFLKFpE/8TF3VqntSCBWBntxCveUFqqQCq/1Rmld8npJRP6gDHclYMqGwjo8rZSa\n", - "ezNj9KDehLEBaC9B9lmyu6uYY03MJJx3Qz2JZhROV8D6CizagHmF5Lf/6tGAxXW4YeqSi3gBDBvm\n", - "WzB66XtaoPmol+DlNGRGYM8a+BqcHIbSQ7A6C7O3gmjQfAlKP7xwfIQGjzJLKF7ldoOGV1CCQ3Pw\n", - "uckNT/0NiJwPyZVzV/r9uoq7ayKmWif538bRB11Up4XzA2hdNyWZy2Edjp6Bmya6whsAHTDOAgou\n", - "DbbLxVC441W31zXION3s0iXYUiB326PklMKVdUoygGVGobkELzcvMUjtqry6hMHp1y6zv0dE5DHe\n", - "9DlY/wEcrsL5j4A5BNYirH39zV4f3g7CcnbPEXjyNjiwAgkHFnrh+SiUNl1ZeVODERH5beAgcERt\n", - "cPAVkV8mVDF9Sin1i5s5hquAg4Q8g9cQo95rUIpnRVgCfgb4y3d6PNcaFhw+Aje0YOs4WC0wTwOL\n", - "8FcXLiRKqZqI/GYZ94s3hiSAZgvMJ0MvjzelVKnC1PBb0nUpwLMvwS8nwX6c/ruFfUGS2GwJZxCM\n", - "GDz6Kah+GWrf3qBmaYtIBszdEElDawE4fw08ZN616MDx4/DhLAxsh2IAchKGz0DRgn88Cf98MpxM\n", - "B6AAyelQyOElWD4FD38Cnt8HKoD6EagehcgYFB+Dzhwwd2kHxyXiVa+CC0ePww0W7J4EqwPGadCW\n", - "4Gtv1SNGRL8BbvmEzb2HbNJOSFZ9cQye+Wmu4/M/gNMn4UUXbtkKlgv6GdDn4TtdEb5XoJQq9Yoc\n", - "expuOQjLcfBWIP08ZArwqnKJiAzAjl+yuPG8jz3VS2y9QyVV5yV/O5V5C069FeG3bmD5et0rGjAJ\n", - "iUlwO8C0Up1nReQQoF972fbqt+DZEszcA3osPFbzP3i9TqWrCdmsjj4ROQD8C6XUr4rI7wNfVkod\n", - "7v5fH6HZ0q+/XjDS9bS6ohTkZkCE3wXWleL/eKfHci0gwseAPwJuuNbibtfDmouIAezMwVYbGp2w\n", - "ZfA1yqS6yO5huD8FvRa4FXiyAY9fi4tHQuRDaeSXAvbv1hmpNzA6bbY/B5k6PL8FHn1Aqc4zG77T\n", - "Ntj6i7DHgKQHSxGYmYHSV6+HjMn1sO6Xg4gMDcBnMrA9AFWDE+XQhK0WFbl5FH5qnJA4tAidJfhr\n", - "pdS5De/Xw39F9sPUT8NuBREF50w4dxhq37w0A/IG49GB7TnY7kC7HR6bb9knRmT0X8KPJy6W9iBM\n", - "0X9tHE7+J6XUpmrPvJ11797Et2Zhlwd2K5yLy3YCioiZhnt74a4IGE0o5uEBX6nZV2+X/RR84i64\n", - "MW8yfXOa+ngCUQ0WcgEnv9+A31ZKXTU+XXit6fkC7LgJJl3o6DAdwLmvKuWffuM9bB7CzpqrHwz9\n", - "qDXfzMzIB4AfdP/9EHAXobzuBeZwehM/+6pAhCjws8Cd7/RYrhWU4mERzhNyR/7wnR7PtUb35DvF\n", - "jzBcA/CVmhaRM0AccK7lE0xbqSdFsoMw3oTJQqhbcUFhts+C5Cutg6FuyvjPwWfqoQokwE1AameY\n", - "juWpazXudxu6Gaw/E5E4EGwM3GyljonImTnYQlgqWeym7De+3w8VPCc+Bz+Rv2j1vhd48HZ45jRw\n", - "8grG4wNnuj9XAfogDFxC4NSAXkXIfbpuhfC6QdzZ7s8bbesCPxCRhwnLYJ3L6+rEh6CnBYbvsvdI\n", - "mfqZMu1k2IE080OlnKtM7Ddvgf374CNzF4tIO2LwDz8jIv9Rva5Pz+ajOz/XNCuzmRLQOS6SvGrd\n", - "1+82fB44ptQbH/DvMfxvwP8uQuqdHsj1DBWife1TqQDtc9BphW2iG6XuCzGob0ypjsOW2MVA5AJu\n", - "LEDvHddkqO9yKKU6l8sgdX8/o5Q6d2kgsgFb+f/Ze+/4OLLrzvd7qqpzowMaORIgmHMaTp7hZEnj\n", - "0UgrybKsMPKT5ZV3V2v7eT9rrf389Lwv2ZL8tLZ318/yyrYkK1hhlEZhcuYEZg7JIQmCIBIJNBro\n", - "RudQffePaooYDjlMAJoA6vv54AOguqvu6b7dt86995zfoUc/54iANeyuSEDD5tmx+HIpDsJw8K3H\n", - "TIGoxuUFPM4rlFKlyvf1ItsByQEYmzbmBVLQNAqJDBRnwTGr2worYm+9DYdz0OXAygpaVMymM5IA\n", - "ApW/g5wX2MdFg5/PISKfn/Zz5wzbdzn8G+C/VaHdqqIUr2OtZi006fsFROlNODIJbzRbe/2mwOFG\n", - "OJyA4vQARAH9AudrZRA7gH320UC7wFinla1y9NVk9Bkr3XukskqddsCLnXDmtauJjZj/ZPbC/oJV\n", - "BbiMlWK7txV6T3MZKzBXjuhvr5kFlc/LoqsVNZuD0U7gd7Bqn9wN/MN5j19yr1Ap9fmZN+vyEGEj\n", - "VuL4jy/13AXK/wocEuEbSrGn2sbYvJWKKuv/gGfuh11rQASmjkDsF+ct7w7DUAkSLghOm90fb4D4\n", - "s3Nt9yLkFPQBG3RwTQsYPhGCaBVrvYBS6qSVUjz5AHg7oJCHiSch/Xw17aoWleD0v4fH3wU1S8Es\n", - "w9RemHxydoK9J/ZA74NWuYmzpB3Qr6jowiwmZi2AFUBEvgxsBvYqpf69iPyVUuqzIvIg8B+BpVgZ\n", - "NR+8wLlVDWoT4SvAgFL852rZUG1E+E0sRdYb5kIIrdp9Pl8RESeAukhBKxHHWuj5MKwpgS8PQ344\n", - "dAZGv3q1mRgzyULvdxHfHbDsfliZA0cJ+v1w5CjEvvkO2ztzaJ8IVsZgcS4zrK7nfhcRF1ac0Kz1\n", - "j9VG/SdgdSd0pCDrhCNO6P2RUrnXZqvdavJOfT6rzsi1UM0PqggtwBvACqW46mj1hYAIX8UK+vqY\n", - "UpfeWru2tq7fwWm+IyJNULMe3CGrumzp8PWQSQOLo99FpBNCa8HhhugR4Fh1Yo2uHxZDv18KK8Bc\n", - "Wwm1K6CYhsQBZcn6L0hsZ+SK2+aLgKEUv3fJJy9wRPBi1TH570rNbvyMPTgtTux+X5zY/b74sJ2R\n", - "K2qXCFZBoA1KXVChb9EhQg9WCui/UooXZ68de3BajNj9vjix+33x8U59vugidi+DPwS+bzsi51CK\n", - "XuAR4F9EaKuyOTY2NjY2Cwx7ZeQtbdIO7APWK/XOFV4XIyL8J+C9wB1KkbvU86/8+vZMaTFi9/vi\n", - "xO73xYe9TXPZbfKPwJBS/MlctjtfqBQN/C6WhsynZjqg1R6cFid2vy9O7H5ffNjbNJeBCFuBB4C/\n", - "qLYt1ysV5+MRLKn/f11da2xsbGxsFgq2AiMgggF8BfgPSjFVbXuuZ5QiJcLDwEsiHJzNgFYbGxsb\n", - "m8WBvTJi8XtADPhGtQ2ZD0wLaP2OCM1VNsfGxsbGZp6z6GNGRFgPPAXcVLnJ2lwmIvzvWFL/dyvF\n", - "NSsV2nvIixO73xcndr8vPuyYkYsggg/4DvAHtiNyVfxnIA3839U2xMbGxsZm/rJoV0ZE0LEyQ+JK\n", - "8Vuz1c5CpyIStxvLofvBtV1rfs2UKjU9lkPdRtA0GD8I5TcXu8z3lTLf+n06ItINtZvA4YHYISgd\n", - "uliNIJu3Mp/7fa5561gjOsQOzMexxk7tfdu10YC/BlYBDyiFPXhcAyJsA34GPKwUL139debP4GQN\n", - "DoEHYeXNsGLKKgXeG4TDh2DiW3NZcGy+M5/6fToi/rtg+T2wKg2uIvQH4Y0BiP7j9VL353pmvvb7\n", - "XLOQxpp36vNFl00jggMrc2Y58G7bEbl2lOJ1ET4KPCrCQ0rxSrVtmgPaoOsmuL/fGhwAlkxAeQ28\n", - "vBw4UkXbbGYZEYnAyrvggUFwVW4GnXHQOuH59cDrVTXQZiHRCl03vn2sUavhpQUz1sxqzIiI/H8i\n", - "8ryIfPm84y0i8rSIvCQid8+mDW9tlx7gRaAWuFcp4nPV9kJHKX4JfBL4iQgfrQikLWA8XdBdOjc4\n", - "nKU7CXVrqmOTzRzSDl2cc0TOsnQC6jZUxSKbBYqnG7rNhT7WzJozIiKbAZ9S6nbAKSJbpz38R8Af\n", - "A/fB7KuditAuwl9iVZ/9Z+C9SpGe7XYXG0rxGHAP8DngRyKsrbJJs4hZAvMCDldJB9Neol/4mFC8\n", - "QP8XDChfc2aZjc05ykW4UGhI0QBzwXzWZnNlZDvweOXvJ4Gbpj22Vim1UymVBpIiUnOxi4hQI0JI\n", - "BOflzrZF8IqwWYTfE+FxrHozOrBGKf5qpmXMbc6hFPuBzVhVfp8Q4QURPifCu0VYLUKnCI2VnyYR\n", - "mqps8lVSOAZHBdKOc8eKGrzpgcmD1bPLZo7ogxNFmHSfO2QKHA1BdFf1zLJZeOSPwbELjDVHvTB5\n", - "oHp2zSyzGTMSAvoqfyeA6ctJ+rS/E5XnJi9ynT8FPg14AU2ENFY6aaryOw1kATdQA0QqPyewtmS+\n", - "grUSkr32l2RzOShFHvhzEb4M3AXcjyUs1wl4sPoKQAEFoL0adl4LSqlxEfcP4UfvhWVYfn2fQP9T\n", - "Sqn+KptnM8sopdIizu/ATz8MyzRwAf0a9L8C5QWxh29zfaCUiom4f2SNNT1Yt88+gVNPKaVOVtu+\n", - "mWLWsmlE5HeBqFLquyLyfqBVKfXXlceeUUrtqPz9I+A3lVKp8863Vy9sbGxsbGwWENXIptkJ/A6W\n", - "lsfdwD9Me+yAiNwIHAQC5zsiZ5kvaV8iorfCH74P8nWQOXv8KDQ8AX1Rpb5ZTdvC8IEe2NAFuSJo\n", - "b4LRDz/JKPVqtey6EHaq3+JkPva7iIS64P/aCp11gBPMJDiOQHkPfCmn1DPVtvF6Zz72+4XwiNx8\n", - "B7z7Jhg4eywP+g+g9Sh8SSk1ea1tXGwc74Mf5ZSaN5lb77TIMGvOiFJqr4jkROR5YK9SapeI/JVS\n", - "6rNYlXG/hrVk/6ezZcMcUt8Avjp4y4euB6IvwyoRMaolTqPBqtWw8W44eTZAaBkYP4QHReTYTHxR\n", - "bGwWIUuaYPVSGHVjlUIIAwVo7IWHANsZWSTUwoZumJh+zAXmEuCotQV9zWOsBqvPH8d7wPFDeEhE\n", - "jiul5n1m6KzqjCilfu+8/z9b+T2MtVqyUCgVeXtwbQH0shUGXa6CTQDUwaZlEJ8eqeyF0lKQY7CE\n", - "Gfii2FwbZwOz7cDqeUWDAcZZR+QsPsgY0FIto2zmnjLkC+A//3hFwGpGJqH1sHk5TE4fx31Q7AHt\n", - "uDWO75uJdqrJoq5NM4PExmC4F+qmHzwIzQl4XSlVNWcEQLjoTW7eL5HOZyoZRY9iDVj9Inys2jbZ\n", - "XDaDUSglwXn2QBkYAG8ehqpol80cMwavHYZac9p4Og7ePsgDMxZgepHBWl38ofnFolNgnQ2UUkpE\n", - "vvc0PDIAHWHgNHAS+qeqvFw7DvuOw+r2aasjWWuvEaC/WnYtdkQIA88D3wN+E1gL/LMITUrxhaoa\n", - "Z3M59E3A3pdgZRsoF6hRkDMQz8JPq22czdxRhsOH4ZUU3LAEVA7kOBQG4Z+VUjOSxRmFvcfhw23n\n", - "jeMnLGekfybaqDaLsjbNbCEiTmCpgF9BDOiv+qqIiBGGDy2Hdd2QLoDxJjhOwE+zSu2spm3nMx/7\n", - "/GqobMv8EOhTit+fdrwVeBn4rFL8qFr2zTXztd91kZWd8IkGCOnWTag4BIfH4GszdRNayMzXfr8Y\n", - "ItIi0KKsrbveio7WTF3bqIVfXw5ruiAzbRz/SVapeVN+47oslCcia4C/A0zgkFLqM+c9vqA+qNVE\n", - "RHSgOwwripBLwWGl1Ei17TqfxdLnIrwf+D+BjefXRhLhRuDHwBalGKyGfXPNfO53Eanzwho3BOPQ\n", - "V4ajSqkFo4o5m8znfq8GlXF8aRiWX8/j+DtxvTojv8owEZGvAn+tlNo77XH7g7rIWAx9LoILOAZ8\n", - "XCmeu8hz/hTYBjy0GIJaF0O/27wdu98XH+/U51ULYD0v1dUDdtE6m0XBI8DhizkiFf5foBv4wJxY\n", - "ZGNjY1NlqppNIyIPichBILeQZG1tbC6ECA6sIoJ/9k7Pq2zd/DbwZZG3pwza2NjYLDSq6owopX6s\n", - "lFqHVSzv3mracjmISEBEakXEXlq0uRo+BvQqxSUDh5XiZeBprArXNtcZIuISkYiIuKpti82VYY/j\n", - "1ydVS+0VEadS6mzw3hTT8vWnPefz0/59Vin17ByY9jZEJFQH710OPU5gAiZE5EdKqb5LnmxjA4hg\n", - "AP8J+K0rOO1zwD4RvqIUp2bHMpsrQUQ0P9zRCbcHQZ+CckDk+SQ8p5Qyq22fzcURkXAdvHcFLDWA\n", - "CYiJyA/twpbXB9UMYH0I+AMswZaTwG9NT4O9XoKbRMRogn9zOwRWwqgGnIaapyF4HP6rUmq02jYu\n", - "FK6XPp8NKoJmn1KKO67wvM8DK5Xiw7Ni2HXAfOp3v8jtG+Fdt8KgB0pZMF6Gtr3wRNKuR3NFzGW/\n", - "i4ijGf7t7eBbAWMaMAyBZ8DfC3+jlBqfCzsWO+/U51VbGVFK/RgrhfF6p3sp1K+eVgSpGZIbwB+F\n", - "rcBjVbTtHRGRlgjc5oHOAoyNwQtKqRPVtmuxIYIO/Anwu1dx+heA4yJsUoq9l3y2zawhIo4OuP1m\n", - "GPJUZL49ULoJhgbgdhF5adpq7+Ve0+OBbbWwBSjH4PUc7FZK5WflRSxeepZBZNW0cbwVptaDf8x6\n", - "739ZRdsuiojoTtgYgRs18EzBgSS8opSaqrZtM42twHoJBAKRCxyPQMoDTXNu0GUiIp3L4VNbIdcM\n", - "iRg07YFPuUS+nVdqf7XtW2R8EEsE7+krPVEp0iL8OVZByffNtGE2V4THB07fefVovFDyW/F3XuCy\n", - "nRERcTTAxzdDxzIYUyBvwnv2wQoR+Zq97TNzOCAYuUCNsFpIe6G5GjZdDkF473q4YQ2MuSHfB7fu\n", - "gnUi8v9frNr9fMV2Ri6BgskL7cNEoSYFB+fcIKASeCVYBblqgInzt4ua4IFbIdlRSZmugYkQpCet\n", - "ar2HgDZo2AHOViiOwuhzSqljc/5iFjgiaFirIv/hGjRD/g74jyJsVGr+F8SaL4iIF/w3Q3CLdcS7\n", - "K0GmmABX0Ko7AkASnEnLQbkixU0NVqyCzhunyXnfCqfSsGwcbhKRGJCohrCViOgLyRkqwsQo6Ocf\n", - "j4I/CbtF9FXQeCfoEcj3Q/Q5pdRliw6KiIZVGWTG4h5EpHkdbNkBfWczTTbDkAntk7AZq5zE2ec2\n", - "ABEgBQzNpB1zhe2MXJr+PhjaA63r4LQO5VNQuw/KSdh9uRepqOd16RAxIQGcuFKlRhHxQ3AHtN0M\n", - "ah04s9ByEhJFkdoDMPkDpVRRRFzd0NbBWxU8Q5CPgGsQ2QKr3gs3TEFTDKIh2PVJEdd3lMrbN7uZ\n", - "5dewZsu/uNoLKEVWhC8Af4y1ymIzy1ilHRo+CduaYOUolAXevPM0Ox0vEK+5FQZDkI+Daye0jMOP\n", - "r/T7HIaetvMcmDw4HBgrnDR0FVjdC1FNpP44jH/naiXmLaeKHgGXsspmDV/sZiXi2gB1d8GSiEhL\n", - "FMafUKpw+Gravc440QsjDdC6FkY0UP0Q2Q+lNC4N1n4cNscgEoPhdnjt0yLy90qpdwwcF5EIRO6B\n", - "jrWgSiLB12Dq2RkqB9DUAWp6ymsMPDnwuuB+ETkCxCH8MKzZAE0KJgUGh0Tkm/NtK8d2Ri6BUsoU\n", - "ka8/D/cdhI06aEkYGIWfKaVil3MNEfHVw8eWQnuTtS+s9VoZOf+glJq4zGs4oPETsL0B3I2WE5x1\n", - "wfEuuO85OLAeXokBTwKlIhQyYHinlbAuAxnQoOFOuH0cmirLfO0J8Och9i4RObiQZkTVpFKD5nPA\n", - "/zMDSqp/D/yJCO2LRSa+umgrYHUzbBs4d2z7oCLZuZcX95yBbi80ZCATgx9m4bUrbSEPyQw4ph87\n", - "gWNNmkidyfpX4MZKP7++FF6+H6ue0RUhIl1L4KPLwOUBNQBaP+wVkUfP/56LeLfD+ofhhjFoGIAz\n", - "fnjlYyKubyuVn9dbu5Vx/GvPwX37Yb0O2hT0j8GT0PQI3DUEvoozuTQGehni9wFfudg1RSQA7b8N\n", - "Nzth2RAUdTh4M7zeJiJfnYFxNDfdUz0A7eOwKQze9RCPwr8/gR4rsKkObj11TqnjjSZ49v3AP15j\n", - "+3OK7YxcBpWCR4+KyGOAoZTKXMn5IbjnRmjZwrn0zDaofwA2RcYAACAASURBVNKKAfgfFztPRHyg\n", - "LQOjBmiH9nXQOgTxRmiYsHZqMmE40QybRuDozSLytFLKrBHZuQd23Aynzn5ED0JLFE5AoBuazruh\n", - "hXMQroehEFZ8g821cwcQBn5wrRdSiqQIXwc+g5UibDOrhLqh9QKz27acSTA5ROILgBtLsPGqbjop\n", - "OHgYdiypbPsUwBjH1T2CN2nSkIXTTeBJw8ZhOLJFRH6hlMqdf52zehnnr3aIiLMdPvJuSBkwdRJp\n", - "aEQMoXznAegD9kx7rgHt98BtIxCsbEE1peA2E6L3ViYpVS36ea0opZLA90Xkp4CmlMqKSAvU6+cc\n", - "kbN0TIKnc3rZkrfj2QgbvLBqyPrfKMENgxDrhOgSEZnAiivMAQOX8zkREW3a+9x3AtLLocaA8jhs\n", - "vgGSZ0Bvhd0BmPgOjl8/ieM12NMFoqBtHFafgUM9IlJ7uZPd6wHbGbkCKpHyVxot7+iEzWut5dFf\n", - "sQyi+2CJiISVUpMXOG+J0PTHLhqWg9FUJOU1yedgdACohXwWHHmoLUBvBDynwHBg9WkhBc/vhshp\n", - "WN8E5gRoQ9A/CY9C/rOQNcAz7UtWEsgorC+OzczwOeDPlWKmVpr+K/CSCH+mlN1Ps0suDqm3aR9B\n", - "ygH5ROXGclVVWUXEjRXrNXUCvv0o/KsOMIrgOoZ4Y3RNgtoGZQVjAgyDMwq4mPb9FBF/CO5st7L6\n", - "pFZk7yQ8o5RKVJ7S2QnuMcTYS9NWRZsmGKrAqNvN8KdF5Hen3fgCEHSdc0TOEsmCP4IVnLsgAibP\n", - "y1TKQkqsdePpGyJJF5Qy8E7f3WAXNCbffry5DO5fg846aCtDWuBUXES+rpQau9CVRKStAe7tgO4W\n", - "ETUBO4HHB+Hrj8Fv+mBFN9QMgvLCgQaImiAGelhj9K4ya8+AAg4LBA+At4j1eZk32M7I7KPpoDvO\n", - "+1Br/OrNf1sfiIhuEPk/6ljeWoPTUPhyBUpqjLH6HLEM+FthPAzOBMRS4OiDgTBkBs+mFlZ+f0dE\n", - "njkEtUASGFFKKZHAK7D7Dri5srRXBva0QWzPTJa9XsyIsAVYDXxjpq6pFMdFOIAVh/LdmbquzYXI\n", - "vAGH74JOD9RWVkiiXjhShtxVxVBYcWP+HdB1KwQ1SJRLRF/oJ/XFfmgFFHjaoS0MXVHrLIW1FTth\n", - "YolDnr2WoxEeuQEa1lixbOoIbNwJS0Xkv1ViFgzAsY/GDR42pAxcJYACEccYrqVwdBVw6OwLhnQZ\n", - "8jq4po1VaQdkSyzQSYpSalKk7k3Yvxw2DVtHTYE9zRD72TsHgmbHILHE2uaezplGWNICH3gdjMr5\n", - "/bXwy4+KyH95+/aYtCyD394IRg53Vxp3eBTzrl7K782T/rNh+JITPtAFmU446q0ET5+C2inqncKy\n", - "LPRUJrQdGry4CUb2Ms9WuG1nZJZRSuUbRHqPQ1sR9LiVAVN2w0QMJrjwB2adh3B3PcGhHPk1Gp6M\n", - "m3IujLt+lLHOMmsHYbIB9CQMNYI7Ai9lYPRbF2h/DDjPG08+Y63yDW+E+jLENDh9BOJXHWRp8zb+\n", - "CPhSpc7MTPJ1LFl52xmZRZRSMRH9n+HRD0JbBJTAUBZOf10pdZVFPf23w6a74ZYBSHgcHO50Uvp3\n", - "efIrSxT/CTDAPQH9QXD7IZSFuBuGTVA5rH1ZBaDB8hXQtGWabsZ6GElCR8xygncDQ70QctPsOOuI\n", - "AGQo+Qt0n4CJrVScEaVUTiT4Krx2K9w0YN1Eixq81goTT1x8q2IhEPshvPQh6FsK4bKlbXlmJ2Qv\n", - "UbYhsceKEWnyQl1l6/5kLQzUw72vnHNEAJZMQEc7nG5nWvYUQARu2wik8a8WWss1eMb9qPE4sWXD\n", - "BH4XTn+xCOPHobUEWgsMLoVYH+7WEg0Jk0IWJgPgS0PeBU4/TBy/Us2bamM7IzOAiDQBQSB+IUXW\n", - "KDzxNHx5FbR0QiILrjfBOQF/f5F92IgbTVmB1OfE6gwcBYO0p8CAglgG4nnQR+CEE8b+9mwKoIjU\n", - "YkW4JpVSZ86/eCXq/3si8gwcCQFTSqnozLwbNiJ0AHcBn5yFy/8A+C8i1CuF3WeziFLmMRH5Cxhs\n", - "w3IChq80Y+YsVgB65+1w0yAMhVvYeVMnghu3Gcf44BjF4DD8AAJJcB6C3e3gdIJrAjpfgwE/RHUq\n", - "Whk10NoApRMQKYCzHSb8kG+CdAA6sYTTkg6RnV5Y66CQ19FKGUqeKM6kInIKNMdbrZx6EnY5YGAb\n", - "hJQ1V4q+AKnn3/aCFhCV1eB/EJFGwA/ElFJxEdEqmUj5C8V7KKVGRfSvQ/r90FBrbXWPjUL5wLnV\n", - "tOl4ADoq9YxiZ1VfPbDUCe4kEYcLzySAINTiygwTjtRw5g9Wozw6YMLmfljVB8eGoS6BbxA6X4fx\n", - "bjgTseJyHcOgz7tSJbYzcg2IiCcCH1wHy+ugHAUtInJkAr731n1JbXstRoOOoY9QavJR7L0D9VoZ\n", - "lotI0wUchv4SE+UypTKYJTB1UFIga0BwBJpOwaTDj2PUTTpcIBdOQoOIREPwaythcyOUJ0CrF+kd\n", - "h3+5UNBtJRtoXi3lzRM+A3xNqZnfY68Esj4G/DrwNzN9fZu3UnE+flVRXERcXrgxDDcKuFKwLw7P\n", - "X8ZqiRd8OrjMWnZtXoMr68WZB3DhNrrIep6Gj7jpvaGOVKGIZo7hSk9y65tWlkbm1HRHKAnuQ3Bv\n", - "A3oANNdRKIcxd3kpn8pM+06X4CdTTG3NsMRpgDNP/XFF85C14jH+5AVe64+tSQoBLI2TBREncjlU\n", - "JpKjACKujdB6D3gDkMuL+J6BzCvnTx4rDusXYKgBays+CqH3wMBWWDdNH2bc42Pf5m5w10F2FLSw\n", - "yJ44/LgJxicxlgrOyuqTIk+yNktsiZ/JlgaUW4OReisWMJcC9zi095P7JmTXQigOtZVgZFPgJx2Q\n", - "mXdK29UslLcd+EssT/91pdQfVMuWqyUED9wIy7ZVlkrLwKuwaifcAzxmRbkb7/PQ8L/58TgF75gD\n", - "NZIlXjPBmZYWyvoRS9zop+fNuPpMYi9McvA2N21xk3xzkaKe5aQU2D4KA752hqQHl9+LI5el4I7D\n", - "h9+Egc3Qdgv0K9ANMHdD10vwEPDtarxHiw0R3MD/Atwyi818B/h9bGdkThFLVOLDm2H5WjjjhGQv\n", - "bH7FmlT8rVIqJSJ1EL7FKoFSmoKxF6F8CEhDMg/9tSEKbi+BSYAyJUOjWKiFUgPcdwO5Z8dIboEa\n", - "vYF08CCP3xvHeA1GvznNjkAb3N2Ao3EJ/owb50QeU99P5uZD5IMZzC+efa5SakLE970S/vtLrM4A\n", - "JdjZCof6oHjgQq+zknVygcDMxYGltbL21+GWMxAZgqQTdv4aHHABb6s/VEkbjgJlKyZPXoLX14Fq\n", - "sXbNUm4vP7ttG1Pjd8DxEWitwb3EQN2cRi0fpfDMKUo3NpNxOvGRY6K5wGSHB3eihYy/BUI9lhrb\n", - "YY8l3uZ9wXIWT8BRE7R10JMEU4Njfuh7CRia6/ftWqnmykg/sEMpVRCRb4jIWqXUG1W054oQEc9S\n", - "2LRpWqdrwGYYPgrbROQJ8N4Krf+2TGMB0lLAWVsgFfYQOH2KzLvSEDOp80J+tYj+L0qZx8FK0ROR\n", - "LwrDkybRrWAUchQdSVyHYEACZIwVeLIepFxgPNBN/nUfRKPwvmbYvRfvPSV0r4GZbiTzZh2sEZHA\n", - "fBPBmad8ENijFMdnsY0ngK+LEFHKXtmaQ5Z0wfJbpqXor4ORLLTHYIOIHIXOz8A2DTpjMOWH/R+F\n", - "I48rNfW0iPdJ2P8bJqYBUKboKDAebCazbwq6/JB2QVGR0/MYdQpx1RE34+R2K6UGLZXNunuh7o4g\n", - "mdugJn6Gkuah4AVw4chO4ilD7C1ZQEqlnxORUzCwARxeGD8E5TfnW0zBXGBNIFvuhZtHrUwigJoC\n", - "3DYII3eIyM7p6dUi0gz198OSHjALIjUvA8/DwN9C4iaoWQW5YhPjI7fBnuPoq2PUr3AQTrVCdIjk\n", - "vROIdpzB748x/tkA5U5INgfwRiM4ckPEu5oxyi4keIby5kbMfY2QrIUGgTrF5L/Ay/vg2HpQJsT2\n", - "A722AusVcF5sRZFp4lzzBLcbxOCtYlYuMF2WXxKBxnugPpdn1dQ4r/Z04kyZeH1J0qsglBmlnIX7\n", - "D4Gm4OcfFZG/OiukVknP+0trplVwAeNQrIVjf+JAPphCL5rkBrsoPNlmRdYZBtSNUr/dSd2kC+ek\n", - "SdE5xPgNOmODWBuWtjMy+3wMS6Bs1qgosj4FvAf42my2ZXMOBzS2VWI2suAaQu9K4GrNYRoeCqUc\n", - "wUbYDqyupPHXFKAuDRM7ROR14DU4ok2g//kwse1eJBMhva+F8uCLsNENZ4YJbXXTGvPiOAOQxtkI\n", - "uXtEZBd0fAJuEYPolJNeVcbvLhBPabgHNYyih7I4KFAkFqay3XAWpVQ/5wVO2lwQF3gCUHfeyoKn\n", - "BCHBWpHIAYhIPXR/Gm4pQNeAFbaz+xHo/QQYOyH6CiR+CTSE4TNZ8MTwL3dSO6VhFDQEB84crHcX\n", - "iLZE8T4WJfuuJZTMCKl8EUfIgW+8SL7GgZ4XTGcMowvyx01QCqKVWJYjlZ95TdVjRkRkPVCvlHqz\n", - "2rZcIYk4TI2Dtw5+FY9xBvxTVuSXH9pMMHMQLAzROVpkoKGWgreE6Y+RLURZvxcME8YCUFcHg9uB\n", - "n01v5GyQkzUrav5b2BwuMzCmY6g8E/XDnN7STmEgBa4o7tYS7pYyBeUkl2tC6w1QGx8j2QHZq8wA\n", - "sLlcRGgGtgHvnYPmfgg8jO2MzBlFIArBBMR78dxQpMnnwJvKk/ZmYK2lT9X+8lvPcpnQqqC3CeiH\n", - "0Noky/b0caannZIzi3vpASbaRzHHI+hdwwTqIJcLk4014RmLoZnQU4CpB2GjE1YMl9BUguOmB4e3\n", - "iFZfJBsy0JKTlFNZjD7sSce1UIB8BibdlhDkWfJ65W2dFkMT2m6ViFkag5wTxrbDRh+4HeBug8HP\n", - "QN8+yPxTFMwjyNY0rqVZsnmhVDJhMktkGPJu6PowbH8cCi8qnvWVSTidhGJ+zIk4pW6NklchChz+\n", - "cfItY1YW1DvGhYjoayr1duqgMABjT19K3r6aVNUZqWR9/DXzsN6GUqrsFHnsWfjoFphqsJTxAq9C\n", - "YwpONsC/jjO8oUBtQuOpJSV64kNsOzHCia4ykwYYRyG6AR5/yEon805Bc0TEl1Yq/dzbW/R8yFIC\n", - "3nZqCnc2xvGWJtqiUVIrf0HsA8dxrE/TFYDWYghfoYgqnaBvo07s5CThfZB1Mq24l82s8GHgh0ox\n", - "E3UpLsVjwN+I4LYF0GYXEXGE4D1L4YYorDkAN5aplQCBowVK+gBCntt3was74GQ9rB+BCY9wolGn\n", - "4Cgx6saaTS+H7jUGrqYCroZjmK4cNShayqB7MhR6ArgKYdqTo0TbBzm+KkHNaci4wdcBkV2WRV3j\n", - "I+zNGWRbAoQLQqk4Rdnbx2RYMfVzzhNYtLGqmDfAXU5YYkIsCs+W4OD52xlKqbKI9xl49WG4rSIR\n", - "n9fhlTYYf1EplRERtwbLNeruK+NIQ0mH0Xao9UHjJBxZAqM3w/I0+FfCYMcgY3mhZnUDtWUPkWyG\n", - "tOcU451TBA7B+HpYNQpLJqHMBIdO1VFc40f3uHEMnUL5EpRrBFfJxPBM4ZRhCt84mwFp1VH6lbZU\n", - "5fV6t8Omh2HLONSPwnAjvPrbIsZXlSpdl5k21QxgNbAEof7wHVTpPj/t32eVUs/OgWlnC0s1Yg0g\n", - "Zy62/1ZQ6rCIfGUMbnNCSwbiLqh7EGqaoe+7DN/uJ73MA+k8w+EzOIihF8CMWrOcZJew3KPh1MuM\n", - "NCjWnITwgyIyrpQ6NM2WCDTeZkkUg8mq6AlyjiiHO+vIRpwQKhJwOWgu52ktxcgCRU+J5ekiRz0w\n", - "NcRlihaJSBhLC6UA9F9tKuMi5UPA5+eiIaWIiXAYuBl4ei7aXKwE4J4tsO0mOHUaJp/F+SEDMzLA\n", - "xPokomVoivmIbk9Tm4ODnZB213Foaxt6yY1pxBgrR+HmON6gm6EHOig6O3AlT2HWTtDqnSSUKBMq\n", - "lqnfF+fo2jTRWiHgLrC+AM2nQRlQdMHAdgi9APFIjnWxXnJ5L28s0zC9GZqiJZqOwP7T08eryjjr\n", - "wPr+13hhUwC6chCNwx6l1IJ3XERkyUr41HZItcNIDHy74TcOWVsuL779jOxrcNAJp++EkAOmyhB7\n", - "AaaeFJH6VvjkSggMk2me4FRdklRXFk8Z6rKWMF62CW46BPVJ6zbS4lLs236KVb8Yp/8+g4wvT/1E\n", - "jo0n4WA3iB9Cu6wdf40kd77+Jj8NuBjbXkOhS1F2nSSs3HjJopOjNZOhuFlE2xZB9XTBagUqLNIX\n", - "h13Aaei436q34yxDPAw1ZdhkwtgjIvJPWGP7dVWDrJorIx/EkjH+i0pphc8ppV6Z/gSl1Ofn2igR\n", - "3y3QfR80C6Q1GDktIt+6mMa/UuokldS/WpGHb4X6FTC2C3o2k487iRPDF9Jx9UdIGG+Qjk/Q7gaz\n", - "RcNbr6OZUBADV0ln8jaFc8SBryck8rUi5LrhpgbgINklGUbdirpDYJhFlo07ONko6AShGMFrKETF\n", - "SHiK1KXK+HJFPDHoDUF0z6WcCitwy38XrNgB7QpyAv0pEfmGUmreRWbPNSI0AKu4QLT9LPI4cB+2\n", - "MzJriIhrCdy4DYYMUO2QqEPfPUzThhRaYyONe1pwZouUjRHiSyYZcrrI3eUkXIySVLVMnH6Awo92\n", - "Iu/ejXOjm3BTCWe6j6irhE9vpS6RZ6ouRX0cAlFoP13kQAP0TEBeQX8ThI/Apl7htUdcZJcLLkee\n", - "sK+M71SKxhdgyyvgzVsLn8fqKnY7amBHB9zoBEfCqk8T2QK5JkgmoOMg3KiLfMNU6mh13+XZpRHu\n", - "uxmmOiBe+T+1A3JjcLeI7Dq/3k/FmXtBRF6FUwEgfbYKb6PI+3aA0QMDJ8mknmfkdg/u4DB5T4nG\n", - "BLzZYAW+RirZSEXAa0KnDoZKc9+3YHg7ePyWMPfYEoNy0UfdxgLRpVna3oDGaJaO3jr6b1uFgwK+\n", - "YhqPnMKhK+pNNw6ziNZgcOaP7mZqXxecOQUbxuH2fvhIFo6cwVNvEj8OiY3gNSDTAFk/NEzBUgOG\n", - "Yu8kT18NqhnA+i3gbYqhs4WIaFazF48yFpGVsOVBuGfwXN2WY3Xw1EdF5G8uVSjKa5UEnwSIw5Lt\n", - "EPORP3OEfPcozroizkYfLmMCTwrGgkKroXAoIadMyjWCKT5KTh0Ju+GPDdC3w3dXwLiXqRd3cvxD\n", - "OSJdirZeGPW5SATcZIwemBgl3+zHURDSRMl6CwSBcg3ERiD31GW8RSth1T1w3ylwVF7nSA387GMi\n", - "8iU78v6SvBt4chYUV9+JJ4AvY6m92swOXh+Ie1o5h2VkB0aJ3VFDe9bAKAIocrrGqO5keX2E+qO1\n", - "OLIKzBRB9z4OrXDj6/YQbDUJOsZRAaFGypQMD5NuBwUHpJstyXd3HDKtwvFGIaWVye+HjbucHLxb\n", - "cDh1RpVGbanEhFvQekw69kIoBaebnfSu1YmPOkQ2hmDFVli/BYY9UPol3FoDnUvg5z7IeUBClm7F\n", - "+0XkCwtVYVVE9E7o6JimVAvggVI96P2WOOTwhc6tjHnj064VXgUdPZVrdcHEAKeGjpC8U6gJw4kS\n", - "mJOwo8/KYUi7YazGS2FFnmynMPEeJ7kzCtdEFr1XY7ijlsSEh6wqs79TpzaRIN6QIPdshP23bsAc\n", - "DGOGBvHVufBqDRTlJKaRJ9BRJufz4TyzAsaOwuYirGiDhAecechnmFo6SbQLVvVDIQhBD5CF3hq4\n", - "dcQKtv3FRypJE9dFAcSqB7DONiLSCg33QUc3mFkR/4uQfvnCX77GW2DD5FsLyC0fh+Md1p4g7xj8\n", - "U4LJBESC1pRG08Ech/BpAj0l6pxegikPk4YO9SaNuiJWMnAaXlJuH6ZepIRJsraTjMsJ9S5IDsF9\n", - "JXj2Vjg6yrHnj5G8tUiHwGBTgmKwndpUHAn6SDPFiDtIS0Ewi0OkczCRgInHgEYRuUTVyMYbYE38\n", - "nCMC0JKEJR1w+iGR1lbQPJB6A+IvXr0k9oLlQeAnc9zmK0CPrcY6q+iTIJPgDle2OttgKshQpo9c\n", - "Y4KxTTpm3sd41IM/WaRW1xAMnFMKNCeRwCn873LgqMkjHiElGn7RaZYiJ4mRdUEEoehRGH7hWE+Q\n", - "cWcb2UyBBAlcS8fZ+bCOs9FJeKoBOarjLI0z2pmnKZgitU3nDVeEiSVOTsgm0kfG4ZFBWHID/NwJ\n", - "Z+80tSth4iTs8ELRY+nLS8AKvm/lEmPbfEUpZbaJJOPgCk2LmSsDyUqJMJHQu6FmPZRzENsJ+d0X\n", - "cc40fVr25EloH6LuRp3WgoZrCvyTVgX1Q8uheFKI1oUp5OvxZk9zmgASqcHvKmKSIN4yxdFuD1MO\n", - "Jy5/iqwrz0jZyWBKeMPTRCJaAw4BVxGlFO6ynxrlRml5mvQSwxGTwtTzsC4Fd/VAtgDhODjTMFnD\n", - "VGKKZI+J0QtT9RDIwgk3RBJWSOOGIWjrgDNtnOeoVYsF7YxYMu1LPw235GDJIKSdsOcB2FvHBcu6\n", - "G2EIXiD4MFAGvCLSCZHboLw+QMoQim8k4DmgT1m5yi/th0/UQyoAAydhxSDOtUm0gJN0PkveE8db\n", - "FMIFnUxAY9LhJ0mYWq1MSQxSGAyLm7KzC8onILgC1JuwsQdGP0jhue9zavQgQznY3GOS7zSYDJoY\n", - "gTCSS3DMf5rRmhJes0iuCGocNvvB/C0YmKpsuVxkj1j3g/cCs/r4StjSBNveAG8STmyF19aIyH+3\n", - "dUssRHAA9wK/O5ftKkVRhOeAu7FF7WYUEalvhPevhrYMND0JN62HV1bAwH5oPUVjxE93nxd/okTO\n", - "MMFZIu8o40zFMV15Ej1lRru9JN05iu5JajHZXNZoNgymlDBU1miWBGOGh/qch7KZZXd7mH7nUkol\n", - "B1GnQTBXh9edZ3TTFGFxkzyl02TGiTUXyPt1dteEyTY7oclFuX8L2afWw+lRS4Niax80rDyX4msm\n", - "IeCFthXwulZxUt6AlUH4/UaR1yfgUAkOL7RV0Bg8vwseuhP6jcrr3getZ6APWj8EN/hg6TjkDDj4\n", - "MOzvFJEXQ7DZZcmbnsjDAWBiDJI/w7E1iT80ibmuTJfTQ+tUGU8clp+EzhH46TbQmnQifhPJD9Hf\n", - "0s2ZyUaKiZOMLjXRNrsp5F0UG3wECdGumtBLI2S1KPmAwXiPg/L309A4Ac4YaZcwpIRwqUSIEq4C\n", - "5IwCxbY0PLAEAgEoB6wbnHEY2n2oIZ3TGZMX68Dwg5TAH4WuNEy4rXfGq7iOKvsuaGcEam+FbSXo\n", - "rghD1RTgtn4Y3Swiz59Nm4Wz2zjBkzC4FoLTbtimwIgGWhiWf9JHcWMn+VAQX0GIb0yS2twHjwJP\n", - "Acf3ox0/Rs0HHIhLiHd1oULL0EpOtPI4BSOB00xSKyWOqABxrYWCyjAuBk5ClKjFW05Q0EsUlQMc\n", - "OfAGIT0KNY2QzEAKGgpw04tJDjuPk1jWgMKg4F0HOBmNjkB6EG96iB27FNsqM57BIPzi4yLylxeO\n", - "H4kfhoEd0DCtau+pINAIt7wMwUr68voRKLbBxBbmNj7iemY9MKTU+QUJ54SnsJ2RGUVEXC3wyF3g\n", - "6IFBYHAnxF+ELc+BZ4JQZ54NL3og4sU1peMp5/C4TrF/aw79ZYXe42B4ZTfK7cZPlow+RUmVmCzl\n", - "aCuXCOk6hbLJgKbhMuG4qsEpBpPmespxP6KmKHkcFIsGOSJkVALRi5Q9/YxsL9PiDJBztxHQDEpq\n", - "KfEBIDkCXWU47YJsAEoT0IBV9Q0/9J+E96yCca0yu38dOt3g2w7rG2B8CFYfgpOVWIIFk3mXg1f3\n", - "Q+gEPAQ17RkMT57coRzlw7BpibVKAOAvwB0nYfSebuK3bIVxP+SHYeVBuHkEvj1GYyRJy6Za/KUU\n", - "400mzYVJ8hRZVhE5dDmgrQTFXhfDK1xoaY2SQ0eUUK69k2zaBCMJ5hhijOI1veilAQoO6BAvHpVn\n", - "3NvH4a0miUIrOOtxF0Fppxlx9pEplXGUPbhSBrpjGRQ9iBrB3TyIu1DCLIZIF6bI+MA9AsufgIGN\n", - "0FJnafO9FoFwAnI6DCuuo8yrBe6MeLuhdfKtxzSgqQyH64Bxywnx3gRtd4DUwqurIHcc1h2FpAv2\n", - "N8LwK9D0AIS3thFrr6M1qyh6BHepg8FIifwOEdkPoTtKrFuWZOWzEA818kzQIKdPYNTo+Io6Nbk2\n", - "yo40p91pVClAzhHGJ+0EcQIlskBJsnj118jjI0cEPAUgA87noGMUngRtO0S7oMM5gn9fmZfXb8KR\n", - "gpKeIZ90YUx10qjSHN06wcYBcChonYKudhjuBi4QsJbZBXs2g7RB5wTkHPDyKmgYhmDKyqMvixUo\n", - "1xaH4HJsZ+QsNwGXqPA5a7wA/E6V2l5wiDUgLFsBwZ5py9c3wXEvpH8Br+eovxG2D43RtyzF+AoX\n", - "SB60HO5exfEWneZQEw7lwDBLREWj1gxiGBlizhEypolHmThNIWvq+GhF0x249XESDg+Gu0DOdBMs\n", - "+fHENVQujhGCUCZNrMtgdd5JsdiKT7mIKHAVJsi1rySfP41a+3PEkSWgxSlHhMyqWszTzZBshpFn\n", - "QTmt2ibhKDhPQ/1dcCgK7nrI9MCYBl0vwDqsrIwFgZWu608lWZGBZQcglLASH1/6CAQOQH8PZDus\n", - "ysxa1I1v9TJ4aXVlVakd4h5o/QX6v8ux4oYsSydHyPlhShQNJmSnBcAmGyGQh7pjTpKeMMXgFO7g\n", - "OGNtnRRMF0Y6jWaWKPqD6JLHlBFSOizFQ025gNKFiIqzdLCd/ZsjmP1TFPxZ3GWISDsOcxCX7kJc\n", - "TsxEAow4IYeDGjJoeghjcJKkL8pEa4HBx6EjCN0HYOQ2GOmEySGoM+GJDjjz82utPSSV7JOZUHxd\n", - "4M5IMQYTEWtFZDpxDaisANTcDRvugm0jEByHQ1PwryWyKgAAIABJREFU2kbYLSCnrPLS+dPQ+Ckf\n", - "hGoJTem4iuDCxPCkGFvRSb7/CNwAtXdD0xnwZSGv1xI840RzmDhFw+UUDOUgj2LQlccrUQyC6Pgx\n", - "VZKsTDFFDl3G0EjQorspmpOcieQpDhXBN4lnWFFq8xLtynPiDpNtg4quWJk3xxMU9RKFgE7AreFS\n", - "QtB0k47AgVscuLJuUq0l0v4yjFTiR96yHaWUSorI30HiBgiugXIczjwKkdvh2A1gNlUqCMehOAil\n", - "EWzOciPVc8z2A60i1Cl1LtjO5vKx/A/PNgjfDu0BRVKPEW97GjrL4PTByEo4GYaMFxqypGvhWNjE\n", - "KCRp2Z9kqgcIguaFOC5yAQ9SFBziwFnK4fIrKAcpcJqYUjSYQgoHZtFJ1GHQUEqjOdzU5uPEXF5y\n", - "hhOnylFsymIWR8j4vJw+kUGkiFec9Hk1NFOjnNCoKSXxNU7iTMUhNEJrh4dwMQGSJN/0XYaXeykP\n", - "QPyEm8KP3ZCZBCMOoRVgeqFQAMNnqSIGwuAMwg4R2T0fJcUvhIj4oPseuPfEuXjAZqA3D0MPwMqo\n", - "FadcrIO410nKX0TvH8ecHMG1IoOjvoxZcqE25ug5AB0JBaMwYUBsOfhNmKoBZxEmg5Aag21DSXY9\n", - "6ERvNXGSAWcMbzmDcniRqImYJYoKSkyScHiJqgyFco5Q2aRUcGEGXPhLMRKZNKXeHI5OF+6yn6xD\n", - "Z1CvgVgr2cQwjmAXwSETPVxEBUdxtERxlmLUH4GRr8AzK6BmM5h7rYX1mhL0TcDYo+q8LKqKrIMG\n", - "TFyq70WkJgh3tlsZsdSK7J2Ep69l636BOyOjL8C+T0IkYy3BlYHDTTA4BAxZH9Klt8JtA5ZSIsCa\n", - "MxB6GX6SgdPfgNoHoPE3gA1lEqUCmugYeQ3JaRi5ElooDWEIfxw6W8HshN0KjN40ZW0Jgb4MIx0m\n", - "mWARRyhDwZujhho6JoQ6bYBopEBCeUhJCA0PGiVqyOGTKZq1OO566I/wP9m7s2Db8vs+6J//GvZ8\n", - "9pnvuefOt+/tWd2S2pIs2TKOU46dCXCcpBzKdiqGQFHhAQoeKHig8kBBQUGRFKSo4gESIAxJSBzi\n", - "OEPZjuNJsmRZLau71eOdxzOfffa8hj8P+7TVNrJly0PLkr8v955d65617hr2+v1/v+/guc1E/9qa\n", - "0bmme8WxmyndqzMnL8487o80Qq4Xg0mvaTis3U7mumXm8Du3tW4s69w7cZBe4vqX+KEQwv/86wmt\n", - "pwFZP4mfDCH06XwHt/44a4GLtxE4eJpXPsjuH3ZFvoxP4L94P3YcoyoEn7II5vuH78cx/MFH/3t5\n", - "4V+hHxidiw5evCVcuGZ4t6FVDU0u/4LyiSY3DqxfpHmp4e3nW1aS2qw3tXG3lD9i4yY+WUh6hUlM\n", - "NbLaUhYN0iCLU7MYjSIno+hWp7KTBgf1LSedJetlS7O+7ySedRI6yuaAxkwZr+ruthW9u6bZA69O\n", - "ZnpFaZgksnml6tUUd8TssdV+bXt+oJmNbYy4cL/ymfUT9w44Pznxpdu3TLc/vlCI1Hf52Fua1wrp\n", - "/ftm39O23JxqNibikHoUQvjbp7EUf9BxZmHV8G4hMm2ws40ug4skYxprbAxRM+wP9J79rPK5JWf3\n", - "aORD0/O1ySaf/TC7t9g6ZqnFg5r8DPW3Mt/j4SHn3+bmh0ornccelZysJVbDDVWyZh56ypXEdD43\n", - "m80MWlf0qoZpPDJI9jyIbIyXJctR1e6zHBW92oMmS1khS2ZqlfHyNoeflrVy805fNy019ofSk/vO\n", - "F8xXeLAa49GP48cXflXNF6iuMz/yHpfeEMLmGf7Ms1xKifvshxD+fozxKxJbQwiNLX7k46w/xyN4\n", - "nQ99mqunXMKvyYTxG7oYiTG+GULnRzn4Xs5kjBN2brD7/5yG0a2wHr5ciLyL8wPyK2z9m3z7Mpdu\n", - "8/pswvqu1/Jzlo+CpMd+lZgfvqH9MT78kO0G3ZrjM9z94GPjum86v2b+qQvGX3pb+Og9a8+Mnb2z\n", - "LlyvaIxED0ielhpJFc7qaDpv6qZBqF1P2P+W4OD5ymyW6rzV9PRR4dVG5uWNzEpz7Eq85zBsmcSz\n", - "OgmN5thRo6VRNxTVkfzq3Fv5NY++8Ed4/Yhndxdhfp/9SgqbRSFy/t/hmat0TrtLDz5Kf0494MyE\n", - "8i+G0Hwc4+wLvz9X8+sTp/4ia3g/4wx+Dt/hD4uR3zYW9/qT30arR3Kd5+a5w6WJs623vXX1aWff\n", - "mZu3B2698MBkNXr+CxfcWut4mI4M+pVeo+ne1YGyKJwvefGoUG/uuOOCbB6NmixVM/eTXbFk723e\n", - "zhMnW1HRLlytKg1H6rzjIOmpyhnhobIRJclVjSozWwlCtawMqcHSTZsne46y3L2LPaPQNhrfU20e\n", - "u9yoZLESG9FJxpvJoumRfJL+DTZf/BV3//rbmn9iovPHGlbW1p0dpJL2vmGr5+hWVM9Hnt7Ht/K5\n", - "HH/9azyvDWxg9m7e1vuIKcNk8ddhhzvfzkqblS2GMz73HOcPFp3f+8lEo75r+1Iia2UmF9aUjZF2\n", - "Y+RaYLxMZ50vPcGLR6QFXxqydosHG1Q5J9c52mKyzMkST6otV4ceJgOPQ+Z+u6XR6JqELWURjVUe\n", - "ZpuCllm4ZWetttI4MukMeL6ilWlLdOZjiW3bs7GYvSy7nDuublmranUx1z0eu/qwduWQnzhH9zJ+\n", - "KYSwxPZf5sW1hUJyeI1Xvi2E5v/N/M3z/Mi73ilwj+Wf4kdOZb+Hv/5kJjz9LGc+/J4x5gd5MODS\n", - "7sJr6fNfy0X6hi5GIMbxL4YQXub2Bqa/7sEYchQWJNX0PW2pvQ6jlOc3efE2R0ukJSvDBzaXCneW\n", - "VqUq43TPvLnvpQdcbPLFJxm+RDfyxHxmff9Nn1/ZceMTy8rZfb3LY+eGxJUT75y5JjaiGEuTGAml\n", - "NWyi1tHUdhAqqyHXiktajYca6b7Gs/tuZw1ls+V8UlhDI9R6HtsNR24lUd6da8635XHqdmtoo9X0\n", - "OL9kdv+n+M5sQR65fsLdEMLfwS9Y3AvTxZ/dj/FSf2Hc0x2Sl4vPy8DV1xaGjrcqqu8LIbzxtVbC\n", - "3yD4BH4xRu+nVv9n8V+9j/v/g4wN2svsvcS1GUcd8k7uuf25aX/HYKVvZVR4YjB3b61jsHVBfaaQ\n", - "zCfmsXZSdU1Siu19FwZcf5PXrj22Fqf20yVHoTILx5YmY/F2y+Dtq2bbDdn5Xamxpebcap2SlPrZ\n", - "wIN84qAuXKivOEqW5XFq2pjY3061q46TNPdaf2gWjx3nU1Uo6BRUTTGZaGTRJGeSETqsVJyveLK3\n", - "+H+W/93Y5oiVeuYDbx27c6bnZDlxafpA8tRUdZ8nd7l/tqH50UYIRcH/+ZVeSr8RmiF8+Bw/3JNd\n", - "nkmaKyH5lWPxv38f3V4f8fD+wpAsvcDWqUjm5S3O3WVljf2K7l3WLhaeOTh2a2tJJy/NGjfcSWc2\n", - "J7WnI7dyHm2Rp/zc8iLktB4vPrvaZgXTe+wEHp5nO6WIjJOJTkg8JdNQKJJl90NUxcSRLUdFIglL\n", - "ZEOT9tCgPVFXv0JoEjJlmBm1CleKjn4yctLY0W807M6PHah85GWevU+d8KVV2m8tpm7Q/yQfW+HD\n", - "d798Si40+fvfF9z+sVN+1K9Kuy9w/AK9x3zYVzBU7HPh7FeIFjm7IE5f8ofFyG+MU2b4VzK2aS04\n", - "Wz/1p7j6Ntu3UfKZs4ze5MylxWbHG5x5QLlReiI8VLUe6k7Yay++B7IVXr6W6XRyl5JUQ2mnXbhx\n", - "du6P/PyO1tKue9+eeGqXi+sd46VVmYk7MnNNMw1NE3OZmVxUi8hMHemYm2lmLGXk+TkxFHrWrMRC\n", - "HWYKE1HUEXXDFbN0JqQzMea6MXN9Otbc/GUH33ONmHCmy/K+7KVE+oMHuvdpfalt0Oga7h9LLmRu\n", - "jprebEysnZlJm3zHCUct6gaTQOcO5zNuncPXZdbB7xM+YeH38X7iM/hACLoxGn3Vrf8Q78UKx9/G\n", - "B5cXSrKdpcqjbqY1T60eT433+no3KydbCc80HH7oUOxEV+uupVkpTUpHYebGKqHNzkrDQw1lo9DK\n", - "H9iKtcmcc0Xbm5fX3N3INMtAkVvLL2g5dpyRh7EQE+uG0mRTljTFqi+bd3WSHUW7kJjIi9xefkmd\n", - "XJOVUTfMFPGWsnFiN2mZpxd0tMRwZG7fW2Hmo3NOziWO0548C/aXJtbMFWHk+Xsjr11lraCdsj9a\n", - "8rlL5w1WOup2Lf/3DhXXQgh/I8b4VZ/zEMK1J4X/6KL1My1rw0Q62XX0idccPRVC+JHTUfDvK067\n", - "4P8XP/VDbH4PT53whVWmN7h3gS5WksWicyNj2JnK86nVhCwuzs1yubAZKWpagXnGWsXFOZ2aX1nh\n", - "UkEPr71Ae4cnEs6EZBGxGGpPqFHYFtwOiV4MBqG1+MVJX+2YpBRcxkxILyKK7gtKTUMHeamZBkEh\n", - "pkEjXfMoNPyTlyZ+8rlKNi41HpM3a3v3QwhbXPgwT50q/Y57qceXctOlmaVeymyJ9L3na4+1iexq\n", - "kG+G0J4w/YKFBPgy6pzZMY1ff56PaY597by1b4pi5CshhPRJnv5hnqnYPeDVj/D5D3H8WQ7/0WKu\n", - "dnCVImGWLUxj1t7hlTXCbq6YNhQX56pmYX8zt513ZYKmxJJEHVMvp6VPvViaF6mz9YZkf+DBhSDN\n", - "m5aM9ZNr7poo1DqxZRY4kukbGGNFZkcphGXnjXUs2UvWbXnk2FyUmuk40ldYljhUoLasSjuqdN9x\n", - "7MrzgU53LEkL9SSnOdBZ2hAa61ayHeHyI/nlygcPxu7WZ+32thwWfb0vDDxu3Dbb2vXUw8XtUjU4\n", - "nnPhDm+se48z5TcpPo7/8v08gBhNQvBFCzLZVwhZ/MZECKFF8iTNVSY7ePu34yS6IK6e+y6e2mWt\n", - "z9aU9br21tnC22tt3cNS0T7w+W9ZM1/JzKuhZGNotdHTnlbKrBKbiUasLOHm+bP2+tvKVqblQOpQ\n", - "CBODfMsgWZPVS7JWw9H0gWanqTVrCSEK6UAZK8JIK6ZyK3rxwGFYN29lkjCUigbpurk1uUy0K6Rn\n", - "xLiqTudiMjS1qdSSm6Kp1DUMt91oJ3ouelj09ePUSb4nzOd2+4eyIf0h8x5VmXqwet2st6VZUlZ9\n", - "WX6i+OiMfyuE8J99tTyTDb57S297yfYj0hrO2rq3J145Uf0p75MEPcZ4GEL4G4QnuD5keo3mhabj\n", - "jcqnN0rdnLrJ9hIXjxfRXFnNalhkA9XpQvMwqjlXsVvQnjBrBKsd+lk0axBTqpQnh9wT1HJJmJtg\n", - "KNiQO7apXRemdSJPW6qwTUhxR+Ka6FjtWbS0pWZStQcm5mp7jpIM1+3HC7IwkyYPTdofUkVCPpeH\n", - "I2WRKC/t81feVmSLIPmH68t2nl+TlCeqrSCeKV148g1H86ZZ/ynFF+8LFx9Y+9CeVnviyqv0/lTq\n", - "U//GVYPJ9UUl5i3SX6Z/gePzp9yThyy9toiof/VrvUbvZ1DetkXy6LPo/l5b0i72t/LSQsV2dJOt\n", - "f4XvPmBzjHscf47Xz/GLr8c4/LkQQq/hl7b63vp4LqtPdM4NXT/iaL6uqC+LSW3QKq3N33GSNZwN\n", - "uTQWhMpd6x6EFZXao5Uj43LHSnkiPN80bc60s7GmrjSZm8WJXnxLP1mSaNiX2jOyrKXSdl/beaXa\n", - "XKGn1hCl5iZqXXuuy4zklgSbasfmZjJNSdnUivuO8sxRLKUrmXr+UNa5ap6f6DdTzbgpZg15vKOx\n", - "3NYOV3TGJHmpemJb95cTs2zsZ8+PPLVL94CtLzBMuTf0G1gpfzMgBBm+Bb/4fh+LRXfko75JipEQ\n", - "whnO/yWeXma15HHKWw9DCH/rtyFX3GJrhRf/OW/8EPkKYZlmKA2bU6Otys7WeXndsTXpG99+0/Hl\n", - "gbyZinlDb5IqZhOpmZVs1Stbz1iZtCzPK2neU8g8jhOc0U264izTbq84CQ1F9kUHaUs/jFS6EstS\n", - "j43D1IFCM9TWve5AT6EycNbcWD9sSrRNw74iDM2r/mKFkLbVlnTtmTjWUFqSmGnZS1JFvaFR1opG\n", - "X2N2aCfvWpuO3NyYO0mDopcYanu43JGOK1m2zKgpfTd//sOPOOurPO8JTzQszd8tRN7FkuaI3ge9\n", - "j344C4nv6k9z5/sb4jNXVPmalWFpNt/1YO2ek3Zlc8oo0JxTtdlNuJWQdVitWC8ZNLlb0u6z2owe\n", - "WMTeHISeQaeynlRuP9lxN5zR0LJST5wkj3zeyPPajnRtl7VOcstj1yzaCQOJocRlZEq5oMRbco8s\n", - "Geo5NJbacdmKNVU4q5VOTOKSNFTKzjpxX+U6N16XfPC6unps9zKf7TQtr26K4UgWC8u68v2+Z+88\n", - "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\n", - "sHU2Mxr8fRWMfL96wDyHv/pWL+K7oRDCMtf/PH/0jPvLrGw2bA1GTjaW+Mqxg3P/yovvfrfhjQ7b\n", - "3RmO+mMhhE/zymbJZ5pq/9GChdMgP1dXn/TUxgNxsS5JJnobueX81HvudhTXCrfSxCPlVJ5kqjJV\n", - "1CtrZenLC5lury4bVfqtUgyZNPbV4tg0LAuGApK4qxnOrBrKLDs2MNKa/W+qe8pkTU1i6jVsmLoi\n", - "OFObhxFdTWMnUgfqbqtLXXVeTaLQs+GGA5ftCIbI5YLckS2JhonMWE9b07LEkkzw0KmUJDqMtzRC\n", - "33Je13jxyGBcd7esdF/sqt2qbJzS/2AIYY/m8BOsnDO+sqrqPSekOSHTGLKx37A4qXsxG/DKLj/w\n", - "5HzPDmm/xNMPearD5Y0QsiP+2bdbrpllw5b+Am97nKd3Z8HW3ffymQv8wJf4hyN+9RMoufgnv/bO\n", - "YZPbH+Dmdba+xMpfZmeNwVWebo51puwszkxodwsuVSRD7o/Zbs14IiMzT5payXrOE13WIzs5z14e\n", - "mqqpqUxCMFSzOv/ssdyOwoIpGl5Ss62jrm1JadmppoZbrmNRqpTqzfPiY9FYsG7ROdwWjC3rO5Pr\n", - "a2FBS8RAYcminqGRMu4qjDXiWBqeMh5n0upEzY7m1lhzVDla5zc/2CBpe/TkJSdPPe1kN0FkZZXs\n", - "FY0PTV1aChrlkryIhsOviB88b/f4CfbfzqW9Wbbr17+T7/PvpD8IRr5R61vEBs0PqG48I7wnV2Rt\n", - "zeMVw3TRa4tHFh5OdWOq9uCW9JHKYlpoGJqGoURppLIss6qptI7b6qIHFkUrZtvfNDU2tKbpdQ+V\n", - "1i0ZSoz0VXKpTM+iiYGGgbZUKlNXGCllUh2VXalhKOwKzse6UdKSxEoMxSw/ExJjZyb60ubQ07Gm\n", - "JRGqh+53rtotOtLpnmkyJTvj9R/j4y/wkwe8c41am6LtYPgai6XOKbdX2EvJb/O+PY7as3rr7xv9\n", - "EP7bt3oR30Kv4lwIlmP0LZ9gfm+o8TRPJWwMeO5tvPe4NFoMFpMje481NOMdS1cLw7T/dQZs8xvf\n", - "SQjh9ZtqPzPSe6KmmpzaWRvZ6o5k45HQnj1Rdx6y2ZvY265RW7I46uo36qZFbhKiflnopdFBOZFk\n", - "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\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "X, y = sklearn.datasets.make_classification(\n", - " n_samples=10000, n_features=4, n_redundant=0, n_informative=2, \n", - " n_clusters_per_class=2, hypercube=False, random_state=0\n", - ")\n", - "\n", - "# Split into train and test\n", - "X, Xt, y, yt = sklearn.cross_validation.train_test_split(X, y)\n", - "\n", - "# Visualize sample of the data\n", - "ind = np.random.permutation(X.shape[0])[:1000]\n", - "df = pd.DataFrame(X[ind])\n", - "_ = pd.scatter_matrix(df, figsize=(9, 9), diagonal='kde', marker='o', s=40, alpha=.4, c=y[ind])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Learn and evaluate scikit-learn's logistic regression with stochastic gradient descent (SGD) training. Time and check the classifier's accuracy." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 0.783\n", - "Accuracy: 0.783\n", - "Accuracy: 0.783\n", - "Accuracy: 0.783\n", - "1 loops, best of 3: 508 ms per loop\n" - ] - } - ], - "source": [ - "%%timeit\n", - "# Train and test the scikit-learn SGD logistic regression.\n", - "clf = sklearn.linear_model.SGDClassifier(\n", - " loss='log', n_iter=1000, penalty='l2', alpha=1e-3, class_weight='auto')\n", - "\n", - "clf.fit(X, y)\n", - "yt_pred = clf.predict(Xt)\n", - "print('Accuracy: {:.3f}'.format(sklearn.metrics.accuracy_score(yt, yt_pred)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Save the dataset to HDF5 for loading in Caffe." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Write out the data to HDF5 files in a temp directory.\n", - "# This file is assumed to be caffe_root/examples/hdf5_classification.ipynb\n", - "dirname = os.path.abspath('./examples/hdf5_classification/data')\n", - "if not os.path.exists(dirname):\n", - " os.makedirs(dirname)\n", - "\n", - "train_filename = os.path.join(dirname, 'train.h5')\n", - "test_filename = os.path.join(dirname, 'test.h5')\n", - "\n", - "# HDF5DataLayer source should be a file containing a list of HDF5 filenames.\n", - "# To show this off, we'll list the same data file twice.\n", - "with h5py.File(train_filename, 'w') as f:\n", - " f['data'] = X\n", - " f['label'] = y.astype(np.float32)\n", - "with open(os.path.join(dirname, 'train.txt'), 'w') as f:\n", - " f.write(train_filename + '\\n')\n", - " f.write(train_filename + '\\n')\n", - " \n", - "# HDF5 is pretty efficient, but can be further compressed.\n", - "comp_kwargs = {'compression': 'gzip', 'compression_opts': 1}\n", - "with h5py.File(test_filename, 'w') as f:\n", - " f.create_dataset('data', data=Xt, **comp_kwargs)\n", - " f.create_dataset('label', data=yt.astype(np.float32), **comp_kwargs)\n", - "with open(os.path.join(dirname, 'test.txt'), 'w') as f:\n", - " f.write(test_filename + '\\n')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's define logistic regression in Caffe through Python net specification. This is a quick and natural way to define nets that sidesteps manually editing the protobuf model." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from caffe import layers as L\n", - "from caffe import params as P\n", - "\n", - "def logreg(hdf5, batch_size):\n", - " # logistic regression: data, matrix multiplication, and 2-class softmax loss\n", - " n = caffe.NetSpec()\n", - " n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)\n", - " n.ip1 = L.InnerProduct(n.data, num_output=2, weight_filler=dict(type='xavier'))\n", - " n.accuracy = L.Accuracy(n.ip1, n.label)\n", - " n.loss = L.SoftmaxWithLoss(n.ip1, n.label)\n", - " return n.to_proto()\n", - " \n", - "with open('examples/hdf5_classification/logreg_auto_train.prototxt', 'w') as f:\n", - " f.write(str(logreg('examples/hdf5_classification/data/train.txt', 10)))\n", - " \n", - "with open('examples/hdf5_classification/logreg_auto_test.prototxt', 'w') as f:\n", - " f.write(str(logreg('examples/hdf5_classification/data/test.txt', 10)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Time to learn and evaluate our Caffeinated logistic regression in Python." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 0.782\n", - "Accuracy: 0.782\n", - "Accuracy: 0.782\n", - "Accuracy: 0.782\n", - "1 loops, best of 3: 287 ms per loop\n" - ] - } - ], - "source": [ - "%%timeit\n", - "caffe.set_mode_cpu()\n", - "solver = caffe.get_solver('examples/hdf5_classification/solver.prototxt')\n", - "solver.solve()\n", - "\n", - "accuracy = 0\n", - "batch_size = solver.test_nets[0].blobs['data'].num\n", - "test_iters = int(len(Xt) / batch_size)\n", - "for i in range(test_iters):\n", - " solver.test_nets[0].forward()\n", - " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", - "accuracy /= test_iters\n", - "\n", - "print(\"Accuracy: {:.3f}\".format(accuracy))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Do the same through the command line interface for detailed output on the model and solving." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "I0318 00:58:32.322571 2013098752 caffe.cpp:117] Use CPU.\n", - "I0318 00:58:32.643163 2013098752 caffe.cpp:121] Starting Optimization\n", - "I0318 00:58:32.643229 2013098752 solver.cpp:32] Initializing solver from parameters: \n", - "train_net: \"examples/hdf5_classification/logreg_auto_train.prototxt\"\n", - "test_net: \"examples/hdf5_classification/logreg_auto_test.prototxt\"\n", - "test_iter: 250\n", - "test_interval: 1000\n", - "base_lr: 0.01\n", - "display: 1000\n", - "max_iter: 10000\n", - "lr_policy: \"step\"\n", - "gamma: 0.1\n", - "momentum: 0.9\n", - "weight_decay: 0.0005\n", - "stepsize: 5000\n", - "snapshot: 10000\n", - "snapshot_prefix: \"examples/hdf5_classification/data/train\"\n", - "solver_mode: CPU\n", - "I0318 00:58:32.643333 2013098752 solver.cpp:61] Creating training net from train_net file: examples/hdf5_classification/logreg_auto_train.prototxt\n", - "I0318 00:58:32.643465 2013098752 net.cpp:42] Initializing net from parameters: \n", - "state {\n", - " phase: TRAIN\n", - "}\n", - "layer {\n", - " name: \"data\"\n", - " type: \"HDF5Data\"\n", - " top: \"data\"\n", - " top: \"label\"\n", - " hdf5_data_param {\n", - " source: \"examples/hdf5_classification/data/train.txt\"\n", - " batch_size: 10\n", - " }\n", - "}\n", - "layer {\n", - " name: \"ip1\"\n", - " type: \"InnerProduct\"\n", - " bottom: \"data\"\n", - " top: \"ip1\"\n", - " inner_product_param {\n", - " num_output: 2\n", - " weight_filler {\n", - " type: \"xavier\"\n", - " }\n", - " }\n", - "}\n", - "layer {\n", - " name: \"accuracy\"\n", - " type: \"Accuracy\"\n", - " bottom: \"ip1\"\n", - " bottom: \"label\"\n", - " top: \"accuracy\"\n", - "}\n", - "layer {\n", - " name: \"loss\"\n", - " type: \"SoftmaxWithLoss\"\n", - " bottom: \"ip1\"\n", - " bottom: \"label\"\n", - " top: \"loss\"\n", - "}\n", - "I0318 00:58:32.644197 2013098752 layer_factory.hpp:74] Creating layer data\n", - "I0318 00:58:32.644219 2013098752 net.cpp:84] Creating Layer data\n", - "I0318 00:58:32.644230 2013098752 net.cpp:338] data -> data\n", - "I0318 00:58:32.644256 2013098752 net.cpp:338] data -> label\n", - "I0318 00:58:32.644269 2013098752 net.cpp:113] Setting up data\n", - "I0318 00:58:32.644278 2013098752 hdf5_data_layer.cpp:66] Loading list of HDF5 filenames from: examples/hdf5_classification/data/train.txt\n", - "I0318 00:58:32.644327 2013098752 hdf5_data_layer.cpp:80] Number of HDF5 files: 2\n", - "I0318 00:58:32.646458 2013098752 net.cpp:120] Top shape: 10 4 (40)\n", - "I0318 00:58:32.646502 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:32.646518 2013098752 layer_factory.hpp:74] Creating layer label_data_1_split\n", - "I0318 00:58:32.646538 2013098752 net.cpp:84] Creating Layer label_data_1_split\n", - "I0318 00:58:32.646546 2013098752 net.cpp:380] label_data_1_split <- label\n", - "I0318 00:58:32.646556 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_0\n", - "I0318 00:58:32.646569 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_1\n", - "I0318 00:58:32.646579 2013098752 net.cpp:113] Setting up label_data_1_split\n", - "I0318 00:58:32.646586 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:32.646595 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:32.646601 2013098752 layer_factory.hpp:74] Creating layer ip1\n", - "I0318 00:58:32.646615 2013098752 net.cpp:84] Creating Layer ip1\n", - "I0318 00:58:32.646622 2013098752 net.cpp:380] ip1 <- data\n", - "I0318 00:58:32.646664 2013098752 net.cpp:338] ip1 -> ip1\n", - "I0318 00:58:32.646689 2013098752 net.cpp:113] Setting up ip1\n", - "I0318 00:58:32.652330 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:32.652371 2013098752 layer_factory.hpp:74] Creating layer ip1_ip1_0_split\n", - "I0318 00:58:32.652393 2013098752 net.cpp:84] Creating Layer ip1_ip1_0_split\n", - "I0318 00:58:32.652407 2013098752 net.cpp:380] ip1_ip1_0_split <- ip1\n", - "I0318 00:58:32.652421 2013098752 net.cpp:338] ip1_ip1_0_split -> ip1_ip1_0_split_0\n", - "I0318 00:58:32.652467 2013098752 net.cpp:338] ip1_ip1_0_split -> ip1_ip1_0_split_1\n", - "I0318 00:58:32.652480 2013098752 net.cpp:113] Setting up ip1_ip1_0_split\n", - "I0318 00:58:32.652489 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:32.652498 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:32.652505 2013098752 layer_factory.hpp:74] Creating layer accuracy\n", - "I0318 00:58:32.652521 2013098752 net.cpp:84] Creating Layer accuracy\n", - "I0318 00:58:32.652534 2013098752 net.cpp:380] accuracy <- ip1_ip1_0_split_0\n", - "I0318 00:58:32.652545 2013098752 net.cpp:380] accuracy <- label_data_1_split_0\n", - "I0318 00:58:32.652562 2013098752 net.cpp:338] accuracy -> accuracy\n", - "I0318 00:58:32.652577 2013098752 net.cpp:113] Setting up accuracy\n", - "I0318 00:58:32.652590 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:32.652642 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:32.652655 2013098752 net.cpp:84] Creating Layer loss\n", - "I0318 00:58:32.652663 2013098752 net.cpp:380] loss <- ip1_ip1_0_split_1\n", - "I0318 00:58:32.652672 2013098752 net.cpp:380] loss <- label_data_1_split_1\n", - "I0318 00:58:32.652679 2013098752 net.cpp:338] loss -> loss\n", - "I0318 00:58:32.652689 2013098752 net.cpp:113] Setting up loss\n", - "I0318 00:58:32.652701 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:32.652716 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:32.652724 2013098752 net.cpp:122] with loss weight 1\n", - "I0318 00:58:32.652740 2013098752 net.cpp:167] loss needs backward computation.\n", - "I0318 00:58:32.652746 2013098752 net.cpp:169] accuracy does not need backward computation.\n", - "I0318 00:58:32.652753 2013098752 net.cpp:167] ip1_ip1_0_split needs backward computation.\n", - "I0318 00:58:32.652760 2013098752 net.cpp:167] ip1 needs backward computation.\n", - "I0318 00:58:32.652786 2013098752 net.cpp:169] label_data_1_split does not need backward computation.\n", - "I0318 00:58:32.652801 2013098752 net.cpp:169] data does not need backward computation.\n", - "I0318 00:58:32.652808 2013098752 net.cpp:205] This network produces output accuracy\n", - "I0318 00:58:32.652815 2013098752 net.cpp:205] This network produces output loss\n", - "I0318 00:58:32.652825 2013098752 net.cpp:447] Collecting Learning Rate and Weight Decay.\n", - "I0318 00:58:32.652833 2013098752 net.cpp:217] Network initialization done.\n", - "I0318 00:58:32.652839 2013098752 net.cpp:218] Memory required for data: 528\n", - "I0318 00:58:32.652964 2013098752 solver.cpp:154] Creating test net (#0) specified by test_net file: examples/hdf5_classification/logreg_auto_test.prototxt\n", - "I0318 00:58:32.652986 2013098752 net.cpp:42] Initializing net from parameters: \n", - "state {\n", - " phase: TEST\n", - "}\n", - "layer {\n", - " name: \"data\"\n", - " type: \"HDF5Data\"\n", - " top: \"data\"\n", - " top: \"label\"\n", - " hdf5_data_param {\n", - " source: \"examples/hdf5_classification/data/test.txt\"\n", - " batch_size: 10\n", - " }\n", - "}\n", - "layer {\n", - " name: \"ip1\"\n", - " type: \"InnerProduct\"\n", - " bottom: \"data\"\n", - " top: \"ip1\"\n", - " inner_product_param {\n", - " num_output: 2\n", - " weight_filler {\n", - " type: \"xavier\"\n", - " }\n", - " }\n", - "}\n", - "layer {\n", - " name: \"accuracy\"\n", - " type: \"Accuracy\"\n", - " bottom: \"ip1\"\n", - " bottom: \"label\"\n", - " top: \"accuracy\"\n", - "}\n", - "layer {\n", - " name: \"loss\"\n", - " type: \"SoftmaxWithLoss\"\n", - " bottom: \"ip1\"\n", - " bottom: \"label\"\n", - " top: \"loss\"\n", - "}\n", - "I0318 00:58:32.653069 2013098752 layer_factory.hpp:74] Creating layer data\n", - "I0318 00:58:32.653080 2013098752 net.cpp:84] Creating Layer data\n", - "I0318 00:58:32.653090 2013098752 net.cpp:338] data -> data\n", - "I0318 00:58:32.653128 2013098752 net.cpp:338] data -> label\n", - "I0318 00:58:32.653146 2013098752 net.cpp:113] Setting up data\n", - "I0318 00:58:32.653154 2013098752 hdf5_data_layer.cpp:66] Loading list of HDF5 filenames from: examples/hdf5_classification/data/test.txt\n", - "I0318 00:58:32.653192 2013098752 hdf5_data_layer.cpp:80] Number of HDF5 files: 1\n", - "I0318 00:58:32.654850 2013098752 net.cpp:120] Top shape: 10 4 (40)\n", - "I0318 00:58:32.654897 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:32.654914 2013098752 layer_factory.hpp:74] Creating layer label_data_1_split\n", - "I0318 00:58:32.654933 2013098752 net.cpp:84] Creating Layer label_data_1_split\n", - "I0318 00:58:32.654943 2013098752 net.cpp:380] label_data_1_split <- label\n", - "I0318 00:58:32.654953 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_0\n", - "I0318 00:58:32.654966 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_1\n", - "I0318 00:58:32.654976 2013098752 net.cpp:113] Setting up label_data_1_split\n", - "I0318 00:58:32.654985 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:32.654992 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:32.655000 2013098752 layer_factory.hpp:74] Creating layer ip1\n", - "I0318 00:58:32.655010 2013098752 net.cpp:84] Creating Layer ip1\n", - "I0318 00:58:32.655017 2013098752 net.cpp:380] ip1 <- data\n", - "I0318 00:58:32.655030 2013098752 net.cpp:338] ip1 -> ip1\n", - "I0318 00:58:32.655041 2013098752 net.cpp:113] Setting up ip1\n", - "I0318 00:58:32.655061 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:32.655072 2013098752 layer_factory.hpp:74] Creating layer ip1_ip1_0_split\n", - "I0318 00:58:32.655148 2013098752 net.cpp:84] Creating Layer ip1_ip1_0_split\n", - "I0318 00:58:32.655159 2013098752 net.cpp:380] ip1_ip1_0_split <- ip1\n", - "I0318 00:58:32.655170 2013098752 net.cpp:338] ip1_ip1_0_split -> ip1_ip1_0_split_0\n", - "I0318 00:58:32.655180 2013098752 net.cpp:338] ip1_ip1_0_split -> ip1_ip1_0_split_1\n", - "I0318 00:58:32.655190 2013098752 net.cpp:113] Setting up ip1_ip1_0_split\n", - "I0318 00:58:32.655199 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:32.655206 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:32.655213 2013098752 layer_factory.hpp:74] Creating layer accuracy\n", - "I0318 00:58:32.655223 2013098752 net.cpp:84] Creating Layer accuracy\n", - "I0318 00:58:32.655230 2013098752 net.cpp:380] accuracy <- ip1_ip1_0_split_0\n", - "I0318 00:58:32.655237 2013098752 net.cpp:380] accuracy <- label_data_1_split_0\n", - "I0318 00:58:32.655251 2013098752 net.cpp:338] accuracy -> accuracy\n", - "I0318 00:58:32.655259 2013098752 net.cpp:113] Setting up accuracy\n", - "I0318 00:58:32.655267 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:32.655340 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:32.655354 2013098752 net.cpp:84] Creating Layer loss\n", - "I0318 00:58:32.655361 2013098752 net.cpp:380] loss <- ip1_ip1_0_split_1\n", - "I0318 00:58:32.655369 2013098752 net.cpp:380] loss <- label_data_1_split_1\n", - "I0318 00:58:32.655378 2013098752 net.cpp:338] loss -> loss\n", - "I0318 00:58:32.655388 2013098752 net.cpp:113] Setting up loss\n", - "I0318 00:58:32.655397 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:32.655414 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:32.655422 2013098752 net.cpp:122] with loss weight 1\n", - "I0318 00:58:32.655438 2013098752 net.cpp:167] loss needs backward computation.\n", - "I0318 00:58:32.655446 2013098752 net.cpp:169] accuracy does not need backward computation.\n", - "I0318 00:58:32.655455 2013098752 net.cpp:167] ip1_ip1_0_split needs backward computation.\n", - "I0318 00:58:32.655462 2013098752 net.cpp:167] ip1 needs backward computation.\n", - "I0318 00:58:32.655469 2013098752 net.cpp:169] label_data_1_split does not need backward computation.\n", - "I0318 00:58:32.655477 2013098752 net.cpp:169] data does not need backward computation.\n", - "I0318 00:58:32.655483 2013098752 net.cpp:205] This network produces output accuracy\n", - "I0318 00:58:32.655489 2013098752 net.cpp:205] This network produces output loss\n", - "I0318 00:58:32.655503 2013098752 net.cpp:447] Collecting Learning Rate and Weight Decay.\n", - "I0318 00:58:32.655511 2013098752 net.cpp:217] Network initialization done.\n", - "I0318 00:58:32.655517 2013098752 net.cpp:218] Memory required for data: 528\n", - "I0318 00:58:32.655547 2013098752 solver.cpp:42] Solver scaffolding done.\n", - "I0318 00:58:32.655567 2013098752 solver.cpp:222] Solving \n", - "I0318 00:58:32.655575 2013098752 solver.cpp:223] Learning Rate Policy: step\n", - "I0318 00:58:32.655583 2013098752 solver.cpp:266] Iteration 0, Testing net (#0)\n", - "I0318 00:58:32.683643 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.3736\n", - "I0318 00:58:32.683686 2013098752 solver.cpp:315] Test net output #1: loss = 1.00555 (* 1 = 1.00555 loss)\n", - "I0318 00:58:32.683846 2013098752 solver.cpp:189] Iteration 0, loss = 0.869394\n", - "I0318 00:58:32.683861 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.3\n", - "I0318 00:58:32.683871 2013098752 solver.cpp:204] Train net output #1: loss = 0.869394 (* 1 = 0.869394 loss)\n", - "I0318 00:58:32.683883 2013098752 solver.cpp:464] Iteration 0, lr = 0.01\n", - "I0318 00:58:32.698721 2013098752 solver.cpp:266] Iteration 1000, Testing net (#0)\n", - "I0318 00:58:32.701917 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7848\n", - "I0318 00:58:32.701961 2013098752 solver.cpp:315] Test net output #1: loss = 0.590972 (* 1 = 0.590972 loss)\n", - "I0318 00:58:32.702014 2013098752 solver.cpp:189] Iteration 1000, loss = 0.54742\n", - "I0318 00:58:32.702029 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.7\n", - "I0318 00:58:32.702041 2013098752 solver.cpp:204] Train net output #1: loss = 0.54742 (* 1 = 0.54742 loss)\n", - "I0318 00:58:32.702051 2013098752 solver.cpp:464] Iteration 1000, lr = 0.01\n", - "I0318 00:58:32.718360 2013098752 solver.cpp:266] Iteration 2000, Testing net (#0)\n", - "I0318 00:58:32.721529 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7696\n", - "I0318 00:58:32.721562 2013098752 solver.cpp:315] Test net output #1: loss = 0.593946 (* 1 = 0.593946 loss)\n", - "I0318 00:58:32.721593 2013098752 solver.cpp:189] Iteration 2000, loss = 0.729569\n", - "I0318 00:58:32.721603 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.5\n", - "I0318 00:58:32.721613 2013098752 solver.cpp:204] Train net output #1: loss = 0.729569 (* 1 = 0.729569 loss)\n", - "I0318 00:58:32.721622 2013098752 solver.cpp:464] Iteration 2000, lr = 0.01\n", - "I0318 00:58:32.740182 2013098752 solver.cpp:266] Iteration 3000, Testing net (#0)\n", - "I0318 00:58:32.743494 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.77\n", - "I0318 00:58:32.743544 2013098752 solver.cpp:315] Test net output #1: loss = 0.591229 (* 1 = 0.591229 loss)\n", - "I0318 00:58:32.744209 2013098752 solver.cpp:189] Iteration 3000, loss = 0.406097\n", - "I0318 00:58:32.744231 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.8\n", - "I0318 00:58:32.744249 2013098752 solver.cpp:204] Train net output #1: loss = 0.406096 (* 1 = 0.406096 loss)\n", - "I0318 00:58:32.744266 2013098752 solver.cpp:464] Iteration 3000, lr = 0.01\n", - "I0318 00:58:32.764135 2013098752 solver.cpp:266] Iteration 4000, Testing net (#0)\n", - "I0318 00:58:32.769110 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7848\n", - "I0318 00:58:32.769170 2013098752 solver.cpp:315] Test net output #1: loss = 0.590972 (* 1 = 0.590972 loss)\n", - "I0318 00:58:32.769223 2013098752 solver.cpp:189] Iteration 4000, loss = 0.54742\n", - "I0318 00:58:32.769242 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.7\n", - "I0318 00:58:32.769255 2013098752 solver.cpp:204] Train net output #1: loss = 0.54742 (* 1 = 0.54742 loss)\n", - "I0318 00:58:32.769265 2013098752 solver.cpp:464] Iteration 4000, lr = 0.01\n", - "I0318 00:58:32.785846 2013098752 solver.cpp:266] Iteration 5000, Testing net (#0)\n", - "I0318 00:58:32.788722 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7696\n", - "I0318 00:58:32.788751 2013098752 solver.cpp:315] Test net output #1: loss = 0.593946 (* 1 = 0.593946 loss)\n", - "I0318 00:58:32.788811 2013098752 solver.cpp:189] Iteration 5000, loss = 0.72957\n", - "I0318 00:58:32.788833 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.5\n", - "I0318 00:58:32.788846 2013098752 solver.cpp:204] Train net output #1: loss = 0.729569 (* 1 = 0.729569 loss)\n", - "I0318 00:58:32.788856 2013098752 solver.cpp:464] Iteration 5000, lr = 0.001\n", - "I0318 00:58:32.804762 2013098752 solver.cpp:266] Iteration 6000, Testing net (#0)\n", - "I0318 00:58:32.808061 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7856\n", - "I0318 00:58:32.808112 2013098752 solver.cpp:315] Test net output #1: loss = 0.59028 (* 1 = 0.59028 loss)\n", - "I0318 00:58:32.808732 2013098752 solver.cpp:189] Iteration 6000, loss = 0.415444\n", - "I0318 00:58:32.808753 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:32.808773 2013098752 solver.cpp:204] Train net output #1: loss = 0.415444 (* 1 = 0.415444 loss)\n", - "I0318 00:58:32.808786 2013098752 solver.cpp:464] Iteration 6000, lr = 0.001\n", - "I0318 00:58:32.827118 2013098752 solver.cpp:266] Iteration 7000, Testing net (#0)\n", - "I0318 00:58:32.831614 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7848\n", - "I0318 00:58:32.831657 2013098752 solver.cpp:315] Test net output #1: loss = 0.589454 (* 1 = 0.589454 loss)\n", - "I0318 00:58:32.831707 2013098752 solver.cpp:189] Iteration 7000, loss = 0.538038\n", - "I0318 00:58:32.831728 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.8\n", - "I0318 00:58:32.831745 2013098752 solver.cpp:204] Train net output #1: loss = 0.538037 (* 1 = 0.538037 loss)\n", - "I0318 00:58:32.831759 2013098752 solver.cpp:464] Iteration 7000, lr = 0.001\n", - "I0318 00:58:32.849634 2013098752 solver.cpp:266] Iteration 8000, Testing net (#0)\n", - "I0318 00:58:32.852712 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7796\n", - "I0318 00:58:32.852748 2013098752 solver.cpp:315] Test net output #1: loss = 0.589365 (* 1 = 0.589365 loss)\n", - "I0318 00:58:32.852792 2013098752 solver.cpp:189] Iteration 8000, loss = 0.684219\n", - "I0318 00:58:32.852840 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.5\n", - "I0318 00:58:32.852852 2013098752 solver.cpp:204] Train net output #1: loss = 0.684219 (* 1 = 0.684219 loss)\n", - "I0318 00:58:32.852861 2013098752 solver.cpp:464] Iteration 8000, lr = 0.001\n", - "I0318 00:58:32.868440 2013098752 solver.cpp:266] Iteration 9000, Testing net (#0)\n", - "I0318 00:58:32.871438 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.7816\n", - "I0318 00:58:32.871461 2013098752 solver.cpp:315] Test net output #1: loss = 0.589656 (* 1 = 0.589656 loss)\n", - "I0318 00:58:32.872109 2013098752 solver.cpp:189] Iteration 9000, loss = 0.421879\n", - "I0318 00:58:32.872131 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:32.872143 2013098752 solver.cpp:204] Train net output #1: loss = 0.421879 (* 1 = 0.421879 loss)\n", - "I0318 00:58:32.872153 2013098752 solver.cpp:464] Iteration 9000, lr = 0.001\n", - "I0318 00:58:32.889981 2013098752 solver.cpp:334] Snapshotting to examples/hdf5_classification/data/train_iter_10000.caffemodel\n", - "I0318 00:58:32.890224 2013098752 solver.cpp:342] Snapshotting solver state to examples/hdf5_classification/data/train_iter_10000.solverstate\n", - "I0318 00:58:32.890362 2013098752 solver.cpp:248] Iteration 10000, loss = 0.538933\n", - "I0318 00:58:32.890380 2013098752 solver.cpp:266] Iteration 10000, Testing net (#0)\n", - "I0318 00:58:32.893728 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.782\n", - "I0318 00:58:32.893757 2013098752 solver.cpp:315] Test net output #1: loss = 0.589366 (* 1 = 0.589366 loss)\n", - "I0318 00:58:32.893775 2013098752 solver.cpp:253] Optimization Done.\n", - "I0318 00:58:32.893786 2013098752 caffe.cpp:134] Optimization Done.\n" - ] - } - ], - "source": [ - "!./build/tools/caffe train -solver examples/hdf5_classification/solver.prototxt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you look at output or the `logreg_auto_train.prototxt`, you'll see that the model is simple logistic regression.\n", - "We can make it a little more advanced by introducing a non-linearity between weights that take the input and weights that give the output -- now we have a two-layer network.\n", - "That network is given in `nonlinear_auto_train.prototxt`, and that's the only change made in `nonlinear_solver.prototxt` which we will now use.\n", - "\n", - "The final accuracy of the new network should be higher than logistic regression!" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "from caffe import layers as L\n", - "from caffe import params as P\n", - "\n", - "def nonlinear_net(hdf5, batch_size):\n", - " # one small nonlinearity, one leap for model kind\n", - " n = caffe.NetSpec()\n", - " n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)\n", - " # define a hidden layer of dimension 40\n", - " n.ip1 = L.InnerProduct(n.data, num_output=40, weight_filler=dict(type='xavier'))\n", - " # transform the output through the ReLU (rectified linear) non-linearity\n", - " n.relu1 = L.ReLU(n.ip1, in_place=True)\n", - " # score the (now non-linear) features\n", - " n.ip2 = L.InnerProduct(n.ip1, num_output=2, weight_filler=dict(type='xavier'))\n", - " # same accuracy and loss as before\n", - " n.accuracy = L.Accuracy(n.ip2, n.label)\n", - " n.loss = L.SoftmaxWithLoss(n.ip2, n.label)\n", - " return n.to_proto()\n", - " \n", - "with open('examples/hdf5_classification/nonlinear_auto_train.prototxt', 'w') as f:\n", - " f.write(str(nonlinear_net('examples/hdf5_classification/data/train.txt', 10)))\n", - " \n", - "with open('examples/hdf5_classification/nonlinear_auto_test.prototxt', 'w') as f:\n", - " f.write(str(nonlinear_net('examples/hdf5_classification/data/test.txt', 10)))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 0.832\n", - "Accuracy: 0.832\n", - "Accuracy: 0.832\n", - "Accuracy: 0.831\n", - "1 loops, best of 3: 386 ms per loop\n" - ] - } - ], - "source": [ - "%%timeit\n", - "caffe.set_mode_cpu()\n", - "solver = caffe.get_solver('examples/hdf5_classification/nonlinear_solver.prototxt')\n", - "solver.solve()\n", - "\n", - "accuracy = 0\n", - "batch_size = solver.test_nets[0].blobs['data'].num\n", - "test_iters = int(len(Xt) / batch_size)\n", - "for i in range(test_iters):\n", - " solver.test_nets[0].forward()\n", - " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", - "accuracy /= test_iters\n", - "\n", - "print(\"Accuracy: {:.3f}\".format(accuracy))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Do the same through the command line interface for detailed output on the model and solving." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "I0318 00:58:43.336922 2013098752 caffe.cpp:117] Use CPU.\n", - "I0318 00:58:43.654698 2013098752 caffe.cpp:121] Starting Optimization\n", - "I0318 00:58:43.654747 2013098752 solver.cpp:32] Initializing solver from parameters: \n", - "train_net: \"examples/hdf5_classification/nonlinear_auto_train.prototxt\"\n", - "test_net: \"examples/hdf5_classification/nonlinear_auto_test.prototxt\"\n", - "test_iter: 250\n", - "test_interval: 1000\n", - "base_lr: 0.01\n", - "display: 1000\n", - "max_iter: 10000\n", - "lr_policy: \"step\"\n", - "gamma: 0.1\n", - "momentum: 0.9\n", - "weight_decay: 0.0005\n", - "stepsize: 5000\n", - "snapshot: 10000\n", - "snapshot_prefix: \"examples/hdf5_classification/data/train\"\n", - "solver_mode: CPU\n", - "I0318 00:58:43.654855 2013098752 solver.cpp:61] Creating training net from train_net file: examples/hdf5_classification/nonlinear_auto_train.prototxt\n", - "I0318 00:58:43.655004 2013098752 net.cpp:42] Initializing net from parameters: \n", - "state {\n", - " phase: TRAIN\n", - "}\n", - "layer {\n", - " name: \"data\"\n", - " type: \"HDF5Data\"\n", - " top: \"data\"\n", - " top: \"label\"\n", - " hdf5_data_param {\n", - " source: \"examples/hdf5_classification/data/train.txt\"\n", - " batch_size: 10\n", - " }\n", - "}\n", - "layer {\n", - " name: \"ip1\"\n", - " type: \"InnerProduct\"\n", - " bottom: \"data\"\n", - " top: \"ip1\"\n", - " inner_product_param {\n", - " num_output: 40\n", - " weight_filler {\n", - " type: \"xavier\"\n", - " }\n", - " }\n", - "}\n", - "layer {\n", - " name: \"relu1\"\n", - " type: \"ReLU\"\n", - " bottom: \"ip1\"\n", - " top: \"ip1\"\n", - "}\n", - "layer {\n", - " name: \"ip2\"\n", - " type: \"InnerProduct\"\n", - " bottom: \"ip1\"\n", - " top: \"ip2\"\n", - " inner_product_param {\n", - " num_output: 2\n", - " weight_filler {\n", - " type: \"xavier\"\n", - " }\n", - " }\n", - "}\n", - "layer {\n", - " name: \"accuracy\"\n", - " type: \"Accuracy\"\n", - " bottom: \"ip2\"\n", - " bottom: \"label\"\n", - " top: \"accuracy\"\n", - "}\n", - "layer {\n", - " name: \"loss\"\n", - " type: \"SoftmaxWithLoss\"\n", - " bottom: \"ip2\"\n", - " bottom: \"label\"\n", - " top: \"loss\"\n", - "}\n", - "I0318 00:58:43.655120 2013098752 layer_factory.hpp:74] Creating layer data\n", - "I0318 00:58:43.655139 2013098752 net.cpp:84] Creating Layer data\n", - "I0318 00:58:43.655264 2013098752 net.cpp:338] data -> data\n", - "I0318 00:58:43.655297 2013098752 net.cpp:338] data -> label\n", - "I0318 00:58:43.655310 2013098752 net.cpp:113] Setting up data\n", - "I0318 00:58:43.655318 2013098752 hdf5_data_layer.cpp:66] Loading list of HDF5 filenames from: examples/hdf5_classification/data/train.txt\n", - "I0318 00:58:43.655365 2013098752 hdf5_data_layer.cpp:80] Number of HDF5 files: 2\n", - "I0318 00:58:43.657317 2013098752 net.cpp:120] Top shape: 10 4 (40)\n", - "I0318 00:58:43.657342 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:43.657356 2013098752 layer_factory.hpp:74] Creating layer label_data_1_split\n", - "I0318 00:58:43.657373 2013098752 net.cpp:84] Creating Layer label_data_1_split\n", - "I0318 00:58:43.657384 2013098752 net.cpp:380] label_data_1_split <- label\n", - "I0318 00:58:43.657395 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_0\n", - "I0318 00:58:43.657407 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_1\n", - "I0318 00:58:43.657418 2013098752 net.cpp:113] Setting up label_data_1_split\n", - "I0318 00:58:43.657426 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:43.657433 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:43.657441 2013098752 layer_factory.hpp:74] Creating layer ip1\n", - "I0318 00:58:43.657451 2013098752 net.cpp:84] Creating Layer ip1\n", - "I0318 00:58:43.657459 2013098752 net.cpp:380] ip1 <- data\n", - "I0318 00:58:43.657467 2013098752 net.cpp:338] ip1 -> ip1\n", - "I0318 00:58:43.657479 2013098752 net.cpp:113] Setting up ip1\n", - "I0318 00:58:43.662454 2013098752 net.cpp:120] Top shape: 10 40 (400)\n", - "I0318 00:58:43.662477 2013098752 layer_factory.hpp:74] Creating layer relu1\n", - "I0318 00:58:43.662497 2013098752 net.cpp:84] Creating Layer relu1\n", - "I0318 00:58:43.662508 2013098752 net.cpp:380] relu1 <- ip1\n", - "I0318 00:58:43.662520 2013098752 net.cpp:327] relu1 -> ip1 (in-place)\n", - "I0318 00:58:43.662530 2013098752 net.cpp:113] Setting up relu1\n", - "I0318 00:58:43.662539 2013098752 net.cpp:120] Top shape: 10 40 (400)\n", - "I0318 00:58:43.662546 2013098752 layer_factory.hpp:74] Creating layer ip2\n", - "I0318 00:58:43.662555 2013098752 net.cpp:84] Creating Layer ip2\n", - "I0318 00:58:43.662562 2013098752 net.cpp:380] ip2 <- ip1\n", - "I0318 00:58:43.662571 2013098752 net.cpp:338] ip2 -> ip2\n", - "I0318 00:58:43.662580 2013098752 net.cpp:113] Setting up ip2\n", - "I0318 00:58:43.662595 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:43.662606 2013098752 layer_factory.hpp:74] Creating layer ip2_ip2_0_split\n", - "I0318 00:58:43.662654 2013098752 net.cpp:84] Creating Layer ip2_ip2_0_split\n", - "I0318 00:58:43.662665 2013098752 net.cpp:380] ip2_ip2_0_split <- ip2\n", - "I0318 00:58:43.662678 2013098752 net.cpp:338] ip2_ip2_0_split -> ip2_ip2_0_split_0\n", - "I0318 00:58:43.662689 2013098752 net.cpp:338] ip2_ip2_0_split -> ip2_ip2_0_split_1\n", - "I0318 00:58:43.662698 2013098752 net.cpp:113] Setting up ip2_ip2_0_split\n", - "I0318 00:58:43.662706 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:43.662714 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:43.662722 2013098752 layer_factory.hpp:74] Creating layer accuracy\n", - "I0318 00:58:43.662734 2013098752 net.cpp:84] Creating Layer accuracy\n", - "I0318 00:58:43.662740 2013098752 net.cpp:380] accuracy <- ip2_ip2_0_split_0\n", - "I0318 00:58:43.662749 2013098752 net.cpp:380] accuracy <- label_data_1_split_0\n", - "I0318 00:58:43.662756 2013098752 net.cpp:338] accuracy -> accuracy\n", - "I0318 00:58:43.662766 2013098752 net.cpp:113] Setting up accuracy\n", - "I0318 00:58:43.662818 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:43.662827 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:43.662839 2013098752 net.cpp:84] Creating Layer loss\n", - "I0318 00:58:43.662847 2013098752 net.cpp:380] loss <- ip2_ip2_0_split_1\n", - "I0318 00:58:43.662854 2013098752 net.cpp:380] loss <- label_data_1_split_1\n", - "I0318 00:58:43.662863 2013098752 net.cpp:338] loss -> loss\n", - "I0318 00:58:43.662873 2013098752 net.cpp:113] Setting up loss\n", - "I0318 00:58:43.662883 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:43.662901 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:43.662909 2013098752 net.cpp:122] with loss weight 1\n", - "I0318 00:58:43.662922 2013098752 net.cpp:167] loss needs backward computation.\n", - "I0318 00:58:43.662930 2013098752 net.cpp:169] accuracy does not need backward computation.\n", - "I0318 00:58:43.662936 2013098752 net.cpp:167] ip2_ip2_0_split needs backward computation.\n", - "I0318 00:58:43.662942 2013098752 net.cpp:167] ip2 needs backward computation.\n", - "I0318 00:58:43.662976 2013098752 net.cpp:167] relu1 needs backward computation.\n", - "I0318 00:58:43.662988 2013098752 net.cpp:167] ip1 needs backward computation.\n", - "I0318 00:58:43.662997 2013098752 net.cpp:169] label_data_1_split does not need backward computation.\n", - "I0318 00:58:43.663003 2013098752 net.cpp:169] data does not need backward computation.\n", - "I0318 00:58:43.663009 2013098752 net.cpp:205] This network produces output accuracy\n", - "I0318 00:58:43.663017 2013098752 net.cpp:205] This network produces output loss\n", - "I0318 00:58:43.663028 2013098752 net.cpp:447] Collecting Learning Rate and Weight Decay.\n", - "I0318 00:58:43.663035 2013098752 net.cpp:217] Network initialization done.\n", - "I0318 00:58:43.663041 2013098752 net.cpp:218] Memory required for data: 3728\n", - "I0318 00:58:43.663158 2013098752 solver.cpp:154] Creating test net (#0) specified by test_net file: examples/hdf5_classification/nonlinear_auto_test.prototxt\n", - "I0318 00:58:43.663179 2013098752 net.cpp:42] Initializing net from parameters: \n", - "state {\n", - " phase: TEST\n", - "}\n", - "layer {\n", - " name: \"data\"\n", - " type: \"HDF5Data\"\n", - " top: \"data\"\n", - " top: \"label\"\n", - " hdf5_data_param {\n", - " source: \"examples/hdf5_classification/data/test.txt\"\n", - " batch_size: 10\n", - " }\n", - "}\n", - "layer {\n", - " name: \"ip1\"\n", - " type: \"InnerProduct\"\n", - " bottom: \"data\"\n", - " top: \"ip1\"\n", - " inner_product_param {\n", - " num_output: 40\n", - " weight_filler {\n", - " type: \"xavier\"\n", - " }\n", - " }\n", - "}\n", - "layer {\n", - " name: \"relu1\"\n", - " type: \"ReLU\"\n", - " bottom: \"ip1\"\n", - " top: \"ip1\"\n", - "}\n", - "layer {\n", - " name: \"ip2\"\n", - " type: \"InnerProduct\"\n", - " bottom: \"ip1\"\n", - " top: \"ip2\"\n", - " inner_product_param {\n", - " num_output: 2\n", - " weight_filler {\n", - " type: \"xavier\"\n", - " }\n", - " }\n", - "}\n", - "layer {\n", - " name: \"accuracy\"\n", - " type: \"Accuracy\"\n", - " bottom: \"ip2\"\n", - " bottom: \"label\"\n", - " top: \"accuracy\"\n", - "}\n", - "layer {\n", - " name: \"loss\"\n", - " type: \"SoftmaxWithLoss\"\n", - " bottom: \"ip2\"\n", - " bottom: \"label\"\n", - " top: \"loss\"\n", - "}\n", - "I0318 00:58:43.663349 2013098752 layer_factory.hpp:74] Creating layer data\n", - "I0318 00:58:43.663365 2013098752 net.cpp:84] Creating Layer data\n", - "I0318 00:58:43.663373 2013098752 net.cpp:338] data -> data\n", - "I0318 00:58:43.663385 2013098752 net.cpp:338] data -> label\n", - "I0318 00:58:43.663396 2013098752 net.cpp:113] Setting up data\n", - "I0318 00:58:43.663422 2013098752 hdf5_data_layer.cpp:66] Loading list of HDF5 filenames from: examples/hdf5_classification/data/test.txt\n", - "I0318 00:58:43.663457 2013098752 hdf5_data_layer.cpp:80] Number of HDF5 files: 1\n", - "I0318 00:58:43.664719 2013098752 net.cpp:120] Top shape: 10 4 (40)\n", - "I0318 00:58:43.664739 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:43.664754 2013098752 layer_factory.hpp:74] Creating layer label_data_1_split\n", - "I0318 00:58:43.664772 2013098752 net.cpp:84] Creating Layer label_data_1_split\n", - "I0318 00:58:43.664783 2013098752 net.cpp:380] label_data_1_split <- label\n", - "I0318 00:58:43.664791 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_0\n", - "I0318 00:58:43.664803 2013098752 net.cpp:338] label_data_1_split -> label_data_1_split_1\n", - "I0318 00:58:43.664813 2013098752 net.cpp:113] Setting up label_data_1_split\n", - "I0318 00:58:43.664822 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:43.664829 2013098752 net.cpp:120] Top shape: 10 (10)\n", - "I0318 00:58:43.664837 2013098752 layer_factory.hpp:74] Creating layer ip1\n", - "I0318 00:58:43.664846 2013098752 net.cpp:84] Creating Layer ip1\n", - "I0318 00:58:43.664854 2013098752 net.cpp:380] ip1 <- data\n", - "I0318 00:58:43.664862 2013098752 net.cpp:338] ip1 -> ip1\n", - "I0318 00:58:43.664875 2013098752 net.cpp:113] Setting up ip1\n", - "I0318 00:58:43.664901 2013098752 net.cpp:120] Top shape: 10 40 (400)\n", - "I0318 00:58:43.664924 2013098752 layer_factory.hpp:74] Creating layer relu1\n", - "I0318 00:58:43.664945 2013098752 net.cpp:84] Creating Layer relu1\n", - "I0318 00:58:43.664958 2013098752 net.cpp:380] relu1 <- ip1\n", - "I0318 00:58:43.664966 2013098752 net.cpp:327] relu1 -> ip1 (in-place)\n", - "I0318 00:58:43.664975 2013098752 net.cpp:113] Setting up relu1\n", - "I0318 00:58:43.664983 2013098752 net.cpp:120] Top shape: 10 40 (400)\n", - "I0318 00:58:43.664990 2013098752 layer_factory.hpp:74] Creating layer ip2\n", - "I0318 00:58:43.665000 2013098752 net.cpp:84] Creating Layer ip2\n", - "I0318 00:58:43.665006 2013098752 net.cpp:380] ip2 <- ip1\n", - "I0318 00:58:43.665015 2013098752 net.cpp:338] ip2 -> ip2\n", - "I0318 00:58:43.665030 2013098752 net.cpp:113] Setting up ip2\n", - "I0318 00:58:43.665052 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:43.665066 2013098752 layer_factory.hpp:74] Creating layer ip2_ip2_0_split\n", - "I0318 00:58:43.665077 2013098752 net.cpp:84] Creating Layer ip2_ip2_0_split\n", - "I0318 00:58:43.665086 2013098752 net.cpp:380] ip2_ip2_0_split <- ip2\n", - "I0318 00:58:43.665093 2013098752 net.cpp:338] ip2_ip2_0_split -> ip2_ip2_0_split_0\n", - "I0318 00:58:43.665103 2013098752 net.cpp:338] ip2_ip2_0_split -> ip2_ip2_0_split_1\n", - "I0318 00:58:43.665113 2013098752 net.cpp:113] Setting up ip2_ip2_0_split\n", - "I0318 00:58:43.665122 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:43.665128 2013098752 net.cpp:120] Top shape: 10 2 (20)\n", - "I0318 00:58:43.665137 2013098752 layer_factory.hpp:74] Creating layer accuracy\n", - "I0318 00:58:43.665144 2013098752 net.cpp:84] Creating Layer accuracy\n", - "I0318 00:58:43.665153 2013098752 net.cpp:380] accuracy <- ip2_ip2_0_split_0\n", - "I0318 00:58:43.665168 2013098752 net.cpp:380] accuracy <- label_data_1_split_0\n", - "I0318 00:58:43.665180 2013098752 net.cpp:338] accuracy -> accuracy\n", - "I0318 00:58:43.665192 2013098752 net.cpp:113] Setting up accuracy\n", - "I0318 00:58:43.665200 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:43.665207 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:43.665216 2013098752 net.cpp:84] Creating Layer loss\n", - "I0318 00:58:43.665223 2013098752 net.cpp:380] loss <- ip2_ip2_0_split_1\n", - "I0318 00:58:43.665230 2013098752 net.cpp:380] loss <- label_data_1_split_1\n", - "I0318 00:58:43.665241 2013098752 net.cpp:338] loss -> loss\n", - "I0318 00:58:43.665251 2013098752 net.cpp:113] Setting up loss\n", - "I0318 00:58:43.665259 2013098752 layer_factory.hpp:74] Creating layer loss\n", - "I0318 00:58:43.665273 2013098752 net.cpp:120] Top shape: (1)\n", - "I0318 00:58:43.665282 2013098752 net.cpp:122] with loss weight 1\n", - "I0318 00:58:43.665290 2013098752 net.cpp:167] loss needs backward computation.\n", - "I0318 00:58:43.665338 2013098752 net.cpp:169] accuracy does not need backward computation.\n", - "I0318 00:58:43.665351 2013098752 net.cpp:167] ip2_ip2_0_split needs backward computation.\n", - "I0318 00:58:43.665380 2013098752 net.cpp:167] ip2 needs backward computation.\n", - "I0318 00:58:43.665387 2013098752 net.cpp:167] relu1 needs backward computation.\n", - "I0318 00:58:43.665393 2013098752 net.cpp:167] ip1 needs backward computation.\n", - "I0318 00:58:43.665400 2013098752 net.cpp:169] label_data_1_split does not need backward computation.\n", - "I0318 00:58:43.665407 2013098752 net.cpp:169] data does not need backward computation.\n", - "I0318 00:58:43.665415 2013098752 net.cpp:205] This network produces output accuracy\n", - "I0318 00:58:43.665421 2013098752 net.cpp:205] This network produces output loss\n", - "I0318 00:58:43.665431 2013098752 net.cpp:447] Collecting Learning Rate and Weight Decay.\n", - "I0318 00:58:43.665441 2013098752 net.cpp:217] Network initialization done.\n", - "I0318 00:58:43.665446 2013098752 net.cpp:218] Memory required for data: 3728\n", - "I0318 00:58:43.665534 2013098752 solver.cpp:42] Solver scaffolding done.\n", - "I0318 00:58:43.665568 2013098752 solver.cpp:222] Solving \n", - "I0318 00:58:43.665577 2013098752 solver.cpp:223] Learning Rate Policy: step\n", - "I0318 00:58:43.665586 2013098752 solver.cpp:266] Iteration 0, Testing net (#0)\n", - "I0318 00:58:43.683938 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.5184\n", - "I0318 00:58:43.683981 2013098752 solver.cpp:315] Test net output #1: loss = 0.716141 (* 1 = 0.716141 loss)\n", - "I0318 00:58:43.684236 2013098752 solver.cpp:189] Iteration 0, loss = 0.764954\n", - "I0318 00:58:43.684267 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.5\n", - "I0318 00:58:43.684285 2013098752 solver.cpp:204] Train net output #1: loss = 0.764954 (* 1 = 0.764954 loss)\n", - "I0318 00:58:43.684305 2013098752 solver.cpp:464] Iteration 0, lr = 0.01\n", - "I0318 00:58:43.714700 2013098752 solver.cpp:266] Iteration 1000, Testing net (#0)\n", - "I0318 00:58:43.721762 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8168\n", - "I0318 00:58:43.721818 2013098752 solver.cpp:315] Test net output #1: loss = 0.434918 (* 1 = 0.434918 loss)\n", - "I0318 00:58:43.721899 2013098752 solver.cpp:189] Iteration 1000, loss = 0.282425\n", - "I0318 00:58:43.721917 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:43.721932 2013098752 solver.cpp:204] Train net output #1: loss = 0.282426 (* 1 = 0.282426 loss)\n", - "I0318 00:58:43.721942 2013098752 solver.cpp:464] Iteration 1000, lr = 0.01\n", - "I0318 00:58:43.750509 2013098752 solver.cpp:266] Iteration 2000, Testing net (#0)\n", - "I0318 00:58:43.754590 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8224\n", - "I0318 00:58:43.754621 2013098752 solver.cpp:315] Test net output #1: loss = 0.416874 (* 1 = 0.416874 loss)\n", - "I0318 00:58:43.754660 2013098752 solver.cpp:189] Iteration 2000, loss = 0.51988\n", - "I0318 00:58:43.754672 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.7\n", - "I0318 00:58:43.754683 2013098752 solver.cpp:204] Train net output #1: loss = 0.51988 (* 1 = 0.51988 loss)\n", - "I0318 00:58:43.754690 2013098752 solver.cpp:464] Iteration 2000, lr = 0.01\n", - "I0318 00:58:43.782609 2013098752 solver.cpp:266] Iteration 3000, Testing net (#0)\n", - "I0318 00:58:43.789728 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8176\n", - "I0318 00:58:43.789777 2013098752 solver.cpp:315] Test net output #1: loss = 0.415907 (* 1 = 0.415907 loss)\n", - "I0318 00:58:43.790487 2013098752 solver.cpp:189] Iteration 3000, loss = 0.5093\n", - "I0318 00:58:43.790510 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.7\n", - "I0318 00:58:43.790530 2013098752 solver.cpp:204] Train net output #1: loss = 0.509301 (* 1 = 0.509301 loss)\n", - "I0318 00:58:43.790544 2013098752 solver.cpp:464] Iteration 3000, lr = 0.01\n", - "I0318 00:58:43.817451 2013098752 solver.cpp:266] Iteration 4000, Testing net (#0)\n", - "I0318 00:58:43.821740 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8252\n", - "I0318 00:58:43.821770 2013098752 solver.cpp:315] Test net output #1: loss = 0.409124 (* 1 = 0.409124 loss)\n", - "I0318 00:58:43.821822 2013098752 solver.cpp:189] Iteration 4000, loss = 0.284815\n", - "I0318 00:58:43.821835 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:43.821846 2013098752 solver.cpp:204] Train net output #1: loss = 0.284815 (* 1 = 0.284815 loss)\n", - "I0318 00:58:43.821890 2013098752 solver.cpp:464] Iteration 4000, lr = 0.01\n", - "I0318 00:58:43.847015 2013098752 solver.cpp:266] Iteration 5000, Testing net (#0)\n", - "I0318 00:58:43.852102 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8256\n", - "I0318 00:58:43.852145 2013098752 solver.cpp:315] Test net output #1: loss = 0.404445 (* 1 = 0.404445 loss)\n", - "I0318 00:58:43.852188 2013098752 solver.cpp:189] Iteration 5000, loss = 0.511566\n", - "I0318 00:58:43.852200 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.7\n", - "I0318 00:58:43.852210 2013098752 solver.cpp:204] Train net output #1: loss = 0.511566 (* 1 = 0.511566 loss)\n", - "I0318 00:58:43.852219 2013098752 solver.cpp:464] Iteration 5000, lr = 0.001\n", - "I0318 00:58:43.876060 2013098752 solver.cpp:266] Iteration 6000, Testing net (#0)\n", - "I0318 00:58:43.880080 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8328\n", - "I0318 00:58:43.880105 2013098752 solver.cpp:315] Test net output #1: loss = 0.396847 (* 1 = 0.396847 loss)\n", - "I0318 00:58:43.880700 2013098752 solver.cpp:189] Iteration 6000, loss = 0.397858\n", - "I0318 00:58:43.880718 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:43.880729 2013098752 solver.cpp:204] Train net output #1: loss = 0.397858 (* 1 = 0.397858 loss)\n", - "I0318 00:58:43.880738 2013098752 solver.cpp:464] Iteration 6000, lr = 0.001\n", - "I0318 00:58:43.913795 2013098752 solver.cpp:266] Iteration 7000, Testing net (#0)\n", - "I0318 00:58:43.917851 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8316\n", - "I0318 00:58:43.917876 2013098752 solver.cpp:315] Test net output #1: loss = 0.398135 (* 1 = 0.398135 loss)\n", - "I0318 00:58:43.917956 2013098752 solver.cpp:189] Iteration 7000, loss = 0.243849\n", - "I0318 00:58:43.917971 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:43.917989 2013098752 solver.cpp:204] Train net output #1: loss = 0.243849 (* 1 = 0.243849 loss)\n", - "I0318 00:58:43.918002 2013098752 solver.cpp:464] Iteration 7000, lr = 0.001\n", - "I0318 00:58:43.943681 2013098752 solver.cpp:266] Iteration 8000, Testing net (#0)\n", - "I0318 00:58:43.947589 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8312\n", - "I0318 00:58:43.947615 2013098752 solver.cpp:315] Test net output #1: loss = 0.394763 (* 1 = 0.394763 loss)\n", - "I0318 00:58:43.947651 2013098752 solver.cpp:189] Iteration 8000, loss = 0.513399\n", - "I0318 00:58:43.947664 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.7\n", - "I0318 00:58:43.947674 2013098752 solver.cpp:204] Train net output #1: loss = 0.513399 (* 1 = 0.513399 loss)\n", - "I0318 00:58:43.947682 2013098752 solver.cpp:464] Iteration 8000, lr = 0.001\n", - "I0318 00:58:43.973080 2013098752 solver.cpp:266] Iteration 9000, Testing net (#0)\n", - "I0318 00:58:43.977033 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.834\n", - "I0318 00:58:43.977056 2013098752 solver.cpp:315] Test net output #1: loss = 0.395663 (* 1 = 0.395663 loss)\n", - "I0318 00:58:43.977710 2013098752 solver.cpp:189] Iteration 9000, loss = 0.399341\n", - "I0318 00:58:43.977735 2013098752 solver.cpp:204] Train net output #0: accuracy = 0.9\n", - "I0318 00:58:43.977746 2013098752 solver.cpp:204] Train net output #1: loss = 0.399342 (* 1 = 0.399342 loss)\n", - "I0318 00:58:43.977756 2013098752 solver.cpp:464] Iteration 9000, lr = 0.001\n", - "I0318 00:58:44.003437 2013098752 solver.cpp:334] Snapshotting to examples/hdf5_classification/data/train_iter_10000.caffemodel\n", - "I0318 00:58:44.003702 2013098752 solver.cpp:342] Snapshotting solver state to examples/hdf5_classification/data/train_iter_10000.solverstate\n", - "I0318 00:58:44.003850 2013098752 solver.cpp:248] Iteration 10000, loss = 0.244639\n", - "I0318 00:58:44.003871 2013098752 solver.cpp:266] Iteration 10000, Testing net (#0)\n", - "I0318 00:58:44.008216 2013098752 solver.cpp:315] Test net output #0: accuracy = 0.8308\n", - "I0318 00:58:44.008252 2013098752 solver.cpp:315] Test net output #1: loss = 0.397291 (* 1 = 0.397291 loss)\n", - "I0318 00:58:44.008262 2013098752 solver.cpp:253] Optimization Done.\n", - "I0318 00:58:44.008270 2013098752 caffe.cpp:134] Optimization Done.\n" - ] - } - ], - "source": [ - "!./build/tools/caffe train -solver examples/hdf5_classification/nonlinear_solver.prototxt" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Clean up (comment this out if you want to examine the hdf5_classification/data directory).\n", - "shutil.rmtree(dirname)" - ] - } - ], - "metadata": { - "description": "Use Caffe as a generic SGD optimizer to train logistic regression on non-image HDF5 data.", - "example_name": "Off-the-shelf SGD for classification", - "include_in_docs": true, - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.9" - }, - "priority": 3 - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/brewing-logreg.ipynb b/examples/brewing-logreg.ipynb new file mode 100644 index 000000000..c053b73b3 --- /dev/null +++ b/examples/brewing-logreg.ipynb @@ -0,0 +1,1164 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Brewing Logistic Regression then Going Deeper\n", + "\n", + "While Caffe is made for deep networks it can likewise represent \"shallow\" models like logistic regression for classification. We'll do simple logistic regression on synthetic data that we'll generate and save to HDF5 to feed vectors to Caffe. Once that model is done, we'll add layers to improve accuracy. That's what Caffe is about: define a model, experiment, and then deploy." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "import os\n", + "os.chdir('..')\n", + "\n", + "import sys\n", + "sys.path.insert(0, './python')\n", + "import caffe\n", + "\n", + "\n", + "import os\n", + "import h5py\n", + "import shutil\n", + "import tempfile\n", + "\n", + "import sklearn\n", + "import sklearn.datasets\n", + "import sklearn.linear_model\n", + "\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Synthesize a dataset of 10,000 4-vectors for binary classification with 2 informative features and 2 noise features." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nYUrRHkzzFQYHxykVFlldXCAd78J1SyTVTYSejqCbxHImd717D2E4x//5+7/LM888w6X2X1FtxvAs\nAd8XSCQ02uVVjFDEpIFCChUJnRY6V5BIE/gVFFw8ZogRsIRLJx0YqHg4FKlxmTabQpHhiM50INJG\npRHLEuIh+T6hopDLd1AtXERtOyTCDhzBZp4EuqJQFzJkh7dw662/wMLCy9x6676rUgkf/tjH+MaD\nD/LsF/4HUTmGksiQjYJh5JicnGbHjszVWpEf51Hzg2zcvp3nT56kO5u9Gox4vk8pCLjzZyiM/XH8\n3AQj1WqVpYkJ8HSSmbWJ9P2ApJ5hojTH/HydzZvv4UKrgyBaZrF5kRtynfQlI2iCwMqVK4xt2sTw\n0ABTU4eRggiubQLgOBaq5rA1lyOp63zn9GkqxSLZMGRQddGFIiecLA0maKMjEEGmC4FttDhNjAIZ\nerFJsiC01wpYQ4sm2npFvQzrYkkeJaaKa+1ugS8icIlIUsTIjKNWlmk1isQiCTKJkKnSLLqRYand\nSf1SiXOTT9Jq1SBo0J26DtNKc2G2SChI5DoT9PdvQpZlFhYe43TzErds3PiaY+j6/j+oM/JO5Nln\nYWhoLU3zdqe3FzZuXEs7vec913o0PxvtdpszL77IzQMDV9vUI7rOtq4uXv7e9/jMv/pXlHt7+dvT\nUxw6Mcvjj7/I3r3jVFeX15xKRZErxSIvfvcF3pXbALpD0GrTdhxCW8UNBQreDLIcxTcFfLdFu30S\nXRvAtpM05Tgxt0U6cBmkQZFLFNFwEUhKIWOyQTEQMYM1KXELWCCkzsj6vqdPgovIgosbBphBBpEe\n1hK6ZQIMNGqAj6pYjMSvR5XKKGYFz66x7DfoGNhANBLBjEaZn7/IoUOHuO666zl59GWU1iI3jefY\ntWNtm/2V06d5VJY5/soKg4P7mLlymsXLxwlsk4vH23R2Jrn//l94w+fJsizOnTvP/PwKHR1ptm3b\n+pq24XK5zpYt13Pq1GlqNQ9dz+C6LRqNC8TjBvV6gXq9TRhmSSRGEAKLuB/geR5B4LO4WEQQIK8n\nEBI5KpLFhQtHaNZW0JQUlrMW5JhSnVQkhZzsI5evEoul6OqSkSSJXbt2cf2u03R37+OZZ77D0pJA\nsShRqywyTIIo0GCKEJcMFmlclnBRxDphUEOnShSVWRLUaZOkRYhPC40GnZxprjJVWSYiGDjCBSpB\n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\nVFRUMsr/B18y5d10ojlGAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "X, y = sklearn.datasets.make_classification(\n", + " n_samples=10000, n_features=4, n_redundant=0, n_informative=2, \n", + " n_clusters_per_class=2, hypercube=False, random_state=0\n", + ")\n", + "\n", + "# Split into train and test\n", + "X, Xt, y, yt = sklearn.cross_validation.train_test_split(X, y)\n", + "\n", + "# Visualize sample of the data\n", + "ind = np.random.permutation(X.shape[0])[:1000]\n", + "df = pd.DataFrame(X[ind])\n", + "_ = pd.scatter_matrix(df, figsize=(9, 9), diagonal='kde', marker='o', s=40, alpha=.4, c=y[ind])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Learn and evaluate scikit-learn's logistic regression with stochastic gradient descent (SGD) training. Time and check the classifier's accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.781\n", + "Accuracy: 0.781\n", + "Accuracy: 0.781\n", + "Accuracy: 0.781\n", + "1 loop, best of 3: 372 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "# Train and test the scikit-learn SGD logistic regression.\n", + "clf = sklearn.linear_model.SGDClassifier(\n", + " loss='log', n_iter=1000, penalty='l2', alpha=5e-4, class_weight='auto')\n", + "\n", + "clf.fit(X, y)\n", + "yt_pred = clf.predict(Xt)\n", + "print('Accuracy: {:.3f}'.format(sklearn.metrics.accuracy_score(yt, yt_pred)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Save the dataset to HDF5 for loading in Caffe." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Write out the data to HDF5 files in a temp directory.\n", + "# This file is assumed to be caffe_root/examples/hdf5_classification.ipynb\n", + "dirname = os.path.abspath('./examples/hdf5_classification/data')\n", + "if not os.path.exists(dirname):\n", + " os.makedirs(dirname)\n", + "\n", + "train_filename = os.path.join(dirname, 'train.h5')\n", + "test_filename = os.path.join(dirname, 'test.h5')\n", + "\n", + "# HDF5DataLayer source should be a file containing a list of HDF5 filenames.\n", + "# To show this off, we'll list the same data file twice.\n", + "with h5py.File(train_filename, 'w') as f:\n", + " f['data'] = X\n", + " f['label'] = y.astype(np.float32)\n", + "with open(os.path.join(dirname, 'train.txt'), 'w') as f:\n", + " f.write(train_filename + '\\n')\n", + " f.write(train_filename + '\\n')\n", + " \n", + "# HDF5 is pretty efficient, but can be further compressed.\n", + "comp_kwargs = {'compression': 'gzip', 'compression_opts': 1}\n", + "with h5py.File(test_filename, 'w') as f:\n", + " f.create_dataset('data', data=Xt, **comp_kwargs)\n", + " f.create_dataset('label', data=yt.astype(np.float32), **comp_kwargs)\n", + "with open(os.path.join(dirname, 'test.txt'), 'w') as f:\n", + " f.write(test_filename + '\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's define logistic regression in Caffe through Python net specification. This is a quick and natural way to define nets that sidesteps manually editing the protobuf model." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe import layers as L\n", + "from caffe import params as P\n", + "\n", + "def logreg(hdf5, batch_size):\n", + " # logistic regression: data, matrix multiplication, and 2-class softmax loss\n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)\n", + " n.ip1 = L.InnerProduct(n.data, num_output=2, weight_filler=dict(type='xavier'))\n", + " n.accuracy = L.Accuracy(n.ip1, n.label)\n", + " n.loss = L.SoftmaxWithLoss(n.ip1, n.label)\n", + " return n.to_proto()\n", + "\n", + "train_net_path = 'examples/hdf5_classification/logreg_auto_train.prototxt'\n", + "with open(train_net_path, 'w') as f:\n", + " f.write(str(logreg('examples/hdf5_classification/data/train.txt', 10)))\n", + "\n", + "test_net_path = 'examples/hdf5_classification/logreg_auto_test.prototxt'\n", + "with open(test_net_path, 'w') as f:\n", + " f.write(str(logreg('examples/hdf5_classification/data/test.txt', 10)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we'll define our \"solver\" which trains the network by specifying the locations of the train and test nets we defined above, as well as setting values for various parameters used for learning, display, and \"snapshotting\"." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe.proto import caffe_pb2\n", + "\n", + "def solver(train_net_path, test_net_path):\n", + " s = caffe_pb2.SolverParameter()\n", + "\n", + " # Specify locations of the train and test networks.\n", + " s.train_net = train_net_path\n", + " s.test_net.append(test_net_path)\n", + "\n", + " s.test_interval = 1000 # Test after every 1000 training iterations.\n", + " s.test_iter.append(250) # Test 250 \"batches\" each time we test.\n", + "\n", + " s.max_iter = 10000 # # of times to update the net (training iterations)\n", + "\n", + " # Set the initial learning rate for stochastic gradient descent (SGD).\n", + " s.base_lr = 0.01 \n", + "\n", + " # Set `lr_policy` to define how the learning rate changes during training.\n", + " # Here, we 'step' the learning rate by multiplying it by a factor `gamma`\n", + " # every `stepsize` iterations.\n", + " s.lr_policy = 'step'\n", + " s.gamma = 0.1\n", + " s.stepsize = 5000\n", + "\n", + " # Set other optimization parameters. Setting a non-zero `momentum` takes a\n", + " # weighted average of the current gradient and previous gradients to make\n", + " # learning more stable. L2 weight decay regularizes learning, to help prevent\n", + " # the model from overfitting.\n", + " s.momentum = 0.9\n", + " s.weight_decay = 5e-4\n", + "\n", + " # Display the current training loss and accuracy every 1000 iterations.\n", + " s.display = 1000\n", + "\n", + " # Snapshots are files used to store networks we've trained. Here, we'll\n", + " # snapshot every 10K iterations -- just once at the end of training.\n", + " # For larger networks that take longer to train, you may want to set\n", + " # snapshot < max_iter to save the network and training state to disk during\n", + " # optimization, preventing disaster in case of machine crashes, etc.\n", + " s.snapshot = 10000\n", + " s.snapshot_prefix = 'examples/hdf5_classification/data/train'\n", + "\n", + " # We'll train on the CPU for fair benchmarking against scikit-learn.\n", + " # Changing to GPU should result in much faster training!\n", + " s.solver_mode = caffe_pb2.SolverParameter.CPU\n", + " \n", + " return s\n", + "\n", + "solver_path = 'examples/hdf5_classification/logreg_solver.prototxt'\n", + "with open(solver_path, 'w') as f:\n", + " f.write(str(solver(train_net_path, test_net_path)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Time to learn and evaluate our Caffeinated logistic regression in Python." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.770\n", + "Accuracy: 0.770\n", + "Accuracy: 0.770\n", + "Accuracy: 0.770\n", + "1 loop, best of 3: 195 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "caffe.set_mode_cpu()\n", + "solver = caffe.get_solver(solver_path)\n", + "solver.solve()\n", + "\n", + "accuracy = 0\n", + "batch_size = solver.test_nets[0].blobs['data'].num\n", + "test_iters = int(len(Xt) / batch_size)\n", + "for i in range(test_iters):\n", + " solver.test_nets[0].forward()\n", + " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", + "accuracy /= test_iters\n", + "\n", + "print(\"Accuracy: {:.3f}\".format(accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do the same through the command line interface for detailed output on the model and solving." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I0224 00:32:03.232779 655 caffe.cpp:178] Use CPU.\n", + "I0224 00:32:03.391911 655 solver.cpp:48] Initializing solver from parameters: \n", + "train_net: \"examples/hdf5_classification/logreg_auto_train.prototxt\"\n", + "test_net: \"examples/hdf5_classification/logreg_auto_test.prototxt\"\n", + "test_iter: 250\n", + "test_interval: 1000\n", + "base_lr: 0.01\n", + "display: 1000\n", + "max_iter: 10000\n", + "lr_policy: \"step\"\n", + "gamma: 0.1\n", + "momentum: 0.9\n", + "weight_decay: 0.0005\n", + "stepsize: 5000\n", + "snapshot: 10000\n", + "snapshot_prefix: \"examples/hdf5_classification/data/train\"\n", + "solver_mode: CPU\n", + "I0224 00:32:03.392065 655 solver.cpp:81] Creating training net from train_net file: examples/hdf5_classification/logreg_auto_train.prototxt\n", + "I0224 00:32:03.392215 655 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TRAIN\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/train.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:03.392365 655 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:03.392382 655 net.cpp:106] Creating Layer data\n", + "I0224 00:32:03.392395 655 net.cpp:411] data -> data\n", + "I0224 00:32:03.392423 655 net.cpp:411] data -> label\n", + "I0224 00:32:03.392442 655 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/train.txt\n", + "I0224 00:32:03.392473 655 hdf5_data_layer.cpp:93] Number of HDF5 files: 2\n", + "I0224 00:32:03.393473 655 hdf5.cpp:32] Datatype class: H5T_FLOAT\n", + "I0224 00:32:03.393862 655 net.cpp:150] Setting up data\n", + "I0224 00:32:03.393884 655 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:03.393894 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.393901 655 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:03.393911 655 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:03.393924 655 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:03.393934 655 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:03.393945 655 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:03.393956 655 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:03.393970 655 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:03.393978 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.393986 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.393995 655 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:03.394001 655 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:03.394012 655 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:03.394021 655 net.cpp:454] ip1 <- data\n", + "I0224 00:32:03.394029 655 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:03.394311 655 net.cpp:150] Setting up ip1\n", + "I0224 00:32:03.394323 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.394331 655 net.cpp:165] Memory required for data: 360\n", + "I0224 00:32:03.394348 655 layer_factory.hpp:77] Creating layer ip1_ip1_0_split\n", + "I0224 00:32:03.394358 655 net.cpp:106] Creating Layer ip1_ip1_0_split\n", + "I0224 00:32:03.394366 655 net.cpp:454] ip1_ip1_0_split <- ip1\n", + "I0224 00:32:03.394374 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_0\n", + "I0224 00:32:03.394386 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_1\n", + "I0224 00:32:03.394395 655 net.cpp:150] Setting up ip1_ip1_0_split\n", + "I0224 00:32:03.394404 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.394424 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.394443 655 net.cpp:165] Memory required for data: 520\n", + "I0224 00:32:03.394450 655 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:03.394462 655 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:03.394479 655 net.cpp:454] accuracy <- ip1_ip1_0_split_0\n", + "I0224 00:32:03.394489 655 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:03.394497 655 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:03.394510 655 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:03.394536 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.394543 655 net.cpp:165] Memory required for data: 524\n", + "I0224 00:32:03.394551 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.394562 655 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:03.394569 655 net.cpp:454] loss <- ip1_ip1_0_split_1\n", + "I0224 00:32:03.394577 655 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:03.394587 655 net.cpp:411] loss -> loss\n", + "I0224 00:32:03.394603 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.394624 655 net.cpp:150] Setting up loss\n", + "I0224 00:32:03.394634 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.394641 655 net.cpp:160] with loss weight 1\n", + "I0224 00:32:03.394659 655 net.cpp:165] Memory required for data: 528\n", + "I0224 00:32:03.394665 655 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:03.394673 655 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:03.394682 655 net.cpp:226] ip1_ip1_0_split needs backward computation.\n", + "I0224 00:32:03.394690 655 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:03.394697 655 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:03.394706 655 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:03.394712 655 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:03.394721 655 net.cpp:270] This network produces output loss\n", + "I0224 00:32:03.394731 655 net.cpp:283] Network initialization done.\n", + "I0224 00:32:03.394804 655 solver.cpp:181] Creating test net (#0) specified by test_net file: examples/hdf5_classification/logreg_auto_test.prototxt\n", + "I0224 00:32:03.394836 655 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TEST\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/test.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip1\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:03.394953 655 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:03.394964 655 net.cpp:106] Creating Layer data\n", + "I0224 00:32:03.394973 655 net.cpp:411] data -> data\n", + "I0224 00:32:03.394984 655 net.cpp:411] data -> label\n", + "I0224 00:32:03.394994 655 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/test.txt\n", + "I0224 00:32:03.395009 655 hdf5_data_layer.cpp:93] Number of HDF5 files: 1\n", + "I0224 00:32:03.395937 655 net.cpp:150] Setting up data\n", + "I0224 00:32:03.395953 655 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:03.395963 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.395970 655 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:03.395978 655 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:03.395989 655 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:03.395997 655 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:03.396005 655 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:03.396016 655 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:03.396028 655 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:03.396036 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.396044 655 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:03.396051 655 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:03.396059 655 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:03.396069 655 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:03.396075 655 net.cpp:454] ip1 <- data\n", + "I0224 00:32:03.396085 655 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:03.396100 655 net.cpp:150] Setting up ip1\n", + "I0224 00:32:03.396109 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.396116 655 net.cpp:165] Memory required for data: 360\n", + "I0224 00:32:03.396138 655 layer_factory.hpp:77] Creating layer ip1_ip1_0_split\n", + "I0224 00:32:03.396148 655 net.cpp:106] Creating Layer ip1_ip1_0_split\n", + "I0224 00:32:03.396157 655 net.cpp:454] ip1_ip1_0_split <- ip1\n", + "I0224 00:32:03.396164 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_0\n", + "I0224 00:32:03.396174 655 net.cpp:411] ip1_ip1_0_split -> ip1_ip1_0_split_1\n", + "I0224 00:32:03.396185 655 net.cpp:150] Setting up ip1_ip1_0_split\n", + "I0224 00:32:03.396194 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.396203 655 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:03.396209 655 net.cpp:165] Memory required for data: 520\n", + "I0224 00:32:03.396216 655 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:03.396225 655 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:03.396234 655 net.cpp:454] accuracy <- ip1_ip1_0_split_0\n", + "I0224 00:32:03.396241 655 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:03.396250 655 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:03.396260 655 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:03.396270 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.396276 655 net.cpp:165] Memory required for data: 524\n", + "I0224 00:32:03.396283 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.396291 655 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:03.396299 655 net.cpp:454] loss <- ip1_ip1_0_split_1\n", + "I0224 00:32:03.396307 655 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:03.396317 655 net.cpp:411] loss -> loss\n", + "I0224 00:32:03.396327 655 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:03.396339 655 net.cpp:150] Setting up loss\n", + "I0224 00:32:03.396349 655 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:03.396356 655 net.cpp:160] with loss weight 1\n", + "I0224 00:32:03.396365 655 net.cpp:165] Memory required for data: 528\n", + "I0224 00:32:03.396373 655 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:03.396381 655 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:03.396389 655 net.cpp:226] ip1_ip1_0_split needs backward computation.\n", + "I0224 00:32:03.396396 655 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:03.396404 655 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:03.396412 655 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:03.396420 655 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:03.396427 655 net.cpp:270] This network produces output loss\n", + "I0224 00:32:03.396437 655 net.cpp:283] Network initialization done.\n", + "I0224 00:32:03.396455 655 solver.cpp:60] Solver scaffolding done.\n", + "I0224 00:32:03.396473 655 caffe.cpp:219] Starting Optimization\n", + "I0224 00:32:03.396482 655 solver.cpp:280] Solving \n", + "I0224 00:32:03.396489 655 solver.cpp:281] Learning Rate Policy: step\n", + "I0224 00:32:03.396499 655 solver.cpp:338] Iteration 0, Testing net (#0)\n", + "I0224 00:32:03.932615 655 solver.cpp:406] Test net output #0: accuracy = 0.4268\n", + "I0224 00:32:03.932656 655 solver.cpp:406] Test net output #1: loss = 1.33093 (* 1 = 1.33093 loss)\n", + "I0224 00:32:03.932723 655 solver.cpp:229] Iteration 0, loss = 1.06081\n", + "I0224 00:32:03.932737 655 solver.cpp:245] Train net output #0: accuracy = 0.4\n", + "I0224 00:32:03.932749 655 solver.cpp:245] Train net output #1: loss = 1.06081 (* 1 = 1.06081 loss)\n", + "I0224 00:32:03.932765 655 sgd_solver.cpp:106] Iteration 0, lr = 0.01\n", + "I0224 00:32:03.945551 655 solver.cpp:338] Iteration 1000, Testing net (#0)\n", + "I0224 00:32:03.948048 655 solver.cpp:406] Test net output #0: accuracy = 0.694\n", + "I0224 00:32:03.948065 655 solver.cpp:406] Test net output #1: loss = 0.60406 (* 1 = 0.60406 loss)\n", + "I0224 00:32:03.948091 655 solver.cpp:229] Iteration 1000, loss = 0.505853\n", + "I0224 00:32:03.948102 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:03.948113 655 solver.cpp:245] Train net output #1: loss = 0.505853 (* 1 = 0.505853 loss)\n", + "I0224 00:32:03.948122 655 sgd_solver.cpp:106] Iteration 1000, lr = 0.01\n", + "I0224 00:32:03.960741 655 solver.cpp:338] Iteration 2000, Testing net (#0)\n", + "I0224 00:32:03.963214 655 solver.cpp:406] Test net output #0: accuracy = 0.7372\n", + "I0224 00:32:03.963249 655 solver.cpp:406] Test net output #1: loss = 0.595267 (* 1 = 0.595267 loss)\n", + "I0224 00:32:03.963276 655 solver.cpp:229] Iteration 2000, loss = 0.549211\n", + "I0224 00:32:03.963289 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:03.963299 655 solver.cpp:245] Train net output #1: loss = 0.549211 (* 1 = 0.549211 loss)\n", + "I0224 00:32:03.963309 655 sgd_solver.cpp:106] Iteration 2000, lr = 0.01\n", + "I0224 00:32:03.975945 655 solver.cpp:338] Iteration 3000, Testing net (#0)\n", + "I0224 00:32:03.978435 655 solver.cpp:406] Test net output #0: accuracy = 0.7732\n", + "I0224 00:32:03.978451 655 solver.cpp:406] Test net output #1: loss = 0.594998 (* 1 = 0.594998 loss)\n", + "I0224 00:32:03.978884 655 solver.cpp:229] Iteration 3000, loss = 0.66133\n", + "I0224 00:32:03.978911 655 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:03.978932 655 solver.cpp:245] Train net output #1: loss = 0.66133 (* 1 = 0.66133 loss)\n", + "I0224 00:32:03.978950 655 sgd_solver.cpp:106] Iteration 3000, lr = 0.01\n", + "I0224 00:32:03.992017 655 solver.cpp:338] Iteration 4000, Testing net (#0)\n", + "I0224 00:32:03.994509 655 solver.cpp:406] Test net output #0: accuracy = 0.694\n", + "I0224 00:32:03.994525 655 solver.cpp:406] Test net output #1: loss = 0.60406 (* 1 = 0.60406 loss)\n", + "I0224 00:32:03.994551 655 solver.cpp:229] Iteration 4000, loss = 0.505853\n", + "I0224 00:32:03.994562 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:03.994573 655 solver.cpp:245] Train net output #1: loss = 0.505853 (* 1 = 0.505853 loss)\n", + "I0224 00:32:03.994583 655 sgd_solver.cpp:106] Iteration 4000, lr = 0.01\n", + "I0224 00:32:04.007200 655 solver.cpp:338] Iteration 5000, Testing net (#0)\n", + "I0224 00:32:04.009686 655 solver.cpp:406] Test net output #0: accuracy = 0.7372\n", + "I0224 00:32:04.009702 655 solver.cpp:406] Test net output #1: loss = 0.595267 (* 1 = 0.595267 loss)\n", + "I0224 00:32:04.009727 655 solver.cpp:229] Iteration 5000, loss = 0.549211\n", + "I0224 00:32:04.009738 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:04.009749 655 solver.cpp:245] Train net output #1: loss = 0.549211 (* 1 = 0.549211 loss)\n", + "I0224 00:32:04.009758 655 sgd_solver.cpp:106] Iteration 5000, lr = 0.001\n", + "I0224 00:32:04.022734 655 solver.cpp:338] Iteration 6000, Testing net (#0)\n", + "I0224 00:32:04.025177 655 solver.cpp:406] Test net output #0: accuracy = 0.7824\n", + "I0224 00:32:04.025193 655 solver.cpp:406] Test net output #1: loss = 0.593367 (* 1 = 0.593367 loss)\n", + "I0224 00:32:04.025545 655 solver.cpp:229] Iteration 6000, loss = 0.654873\n", + "I0224 00:32:04.025562 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:04.025573 655 solver.cpp:245] Train net output #1: loss = 0.654873 (* 1 = 0.654873 loss)\n", + "I0224 00:32:04.025583 655 sgd_solver.cpp:106] Iteration 6000, lr = 0.001\n", + "I0224 00:32:04.038586 655 solver.cpp:338] Iteration 7000, Testing net (#0)\n", + "I0224 00:32:04.041016 655 solver.cpp:406] Test net output #0: accuracy = 0.7704\n", + "I0224 00:32:04.041033 655 solver.cpp:406] Test net output #1: loss = 0.593842 (* 1 = 0.593842 loss)\n", + "I0224 00:32:04.041059 655 solver.cpp:229] Iteration 7000, loss = 0.46611\n", + "I0224 00:32:04.041071 655 solver.cpp:245] Train net output #0: accuracy = 0.6\n", + "I0224 00:32:04.041082 655 solver.cpp:245] Train net output #1: loss = 0.46611 (* 1 = 0.46611 loss)\n", + "I0224 00:32:04.041091 655 sgd_solver.cpp:106] Iteration 7000, lr = 0.001\n", + "I0224 00:32:04.053722 655 solver.cpp:338] Iteration 8000, Testing net (#0)\n", + "I0224 00:32:04.056171 655 solver.cpp:406] Test net output #0: accuracy = 0.7788\n", + "I0224 00:32:04.056187 655 solver.cpp:406] Test net output #1: loss = 0.592847 (* 1 = 0.592847 loss)\n", + "I0224 00:32:04.056213 655 solver.cpp:229] Iteration 8000, loss = 0.615126\n", + "I0224 00:32:04.056224 655 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:04.056236 655 solver.cpp:245] Train net output #1: loss = 0.615126 (* 1 = 0.615126 loss)\n", + "I0224 00:32:04.056244 655 sgd_solver.cpp:106] Iteration 8000, lr = 0.001\n", + "I0224 00:32:04.068853 655 solver.cpp:338] Iteration 9000, Testing net (#0)\n", + "I0224 00:32:04.071291 655 solver.cpp:406] Test net output #0: accuracy = 0.7808\n", + "I0224 00:32:04.071307 655 solver.cpp:406] Test net output #1: loss = 0.593293 (* 1 = 0.593293 loss)\n", + "I0224 00:32:04.071650 655 solver.cpp:229] Iteration 9000, loss = 0.654997\n", + "I0224 00:32:04.071666 655 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:04.071677 655 solver.cpp:245] Train net output #1: loss = 0.654998 (* 1 = 0.654998 loss)\n", + "I0224 00:32:04.071687 655 sgd_solver.cpp:106] Iteration 9000, lr = 0.001\n", + "I0224 00:32:04.084717 655 solver.cpp:456] Snapshotting to binary proto file examples/hdf5_classification/data/train_iter_10000.caffemodel\n", + "I0224 00:32:04.084885 655 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/hdf5_classification/data/train_iter_10000.solverstate\n", + "I0224 00:32:04.084960 655 solver.cpp:318] Iteration 10000, loss = 0.466505\n", + "I0224 00:32:04.084977 655 solver.cpp:338] Iteration 10000, Testing net (#0)\n", + "I0224 00:32:04.087514 655 solver.cpp:406] Test net output #0: accuracy = 0.77\n", + "I0224 00:32:04.087532 655 solver.cpp:406] Test net output #1: loss = 0.593815 (* 1 = 0.593815 loss)\n", + "I0224 00:32:04.087541 655 solver.cpp:323] Optimization Done.\n", + "I0224 00:32:04.087548 655 caffe.cpp:222] Optimization Done.\n" + ] + } + ], + "source": [ + "!./build/tools/caffe train -solver examples/hdf5_classification/logreg_solver.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you look at output or the `logreg_auto_train.prototxt`, you'll see that the model is simple logistic regression.\n", + "We can make it a little more advanced by introducing a non-linearity between weights that take the input and weights that give the output -- now we have a two-layer network.\n", + "That network is given in `nonlinear_auto_train.prototxt`, and that's the only change made in `nonlinear_logreg_solver.prototxt` which we will now use.\n", + "\n", + "The final accuracy of the new network should be higher than logistic regression!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from caffe import layers as L\n", + "from caffe import params as P\n", + "\n", + "def nonlinear_net(hdf5, batch_size):\n", + " # one small nonlinearity, one leap for model kind\n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.HDF5Data(batch_size=batch_size, source=hdf5, ntop=2)\n", + " # define a hidden layer of dimension 40\n", + " n.ip1 = L.InnerProduct(n.data, num_output=40, weight_filler=dict(type='xavier'))\n", + " # transform the output through the ReLU (rectified linear) non-linearity\n", + " n.relu1 = L.ReLU(n.ip1, in_place=True)\n", + " # score the (now non-linear) features\n", + " n.ip2 = L.InnerProduct(n.ip1, num_output=2, weight_filler=dict(type='xavier'))\n", + " # same accuracy and loss as before\n", + " n.accuracy = L.Accuracy(n.ip2, n.label)\n", + " n.loss = L.SoftmaxWithLoss(n.ip2, n.label)\n", + " return n.to_proto()\n", + "\n", + "train_net_path = 'examples/hdf5_classification/nonlinear_auto_train.prototxt'\n", + "with open(train_net_path, 'w') as f:\n", + " f.write(str(nonlinear_net('examples/hdf5_classification/data/train.txt', 10)))\n", + "\n", + "test_net_path = 'examples/hdf5_classification/nonlinear_auto_test.prototxt'\n", + "with open(test_net_path, 'w') as f:\n", + " f.write(str(nonlinear_net('examples/hdf5_classification/data/test.txt', 10)))\n", + "\n", + "solver_path = 'examples/hdf5_classification/nonlinear_logreg_solver.prototxt'\n", + "with open(solver_path, 'w') as f:\n", + " f.write(str(solver(train_net_path, test_net_path)))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 0.838\n", + "Accuracy: 0.837\n", + "Accuracy: 0.838\n", + "Accuracy: 0.834\n", + "1 loop, best of 3: 277 ms per loop\n" + ] + } + ], + "source": [ + "%%timeit\n", + "caffe.set_mode_cpu()\n", + "solver = caffe.get_solver(solver_path)\n", + "solver.solve()\n", + "\n", + "accuracy = 0\n", + "batch_size = solver.test_nets[0].blobs['data'].num\n", + "test_iters = int(len(Xt) / batch_size)\n", + "for i in range(test_iters):\n", + " solver.test_nets[0].forward()\n", + " accuracy += solver.test_nets[0].blobs['accuracy'].data\n", + "accuracy /= test_iters\n", + "\n", + "print(\"Accuracy: {:.3f}\".format(accuracy))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do the same through the command line interface for detailed output on the model and solving." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I0224 00:32:05.654265 658 caffe.cpp:178] Use CPU.\n", + "I0224 00:32:05.810444 658 solver.cpp:48] Initializing solver from parameters: \n", + "train_net: \"examples/hdf5_classification/nonlinear_auto_train.prototxt\"\n", + "test_net: \"examples/hdf5_classification/nonlinear_auto_test.prototxt\"\n", + "test_iter: 250\n", + "test_interval: 1000\n", + "base_lr: 0.01\n", + "display: 1000\n", + "max_iter: 10000\n", + "lr_policy: \"step\"\n", + "gamma: 0.1\n", + "momentum: 0.9\n", + "weight_decay: 0.0005\n", + "stepsize: 5000\n", + "snapshot: 10000\n", + "snapshot_prefix: \"examples/hdf5_classification/data/train\"\n", + "solver_mode: CPU\n", + "I0224 00:32:05.810634 658 solver.cpp:81] Creating training net from train_net file: examples/hdf5_classification/nonlinear_auto_train.prototxt\n", + "I0224 00:32:05.810835 658 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TRAIN\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/train.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 40\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu1\"\n", + " type: \"ReLU\"\n", + " bottom: \"ip1\"\n", + " top: \"ip1\"\n", + "}\n", + "layer {\n", + " name: \"ip2\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"ip1\"\n", + " top: \"ip2\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:05.811061 658 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:05.811079 658 net.cpp:106] Creating Layer data\n", + "I0224 00:32:05.811092 658 net.cpp:411] data -> data\n", + "I0224 00:32:05.811121 658 net.cpp:411] data -> label\n", + "I0224 00:32:05.811143 658 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/train.txt\n", + "I0224 00:32:05.811189 658 hdf5_data_layer.cpp:93] Number of HDF5 files: 2\n", + "I0224 00:32:05.812254 658 hdf5.cpp:32] Datatype class: H5T_FLOAT\n", + "I0224 00:32:05.812677 658 net.cpp:150] Setting up data\n", + "I0224 00:32:05.812705 658 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:05.812721 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.812729 658 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:05.812739 658 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:05.812752 658 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:05.812762 658 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:05.812774 658 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:05.812785 658 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:05.812798 658 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:05.812808 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.812816 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.812824 658 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:05.812831 658 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:05.812841 658 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:05.812849 658 net.cpp:454] ip1 <- data\n", + "I0224 00:32:05.812860 658 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:05.813179 658 net.cpp:150] Setting up ip1\n", + "I0224 00:32:05.813196 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.813210 658 net.cpp:165] Memory required for data: 1880\n", + "I0224 00:32:05.813230 658 layer_factory.hpp:77] Creating layer relu1\n", + "I0224 00:32:05.813241 658 net.cpp:106] Creating Layer relu1\n", + "I0224 00:32:05.813251 658 net.cpp:454] relu1 <- ip1\n", + "I0224 00:32:05.813258 658 net.cpp:397] relu1 -> ip1 (in-place)\n", + "I0224 00:32:05.813271 658 net.cpp:150] Setting up relu1\n", + "I0224 00:32:05.813279 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.813287 658 net.cpp:165] Memory required for data: 3480\n", + "I0224 00:32:05.813294 658 layer_factory.hpp:77] Creating layer ip2\n", + "I0224 00:32:05.813304 658 net.cpp:106] Creating Layer ip2\n", + "I0224 00:32:05.813313 658 net.cpp:454] ip2 <- ip1\n", + "I0224 00:32:05.813321 658 net.cpp:411] ip2 -> ip2\n", + "I0224 00:32:05.813336 658 net.cpp:150] Setting up ip2\n", + "I0224 00:32:05.813345 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.813379 658 net.cpp:165] Memory required for data: 3560\n", + "I0224 00:32:05.813401 658 layer_factory.hpp:77] Creating layer ip2_ip2_0_split\n", + "I0224 00:32:05.813417 658 net.cpp:106] Creating Layer ip2_ip2_0_split\n", + "I0224 00:32:05.813426 658 net.cpp:454] ip2_ip2_0_split <- ip2\n", + "I0224 00:32:05.813434 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_0\n", + "I0224 00:32:05.813446 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_1\n", + "I0224 00:32:05.813457 658 net.cpp:150] Setting up ip2_ip2_0_split\n", + "I0224 00:32:05.813465 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.813473 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.813480 658 net.cpp:165] Memory required for data: 3720\n", + "I0224 00:32:05.813488 658 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:05.813499 658 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:05.813508 658 net.cpp:454] accuracy <- ip2_ip2_0_split_0\n", + "I0224 00:32:05.813515 658 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:05.813524 658 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:05.813539 658 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:05.813547 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.813555 658 net.cpp:165] Memory required for data: 3724\n", + "I0224 00:32:05.813565 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.813585 658 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:05.813599 658 net.cpp:454] loss <- ip2_ip2_0_split_1\n", + "I0224 00:32:05.813616 658 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:05.813627 658 net.cpp:411] loss -> loss\n", + "I0224 00:32:05.813642 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.813663 658 net.cpp:150] Setting up loss\n", + "I0224 00:32:05.813671 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.813679 658 net.cpp:160] with loss weight 1\n", + "I0224 00:32:05.813695 658 net.cpp:165] Memory required for data: 3728\n", + "I0224 00:32:05.813704 658 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:05.813712 658 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:05.813720 658 net.cpp:226] ip2_ip2_0_split needs backward computation.\n", + "I0224 00:32:05.813729 658 net.cpp:226] ip2 needs backward computation.\n", + "I0224 00:32:05.813735 658 net.cpp:226] relu1 needs backward computation.\n", + "I0224 00:32:05.813743 658 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:05.813751 658 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:05.813760 658 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:05.813772 658 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:05.813787 658 net.cpp:270] This network produces output loss\n", + "I0224 00:32:05.813809 658 net.cpp:283] Network initialization done.\n", + "I0224 00:32:05.813905 658 solver.cpp:181] Creating test net (#0) specified by test_net file: examples/hdf5_classification/nonlinear_auto_test.prototxt\n", + "I0224 00:32:05.813944 658 net.cpp:49] Initializing net from parameters: \n", + "state {\n", + " phase: TEST\n", + "}\n", + "layer {\n", + " name: \"data\"\n", + " type: \"HDF5Data\"\n", + " top: \"data\"\n", + " top: \"label\"\n", + " hdf5_data_param {\n", + " source: \"examples/hdf5_classification/data/test.txt\"\n", + " batch_size: 10\n", + " }\n", + "}\n", + "layer {\n", + " name: \"ip1\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"data\"\n", + " top: \"ip1\"\n", + " inner_product_param {\n", + " num_output: 40\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu1\"\n", + " type: \"ReLU\"\n", + " bottom: \"ip1\"\n", + " top: \"ip1\"\n", + "}\n", + "layer {\n", + " name: \"ip2\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"ip1\"\n", + " top: \"ip2\"\n", + " inner_product_param {\n", + " num_output: 2\n", + " weight_filler {\n", + " type: \"xavier\"\n", + " }\n", + " }\n", + "}\n", + "layer {\n", + " name: \"accuracy\"\n", + " type: \"Accuracy\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"accuracy\"\n", + "}\n", + "layer {\n", + " name: \"loss\"\n", + " type: \"SoftmaxWithLoss\"\n", + " bottom: \"ip2\"\n", + " bottom: \"label\"\n", + " top: \"loss\"\n", + "}\n", + "I0224 00:32:05.814131 658 layer_factory.hpp:77] Creating layer data\n", + "I0224 00:32:05.814142 658 net.cpp:106] Creating Layer data\n", + "I0224 00:32:05.814152 658 net.cpp:411] data -> data\n", + "I0224 00:32:05.814162 658 net.cpp:411] data -> label\n", + "I0224 00:32:05.814180 658 hdf5_data_layer.cpp:79] Loading list of HDF5 filenames from: examples/hdf5_classification/data/test.txt\n", + "I0224 00:32:05.814220 658 hdf5_data_layer.cpp:93] Number of HDF5 files: 1\n", + "I0224 00:32:05.815207 658 net.cpp:150] Setting up data\n", + "I0224 00:32:05.815227 658 net.cpp:157] Top shape: 10 4 (40)\n", + "I0224 00:32:05.815243 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.815253 658 net.cpp:165] Memory required for data: 200\n", + "I0224 00:32:05.815260 658 layer_factory.hpp:77] Creating layer label_data_1_split\n", + "I0224 00:32:05.815270 658 net.cpp:106] Creating Layer label_data_1_split\n", + "I0224 00:32:05.815279 658 net.cpp:454] label_data_1_split <- label\n", + "I0224 00:32:05.815287 658 net.cpp:411] label_data_1_split -> label_data_1_split_0\n", + "I0224 00:32:05.815299 658 net.cpp:411] label_data_1_split -> label_data_1_split_1\n", + "I0224 00:32:05.815310 658 net.cpp:150] Setting up label_data_1_split\n", + "I0224 00:32:05.815318 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.815326 658 net.cpp:157] Top shape: 10 (10)\n", + "I0224 00:32:05.815335 658 net.cpp:165] Memory required for data: 280\n", + "I0224 00:32:05.815341 658 layer_factory.hpp:77] Creating layer ip1\n", + "I0224 00:32:05.815351 658 net.cpp:106] Creating Layer ip1\n", + "I0224 00:32:05.815358 658 net.cpp:454] ip1 <- data\n", + "I0224 00:32:05.815367 658 net.cpp:411] ip1 -> ip1\n", + "I0224 00:32:05.815383 658 net.cpp:150] Setting up ip1\n", + "I0224 00:32:05.815398 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.815413 658 net.cpp:165] Memory required for data: 1880\n", + "I0224 00:32:05.815435 658 layer_factory.hpp:77] Creating layer relu1\n", + "I0224 00:32:05.815450 658 net.cpp:106] Creating Layer relu1\n", + "I0224 00:32:05.815459 658 net.cpp:454] relu1 <- ip1\n", + "I0224 00:32:05.815469 658 net.cpp:397] relu1 -> ip1 (in-place)\n", + "I0224 00:32:05.815479 658 net.cpp:150] Setting up relu1\n", + "I0224 00:32:05.815486 658 net.cpp:157] Top shape: 10 40 (400)\n", + "I0224 00:32:05.815495 658 net.cpp:165] Memory required for data: 3480\n", + "I0224 00:32:05.815501 658 layer_factory.hpp:77] Creating layer ip2\n", + "I0224 00:32:05.815510 658 net.cpp:106] Creating Layer ip2\n", + "I0224 00:32:05.815518 658 net.cpp:454] ip2 <- ip1\n", + "I0224 00:32:05.815527 658 net.cpp:411] ip2 -> ip2\n", + "I0224 00:32:05.815542 658 net.cpp:150] Setting up ip2\n", + "I0224 00:32:05.815551 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.815559 658 net.cpp:165] Memory required for data: 3560\n", + "I0224 00:32:05.815570 658 layer_factory.hpp:77] Creating layer ip2_ip2_0_split\n", + "I0224 00:32:05.815579 658 net.cpp:106] Creating Layer ip2_ip2_0_split\n", + "I0224 00:32:05.815587 658 net.cpp:454] ip2_ip2_0_split <- ip2\n", + "I0224 00:32:05.815600 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_0\n", + "I0224 00:32:05.815619 658 net.cpp:411] ip2_ip2_0_split -> ip2_ip2_0_split_1\n", + "I0224 00:32:05.815640 658 net.cpp:150] Setting up ip2_ip2_0_split\n", + "I0224 00:32:05.815654 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.815662 658 net.cpp:157] Top shape: 10 2 (20)\n", + "I0224 00:32:05.815670 658 net.cpp:165] Memory required for data: 3720\n", + "I0224 00:32:05.815677 658 layer_factory.hpp:77] Creating layer accuracy\n", + "I0224 00:32:05.815685 658 net.cpp:106] Creating Layer accuracy\n", + "I0224 00:32:05.815693 658 net.cpp:454] accuracy <- ip2_ip2_0_split_0\n", + "I0224 00:32:05.815702 658 net.cpp:454] accuracy <- label_data_1_split_0\n", + "I0224 00:32:05.815711 658 net.cpp:411] accuracy -> accuracy\n", + "I0224 00:32:05.815722 658 net.cpp:150] Setting up accuracy\n", + "I0224 00:32:05.815732 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.815738 658 net.cpp:165] Memory required for data: 3724\n", + "I0224 00:32:05.815747 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.815754 658 net.cpp:106] Creating Layer loss\n", + "I0224 00:32:05.815762 658 net.cpp:454] loss <- ip2_ip2_0_split_1\n", + "I0224 00:32:05.815770 658 net.cpp:454] loss <- label_data_1_split_1\n", + "I0224 00:32:05.815779 658 net.cpp:411] loss -> loss\n", + "I0224 00:32:05.815790 658 layer_factory.hpp:77] Creating layer loss\n", + "I0224 00:32:05.815811 658 net.cpp:150] Setting up loss\n", + "I0224 00:32:05.815829 658 net.cpp:157] Top shape: (1)\n", + "I0224 00:32:05.815843 658 net.cpp:160] with loss weight 1\n", + "I0224 00:32:05.815867 658 net.cpp:165] Memory required for data: 3728\n", + "I0224 00:32:05.815876 658 net.cpp:226] loss needs backward computation.\n", + "I0224 00:32:05.815884 658 net.cpp:228] accuracy does not need backward computation.\n", + "I0224 00:32:05.815892 658 net.cpp:226] ip2_ip2_0_split needs backward computation.\n", + "I0224 00:32:05.815901 658 net.cpp:226] ip2 needs backward computation.\n", + "I0224 00:32:05.815908 658 net.cpp:226] relu1 needs backward computation.\n", + "I0224 00:32:05.815915 658 net.cpp:226] ip1 needs backward computation.\n", + "I0224 00:32:05.815923 658 net.cpp:228] label_data_1_split does not need backward computation.\n", + "I0224 00:32:05.815932 658 net.cpp:228] data does not need backward computation.\n", + "I0224 00:32:05.815938 658 net.cpp:270] This network produces output accuracy\n", + "I0224 00:32:05.815946 658 net.cpp:270] This network produces output loss\n", + "I0224 00:32:05.815958 658 net.cpp:283] Network initialization done.\n", + "I0224 00:32:05.815978 658 solver.cpp:60] Solver scaffolding done.\n", + "I0224 00:32:05.816000 658 caffe.cpp:219] Starting Optimization\n", + "I0224 00:32:05.816016 658 solver.cpp:280] Solving \n", + "I0224 00:32:05.816030 658 solver.cpp:281] Learning Rate Policy: step\n", + "I0224 00:32:05.816048 658 solver.cpp:338] Iteration 0, Testing net (#0)\n", + "I0224 00:32:05.831967 658 solver.cpp:406] Test net output #0: accuracy = 0.4464\n", + "I0224 00:32:05.832033 658 solver.cpp:406] Test net output #1: loss = 0.909841 (* 1 = 0.909841 loss)\n", + "I0224 00:32:05.832186 658 solver.cpp:229] Iteration 0, loss = 0.798509\n", + "I0224 00:32:05.832218 658 solver.cpp:245] Train net output #0: accuracy = 0.6\n", + "I0224 00:32:05.832247 658 solver.cpp:245] Train net output #1: loss = 0.798509 (* 1 = 0.798509 loss)\n", + "I0224 00:32:05.832281 658 sgd_solver.cpp:106] Iteration 0, lr = 0.01\n", + "I0224 00:32:05.859506 658 solver.cpp:338] Iteration 1000, Testing net (#0)\n", + "I0224 00:32:05.862799 658 solver.cpp:406] Test net output #0: accuracy = 0.8156\n", + "I0224 00:32:05.862818 658 solver.cpp:406] Test net output #1: loss = 0.44259 (* 1 = 0.44259 loss)\n", + "I0224 00:32:05.862853 658 solver.cpp:229] Iteration 1000, loss = 0.537015\n", + "I0224 00:32:05.862864 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:05.862875 658 solver.cpp:245] Train net output #1: loss = 0.537015 (* 1 = 0.537015 loss)\n", + "I0224 00:32:05.862885 658 sgd_solver.cpp:106] Iteration 1000, lr = 0.01\n", + "I0224 00:32:05.883155 658 solver.cpp:338] Iteration 2000, Testing net (#0)\n", + "I0224 00:32:05.886435 658 solver.cpp:406] Test net output #0: accuracy = 0.8116\n", + "I0224 00:32:05.886451 658 solver.cpp:406] Test net output #1: loss = 0.434079 (* 1 = 0.434079 loss)\n", + "I0224 00:32:05.886484 658 solver.cpp:229] Iteration 2000, loss = 0.43109\n", + "I0224 00:32:05.886497 658 solver.cpp:245] Train net output #0: accuracy = 0.9\n", + "I0224 00:32:05.886508 658 solver.cpp:245] Train net output #1: loss = 0.43109 (* 1 = 0.43109 loss)\n", + "I0224 00:32:05.886518 658 sgd_solver.cpp:106] Iteration 2000, lr = 0.01\n", + "I0224 00:32:05.907243 658 solver.cpp:338] Iteration 3000, Testing net (#0)\n", + "I0224 00:32:05.910521 658 solver.cpp:406] Test net output #0: accuracy = 0.8168\n", + "I0224 00:32:05.910537 658 solver.cpp:406] Test net output #1: loss = 0.425661 (* 1 = 0.425661 loss)\n", + "I0224 00:32:05.910905 658 solver.cpp:229] Iteration 3000, loss = 0.430245\n", + "I0224 00:32:05.910922 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:05.910933 658 solver.cpp:245] Train net output #1: loss = 0.430245 (* 1 = 0.430245 loss)\n", + "I0224 00:32:05.910943 658 sgd_solver.cpp:106] Iteration 3000, lr = 0.01\n", + "I0224 00:32:05.931205 658 solver.cpp:338] Iteration 4000, Testing net (#0)\n", + "I0224 00:32:05.934479 658 solver.cpp:406] Test net output #0: accuracy = 0.8324\n", + "I0224 00:32:05.934496 658 solver.cpp:406] Test net output #1: loss = 0.404891 (* 1 = 0.404891 loss)\n", + "I0224 00:32:05.934530 658 solver.cpp:229] Iteration 4000, loss = 0.628955\n", + "I0224 00:32:05.934542 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:05.934553 658 solver.cpp:245] Train net output #1: loss = 0.628955 (* 1 = 0.628955 loss)\n", + "I0224 00:32:05.934583 658 sgd_solver.cpp:106] Iteration 4000, lr = 0.01\n", + "I0224 00:32:05.955108 658 solver.cpp:338] Iteration 5000, Testing net (#0)\n", + "I0224 00:32:05.958377 658 solver.cpp:406] Test net output #0: accuracy = 0.8364\n", + "I0224 00:32:05.958395 658 solver.cpp:406] Test net output #1: loss = 0.404235 (* 1 = 0.404235 loss)\n", + "I0224 00:32:05.958432 658 solver.cpp:229] Iteration 5000, loss = 0.394939\n", + "I0224 00:32:05.958444 658 solver.cpp:245] Train net output #0: accuracy = 0.9\n", + "I0224 00:32:05.958456 658 solver.cpp:245] Train net output #1: loss = 0.39494 (* 1 = 0.39494 loss)\n", + "I0224 00:32:05.958466 658 sgd_solver.cpp:106] Iteration 5000, lr = 0.001\n", + "I0224 00:32:05.978703 658 solver.cpp:338] Iteration 6000, Testing net (#0)\n", + "I0224 00:32:05.981973 658 solver.cpp:406] Test net output #0: accuracy = 0.838\n", + "I0224 00:32:05.981991 658 solver.cpp:406] Test net output #1: loss = 0.385743 (* 1 = 0.385743 loss)\n", + "I0224 00:32:05.982347 658 solver.cpp:229] Iteration 6000, loss = 0.411537\n", + "I0224 00:32:05.982362 658 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:05.982373 658 solver.cpp:245] Train net output #1: loss = 0.411537 (* 1 = 0.411537 loss)\n", + "I0224 00:32:05.982383 658 sgd_solver.cpp:106] Iteration 6000, lr = 0.001\n", + "I0224 00:32:06.003015 658 solver.cpp:338] Iteration 7000, Testing net (#0)\n", + "I0224 00:32:06.006283 658 solver.cpp:406] Test net output #0: accuracy = 0.8388\n", + "I0224 00:32:06.006301 658 solver.cpp:406] Test net output #1: loss = 0.384648 (* 1 = 0.384648 loss)\n", + "I0224 00:32:06.006335 658 solver.cpp:229] Iteration 7000, loss = 0.521072\n", + "I0224 00:32:06.006347 658 solver.cpp:245] Train net output #0: accuracy = 0.7\n", + "I0224 00:32:06.006358 658 solver.cpp:245] Train net output #1: loss = 0.521073 (* 1 = 0.521073 loss)\n", + "I0224 00:32:06.006368 658 sgd_solver.cpp:106] Iteration 7000, lr = 0.001\n", + "I0224 00:32:06.026715 658 solver.cpp:338] Iteration 8000, Testing net (#0)\n", + "I0224 00:32:06.029965 658 solver.cpp:406] Test net output #0: accuracy = 0.8404\n", + "I0224 00:32:06.029983 658 solver.cpp:406] Test net output #1: loss = 0.380889 (* 1 = 0.380889 loss)\n", + "I0224 00:32:06.030015 658 solver.cpp:229] Iteration 8000, loss = 0.329477\n", + "I0224 00:32:06.030028 658 solver.cpp:245] Train net output #0: accuracy = 0.9\n", + "I0224 00:32:06.030040 658 solver.cpp:245] Train net output #1: loss = 0.329477 (* 1 = 0.329477 loss)\n", + "I0224 00:32:06.030048 658 sgd_solver.cpp:106] Iteration 8000, lr = 0.001\n", + "I0224 00:32:06.050626 658 solver.cpp:338] Iteration 9000, Testing net (#0)\n", + "I0224 00:32:06.053889 658 solver.cpp:406] Test net output #0: accuracy = 0.8376\n", + "I0224 00:32:06.053906 658 solver.cpp:406] Test net output #1: loss = 0.382756 (* 1 = 0.382756 loss)\n", + "I0224 00:32:06.054271 658 solver.cpp:229] Iteration 9000, loss = 0.412227\n", + "I0224 00:32:06.054291 658 solver.cpp:245] Train net output #0: accuracy = 0.8\n", + "I0224 00:32:06.054314 658 solver.cpp:245] Train net output #1: loss = 0.412228 (* 1 = 0.412228 loss)\n", + "I0224 00:32:06.054337 658 sgd_solver.cpp:106] Iteration 9000, lr = 0.001\n", + "I0224 00:32:06.074646 658 solver.cpp:456] Snapshotting to binary proto file examples/hdf5_classification/data/train_iter_10000.caffemodel\n", + "I0224 00:32:06.074808 658 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/hdf5_classification/data/train_iter_10000.solverstate\n", + "I0224 00:32:06.074889 658 solver.cpp:318] Iteration 10000, loss = 0.532798\n", + "I0224 00:32:06.074906 658 solver.cpp:338] Iteration 10000, Testing net (#0)\n", + "I0224 00:32:06.078208 658 solver.cpp:406] Test net output #0: accuracy = 0.8388\n", + "I0224 00:32:06.078225 658 solver.cpp:406] Test net output #1: loss = 0.382042 (* 1 = 0.382042 loss)\n", + "I0224 00:32:06.078234 658 solver.cpp:323] Optimization Done.\n", + "I0224 00:32:06.078241 658 caffe.cpp:222] Optimization Done.\n" + ] + } + ], + "source": [ + "!./build/tools/caffe train -solver examples/hdf5_classification/nonlinear_logreg_solver.prototxt" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Clean up (comment this out if you want to examine the hdf5_classification/data directory).\n", + "shutil.rmtree(dirname)" + ] + } + ], + "metadata": { + "description": "Use Caffe as a generic SGD optimizer to train logistic regression on non-image HDF5 data.", + "example_name": "Off-the-shelf SGD for classification", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + }, + "priority": 4 + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/hdf5_classification/nonlinear_solver.prototxt b/examples/hdf5_classification/nonlinear_solver.prototxt deleted file mode 100644 index b4aacf6e4..000000000 --- a/examples/hdf5_classification/nonlinear_solver.prototxt +++ /dev/null @@ -1,15 +0,0 @@ -train_net: "examples/hdf5_classification/nonlinear_auto_train.prototxt" -test_net: "examples/hdf5_classification/nonlinear_auto_test.prototxt" -test_iter: 250 -test_interval: 1000 -base_lr: 0.01 -lr_policy: "step" -gamma: 0.1 -stepsize: 5000 -display: 1000 -max_iter: 10000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 10000 -snapshot_prefix: "examples/hdf5_classification/data/train" -solver_mode: CPU diff --git a/examples/hdf5_classification/solver.prototxt b/examples/hdf5_classification/solver.prototxt deleted file mode 100644 index 8587b5a1e..000000000 --- a/examples/hdf5_classification/solver.prototxt +++ /dev/null @@ -1,15 +0,0 @@ -train_net: "examples/hdf5_classification/logreg_auto_train.prototxt" -test_net: "examples/hdf5_classification/logreg_auto_test.prototxt" -test_iter: 250 -test_interval: 1000 -base_lr: 0.01 -lr_policy: "step" -gamma: 0.1 -stepsize: 5000 -display: 1000 -max_iter: 10000 -momentum: 0.9 -weight_decay: 0.0005 -snapshot: 10000 -snapshot_prefix: "examples/hdf5_classification/data/train" -solver_mode: CPU From ca22227089e9be0391c0d5532cab4b7ec64ab4ff Mon Sep 17 00:00:00 2001 From: Niels Ole Salscheider Date: Wed, 24 Feb 2016 17:00:58 +0100 Subject: [PATCH 173/458] CMake: Do not include "${PROJECT_BINARY_DIR}/include" with SYSTEM option This is important for the include order. Without this patch, a previously installed caffe.pb.h might be included instead of the one that is generated during the build. --- cmake/ProtoBuf.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/ProtoBuf.cmake b/cmake/ProtoBuf.cmake index fc799bd39..73f647f5f 100644 --- a/cmake/ProtoBuf.cmake +++ b/cmake/ProtoBuf.cmake @@ -23,7 +23,7 @@ endif() # place where to generate protobuf sources set(proto_gen_folder "${PROJECT_BINARY_DIR}/include/caffe/proto") -include_directories(SYSTEM "${PROJECT_BINARY_DIR}/include") +include_directories("${PROJECT_BINARY_DIR}/include") set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE) From 00598ca84e2611cf3bbd363d4920796ce1517ff2 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 16 Oct 2015 16:44:23 -0700 Subject: [PATCH 174/458] add InputLayer for Net input Create an input layer to replace oddball Net `input` fields. --- include/caffe/layers/input_layer.hpp | 44 ++++++++++++++++++++++++++++ src/caffe/layers/input_layer.cpp | 27 +++++++++++++++++ src/caffe/proto/caffe.proto | 13 ++++++-- 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 include/caffe/layers/input_layer.hpp create mode 100644 src/caffe/layers/input_layer.cpp diff --git a/include/caffe/layers/input_layer.hpp b/include/caffe/layers/input_layer.hpp new file mode 100644 index 000000000..f4472678c --- /dev/null +++ b/include/caffe/layers/input_layer.hpp @@ -0,0 +1,44 @@ +#ifndef CAFFE_INPUT_LAYER_HPP_ +#define CAFFE_INPUT_LAYER_HPP_ + +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Provides data to the Net by assigning tops directly. + * + * This data layer is a container that merely holds the data assigned to it; + * forward, backward, and reshape are all no-ops. + */ +template +class InputLayer : public Layer { + public: + explicit InputLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + // Data layers should be shared by multiple solvers in parallel + virtual inline bool ShareInParallel() const { return true; } + // Data layers have no bottoms, so reshaping is trivial. + virtual void Reshape(const vector*>& bottom, + const vector*>& top) {} + + virtual inline const char* type() const { return "Input"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int MinTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) {} + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) {} +}; + +} // namespace caffe + +#endif // CAFFE_INPUT_LAYER_HPP_ diff --git a/src/caffe/layers/input_layer.cpp b/src/caffe/layers/input_layer.cpp new file mode 100644 index 000000000..667d8ad67 --- /dev/null +++ b/src/caffe/layers/input_layer.cpp @@ -0,0 +1,27 @@ +#include + +#include "caffe/layers/input_layer.hpp" + +namespace caffe { + +template +void InputLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const int num_top = top.size(); + const InputParameter& param = this->layer_param_.input_param(); + const int num_shape = param.shape_size(); + CHECK(num_shape == 0 || num_shape == 1 || num_shape == num_top) + << "Must specify 'shape' once, once per top blob, or not at all: " + << num_top << " tops vs. " << num_shape << " shapes."; + if (num_shape > 0) { + for (int i = 0; i < num_top; ++i) { + const int shape_index = (param.shape_size() == 1) ? 0 : i; + top[i]->Reshape(param.shape(shape_index)); + } + } +} + +INSTANTIATE_CLASS(InputLayer); +REGISTER_LAYER_CLASS(Input); + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 7edb6ae87..702ce6be1 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 143 (last added: scale_param) +// LayerParameter next available layer-specific ID: 144 (last added: input_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -374,6 +374,7 @@ message LayerParameter { optional ImageDataParameter image_data_param = 115; optional InfogainLossParameter infogain_loss_param = 116; optional InnerProductParameter inner_product_param = 117; + optional InputParameter input_param = 143; optional LogParameter log_param = 134; optional LRNParameter lrn_param = 118; optional MemoryDataParameter memory_data_param = 119; @@ -431,7 +432,7 @@ message LossParameter { // Outputs that receive the ignore label will NOT be ignored in computing // the normalization factor. FULL = 0; - // Divide by the total number of output locations that do not take the + // Divide by the total number of output locations that do not take the // ignore_label. If ignore_label is not set, this behaves like FULL. VALID = 1; // Divide by the batch size. @@ -793,6 +794,14 @@ message InnerProductParameter { optional bool transpose = 6 [default = false]; } +message InputParameter { + // This layer produces N >= 1 top blob(s) to be assigned manually. + // Define N shapes to set a shape for each top. + // Define 1 shape to set the same shape for every top. + // Define no shape to defer to reshaping manually. + repeated BlobShape shape = 1; +} + // Message that stores parameters used by LogLayer message LogParameter { // LogLayer computes outputs y = log_base(shift + scale * x), for base > 0. From bddd04b32c297035b38abbcb41a452bf7167ba17 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 16 Oct 2015 16:44:45 -0700 Subject: [PATCH 175/458] deprecate input fields and upgrade automagically --- include/caffe/util/upgrade_proto.hpp | 6 ++++ src/caffe/proto/caffe.proto | 6 ++-- src/caffe/util/upgrade_proto.cpp | 45 ++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/include/caffe/util/upgrade_proto.hpp b/include/caffe/util/upgrade_proto.hpp index c94bb3caa..14e1936a8 100644 --- a/include/caffe/util/upgrade_proto.hpp +++ b/include/caffe/util/upgrade_proto.hpp @@ -59,6 +59,12 @@ bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param, const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type); +// Return true iff the Net contains input fields. +bool NetNeedsInputUpgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade input fields into layers. +void UpgradeNetInput(NetParameter* net_param); + // Return true iff the solver contains any old solver_type specified as enums bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param); diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 702ce6be1..3b27bbd94 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -63,12 +63,12 @@ message FillerParameter { message NetParameter { optional string name = 1; // consider giving the network a name - // The input blobs to the network. + // DEPRECATED. See InputParameter. The input blobs to the network. repeated string input = 3; - // The shape of the input blobs. + // DEPRECATED. See InputParameter. The shape of the input blobs. repeated BlobShape input_shape = 8; - // 4D input dimensions -- deprecated. Use "shape" instead. + // 4D input dimensions -- deprecated. Use "input_shape" instead. // If specified, for each input blob there should be four // values specifying the num, channels, height and width of the input blob. // Thus, there should be a total of (4 * #input) numbers. diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index ff3f8ffc4..449975bd7 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -60,6 +60,16 @@ bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { << "V1LayerParameter"; } } + // NetParameter uses old style input fields; try to upgrade it. + if (NetNeedsInputUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade input file specified using deprecated " + << "input fields: " << param_file; + UpgradeNetInput(param); + LOG(INFO) << "Successfully upgraded file specified using deprecated " + << "input fields."; + LOG(WARNING) << "Note that future Caffe releases will only support " + << "input layers and not input fields."; + } return success; } @@ -937,6 +947,41 @@ const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) { } } +bool NetNeedsInputUpgrade(const NetParameter& net_param) { + return net_param.input_size() > 0; +} + +void UpgradeNetInput(NetParameter* net_param) { + LayerParameter* layer_param = net_param->add_layer(); + layer_param->set_name("input"); + layer_param->set_type("Input"); + InputParameter* input_param = layer_param->mutable_input_param(); + bool has_shape = net_param->input_shape_size() > 0; + // Convert input fields into a layer. + for (int i = 0; i < net_param->input_size(); ++i) { + layer_param->add_top(net_param->input(i)); + if (has_shape) { + input_param->add_shape()->CopyFrom(net_param->input_shape(i)); + } else { + // Turn legacy input dimensions into shape. + BlobShape* shape = input_param->add_shape(); + int first_dim = i*4; + int last_dim = first_dim + 4; + for (int j = first_dim; j < last_dim; j++) { + shape->add_dim(net_param->input_dim(j)); + } + } + } + // Swap input layer to beginning of net to satisfy layer dependencies. + for (int i = net_param->layer_size() - 1; i > 0; --i) { + net_param->mutable_layer(i-1)->Swap(net_param->mutable_layer(i)); + } + // Clear inputs. + net_param->clear_input(); + net_param->clear_input_shape(); + net_param->clear_input_dim(); +} + // Return true iff the solver contains any old solver_type specified as enums bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param) { if (solver_param.has_solver_type()) { From 51f79a837ddea002746d86d69e342a44f099654f Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 16 Oct 2015 21:11:32 -0700 Subject: [PATCH 176/458] drop Net inputs + Forward with bottoms Drop special cases for `input` fields, the `Net` input members, and the `Net` interface for Forward with bottoms along with Forward() / ForwardPrefilled() distinction. --- include/caffe/net.hpp | 34 ++---- src/caffe/net.cpp | 104 ++---------------- src/caffe/solver.cpp | 8 +- src/caffe/test/test_gradient_based_solver.cpp | 6 +- src/caffe/test/test_net.cpp | 78 ++++++------- src/caffe/test/test_split_layer.cpp | 61 ---------- src/caffe/util/insert_splits.cpp | 21 +--- tools/caffe.cpp | 5 +- tools/extract_features.cpp | 3 +- 9 files changed, 61 insertions(+), 259 deletions(-) diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 543133e25..43e0a8451 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -32,11 +32,10 @@ class Net { void Init(const NetParameter& param); /** - * @brief Run Forward with the input Blob%s already fed separately. + * @brief Run Forward and return the result. * - * You can get the input blobs using input_blobs(). */ - const vector*>& ForwardPrefilled(Dtype* loss = NULL); + const vector*>& Forward(Dtype* loss = NULL); /** * The From and To variants of Forward and Backward operate on the @@ -49,14 +48,6 @@ class Net { Dtype ForwardFromTo(int start, int end); Dtype ForwardFrom(int start); Dtype ForwardTo(int end); - /// @brief Run forward using a set of bottom blobs, and return the result. - const vector*>& Forward(const vector* > & bottom, - Dtype* loss = NULL); - /** - * @brief Run forward using a serialized BlobProtoVector and return the - * result as a serialized BlobProtoVector - */ - string Forward(const string& input_blob_protos, Dtype* loss = NULL); /** * @brief Zeroes out the diffs of all net parameters. @@ -82,9 +73,9 @@ class Net { */ void Reshape(); - Dtype ForwardBackward(const vector* > & bottom) { + Dtype ForwardBackward() { Dtype loss; - Forward(bottom, &loss); + Forward(&loss); Backward(); return loss; } @@ -194,18 +185,11 @@ class Net { inline const vector& param_display_names() const { return param_display_names_; } - /// @brief Input and output blob numbers - inline int num_inputs() const { return net_input_blobs_.size(); } + /// @brief output blob number inline int num_outputs() const { return net_output_blobs_.size(); } - inline const vector*>& input_blobs() const { - return net_input_blobs_; - } inline const vector*>& output_blobs() const { return net_output_blobs_; } - inline const vector& input_blob_indices() const { - return net_input_blob_indices_; - } inline const vector& output_blob_indices() const { return net_output_blob_indices_; } @@ -229,7 +213,7 @@ class Net { protected: // Helpers for Init. - /// @brief Append a new input or top blob to the net. + /// @brief Append a new top blob to the net. void AppendTop(const NetParameter& param, const int layer_id, const int top_id, set* available_blobs, map* blob_name_to_idx); @@ -241,8 +225,6 @@ class Net { void AppendParam(const NetParameter& param, const int layer_id, const int param_id); - /// @brief Helper for displaying debug info in Forward about input Blobs. - void InputDebugInfo(const int layer_id); /// @brief Helper for displaying debug info in Forward. void ForwardDebugInfo(const int layer_id); /// @brief Helper for displaying debug info in Backward. @@ -281,10 +263,8 @@ class Net { vector param_display_names_; vector > param_layer_indices_; map param_names_index_; - /// blob indices for the input and the output of the net - vector net_input_blob_indices_; + /// blob indices for the output of the net vector net_output_blob_indices_; - vector*> net_input_blobs_; vector*> net_output_blobs_; /// The parameters in the network. vector > > params_; diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 05bee7987..b7320e95a 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -56,22 +56,7 @@ void Net::Init(const NetParameter& in_param) { name_ = param.name(); map blob_name_to_idx; set available_blobs; - CHECK(param.input_dim_size() == 0 || param.input_shape_size() == 0) - << "Must specify either input_shape OR deprecated input_dim, not both."; - if (param.input_dim_size() > 0) { - // Deprecated 4D dimensions. - CHECK_EQ(param.input_size() * 4, param.input_dim_size()) - << "Incorrect input blob dimension specifications."; - } else { - CHECK_EQ(param.input_size(), param.input_shape_size()) - << "Exactly one input_shape must be specified per input."; - } memory_used_ = 0; - // set the input blobs - for (int input_id = 0; input_id < param.input_size(); ++input_id) { - const int layer_id = -1; // inputs have fake layer ID -1 - AppendTop(param, layer_id, input_id, &available_blobs, &blob_name_to_idx); - } // For each layer, set up its input and output bottom_vecs_.resize(param.layer_size()); top_vecs_.resize(param.layer_size()); @@ -379,19 +364,17 @@ bool Net::StateMeetsRule(const NetState& state, return true; } -// Helper for Net::Init: add a new input or top blob to the net. (Inputs have -// layer_id == -1, tops have layer_id >= 0.) +// Helper for Net::Init: add a new top blob to the net. template void Net::AppendTop(const NetParameter& param, const int layer_id, const int top_id, set* available_blobs, map* blob_name_to_idx) { - shared_ptr layer_param((layer_id >= 0) ? - (new LayerParameter(param.layer(layer_id))) : NULL); - const string& blob_name = layer_param ? - (layer_param->top_size() > top_id ? - layer_param->top(top_id) : "(automatic)") : param.input(top_id); + shared_ptr layer_param( + new LayerParameter(param.layer(layer_id))); + const string& blob_name = (layer_param->top_size() > top_id) ? + layer_param->top(top_id) : "(automatic)"; // Check if we are doing in-place computation - if (blob_name_to_idx && layer_param && layer_param->bottom_size() > top_id && + if (blob_name_to_idx && layer_param->bottom_size() > top_id && blob_name == layer_param->bottom(top_id)) { // In-place computation LOG_IF(INFO, Caffe::root_solver()) @@ -407,11 +390,7 @@ void Net::AppendTop(const NetParameter& param, const int layer_id, } else { // Normal output. if (Caffe::root_solver()) { - if (layer_param) { - LOG(INFO) << layer_param->name() << " -> " << blob_name; - } else { - LOG(INFO) << "Input " << top_id << " -> " << blob_name; - } + LOG(INFO) << layer_param->name() << " -> " << blob_name; } shared_ptr > blob_pointer(new Blob()); const int blob_id = blobs_.size(); @@ -419,22 +398,8 @@ void Net::AppendTop(const NetParameter& param, const int layer_id, blob_names_.push_back(blob_name); blob_need_backward_.push_back(false); if (blob_name_to_idx) { (*blob_name_to_idx)[blob_name] = blob_id; } - if (layer_id == -1) { - // Set the (explicitly specified) dimensions of the input blob. - if (param.input_dim_size() > 0) { - blob_pointer->Reshape(param.input_dim(top_id * 4), - param.input_dim(top_id * 4 + 1), - param.input_dim(top_id * 4 + 2), - param.input_dim(top_id * 4 + 3)); - } else { - blob_pointer->Reshape(param.input_shape(top_id)); - } - net_input_blob_indices_.push_back(blob_id); - net_input_blobs_.push_back(blob_pointer.get()); - } else { - top_id_vecs_[layer_id].push_back(blob_id); - top_vecs_[layer_id].push_back(blob_pointer.get()); - } + top_id_vecs_[layer_id].push_back(blob_id); + top_vecs_[layer_id].push_back(blob_pointer.get()); } if (available_blobs) { available_blobs->insert(blob_name); } } @@ -566,11 +531,6 @@ Dtype Net::ForwardFromTo(int start, int end) { CHECK_GE(start, 0); CHECK_LT(end, layers_.size()); Dtype loss = 0; - if (debug_info_) { - for (int i = 0; i < net_input_blobs_.size(); ++i) { - InputDebugInfo(i); - } - } for (int i = start; i <= end; ++i) { // LOG(ERROR) << "Forwarding " << layer_names_[i]; Dtype layer_loss = layers_[i]->Forward(bottom_vecs_[i], top_vecs_[i]); @@ -591,7 +551,7 @@ Dtype Net::ForwardTo(int end) { } template -const vector*>& Net::ForwardPrefilled(Dtype* loss) { +const vector*>& Net::Forward(Dtype* loss) { if (loss != NULL) { *loss = ForwardFromTo(0, layers_.size() - 1); } else { @@ -600,37 +560,6 @@ const vector*>& Net::ForwardPrefilled(Dtype* loss) { return net_output_blobs_; } -template -const vector*>& Net::Forward( - const vector*> & bottom, Dtype* loss) { - // Copy bottom to internal bottom - for (int i = 0; i < bottom.size(); ++i) { - net_input_blobs_[i]->CopyFrom(*bottom[i]); - } - return ForwardPrefilled(loss); -} - -template -string Net::Forward(const string& input_blob_protos, Dtype* loss) { - BlobProtoVector blob_proto_vec; - if (net_input_blobs_.size()) { - blob_proto_vec.ParseFromString(input_blob_protos); - CHECK_EQ(blob_proto_vec.blobs_size(), net_input_blobs_.size()) - << "Incorrect input size."; - for (int i = 0; i < blob_proto_vec.blobs_size(); ++i) { - net_input_blobs_[i]->FromProto(blob_proto_vec.blobs(i)); - } - } - ForwardPrefilled(loss); - blob_proto_vec.Clear(); - for (int i = 0; i < net_output_blobs_.size(); ++i) { - net_output_blobs_[i]->ToProto(blob_proto_vec.add_blobs()); - } - string output; - blob_proto_vec.SerializeToString(&output); - return output; -} - template void Net::BackwardFromTo(int start, int end) { CHECK_GE(end, 0); @@ -644,16 +573,6 @@ void Net::BackwardFromTo(int start, int end) { } } -template -void Net::InputDebugInfo(const int input_id) { - const Blob& blob = *net_input_blobs_[input_id]; - const string& blob_name = blob_names_[net_input_blob_indices_[input_id]]; - const Dtype data_abs_val_mean = blob.asum_data() / blob.count(); - LOG_IF(INFO, Caffe::root_solver()) - << " [Forward] " - << "Input " << blob_name << " data: " << data_abs_val_mean; -} - template void Net::ForwardDebugInfo(const int layer_id) { for (int top_id = 0; top_id < top_vecs_[layer_id].size(); ++top_id) { @@ -912,9 +831,6 @@ void Net::ToProto(NetParameter* param, bool write_diff) const { param->Clear(); param->set_name(name_); // Add bottom and top - for (int i = 0; i < net_input_blob_indices_.size(); ++i) { - param->add_input(blob_names_[net_input_blob_indices_[i]]); - } DLOG(INFO) << "Serializing " << layers_.size() << " layers"; for (int i = 0; i < layers_.size(); ++i) { LayerParameter* layer_param = param->add_layer(); diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index a5ccf9c71..ece3913e8 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -192,7 +192,6 @@ void Solver::InitTestNets() { template void Solver::Step(int iters) { - vector*> bottom_vec; const int start_iter = iter_; const int stop_iter = iter_ + iters; int average_loss = this->param_.average_loss(); @@ -220,7 +219,7 @@ void Solver::Step(int iters) { // accumulate the loss and gradient Dtype loss = 0; for (int i = 0; i < param_.iter_size(); ++i) { - loss += net_->ForwardBackward(bottom_vec); + loss += net_->ForwardBackward(); } loss /= param_.iter_size(); // average the loss across iterations for smoothed reporting @@ -311,7 +310,7 @@ void Solver::Solve(const char* resume_file) { if (param_.display() && iter_ % param_.display() == 0) { int average_loss = this->param_.average_loss(); Dtype loss; - net_->ForwardPrefilled(&loss); + net_->Forward(&loss); UpdateSmoothedLoss(loss, start_iter, average_loss); @@ -341,7 +340,6 @@ void Solver::Test(const int test_net_id) { ShareTrainedLayersWith(net_.get()); vector test_score; vector test_score_output_id; - vector*> bottom_vec; const shared_ptr >& test_net = test_nets_[test_net_id]; Dtype loss = 0; for (int i = 0; i < param_.test_iter(test_net_id); ++i) { @@ -362,7 +360,7 @@ void Solver::Test(const int test_net_id) { Dtype iter_loss; const vector*>& result = - test_net->Forward(bottom_vec, &iter_loss); + test_net->Forward(&iter_loss); if (param_.test_compute_loss()) { loss += iter_loss; } diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 84c6747f6..09ec3a7e9 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -185,9 +185,8 @@ class GradientBasedSolverTest : public MultiDeviceTest { this->InitSolverFromProtoString(proto.str()); if (from_snapshot != NULL) { this->solver_->Restore(from_snapshot); - vector*> empty_bottom_vec; for (int i = 0; i < this->solver_->iter(); ++i) { - this->solver_->net()->Forward(empty_bottom_vec); + this->solver_->net()->Forward(); } } if (devices == 1) { @@ -231,8 +230,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { // Run a forward pass, and manually compute the update values from the // result. Net& net = *this->solver_->net(); - vector*> empty_bottom_vec; - net.Forward(empty_bottom_vec); + net.Forward(); ASSERT_TRUE(net.has_blob("data")); const Blob& data = *net.blob_by_name("data"); ASSERT_TRUE(net.has_blob("targets")); diff --git a/src/caffe/test/test_net.cpp b/src/caffe/test/test_net.cpp index ab4afba1a..1e0788ec1 100644 --- a/src/caffe/test/test_net.cpp +++ b/src/caffe/test/test_net.cpp @@ -555,11 +555,14 @@ class NetTest : public MultiDeviceTest { virtual void InitReshapableNet() { const string& proto = "name: 'ReshapableNetwork' " - "input: 'data' " - "input_dim: 1 " - "input_dim: 3 " - "input_dim: 100 " - "input_dim: 100 " + "layer { " + " name: 'data' " + " type: 'Input' " + " top: 'data' " + " input_param { " + " shape: { dim: 1 dim: 3 dim: 100 dim: 100 } " + " } " + "} " "layer { " " name: 'conv1' " " type: 'Convolution' " @@ -821,7 +824,7 @@ TYPED_TEST(NetTest, TestLossWeight) { Caffe::set_random_seed(this->seed_); const bool kForceBackward = true; this->InitUnsharedWeightsNet(NULL, NULL, kForceBackward); - const Dtype loss = this->net_->ForwardBackward(bottom); + const Dtype loss = this->net_->ForwardBackward(); const bool kCopyDiff = true; vector > > blob_grads; this->CopyNetBlobs(kCopyDiff, &blob_grads); @@ -836,7 +839,7 @@ TYPED_TEST(NetTest, TestLossWeight) { for (int i = 0; i < kNumLossWeights; ++i) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&kLossWeights[i], NULL, kForceBackward); - const Dtype weighted_loss = this->net_->ForwardBackward(bottom); + const Dtype weighted_loss = this->net_->ForwardBackward(); const Dtype error_margin = kErrorMargin * fabs(kLossWeights[i]); EXPECT_NEAR(loss * kLossWeights[i], weighted_loss, error_margin) << "loss weight = " << kLossWeights[i]; @@ -865,14 +868,13 @@ TYPED_TEST(NetTest, TestLossWeight) { TYPED_TEST(NetTest, TestLossWeightMidNet) { typedef typename TypeParam::Dtype Dtype; - vector*> bottom; Caffe::set_random_seed(this->seed_); const bool kForceBackward = true; Dtype loss_weight = 0; Dtype midnet_loss_weight = 1; this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, kForceBackward); - const Dtype loss = this->net_->ForwardBackward(bottom); + const Dtype loss = this->net_->ForwardBackward(); const bool kCopyDiff = true; const bool kReshape = true; Blob data_grad; @@ -887,7 +889,7 @@ TYPED_TEST(NetTest, TestLossWeightMidNet) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&loss_weight, &kLossWeights[i], kForceBackward); - const Dtype weighted_loss = this->net_->ForwardBackward(bottom); + const Dtype weighted_loss = this->net_->ForwardBackward(); const Dtype error_margin = kErrorMargin * fabs(kLossWeights[i]); EXPECT_NEAR(loss * kLossWeights[i], weighted_loss, error_margin) << "loss weight = " << kLossWeights[i]; @@ -903,7 +905,6 @@ TYPED_TEST(NetTest, TestLossWeightMidNet) { TYPED_TEST(NetTest, TestComboLossWeight) { typedef typename TypeParam::Dtype Dtype; - vector*> bottom; Dtype loss_weight; Dtype midnet_loss_weight; const bool kForceBackward = true; @@ -916,7 +917,7 @@ TYPED_TEST(NetTest, TestComboLossWeight) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, kForceBackward); - const Dtype loss = this->net_->ForwardBackward(bottom); + const Dtype loss = this->net_->ForwardBackward(); const bool kCopyDiff = true; vector > > blob_grads; this->CopyNetBlobs(kCopyDiff, &blob_grads); @@ -928,7 +929,7 @@ TYPED_TEST(NetTest, TestComboLossWeight) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, kForceBackward); - const Dtype loss_main_2 = this->net_->ForwardBackward(bottom); + const Dtype loss_main_2 = this->net_->ForwardBackward(); vector > > blob_grads_loss_2; this->CopyNetBlobs(kCopyDiff, &blob_grads_loss_2); vector > > param_grads_loss_2; @@ -939,7 +940,7 @@ TYPED_TEST(NetTest, TestComboLossWeight) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, kForceBackward); - const Dtype loss_main_3 = this->net_->ForwardBackward(bottom); + const Dtype loss_main_3 = this->net_->ForwardBackward(); const vector > >& blob_grads_loss_3 = this->net_->blobs(); ASSERT_EQ(blob_grads.size(), blob_grads_loss_3.size()); @@ -974,7 +975,7 @@ TYPED_TEST(NetTest, TestComboLossWeight) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, kForceBackward); - const Dtype loss_midnet_2 = this->net_->ForwardBackward(bottom); + const Dtype loss_midnet_2 = this->net_->ForwardBackward(); this->CopyNetBlobs(kCopyDiff, &blob_grads_loss_2); this->CopyNetParams(kCopyDiff, ¶m_grads_loss_2); @@ -983,7 +984,7 @@ TYPED_TEST(NetTest, TestComboLossWeight) { Caffe::set_random_seed(this->seed_); this->InitUnsharedWeightsNet(&loss_weight, &midnet_loss_weight, kForceBackward); - const Dtype loss_midnet_3 = this->net_->ForwardBackward(bottom); + const Dtype loss_midnet_3 = this->net_->ForwardBackward(); const vector > >& blob_grads_midnet_loss_3 = this->net_->blobs(); ASSERT_EQ(blob_grads.size(), blob_grads_midnet_loss_3.size()); @@ -1032,40 +1033,35 @@ TYPED_TEST(NetTest, TestComboLossWeight) { } TYPED_TEST(NetTest, TestBackwardWithAccuracyLayer) { - typedef typename TypeParam::Dtype Dtype; const bool kForceBackward = false; const bool kAccuracyLayer = true; this->InitTinyNet(kForceBackward, kAccuracyLayer); EXPECT_TRUE(this->net_->has_blob("accuracy")); - vector*> bottom; // Test that we can do Backward even though we have an 'Accuracy' layer. - this->net_->ForwardBackward(bottom); + this->net_->ForwardBackward(); } TYPED_TEST(NetTest, TestUnsharedWeightsDataNet) { typedef typename TypeParam::Dtype Dtype; this->InitUnsharedWeightsNet(); - vector*> bottom; Dtype loss; - this->net_->Forward(bottom, &loss); + this->net_->Forward(&loss); EXPECT_GT(loss, 0); } TYPED_TEST(NetTest, TestSharedWeightsDataNet) { typedef typename TypeParam::Dtype Dtype; this->InitSharedWeightsNet(); - vector*> bottom; Dtype loss; - this->net_->Forward(bottom, &loss); + this->net_->Forward(&loss); EXPECT_FLOAT_EQ(loss, 0); } TYPED_TEST(NetTest, TestUnsharedWeightsDiffNet) { typedef typename TypeParam::Dtype Dtype; this->InitUnsharedWeightsNet(); - vector*> bottom; Net* net = this->net_.get(); - net->Forward(bottom); + net->Forward(); net->Backward(); Layer* ip1_layer = net->layer_by_name("innerproduct1").get(); Layer* ip2_layer = net->layer_by_name("innerproduct2").get(); @@ -1081,10 +1077,9 @@ TYPED_TEST(NetTest, TestUnsharedWeightsDiffNet) { TYPED_TEST(NetTest, TestSharedWeightsDiffNet) { typedef typename TypeParam::Dtype Dtype; this->InitSharedWeightsNet(); - vector*> bottom; Net* net = this->net_.get(); Dtype loss; - net->Forward(bottom, &loss); + net->Forward(&loss); net->Backward(); EXPECT_FLOAT_EQ(loss, 0); Layer* ip1_layer = net->layer_by_name("innerproduct1").get(); @@ -1102,7 +1097,6 @@ TYPED_TEST(NetTest, TestSharedWeightsUpdate) { typedef typename TypeParam::Dtype Dtype; Caffe::set_random_seed(this->seed_); this->InitDiffDataSharedWeightsNet(); - vector*> bottom; EXPECT_EQ(this->net_->layer_names()[1], "innerproduct1"); EXPECT_EQ(this->net_->layer_names()[2], "innerproduct2"); Blob* ip1_weights = this->net_->layers()[1]->blobs()[0].get(); @@ -1111,7 +1105,7 @@ TYPED_TEST(NetTest, TestSharedWeightsUpdate) { // locations. EXPECT_EQ(ip1_weights->cpu_data(), ip2_weights->cpu_data()); EXPECT_EQ(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); - this->net_->Forward(bottom); + this->net_->Forward(); this->net_->Backward(); // Compute the expected update as the data minus the two diffs. Blob shared_params; @@ -1146,7 +1140,7 @@ TYPED_TEST(NetTest, TestSharedWeightsUpdate) { // locations in memory. EXPECT_NE(ip1_weights->cpu_data(), ip2_weights->cpu_data()); EXPECT_NE(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); - this->net_->Forward(bottom); + this->net_->Forward(); this->net_->Backward(); // Compute the expected update. Blob unshared_params1; @@ -1186,7 +1180,6 @@ TYPED_TEST(NetTest, TestSharedWeightsResume) { // Create a net with weight sharing; Update it once. Caffe::set_random_seed(this->seed_); this->InitDiffDataSharedWeightsNet(); - vector*> bottom; EXPECT_EQ(this->net_->layer_names()[1], "innerproduct1"); EXPECT_EQ(this->net_->layer_names()[2], "innerproduct2"); Blob* ip1_weights = this->net_->layers()[1]->blobs()[0].get(); @@ -1195,7 +1188,7 @@ TYPED_TEST(NetTest, TestSharedWeightsResume) { // locations. EXPECT_EQ(ip1_weights->cpu_data(), ip2_weights->cpu_data()); EXPECT_EQ(ip1_weights->cpu_diff(), ip2_weights->cpu_diff()); - this->net_->ForwardBackward(bottom); + this->net_->ForwardBackward(); this->net_->Update(); Blob shared_params; const bool kReshape = true; @@ -1228,7 +1221,6 @@ TYPED_TEST(NetTest, TestSharedWeightsResume) { TYPED_TEST(NetTest, TestParamPropagateDown) { typedef typename TypeParam::Dtype Dtype; - vector*> bottom; const bool kBiasTerm = true, kForceBackward = false; const Dtype* kLossWeight1 = NULL; const Dtype* kLossWeight2 = NULL; @@ -1238,7 +1230,7 @@ TYPED_TEST(NetTest, TestParamPropagateDown) { Dtype blobs_lr_w1 = 1, blobs_lr_w2 = 1, blobs_lr_b1 = 2, blobs_lr_b2 = 2; this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); - this->net_->Forward(bottom); + this->net_->Forward(); this->net_->Backward(); const vector > >& params = this->net_->params(); const int num_params = params.size(); @@ -1258,7 +1250,7 @@ TYPED_TEST(NetTest, TestParamPropagateDown) { blobs_lr_w1 *= 2, blobs_lr_w2 *= 2, blobs_lr_b1 *= 2, blobs_lr_b2 *= 2; this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); - this->net_->Forward(bottom); + this->net_->Forward(); this->net_->Backward(); const vector > >& params2 = this->net_->params(); ASSERT_EQ(num_params, params2.size()); @@ -1274,7 +1266,7 @@ TYPED_TEST(NetTest, TestParamPropagateDown) { blobs_lr_w1 = 1, blobs_lr_w2 = 0, blobs_lr_b1 = 0, blobs_lr_b2 = 1; this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); - this->net_->Forward(bottom); + this->net_->Forward(); this->net_->Backward(); const vector > >& params3 = this->net_->params(); ASSERT_EQ(num_params, params3.size()); @@ -1293,7 +1285,7 @@ TYPED_TEST(NetTest, TestParamPropagateDown) { blobs_lr_w1 = 0, blobs_lr_w2 = 1, blobs_lr_b1 = 1, blobs_lr_b2 = 0; this->InitUnsharedWeightsNet(kLossWeight1, kLossWeight2, kForceBackward, kBiasTerm, blobs_lr_w1, blobs_lr_w2, blobs_lr_b1, blobs_lr_b2); - this->net_->Forward(bottom); + this->net_->Forward(); this->net_->Backward(); const vector > >& params4 = this->net_->params(); ASSERT_EQ(num_params, params4.size()); @@ -1315,7 +1307,7 @@ TYPED_TEST(NetTest, TestFromTo) { // Run Forward and Backward, recording the data diff and loss. Blob data; data.ReshapeLike(*this->net_->blob_by_name("data")); - this->net_->ForwardPrefilled(); + this->net_->Forward(); this->net_->Backward(); data.CopyFrom(*this->net_->blob_by_name("data"), true, true); const Dtype *loss_ptr = this->net_->output_blobs()[0]->cpu_data(); @@ -2277,12 +2269,12 @@ TYPED_TEST(NetTest, TestReshape) { filler.Fill(&blob2); this->InitReshapableNet(); - Blob* input_blob = this->net_->input_blobs()[0]; + shared_ptr > input_blob = this->net_->blob_by_name("data"); Blob* output_blob = this->net_->output_blobs()[0]; input_blob->Reshape(blob1.num(), blob1.channels(), blob1.height(), blob1.width()); caffe_copy(blob1.count(), blob1.cpu_data(), input_blob->mutable_cpu_data()); - this->net_->ForwardPrefilled(); + this->net_->Forward(); // call backward just to make sure it runs this->net_->Backward(); Blob output1(output_blob->num(), output_blob->channels(), @@ -2293,7 +2285,7 @@ TYPED_TEST(NetTest, TestReshape) { input_blob->Reshape(blob2.num(), blob2.channels(), blob2.height(), blob2.width()); caffe_copy(blob2.count(), blob2.cpu_data(), input_blob->mutable_cpu_data()); - this->net_->ForwardPrefilled(); + this->net_->Forward(); this->net_->Backward(); Blob output2(output_blob->num(), output_blob->channels(), output_blob->height(), output_blob->width()); @@ -2303,7 +2295,7 @@ TYPED_TEST(NetTest, TestReshape) { input_blob->Reshape(blob1.num(), blob1.channels(), blob1.height(), blob1.width()); caffe_copy(blob1.count(), blob1.cpu_data(), input_blob->mutable_cpu_data()); - this->net_->ForwardPrefilled(); + this->net_->Forward(); this->net_->Backward(); for (int i = 0; i < output1.count(); ++i) { EXPECT_FLOAT_EQ(*(output1.cpu_data() + i), *(output_blob->cpu_data() + i)); @@ -2312,7 +2304,7 @@ TYPED_TEST(NetTest, TestReshape) { input_blob->Reshape(blob2.num(), blob2.channels(), blob2.height(), blob2.width()); caffe_copy(blob2.count(), blob2.cpu_data(), input_blob->mutable_cpu_data()); - this->net_->ForwardPrefilled(); + this->net_->Forward(); this->net_->Backward(); for (int i = 0; i < output2.count(); ++i) { EXPECT_FLOAT_EQ(*(output2.cpu_data() + i), *(output_blob->cpu_data() + i)); diff --git a/src/caffe/test/test_split_layer.cpp b/src/caffe/test/test_split_layer.cpp index ba2ccbb2b..007142126 100644 --- a/src/caffe/test/test_split_layer.cpp +++ b/src/caffe/test/test_split_layer.cpp @@ -886,67 +886,6 @@ TEST_F(SplitLayerInsertionTest, TestInsertionTwoTop) { this->RunInsertionTest(input_proto, expected_output_proto); } -TEST_F(SplitLayerInsertionTest, TestInputInsertion) { - const string& input_proto = - "name: 'TestNetwork' " - "input: 'data' " - "input_dim: 10 " - "input_dim: 3 " - "input_dim: 227 " - "input_dim: 227 " - "layer { " - " name: 'innerprod1' " - " type: 'InnerProduct' " - " bottom: 'data' " - " top: 'innerprod1' " - "} " - "layer { " - " name: 'innerprod2' " - " type: 'InnerProduct' " - " bottom: 'data' " - " top: 'innerprod2' " - "} " - "layer { " - " name: 'loss' " - " type: 'EuclideanLoss' " - " bottom: 'innerprod1' " - " bottom: 'innerprod2' " - "} "; - const string& expected_output_proto = - "name: 'TestNetwork' " - "input: 'data' " - "input_dim: 10 " - "input_dim: 3 " - "input_dim: 227 " - "input_dim: 227 " - "layer { " - " name: 'data_input_0_split' " - " type: 'Split' " - " bottom: 'data' " - " top: 'data_input_0_split_0' " - " top: 'data_input_0_split_1' " - "} " - "layer { " - " name: 'innerprod1' " - " type: 'InnerProduct' " - " bottom: 'data_input_0_split_0' " - " top: 'innerprod1' " - "} " - "layer { " - " name: 'innerprod2' " - " type: 'InnerProduct' " - " bottom: 'data_input_0_split_1' " - " top: 'innerprod2' " - "} " - "layer { " - " name: 'loss' " - " type: 'EuclideanLoss' " - " bottom: 'innerprod1' " - " bottom: 'innerprod2' " - "} "; - this->RunInsertionTest(input_proto, expected_output_proto); -} - TEST_F(SplitLayerInsertionTest, TestWithInPlace) { const string& input_proto = "name: 'TestNetwork' " diff --git a/src/caffe/util/insert_splits.cpp b/src/caffe/util/insert_splits.cpp index 475a2a9f6..7a899c697 100644 --- a/src/caffe/util/insert_splits.cpp +++ b/src/caffe/util/insert_splits.cpp @@ -19,12 +19,6 @@ void InsertSplits(const NetParameter& param, NetParameter* param_split) { map, float> top_idx_to_loss_weight; map, int> top_idx_to_bottom_split_idx; map layer_idx_to_layer_name; - layer_idx_to_layer_name[-1] = "input"; - // Determine the number of times each blob is used as an input (bottom) blob. - for (int i = 0; i < param.input_size(); ++i) { - const string& blob_name = param.input(i); - blob_name_to_last_top_idx[blob_name] = make_pair(-1, i); - } for (int i = 0; i < param.layer_size(); ++i) { const LayerParameter& layer_param = param.layer(i); layer_idx_to_layer_name[i] = layer_param.name(); @@ -45,7 +39,7 @@ void InsertSplits(const NetParameter& param, NetParameter* param_split) { blob_name_to_last_top_idx[blob_name] = make_pair(i, j); } // A use of a top blob as a loss should be handled similarly to the use of - // a top blob as an input (bottom) blob to another layer. + // a top blob as a bottom blob to another layer. const int last_loss = std::min(layer_param.loss_weight_size(), layer_param.top_size()); for (int j = 0; j < last_loss; ++j) { @@ -57,19 +51,6 @@ void InsertSplits(const NetParameter& param, NetParameter* param_split) { } } } - // Create split layer for any input blobs used by other layer as bottom - // blobs more than once. - for (int i = 0; i < param.input_size(); ++i) { - const int split_count = top_idx_to_bottom_count[make_pair(-1, i)]; - if (split_count > 1) { - const string& layer_name = layer_idx_to_layer_name[-1]; - const string& blob_name = param.input(i); - LayerParameter* split_layer_param = param_split->add_layer(); - const float kZeroLossWeight = 0; - ConfigureSplitLayer(layer_name, blob_name, i, split_count, - kZeroLossWeight, split_layer_param); - } - } for (int i = 0; i < param.layer_size(); ++i) { LayerParameter* layer_param = param_split->add_layer(); layer_param->CopyFrom(param.layer(i)); diff --git a/tools/caffe.cpp b/tools/caffe.cpp index ebe95d61e..95b2f82c4 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -251,14 +251,13 @@ int test() { caffe_net.CopyTrainedLayersFrom(FLAGS_weights); LOG(INFO) << "Running for " << FLAGS_iterations << " iterations."; - vector* > bottom_vec; vector test_score_output_id; vector test_score; float loss = 0; for (int i = 0; i < FLAGS_iterations; ++i) { float iter_loss; const vector*>& result = - caffe_net.Forward(bottom_vec, &iter_loss); + caffe_net.Forward(&iter_loss); loss += iter_loss; int idx = 0; for (int j = 0; j < result.size(); ++j) { @@ -322,7 +321,7 @@ int time() { // Note that for the speed benchmark, we will assume that the network does // not take any input blobs. float initial_loss; - caffe_net.Forward(vector*>(), &initial_loss); + caffe_net.Forward(&initial_loss); LOG(INFO) << "Initial loss: " << initial_loss; LOG(INFO) << "Performing Backward"; caffe_net.Backward(); diff --git a/tools/extract_features.cpp b/tools/extract_features.cpp index d6562f980..704467250 100644 --- a/tools/extract_features.cpp +++ b/tools/extract_features.cpp @@ -133,10 +133,9 @@ int feature_extraction_pipeline(int argc, char** argv) { LOG(ERROR)<< "Extacting Features"; Datum datum; - std::vector*> input_vec; std::vector image_indices(num_features, 0); for (int batch_index = 0; batch_index < num_mini_batches; ++batch_index) { - feature_extraction_net->Forward(input_vec); + feature_extraction_net->Forward(); for (int i = 0; i < num_features; ++i) { const boost::shared_ptr > feature_blob = feature_extraction_net->blob_by_name(blob_names[i]); From 0d9a78f5a083db859f01d45da91c5a0ca1389de8 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 2 Dec 2015 18:31:26 -0800 Subject: [PATCH 177/458] collect Net inputs from Input layers Restore the list of net inputs for compatibility with the pycaffe and matcaffe interfaces and downstream C++. --- include/caffe/net.hpp | 13 +++++++++++-- src/caffe/net.cpp | 6 ++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 43e0a8451..1c2a19126 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -185,11 +185,18 @@ class Net { inline const vector& param_display_names() const { return param_display_names_; } - /// @brief output blob number + /// @brief Input and output blob numbers + inline int num_inputs() const { return net_input_blobs_.size(); } inline int num_outputs() const { return net_output_blobs_.size(); } + inline const vector*>& input_blobs() const { + return net_input_blobs_; + } inline const vector*>& output_blobs() const { return net_output_blobs_; } + inline const vector& input_blob_indices() const { + return net_input_blob_indices_; + } inline const vector& output_blob_indices() const { return net_output_blob_indices_; } @@ -263,8 +270,10 @@ class Net { vector param_display_names_; vector > param_layer_indices_; map param_names_index_; - /// blob indices for the output of the net + /// blob indices for the input and the output of the net + vector net_input_blob_indices_; vector net_output_blob_indices_; + vector*> net_input_blobs_; vector*> net_output_blobs_; /// The parameters in the network. vector > > params_; diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index b7320e95a..c1760ea19 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -103,6 +103,12 @@ void Net::Init(const NetParameter& in_param) { int num_top = layer_param.top_size(); for (int top_id = 0; top_id < num_top; ++top_id) { AppendTop(param, layer_id, top_id, &available_blobs, &blob_name_to_idx); + // Collect Input layer tops as Net inputs. + if (layer_param.type() == "Input") { + const int blob_id = blobs_.size() - 1; + net_input_blob_indices_.push_back(blob_id); + net_input_blobs_.push_back(blobs_[blob_id].get()); + } } // If the layer specifies that AutoTopBlobs() -> true and the LayerParameter // specified fewer than the required number (as specified by From 2cc3844cb2a4a72de10d321781dc8f994bef95c7 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 3 Dec 2015 19:39:19 -0800 Subject: [PATCH 178/458] [examples] switch examples + models to Input layers --- examples/cifar10/cifar10_full.prototxt | 11 +++-- examples/cifar10/cifar10_quick.prototxt | 11 +++-- .../cpp_classification/classification.cpp | 2 +- examples/mnist/lenet.prototxt | 11 +++-- examples/net_surgery.ipynb | 43 +++++++++---------- .../bvlc_caffenet_full_conv.prototxt | 15 ++++--- examples/net_surgery/conv.prototxt | 11 +++-- examples/siamese/mnist_siamese.prototxt | 13 +++--- models/bvlc_alexnet/deploy.prototxt | 11 +++-- models/bvlc_googlenet/deploy.prototxt | 11 +++-- .../bvlc_reference_caffenet/deploy.prototxt | 11 +++-- .../deploy.prototxt | 11 +++-- models/finetune_flickr_style/deploy.prototxt | 11 +++-- 13 files changed, 83 insertions(+), 89 deletions(-) diff --git a/examples/cifar10/cifar10_full.prototxt b/examples/cifar10/cifar10_full.prototxt index 446479da9..83cf0d86b 100644 --- a/examples/cifar10/cifar10_full.prototxt +++ b/examples/cifar10/cifar10_full.prototxt @@ -1,12 +1,11 @@ name: "CIFAR10_full_deploy" # N.B. input image must be in CIFAR-10 format # as described at http://www.cs.toronto.edu/~kriz/cifar.html -input: "data" -input_shape { - dim: 1 - dim: 3 - dim: 32 - dim: 32 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 1 dim: 3 dim: 32 dim: 32 } } } layer { name: "conv1" diff --git a/examples/cifar10/cifar10_quick.prototxt b/examples/cifar10/cifar10_quick.prototxt index 9352fbf65..cf3b2a358 100644 --- a/examples/cifar10/cifar10_quick.prototxt +++ b/examples/cifar10/cifar10_quick.prototxt @@ -1,10 +1,9 @@ name: "CIFAR10_quick_test" -input: "data" -input_shape { - dim: 1 - dim: 3 - dim: 32 - dim: 32 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 1 dim: 3 dim: 32 dim: 32 } } } layer { name: "conv1" diff --git a/examples/cpp_classification/classification.cpp b/examples/cpp_classification/classification.cpp index 974662e59..6b67c537a 100644 --- a/examples/cpp_classification/classification.cpp +++ b/examples/cpp_classification/classification.cpp @@ -159,7 +159,7 @@ std::vector Classifier::Predict(const cv::Mat& img) { Preprocess(img, &input_channels); - net_->ForwardPrefilled(); + net_->Forward(); /* Copy the output layer to a std::vector */ Blob* output_layer = net_->output_blobs()[0]; diff --git a/examples/mnist/lenet.prototxt b/examples/mnist/lenet.prototxt index dff7123bf..8cf78e62c 100644 --- a/examples/mnist/lenet.prototxt +++ b/examples/mnist/lenet.prototxt @@ -1,10 +1,9 @@ name: "LeNet" -input: "data" -input_shape { - dim: 64 - dim: 1 - dim: 28 - dim: 28 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 64 dim: 1 dim: 28 dim: 28 } } } layer { name: "conv1" diff --git a/examples/net_surgery.ipynb b/examples/net_surgery.ipynb index ff780fbb9..a6092db0c 100644 --- a/examples/net_surgery.ipynb +++ b/examples/net_surgery.ipynb @@ -5494,48 +5494,47 @@ "name": "stdout", "output_type": "stream", "text": [ - "1,2c1\r\n", + "1,2c1,2\r\n", "< # Fully convolutional network version of CaffeNet.\r\n", "< name: \"CaffeNetConv\"\r\n", "---\r\n", "> name: \"CaffeNet\"\r\n", - "4c3\r\n", - "< input_dim: 1\r\n", + "> input: \"data\"\r\n", + "7,11c7\r\n", + "< input_param {\r\n", + "< # initial shape for a fully convolutional network:\r\n", + "< # the shape can be set for each input by reshape.\r\n", + "< shape: { dim: 1 dim: 3 dim: 451 dim: 451 }\r\n", + "< }\r\n", "---\r\n", - "> input_dim: 10\r\n", - "6,7c5,6\r\n", - "< input_dim: 451\r\n", - "< input_dim: 451\r\n", - "---\r\n", - "> input_dim: 227\r\n", - "> input_dim: 227\r\n", - "152,153c151,152\r\n", + "> input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }\r\n", + "157,158c153,154\r\n", "< name: \"fc6-conv\"\r\n", "< type: \"Convolution\"\r\n", "---\r\n", "> name: \"fc6\"\r\n", "> type: \"InnerProduct\"\r\n", - "155,156c154,155\r\n", + "160,161c156,157\r\n", "< top: \"fc6-conv\"\r\n", "< convolution_param {\r\n", "---\r\n", "> top: \"fc6\"\r\n", "> inner_product_param {\r\n", - "158d156\r\n", + "163d158\r\n", "< kernel_size: 6\r\n", - "164,165c162,163\r\n", + "169,170c164,165\r\n", "< bottom: \"fc6-conv\"\r\n", "< top: \"fc6-conv\"\r\n", "---\r\n", "> bottom: \"fc6\"\r\n", "> top: \"fc6\"\r\n", - "170,171c168,169\r\n", + "175,176c170,171\r\n", "< bottom: \"fc6-conv\"\r\n", "< top: \"fc6-conv\"\r\n", "---\r\n", "> bottom: \"fc6\"\r\n", "> top: \"fc6\"\r\n", - "177,181c175,179\r\n", + "182,186c177,181\r\n", "< name: \"fc7-conv\"\r\n", "< type: \"Convolution\"\r\n", "< bottom: \"fc6-conv\"\r\n", @@ -5547,21 +5546,21 @@ "> bottom: \"fc6\"\r\n", "> top: \"fc7\"\r\n", "> inner_product_param {\r\n", - "183d180\r\n", + "188d182\r\n", "< kernel_size: 1\r\n", - "189,190c186,187\r\n", + "194,195c188,189\r\n", "< bottom: \"fc7-conv\"\r\n", "< top: \"fc7-conv\"\r\n", "---\r\n", "> bottom: \"fc7\"\r\n", "> top: \"fc7\"\r\n", - "195,196c192,193\r\n", + "200,201c194,195\r\n", "< bottom: \"fc7-conv\"\r\n", "< top: \"fc7-conv\"\r\n", "---\r\n", "> bottom: \"fc7\"\r\n", "> top: \"fc7\"\r\n", - "202,206c199,203\r\n", + "207,211c201,205\r\n", "< name: \"fc8-conv\"\r\n", "< type: \"Convolution\"\r\n", "< bottom: \"fc7-conv\"\r\n", @@ -5573,9 +5572,9 @@ "> bottom: \"fc7\"\r\n", "> top: \"fc8\"\r\n", "> inner_product_param {\r\n", - "208d204\r\n", + "213d206\r\n", "< kernel_size: 1\r\n", - "214c210\r\n", + "219c212\r\n", "< bottom: \"fc8-conv\"\r\n", "---\r\n", "> bottom: \"fc8\"\r\n" diff --git a/examples/net_surgery/bvlc_caffenet_full_conv.prototxt b/examples/net_surgery/bvlc_caffenet_full_conv.prototxt index 0cadde9b5..f8f5c3c32 100644 --- a/examples/net_surgery/bvlc_caffenet_full_conv.prototxt +++ b/examples/net_surgery/bvlc_caffenet_full_conv.prototxt @@ -1,11 +1,14 @@ # Fully convolutional network version of CaffeNet. name: "CaffeNetConv" -input: "data" -input_shape { - dim: 1 - dim: 3 - dim: 451 - dim: 451 +layer { + name: "data" + type: "Input" + top: "data" + input_param { + # initial shape for a fully convolutional network: + # the shape can be set for each input by reshape. + shape: { dim: 1 dim: 3 dim: 451 dim: 451 } + } } layer { name: "conv1" diff --git a/examples/net_surgery/conv.prototxt b/examples/net_surgery/conv.prototxt index 6b3e5c768..8671bb5bf 100644 --- a/examples/net_surgery/conv.prototxt +++ b/examples/net_surgery/conv.prototxt @@ -1,11 +1,10 @@ # Simple single-layer network to showcase editing model parameters. name: "convolution" -input: "data" -input_shape { - dim: 1 - dim: 1 - dim: 100 - dim: 100 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 1 dim: 1 dim: 100 dim: 100 } } } layer { name: "conv" diff --git a/examples/siamese/mnist_siamese.prototxt b/examples/siamese/mnist_siamese.prototxt index 332731bd7..5d783ba02 100644 --- a/examples/siamese/mnist_siamese.prototxt +++ b/examples/siamese/mnist_siamese.prototxt @@ -1,10 +1,11 @@ name: "mnist_siamese" -input: "data" -input_shape { - dim: 10000 - dim: 1 - dim: 28 - dim: 28 +layer { + name: "data" + type: "Input" + top: "data" + input_param { + shape: { dim: 10000 dim: 1 dim: 28 dim: 28 } + } } layer { name: "conv1" diff --git a/models/bvlc_alexnet/deploy.prototxt b/models/bvlc_alexnet/deploy.prototxt index ff10daa93..45b2b0e36 100644 --- a/models/bvlc_alexnet/deploy.prototxt +++ b/models/bvlc_alexnet/deploy.prototxt @@ -1,10 +1,9 @@ name: "AlexNet" -input: "data" -input_shape { - dim: 10 - dim: 3 - dim: 227 - dim: 227 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } } } layer { name: "conv1" diff --git a/models/bvlc_googlenet/deploy.prototxt b/models/bvlc_googlenet/deploy.prototxt index 1f90ee216..50b54a9f3 100644 --- a/models/bvlc_googlenet/deploy.prototxt +++ b/models/bvlc_googlenet/deploy.prototxt @@ -1,10 +1,9 @@ name: "GoogleNet" -input: "data" -input_shape { - dim: 10 - dim: 3 - dim: 224 - dim: 224 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 10 dim: 3 dim: 224 dim: 224 } } } layer { name: "conv1/7x7_s2" diff --git a/models/bvlc_reference_caffenet/deploy.prototxt b/models/bvlc_reference_caffenet/deploy.prototxt index 127f1e265..907116ef9 100644 --- a/models/bvlc_reference_caffenet/deploy.prototxt +++ b/models/bvlc_reference_caffenet/deploy.prototxt @@ -1,10 +1,9 @@ name: "CaffeNet" -input: "data" -input_shape { - dim: 10 - dim: 3 - dim: 227 - dim: 227 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } } } layer { name: "conv1" diff --git a/models/bvlc_reference_rcnn_ilsvrc13/deploy.prototxt b/models/bvlc_reference_rcnn_ilsvrc13/deploy.prototxt index ae1df9677..e330a7706 100644 --- a/models/bvlc_reference_rcnn_ilsvrc13/deploy.prototxt +++ b/models/bvlc_reference_rcnn_ilsvrc13/deploy.prototxt @@ -1,10 +1,9 @@ name: "R-CNN-ilsvrc13" -input: "data" -input_shape { - dim: 10 - dim: 3 - dim: 227 - dim: 227 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } } } layer { name: "conv1" diff --git a/models/finetune_flickr_style/deploy.prototxt b/models/finetune_flickr_style/deploy.prototxt index 0f07e47ac..b8f99c744 100644 --- a/models/finetune_flickr_style/deploy.prototxt +++ b/models/finetune_flickr_style/deploy.prototxt @@ -1,10 +1,9 @@ name: "FlickrStyleCaffeNet" -input: "data" -input_shape { - dim: 10 - dim: 3 - dim: 227 - dim: 227 +layer { + name: "data" + type: "Input" + top: "data" + input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } } } layer { name: "conv1" From f88073aad81d8119dc9d62f882b8cb6d20c3b7ee Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 26 Feb 2016 22:20:50 -0800 Subject: [PATCH 179/458] Deprecate ForwardPrefilled(), Forward(bottom, loss) in lieu of dropping Relax removal of `Forward()` variations by deprecating instead. --- include/caffe/net.hpp | 9 +++++++++ src/caffe/net.cpp | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 1c2a19126..0addb3c2a 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -36,6 +36,12 @@ class Net { * */ const vector*>& Forward(Dtype* loss = NULL); + /// @brief DEPRECATED; use Forward() instead. + const vector*>& ForwardPrefilled(Dtype* loss = NULL) { + LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() " + << "will be removed in a future version. Use Forward()."; + return Forward(loss); + } /** * The From and To variants of Forward and Backward operate on the @@ -48,6 +54,9 @@ class Net { Dtype ForwardFromTo(int start, int end); Dtype ForwardFrom(int start); Dtype ForwardTo(int end); + /// @brief DEPRECATED; set input blobs then use Forward() instead. + const vector*>& Forward(const vector* > & bottom, + Dtype* loss = NULL); /** * @brief Zeroes out the diffs of all net parameters. diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index c1760ea19..23d94c97c 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -566,6 +566,18 @@ const vector*>& Net::Forward(Dtype* loss) { return net_output_blobs_; } +template +const vector*>& Net::Forward( + const vector*> & bottom, Dtype* loss) { + LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: Forward(bottom, loss) " + << "will be removed in a future version. Use Forward(loss)."; + // Copy bottom to net bottoms + for (int i = 0; i < bottom.size(); ++i) { + net_input_blobs_[i]->CopyFrom(*bottom[i]); + } + return Forward(loss); +} + template void Net::BackwardFromTo(int start, int end) { CHECK_GE(end, 0); From 6cba462401c7a8596afa957eb57c618fdfc63292 Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Tue, 5 Jan 2016 16:27:28 +0100 Subject: [PATCH 180/458] Add Dockerfiles for creating Caffe executable images. These can be used as direct replacements for the Caffe executable. --- docker/Makefile | 50 +++++++++++ docker/README.md | 52 ++++++++++++ docker/standalone/cpu/Dockerfile | 43 ++++++++++ docker/standalone/gpu/Dockerfile | 43 ++++++++++ docker/templates/Dockerfile.template | 42 ++++++++++ examples/mnist/train_lenet_docker.sh | 119 +++++++++++++++++++++++++++ 6 files changed, 349 insertions(+) create mode 100644 docker/Makefile create mode 100644 docker/README.md create mode 100644 docker/standalone/cpu/Dockerfile create mode 100644 docker/standalone/gpu/Dockerfile create mode 100644 docker/templates/Dockerfile.template create mode 100755 examples/mnist/train_lenet_docker.sh diff --git a/docker/Makefile b/docker/Makefile new file mode 100644 index 000000000..725208c6b --- /dev/null +++ b/docker/Makefile @@ -0,0 +1,50 @@ +# A makefile to build the docker images for caffe. +# Two caffe images will be built: +# caffe:cpu --> A CPU-only build of caffe. +# caffe:gpu --> A GPU-enabled build using the latest CUDA and CUDNN versions. + +DOCKER ?= docker + +all: docker_files standalone + +.PHONY: standalone devel + +standalone: cpu_standalone gpu_standalone + + +cpu_standalone: standalone/cpu/Dockerfile + $(DOCKER) build -t caffe:cpu standalone/cpu + +gpu_standalone: standalone/gpu/Dockerfile + $(DOCKER) build -t caffe:gpu standalone/gpu + +docker_files: standalone_files + +standalone_files: standalone/cpu/Dockerfile standalone/gpu/Dockerfile + +FROM_GPU = "nvidia/cuda:cudnn" +FROM_CPU = "ubuntu:14.04" +GPU_CMAKE_ARGS = -DUSE_CUDNN=1 +CPU_CMAKE_ARGS = -DCPU_ONLY=1 + +# A make macro to select the CPU or GPU base image. +define from_image +$(if $(strip $(findstring gpu,$@)),$(FROM_GPU),$(FROM_CPU)) +endef + +# A make macro to select the CPU or GPU build args. +define build_args +$(if $(strip $(findstring gpu,$@)),$(GPU_CMAKE_ARGS),$(CPU_CMAKE_ARGS)) +endef + +# A make macro to construct the CPU or GPU Dockerfile from the template +define create_docker_file + @echo creating $@ + @echo "FROM "$(from_image) > $@ + @cat $^ | sed 's/$${CMAKE_ARGS}/$(build_args)/' >> $@ +endef + + +standalone/%/Dockerfile: templates/Dockerfile.template + $(create_docker_file) + diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..0eb8c8639 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,52 @@ +# Caffe standalone Dockerfiles. + +The `standalone` subfolder contains docker files for generating both CPU and GPU executable images for Caffe. The images can be built using make, or by running: + +``` +docker build -t caffe:cpu standalone/cpu +``` +for example. (Here `gpu` can be substituted for `cpu`, but to keep the readme simple, only the `cpu` case will be discussed in detail). + +Note that the GPU standalone requires a CUDA 7.5 capable driver to be installed on the system and [nvidia-docker] for running the Docker containers. Here it is generally sufficient to use `nvidia-docker` instead of `docker` in any of the commands mentioned. + +# Running Caffe using the docker image + +In order to test the Caffe image, run: +``` +docker run -ti caffe:cpu caffe --version +``` +which should show a message like: +``` +libdc1394 error: Failed to initialize libdc1394 +caffe version 1.0.0-rc3 +``` + +One can also build and run the Caffe tests in the image using: +``` +docker run -ti caffe:cpu bash -c "cd /opt/caffe/build; make runtest" +``` + +In order to get the most out of the caffe image, some more advanced `docker run` options could be used. For example, running: +``` +docker run -ti --volume $(pwd):/workspace caffe:cpu caffe train --solver=example_solver.prototxt +``` +will train a network defined in the `example_solver.prototxt` file in the current directory (`$(pwd)` is maped to the container volume `/workspace` using the `--volume` Docker flag). + +Note that docker runs all commands as root by default, and thus any output files (e.g. snapshots) generated will be owned by the root user. In order to ensure that the current user is used instead, the following command can be used: +``` +docker run -ti --volume $(pwd):/workspace -u $(id -u):$(id -g) caffe:cpu caffe train --solver=example_solver.prototxt +``` +where the `-u` Docker command line option runs the commands in the container as the specified user, and the shell command `id` is used to determine the user and group ID of the current user. Note that the Caffe docker images have `/workspace` defined as the default working directory. This can be overridden using the `--workdir` Docker command line option. + +# Other use-cases + +Although running the `caffe` command in the docker containers as described above serves many purposes, the container can also be used for more interactive use cases. For example, specifying `bash` as the command instead of `caffe` yields a shell that can be used for interactive tasks. (Since the caffe build requirements are included in the container, this can also be used to build and run local versions of caffe). + +Another use case is to run python scripts that depend on `caffe`'s Python modules. Using the `python` command instead of `bash` or `caffe` will allow this, and an interactive interpreter can be started by running: +``` +docker run -ti caffe:cpu python +``` +(`ipython` is also available in the container). + +Since the `caffe/python` folder is also added to the path, the utility executable scripts defined there can also be used as executables. This includes `draw_net.py`, `classify.py`, and `detect.py` + diff --git a/docker/standalone/cpu/Dockerfile b/docker/standalone/cpu/Dockerfile new file mode 100644 index 000000000..4fef25aa6 --- /dev/null +++ b/docker/standalone/cpu/Dockerfile @@ -0,0 +1,43 @@ +FROM ubuntu:14.04 +MAINTAINER caffe-maint@googlegroups.com + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + git \ + wget \ + libatlas-base-dev \ + libboost-all-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libprotobuf-dev \ + libsnappy-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-pip \ + python-scipy && \ + rm -rf /var/lib/apt/lists/* + +ENV CAFFE_ROOT=/opt/caffe +WORKDIR $CAFFE_ROOT + +# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this. +ENV CLONE_TAG=master + +RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ + for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ + mkdir build && cd build && \ + cmake -DCPU_ONLY=1 .. && \ + make -j"$(nproc)" + +ENV PYCAFFE_ROOT $CAFFE_ROOT/python +ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH +ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH +RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig + +WORKDIR /workspace diff --git a/docker/standalone/gpu/Dockerfile b/docker/standalone/gpu/Dockerfile new file mode 100644 index 000000000..1ddc6560d --- /dev/null +++ b/docker/standalone/gpu/Dockerfile @@ -0,0 +1,43 @@ +FROM nvidia/cuda:cudnn +MAINTAINER caffe-maint@googlegroups.com + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + git \ + wget \ + libatlas-base-dev \ + libboost-all-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libprotobuf-dev \ + libsnappy-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-pip \ + python-scipy && \ + rm -rf /var/lib/apt/lists/* + +ENV CAFFE_ROOT=/opt/caffe +WORKDIR $CAFFE_ROOT + +# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this. +ENV CLONE_TAG=master + +RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ + for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ + mkdir build && cd build && \ + cmake -DUSE_CUDNN=1 .. && \ + make -j"$(nproc)" + +ENV PYCAFFE_ROOT $CAFFE_ROOT/python +ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH +ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH +RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig + +WORKDIR /workspace diff --git a/docker/templates/Dockerfile.template b/docker/templates/Dockerfile.template new file mode 100644 index 000000000..8834f0579 --- /dev/null +++ b/docker/templates/Dockerfile.template @@ -0,0 +1,42 @@ +MAINTAINER caffe-maint@googlegroups.com + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + git \ + wget \ + libatlas-base-dev \ + libboost-all-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libprotobuf-dev \ + libsnappy-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-pip \ + python-scipy && \ + rm -rf /var/lib/apt/lists/* + +ENV CAFFE_ROOT=/opt/caffe +WORKDIR $CAFFE_ROOT + +# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this. +ENV CLONE_TAG=master + +RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ + for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ + mkdir build && cd build && \ + cmake ${CMAKE_ARGS} .. && \ + make -j"$(nproc)" + +ENV PYCAFFE_ROOT $CAFFE_ROOT/python +ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH +ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH +RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig + +WORKDIR /workspace diff --git a/examples/mnist/train_lenet_docker.sh b/examples/mnist/train_lenet_docker.sh new file mode 100755 index 000000000..049f01384 --- /dev/null +++ b/examples/mnist/train_lenet_docker.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env sh +set -e +# The following example allows for the MNIST example (using LeNet) to be +# trained using the caffe docker image instead of building from source. +# +# The GPU-enabled version of Caffe can be used, assuming that nvidia-docker +# is installed, and the GPU-enabled Caffe image has been built. +# Setting the GPU environment variable to 1 will enable the use of nvidia-docker. +# e.g. +# GPU=1 ./examples/mnist/train_lenet_docker.sh [ADDITIONAL_CAFFE_ARGS] +# +# With any arguments following the script being passed directly to caffe +# when training the network. +# +# The steps that are performed by the script are as follows: +# 1. The MNIST data set is downloaded +# (see data/mnist/get_mnist.sh) +# 2. An LMDB database is created from the downloaded data +# (see examples/mnist/create_mnist.sh. +# 3. A caffe network based on the LeNet solver is trained. +# (see examples/mnist/lenet_solver.prototxt) +# +# For each of these, a step is executed to ensure that certain prerequisites +# are available, after which a command that actually performs the work is +# executed. +# +# In order to provide additional flexibility, the following shell (environment) +# variables can be used to controll the execution of each of the phases: +# +# DOWNLOAD_DATA: Enable (1) or disable (0) the downloading of the MNIST dataset +# CREATE_LMDB: Enable (1) or disable (0) the creation of the LMDB database +# TRAIN: Enable (1) or disable (0) the training of the LeNet networkd. +# +# As an example, assuming that the data set has been downloaded, and an LMDB +# database created, the following command can be used to train the LeNet +# network with GPU computing enabled. +# +# DOWNLOAD_DATA=0 CREATE_LMDB=0 GPU=1 ./examples/mnist/train_lenet_docker.sh +# + + +if [ x"$(uname -s)" != x"Linux" ] +then +echo "" +echo "This script is designed to run on Linux." +echo "There may be problems with the way Docker mounts host volumes on other" +echo "systems which will cause the docker commands to fail." +echo "" +read -p "Press [ENTER] to continue..." key +echo "" +fi + + +# Check if GPU mode has been enabled and set the docker executable accordingly +if [ ${GPU:-0} -eq 1 ] +then +DOCKER_CMD=nvidia-docker +IMAGE=caffe:gpu +else +DOCKER_CMD=docker +IMAGE=caffe:cpu +fi +echo "Using $DOCKER_CMD to launch $IMAGE" + +# On non-Linux systems, the Docker host is typically a virtual machine. +# This means that the user and group id's may be different. +# On OS X, for example, the user and group are 1000 and 50, respectively. +if [ x"$(uname -s)" != x"Linux" ] +then +CUID=1000 +CGID=50 +else +CUID=$(id -u) +CGID=$(id -g) +fi + +# Define some helper variables to make the running of the actual docker +# commands less verbose. +# Note: +# -u $CUID:$CGID runs the docker image as the current user to ensure +# that the file permissions are compatible with the +# host system. The variables CUID and CGID have been +# set above depending on the host operating system. +# --volume $(pwd):/workspace mounts the current directory as the docker volume +# /workspace +# --workdir /workspace Ensures that the docker container starts in the right +# working directory +DOCKER_OPTIONS="--rm -ti -u $CUID:$CGID --volume $(pwd):/workspace --workdir /workspace" +DOCKER_RUN="$DOCKER_CMD run $DOCKER_OPTIONS $IMAGE" + +# Download the data +if [ ${DOWNLOAD_DATA:-1} -eq 1 ] +then +$DOCKER_RUN bash -c "mkdir -p ./data/mnist; + cp -ru \$CAFFE_ROOT/data/mnist/get_mnist.sh ./data/mnist/" +$DOCKER_RUN ./data/mnist/get_mnist.sh +fi + +# Create the LMDB database +if [ ${CREATE_LMDB:-1} -eq 1 ] +then +$DOCKER_RUN bash -c "mkdir -p ./examples/mnist; + cp -ru \$CAFFE_ROOT/examples/mnist/create_mnist.sh ./examples/mnist/; + sed -i s#BUILD=build#BUILD=\$CAFFE_ROOT/build## ./examples/mnist/create_mnist.sh" +$DOCKER_RUN ./examples/mnist/create_mnist.sh +fi + +# Train the network +if [ ${TRAIN:-1} -eq 1 ] +then +$DOCKER_RUN bash -c "cp \$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt ./examples/mnist/; + cp \$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt ./examples/mnist/" + # Ensure that the solver_mode is compatible with the desired GPU mode. + if [ ${GPU:-0} -eq 0 ] + then + $DOCKER_RUN sed -i 's#solver_mode: GPU#solver_mode: CPU##' ./examples/mnist/lenet_solver.prototxt + fi +$DOCKER_RUN caffe train --solver=examples/mnist/lenet_solver.prototxt $* +fi From cfa2c0cf596a4e1157e651389601d05779f5d27d Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 27 Feb 2016 12:10:16 -0800 Subject: [PATCH 181/458] fix flags in #3518 for nvidia-docker nvidia-docker requires long args with equal sign as of docker 1.10: see https://github.com/BVLC/caffe/pull/3518#issuecomment-189576419 --- docker/README.md | 8 ++++---- examples/mnist/train_lenet_docker.sh | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/README.md b/docker/README.md index 0eb8c8639..fdab641bd 100644 --- a/docker/README.md +++ b/docker/README.md @@ -28,15 +28,15 @@ docker run -ti caffe:cpu bash -c "cd /opt/caffe/build; make runtest" In order to get the most out of the caffe image, some more advanced `docker run` options could be used. For example, running: ``` -docker run -ti --volume $(pwd):/workspace caffe:cpu caffe train --solver=example_solver.prototxt +docker run -ti --volume=$(pwd):/workspace caffe:cpu caffe train --solver=example_solver.prototxt ``` -will train a network defined in the `example_solver.prototxt` file in the current directory (`$(pwd)` is maped to the container volume `/workspace` using the `--volume` Docker flag). +will train a network defined in the `example_solver.prototxt` file in the current directory (`$(pwd)` is maped to the container volume `/workspace` using the `--volume=` Docker flag). Note that docker runs all commands as root by default, and thus any output files (e.g. snapshots) generated will be owned by the root user. In order to ensure that the current user is used instead, the following command can be used: ``` -docker run -ti --volume $(pwd):/workspace -u $(id -u):$(id -g) caffe:cpu caffe train --solver=example_solver.prototxt +docker run -ti --volume=$(pwd):/workspace -u $(id -u):$(id -g) caffe:cpu caffe train --solver=example_solver.prototxt ``` -where the `-u` Docker command line option runs the commands in the container as the specified user, and the shell command `id` is used to determine the user and group ID of the current user. Note that the Caffe docker images have `/workspace` defined as the default working directory. This can be overridden using the `--workdir` Docker command line option. +where the `-u` Docker command line option runs the commands in the container as the specified user, and the shell command `id` is used to determine the user and group ID of the current user. Note that the Caffe docker images have `/workspace` defined as the default working directory. This can be overridden using the `--workdir=` Docker command line option. # Other use-cases diff --git a/examples/mnist/train_lenet_docker.sh b/examples/mnist/train_lenet_docker.sh index 049f01384..32cf1c8e4 100755 --- a/examples/mnist/train_lenet_docker.sh +++ b/examples/mnist/train_lenet_docker.sh @@ -85,7 +85,7 @@ fi # /workspace # --workdir /workspace Ensures that the docker container starts in the right # working directory -DOCKER_OPTIONS="--rm -ti -u $CUID:$CGID --volume $(pwd):/workspace --workdir /workspace" +DOCKER_OPTIONS="--rm -ti -u $CUID:$CGID --volume=$(pwd):/workspace --workdir=/workspace" DOCKER_RUN="$DOCKER_CMD run $DOCKER_OPTIONS $IMAGE" # Download the data From bef2c05d612a1d25d1e0c506d15e0817f9f03bac Mon Sep 17 00:00:00 2001 From: shai Date: Thu, 25 Feb 2016 12:09:45 +0200 Subject: [PATCH 182/458] supporting N-D Blobs in Dropout layer Reshape fixing lint errors --- src/caffe/layers/dropout_layer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/layers/dropout_layer.cpp b/src/caffe/layers/dropout_layer.cpp index 9cb64d973..533ab26c0 100644 --- a/src/caffe/layers/dropout_layer.cpp +++ b/src/caffe/layers/dropout_layer.cpp @@ -23,8 +23,8 @@ void DropoutLayer::Reshape(const vector*>& bottom, const vector*>& top) { NeuronLayer::Reshape(bottom, top); // Set up the cache for random number generation - rand_vec_.Reshape(bottom[0]->num(), bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); + // ReshapeLike does not work because rand_vec_ is of Dtype uint + rand_vec_.Reshape(bottom[0]->shape()); } template From 666da79ad2f4d72c804ddadc7b10157e4d04bdd0 Mon Sep 17 00:00:00 2001 From: Thibault Deregnaucourt Date: Mon, 29 Feb 2016 10:21:07 +0100 Subject: [PATCH 183/458] Use 'six' library to ensure python3 compliance. Use '//' instead of '/' for entire division. --- python/caffe/pycaffe.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 5020ecedb..c5c0b824a 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -14,6 +14,8 @@ RMSPropSolver, AdaDeltaSolver, AdamSolver import caffe.io +import six + # We directly update methods from Net here (rather than using composition or # inheritance) so that nets created by caffe (e.g., by SGDSolver) will # automatically have the improved interface. @@ -97,7 +99,7 @@ def _Net_forward(self, blobs=None, start=None, end=None, **kwargs): raise Exception('Input blob arguments do not match net inputs.') # Set input according to defined shapes and make arrays single and # C-contiguous as Caffe expects. - for in_, blob in kwargs.iteritems(): + for in_, blob in six.iteritems(kwargs): if blob.shape[0] != self.blobs[in_].shape[0]: raise Exception('Input is not batch sized') self.blobs[in_].data[...] = blob @@ -145,7 +147,7 @@ def _Net_backward(self, diffs=None, start=None, end=None, **kwargs): raise Exception('Top diff arguments do not match net outputs.') # Set top diffs according to defined shapes and make arrays single and # C-contiguous as Caffe expects. - for top, diff in kwargs.iteritems(): + for top, diff in six.iteritems(kwargs): if diff.shape[0] != self.blobs[top].shape[0]: raise Exception('Diff is not batch sized') self.blobs[top].diff[...] = diff @@ -174,13 +176,13 @@ def _Net_forward_all(self, blobs=None, **kwargs): all_outs = {out: [] for out in set(self.outputs + (blobs or []))} for batch in self._batch(kwargs): outs = self.forward(blobs=blobs, **batch) - for out, out_blob in outs.iteritems(): + for out, out_blob in six.iteritems(outs): all_outs[out].extend(out_blob.copy()) # Package in ndarray. for out in all_outs: all_outs[out] = np.asarray(all_outs[out]) # Discard padding. - pad = len(all_outs.itervalues().next()) - len(kwargs.itervalues().next()) + pad = len(six.next(six.itervalues(all_outs))) - len(six.next(six.itervalues(kwargs))) if pad: for out in all_outs: all_outs[out] = all_outs[out][:-pad] @@ -215,16 +217,16 @@ def _Net_forward_backward_all(self, blobs=None, diffs=None, **kwargs): for fb, bb in izip_longest(forward_batches, backward_batches, fillvalue={}): batch_blobs = self.forward(blobs=blobs, **fb) batch_diffs = self.backward(diffs=diffs, **bb) - for out, out_blobs in batch_blobs.iteritems(): + for out, out_blobs in six.iteritems(batch_blobs): all_outs[out].extend(out_blobs.copy()) - for diff, out_diffs in batch_diffs.iteritems(): + for diff, out_diffs in six.iteritems(batch_diffs): all_diffs[diff].extend(out_diffs.copy()) # Package in ndarray. for out, diff in zip(all_outs, all_diffs): all_outs[out] = np.asarray(all_outs[out]) all_diffs[diff] = np.asarray(all_diffs[diff]) # Discard padding at the end and package in ndarray. - pad = len(all_outs.itervalues().next()) - len(kwargs.itervalues().next()) + pad = len(six.next(six.itervalues(all_outs))) - len(six.next(six.itervalues(kwargs))) if pad: for out, diff in zip(all_outs, all_diffs): all_outs[out] = all_outs[out][:-pad] @@ -256,10 +258,10 @@ def _Net_batch(self, blobs): ------ batch: {blob name: list of blobs} dict for a single batch. """ - num = len(blobs.itervalues().next()) - batch_size = self.blobs.itervalues().next().shape[0] + num = len(six.next(six.itervalues(blobs))) + batch_size = six.next(six.itervalues(self.blobs)).shape[0] remainder = num % batch_size - num_batches = num / batch_size + num_batches = num // batch_size # Yield full batches. for b in range(num_batches): From cb277769a4c36aa70af2bb860cf40c71af2d3033 Mon Sep 17 00:00:00 2001 From: Anatoly Baksheev Date: Mon, 29 Feb 2016 18:01:07 +0300 Subject: [PATCH 184/458] NetSpec: allow setting blob names by string --- python/caffe/net_spec.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/python/caffe/net_spec.py b/python/caffe/net_spec.py index 93fc01927..63de4cce4 100644 --- a/python/caffe/net_spec.py +++ b/python/caffe/net_spec.py @@ -175,6 +175,12 @@ def __setattr__(self, name, value): def __getattr__(self, name): return self.tops[name] + def __setitem__(self, key, value): + self.__setattr__(key, value) + + def __getitem__(self, item): + return self.__getattr__(item) + def to_proto(self): names = {v: k for k, v in six.iteritems(self.tops)} autonames = Counter() From c1c559c2cb98d6de955f1d469c6104cb265f5dc5 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Mon, 29 Feb 2016 12:28:15 -0800 Subject: [PATCH 185/458] Don't force datum.label=0 in array_to_datum --- python/caffe/io.py | 5 +++-- python/caffe/test/test_io.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index 75310589c..cee5ace2e 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -63,7 +63,7 @@ def blobprotovector_str_to_arraylist(str): return [blobproto_to_array(blob) for blob in vec.blobs] -def array_to_datum(arr, label=0): +def array_to_datum(arr, label=None): """Converts a 3-dimensional array to datum. If the array has dtype uint8, the output data will be encoded as a string. Otherwise, the output data will be stored in float format. @@ -76,7 +76,8 @@ def array_to_datum(arr, label=0): datum.data = arr.tostring() else: datum.float_data.extend(arr.flat) - datum.label = label + if label is not None: + datum.label = label return datum diff --git a/python/caffe/test/test_io.py b/python/caffe/test/test_io.py index 8c86ef75f..4a16b5b91 100644 --- a/python/caffe/test/test_io.py +++ b/python/caffe/test/test_io.py @@ -39,3 +39,18 @@ def test_scalar(self): arr = caffe.io.blobproto_to_array(blob) self.assertEqual(arr, 123) + + +class TestArrayToDatum(unittest.TestCase): + + def test_label_none_size(self): + # Set label + d1 = caffe.io.array_to_datum( + np.ones((10,10,3)), label=1) + # Don't set label + d2 = caffe.io.array_to_datum( + np.ones((10,10,3))) + # Not setting the label should result in a smaller object + self.assertGreater( + len(d1.SerializeToString()), + len(d2.SerializeToString())) From 15a979df454339682d18a2760a9b06896f23d62b Mon Sep 17 00:00:00 2001 From: Oscar Beijbom Date: Sun, 20 Dec 2015 23:02:42 -0800 Subject: [PATCH 186/458] Added tutorial on how to use python datalayers and multilabel classification. --- .../04-pascal_multilabel_with_datalayer.ipynb | 4152 +++++++++++++++++ .../layers/pascal_multilabel_datalayers.py | 262 ++ examples/pycaffe/tools.py | 111 + 3 files changed, 4525 insertions(+) create mode 100644 examples/04-pascal_multilabel_with_datalayer.ipynb create mode 100644 examples/pycaffe/layers/pascal_multilabel_datalayers.py create mode 100644 examples/pycaffe/tools.py diff --git a/examples/04-pascal_multilabel_with_datalayer.ipynb b/examples/04-pascal_multilabel_with_datalayer.ipynb new file mode 100644 index 000000000..6839841a5 --- /dev/null +++ b/examples/04-pascal_multilabel_with_datalayer.ipynb @@ -0,0 +1,4152 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Multilabel classification on PASCAL using python data-layers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial we will do multilabel classification on PASCAL VOC 2012. \n", + "\n", + "Caffe supports multi-label classification through the SigmoidCrossEntropyLoss, and we will load data using a python data-layer. Data could also be provided through a HDF5 data-layer, but the python data-layer provide endless flexibility, so that's what we will use." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Preliminaries\n", + "\n", + "First, make sure you compile caffe using \n", + "WITH_PYTHON_LAYER ;= 1\n", + "\n", + "Second, download PASCAL VOC 2012. It's available here: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html\n", + "\n", + "Third, set paths and import modules:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# set root directory, e.g:\n", + "pascal_root = '/data/pascal/VOC2012'\n", + "\n", + "# import some modules\n", + "import sys, os, caffe\n", + "import numpy as np\n", + "import os.path as osp\n", + "import matplotlib.pyplot as plt\n", + "\n", + "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", + "sys.path.append(\"pycaffe/layers\") # the datalayers we will use are in this directory.\n", + "sys.path.append(\"pycaffe\") # the tools file is in this folder\n", + "\n", + "import tools #this contains some tools that we need\n", + "\n", + "# make sure we have the caffenet weight downloaded.\n", + "if not os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", + " print(\"Downloading pre-trained CaffeNet model...\")\n", + " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet\n", + "\n", + "# initialize caffe for gpu mode\n", + "caffe.set_mode_gpu()\n", + "caffe.set_device(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start by defining the nets using caffe.NetSpec. Note how we used the SigmoidCrossEntropyLoss layer. This is the right loss for multilabel classification. Also note how the data layer is defined." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from caffe import layers as L, params as P, to_proto\n", + "from caffe.proto import caffe_pb2\n", + "\n", + "# helper function for common structures\n", + "def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):\n", + " conv = L.Convolution(bottom, kernel_size=ks, stride=stride,\n", + " num_output=nout, pad=pad, group=group)\n", + " return conv, L.ReLU(conv, in_place=True)\n", + "\n", + "# another helper function\n", + "def fc_relu(bottom, nout):\n", + " fc = L.InnerProduct(bottom, num_output=nout)\n", + " return fc, L.ReLU(fc, in_place=True)\n", + "\n", + "# yet another helper function\n", + "def max_pool(bottom, ks, stride=1):\n", + " return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)\n", + "\n", + "# main netspec wrapper\n", + "def caffenet_multilabel(data_layer_params, datalayer):\n", + " # setup the python data layer \n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer, \n", + " ntop = 2, param_str=str(data_layer_params))\n", + "\n", + " # the net itself\n", + " n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4)\n", + " n.pool1 = max_pool(n.relu1, 3, stride=2)\n", + " n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2)\n", + " n.pool2 = max_pool(n.relu2, 3, stride=2)\n", + " n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1)\n", + " n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2)\n", + " n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2)\n", + " n.pool5 = max_pool(n.relu5, 3, stride=2)\n", + " n.fc6, n.relu6 = fc_relu(n.pool5, 4096)\n", + " n.drop6 = L.Dropout(n.relu6, in_place=True)\n", + " n.fc7, n.relu7 = fc_relu(n.drop6, 4096)\n", + " n.drop7 = L.Dropout(n.relu7, in_place=True)\n", + " n.score = L.InnerProduct(n.drop7, num_output=20)\n", + " n.loss = L.SigmoidCrossEntropyLoss(n.score, n.label)\n", + " \n", + " return str(n.to_proto())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can crete net and solver prototxts. For the solver, we use the CaffeSolver class from the \"tools\" module" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "workdir = './pascal_multilabel_with_datalayer'\n", + "os.makedirs(workdir)\n", + "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet.prototxt\"))\n", + "solverprototxt.sp['display'] = \"1\"\n", + "solverprototxt.sp['base_lr'] = \"0.0001\"\n", + "solverprototxt.write(osp.join(workdir, 'solver.prototxt'))\n", + "\n", + "# write train and val nets.\n", + "with open(osp.join(workdir, 'trainnet.prototxt'), 'w') as f:\n", + " # provide parameters to the data layer as a python dictionary. Easy as pie!\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'train', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))\n", + "\n", + "with open(osp.join(workdir, 'valnet.prototxt'), 'w') as f:\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'val', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This net uses a python datalayer: PascalMultilabelDataLayerSync, which is defined in ./pycaffe/layers/pascal_multilabel_datalayers.py. Take a look at the codel. It's quite straight-forward, and gives you full control over data and labels.\n", + "\n", + "\n", + "Now we can load the caffe solver as usual." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PascalMultilabelDataLayerSync initialized for split: train, with bs:128, im_shape:[227, 227], and 5717 images.\n", + "PascalMultilabelDataLayerSync initialized for split: val, with bs:128, im_shape:[227, 227], and 5823 images.\n" + ] + } + ], + "source": [ + "solver = caffe.SGDSolver(osp.join(workdir, 'solver.prototxt'))\n", + "solver.net.copy_from(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", + "solver.test_nets[0].share_with(solver.net)\n", + "solver.step(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check the data we have loaded." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ground truth: horse, person,\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "AAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from pascal_multilabel_with_datalayer_tools import SimpleTransformer\n", + "from copy import copy\n", + "transformer = SimpleTransformer() # this is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", + "\n", + "image_index = 0 #Lets look at the first image in the batch.\n", + "plt.imshow(transformer.deprocess(copy(solver.net.blobs['data'].data[image_index, ...])))\n", + "gtlist = solver.net.blobs['label'].data[image_index, ...].astype(np.int)\n", + "classes = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')\n", + "print 'Ground truth: ',\n", + "for idx, val in enumerate(gtlist):\n", + " if val:\n", + " print classes[idx] + ',',\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alright. So far so good. We now have a working python datalayer that we can customize to our needs, e.g. by adding more data-augmentation or modify for other data-sets or tasks. Next, we will look at how to make it more efficient. The PascalMultilabelDataLayerSync loads the data syncronously, meaning that the GPU sits idle while the CPU loads the data. Fortunately, some simple multi-threading solves this problem. Let's do that next. First, though, lets measure the step time of this syncronous layer. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 13.9 s, sys: 363 ms, total: 14.2 s\n", + "Wall time: 14.2 s\n" + ] + } + ], + "source": [ + "%%time\n", + "solver.step(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Now, let's setup solvers and nets with the PascalMultilabelDataLayerAsync layer. Take a look at the code in ./pycaffe/layers/pascal_multilabel_datalayers.py, it's not hard." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BatchAdvancer initialized with 5717 images\n", + "PascalMultilabelDataLayerAsync initialized for split: train, with bs:128, im_shape:[227, 227].\n", + "BatchAdvancer initialized with 5823 images\n", + "PascalMultilabelDataLayerAsync initialized for split: val, with bs:128, im_shape:[227, 227].\n" + ] + } + ], + "source": [ + "workdir = './pascal_multilabel_with_datalayer'\n", + "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet_async.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet_async.prototxt\"))\n", + "solverprototxt.sp['display'] = \"1\"\n", + "solverprototxt.sp['base_lr'] = \"0.0001\"\n", + "solverprototxt.write(osp.join(workdir, 'solver_async.prototxt'))\n", + "\n", + "# write train and val nets.\n", + "with open(osp.join(workdir, 'trainnet_async.prototxt'), 'w') as f:\n", + " # provide parameters to the data layer as a python dictionary. Easy as pie!\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'train', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerAsync'))\n", + "\n", + "with open(osp.join(workdir, 'valnet_async.prototxt'), 'w') as f:\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'val', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerAsync'))\n", + "\n", + "solver_async = caffe.SGDSolver(osp.join(workdir, 'solver_async.prototxt'))\n", + "solver_async.net.copy_from(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", + "solver_async.test_nets[0].share_with(solver_async.net)\n", + "solver_async.step(1)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Check runtime ..." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 15.7 s, sys: 476 ms, total: 16.1 s\n", + "Wall time: 16 s\n" + ] + } + ], + "source": [ + "%%time\n", + "solver_async.step(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alright, that is a modest runtime gain. However, as you data pre-processing becomes more complicated, this difference will increase." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's train the net for a while. First, though, we need some way to measure the accuracy. Hamming distance is commonly used in multilabel problems. We also need a simple test loop. Let's write that down. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def hamming_distance(gt, est):\n", + " return sum([1 for (g, e) in zip(gt, est) if g == e]) / float(len(gt))\n", + "\n", + "def check_accuracy(net, num_batches, batch_size = 128):\n", + " acc = 0.0\n", + " for t in range(num_batches):\n", + " net.forward()\n", + " gts = net.blobs['label'].data\n", + " ests = net.blobs['score'].data > 0\n", + " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", + " acc += hamming_distance(gt, est)\n", + " return acc / (num_batches * batch_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alright, let's train." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "itt:0 accuracy:0.9430\n", + "itt:100 accuracy:0.9511\n", + "itt:200 accuracy:0.9573\n", + "itt:300 accuracy:0.9600\n", + "itt:400 accuracy:0.9583\n" + ] + } + ], + "source": [ + "for itt in range(500):\n", + " solver_async.step(1)\n", + " if itt % 100 == 0:\n", + " print 'itt:{}'.format(itt), 'accuracy:{0:.4f}'.format(check_accuracy(solver_async.test_nets[0], 10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Great, accuracy is increasing, and it seems to converge rather quickly. It may seem strange that it starts off so high but it is because the ground truth is sparse. There are 20 classes in PASCAL, and usually only one or two is present. So predicting all zeros yields rather high accuracy. Let's check to make sure." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Baseline accuracy:0.9243\n" + ] + } + ], + "source": [ + "def check_baseline_accuracy(net, num_batches, batch_size = 128):\n", + " acc = 0.0\n", + " for t in range(num_batches):\n", + " net.forward()\n", + " gts = net.blobs['label'].data\n", + " ests = np.zeros((batch_size, 20))\n", + " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", + " acc += hamming_distance(gt, est)\n", + " return acc / (num_batches * batch_size)\n", + "\n", + "print 'Baseline accuracy:{0:.4f}'.format(check_baseline_accuracy(solver_async.test_nets[0], 5823/128))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Let's wrap this up by looking at some qualitative results" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ground truth: bird, \n", + "Estimated: bird,\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "ogUA/wOLS9SCjyKcPwAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from pascal_multilabel_with_datalayer_tutorial_tools import SimpleTransformer\n", + "from copy import copy\n", + "transformer = SimpleTransformer() # this is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", + "\n", + "image_index = 0 #Lets look at the first image in the batch.\n", + "test_net = solver_async.test_nets[0]\n", + "test_net.forward()\n", + "plt.imshow(transformer.deprocess(copy(test_net.blobs['data'].data[image_index, ...])))\n", + "gtlist = test_net.blobs['label'].data[image_index, ...].astype(np.int)\n", + "estlist = test_net.blobs['score'].data[image_index, ...] > 0\n", + "classes = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')\n", + "print 'Ground truth: ',\n", + "for idx, val in enumerate(gtlist):\n", + " if val:\n", + " print classes[idx] + ',',\n", + "\n", + "print '' \n", + "print 'Estimated: ',\n", + "for idx, val in enumerate(estlist):\n", + " if val == 1:\n", + " print classes[idx] + ','," + ] + } + ], + "metadata": { + "description": "Multilabel classification on PASCAL using python data-layers.", + "example_name": "PASCAL Multilabel with python datalayer", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/pycaffe/layers/pascal_multilabel_datalayers.py b/examples/pycaffe/layers/pascal_multilabel_datalayers.py new file mode 100644 index 000000000..036d16787 --- /dev/null +++ b/examples/pycaffe/layers/pascal_multilabel_datalayers.py @@ -0,0 +1,262 @@ +# imports +import json, time, pickle, scipy.misc, skimage.io, caffe + +import numpy as np +import os.path as osp + +from xml.dom import minidom +from random import shuffle +from threading import Thread +from PIL import Image + +from pascal_multilabel_with_datalayer_tools import SimpleTransformer + + +class PascalMultilabelDataLayerSync(caffe.Layer): + """ + This is a simple syncronous datalayer for training a multilabel model on PASCAL. + """ + + def setup(self, bottom, top): + + self.top_names = ['data', 'label'] + + # === Read input parameters === + + # params is a python dictionary with layer parameters. + params = eval(self.param_str) + + # do some simple checks that we have the parameters we need. + assert 'batch_size' in params.keys(), 'Params must include batch size.' + assert 'split' in params.keys(), 'Params must include split (train, val, or test).' + assert 'pascal_root' in params.keys(), 'Params must include pascal_root.' + assert 'im_shape' in params.keys(), 'Params must include im_shape.' + + # store input as class variables + self.batch_size = params['batch_size'] + self.im_shape = params['im_shape'] + self.pascal_root = params['pascal_root'] + self.im_shape = params['im_shape'] + self.indexlist = [line.rstrip('\n') for line in open(osp.join(self.pascal_root, 'ImageSets/Main', params['split'] + '.txt'))] #get list of image indexes. + self._cur = 0 # current image + self.transformer = SimpleTransformer() #this class does some simple data-manipulations + + # === reshape tops === + top[0].reshape(self.batch_size, 3, self.im_shape[0], self.im_shape[1]) # since we use a fixed input image size, we can shape the data layer once. Else, we'd have to do it in the reshape call. + top[1].reshape(self.batch_size, 20) + + print "PascalMultilabelDataLayerSync initialized for split: {}, with bs:{}, im_shape:{}, and {} images.".format(params['split'], params['batch_size'], params['im_shape'], len(self.indexlist)) + + + def reshape(self, bottom, top): + """ no need to reshape each time sine the input is fixed size (rows and columns) """ + pass + + def forward(self, bottom, top): + """ + Load data. + """ + for itt in range(self.batch_size): + + # Did we finish an epoch? + if self._cur == len(self.indexlist): + self._cur = 0 + shuffle(self.indexlist) + + # Load an image + index = self.indexlist[self._cur] # Get the image index + im = np.asarray(Image.open(osp.join(self.pascal_root, 'JPEGImages', index + '.jpg'))) # load image + im = scipy.misc.imresize(im, self.im_shape) # resize + + # do a simple horizontal flip as data augmentation + flip = np.random.choice(2)*2-1 + im = im[:, ::flip, :] + + # Load and prepare ground truth + multilabel = np.zeros(20).astype(np.float32) + anns = load_pascal_annotation(index, self.pascal_root) + for label in anns['gt_classes']: + # in the multilabel problem we don't care how MANY instances there are of each class. Only if they are present. + multilabel[label - 1] = 1 # The "-1" is b/c we are not interested in the background class. + + # Add directly to the caffe data layer + top[0].data[itt, ...] = self.transformer.preprocess(im) + top[1].data[itt, ...] = multilabel + self._cur += 1 + + def backward(self, top, propagate_down, bottom): + """ this layer does not back propagate """ + pass + + + + +class PascalMultilabelDataLayerAsync(caffe.Layer): + """ + This is a simple asyncronous datalayer for training a multilabel model on PASCAL. + """ + + def setup(self, bottom, top): + + self.top_names = ['data', 'label'] + + # === Read input parameters === + + # params is a python dictionary with layer parameters. + params = eval(self.param_str) + + # do some simple checks that we have the parameters we need. + assert 'batch_size' in params.keys(), 'Params must include batch size.' + assert 'split' in params.keys(), 'Params must include split (train, val, or test).' + assert 'pascal_root' in params.keys(), 'Params must include pascal_root.' + assert 'im_shape' in params.keys(), 'Params must include im_shape.' + + self.batch_size = params['batch_size'] # we need to store this as a local variable. + + # === We are going to do the actual data processing in a seperate, helperclass, called BatchAdvancer. So let's forward the parame to that class === + self.thread_result = {} + self.thread = None + self.batch_advancer = BatchAdvancer(self.thread_result, params) + self.dispatch_worker() # Let it start fetching data right away. + + # === reshape tops === + top[0].reshape(self.batch_size, 3, params['im_shape'][0], params['im_shape'][1]) # since we use a fixed input image size, we can shape the data layer once. Else, we'd have to do it in the reshape call. + top[1].reshape(self.batch_size, 20) # Note the 20 channels (because PASCAL has 20 classes.) + + print "PascalMultilabelDataLayerAsync initialized for split: {}, with bs:{}, im_shape:{}.".format(params['split'], params['batch_size'], params['im_shape']) + + + + def reshape(self, bottom, top): + """ no need to reshape each time sine the input is fixed size (rows and columns) """ + pass + + def forward(self, bottom, top): + """ this is the forward pass, where we load the data into the blobs. Since we run the BatchAdvance asynchronously, we just wait for it, and then copy """ + + if self.thread is not None: + self.join_worker() # wait until it is done. + + for top_index, name in zip(range(len(top)), self.top_names): + for i in range(self.batch_size): + top[top_index].data[i, ...] = self.thread_result[name][i] #Copy the already-prepared data to caffe. + + self.dispatch_worker() # let's go again while the GPU process this batch. + + def dispatch_worker(self): + assert self.thread is None + self.thread = Thread(target=self.batch_advancer) + self.thread.start() + + def join_worker(self): + assert self.thread is not None + self.thread.join() + self.thread = None + + def backward(self, top, propagate_down, bottom): + """ this layer does not back propagate """ + pass + + +class BatchAdvancer(): + """ + This is the class that is run asynchronously and actually does the work. + """ + def __init__(self, result, params): + self.result = result + self.batch_size = params['batch_size'] + self.im_shape = params['im_shape'] + self.pascal_root = params['pascal_root'] + self.im_shape = params['im_shape'] + self.indexlist = [line.rstrip('\n') for line in open(osp.join(self.pascal_root, 'ImageSets/Main', params['split'] + '.txt'))] #get list of image indexes. + self._cur = 0 # current image + self.transformer = SimpleTransformer() #this class does some simple data-manipulations + + print "BatchAdvancer initialized with {} images".format(len(self.indexlist)) + + def __call__(self): + """ + This does the same stuff as the forward layer of the synchronous layer. Exept that we store the data and labels in the result dictionary (as lists of length batchsize). + """ + self.result['data'] = [] + self.result['label'] = [] + for itt in range(self.batch_size): + + # Did we finish an epoch? + if self._cur == len(self.indexlist): + self._cur = 0 + shuffle(self.indexlist) + + # Load an image + index = self.indexlist[self._cur] # Get the image index + im = np.asarray(Image.open(osp.join(self.pascal_root, 'JPEGImages', index + '.jpg'))) # load image + im = scipy.misc.imresize(im, self.im_shape) # resize + + # do a simple horizontal flip as data augmentation + flip = np.random.choice(2)*2-1 + im = im[:, ::flip, :] + + # Load and prepare ground truth + multilabel = np.zeros(20).astype(np.float32) + anns = load_pascal_annotation(index, self.pascal_root) + for label in anns['gt_classes']: + # in the multilabel problem we don't care how MANY instances there are of each class. Only if they are present. + multilabel[label - 1] = 1 # The "-1" is b/c we are not interested in the background class. + + # Store in a result list. + self.result['data'].append(self.transformer.preprocess(im)) + self.result['label'].append(multilabel) + self._cur += 1 + + +def load_pascal_annotation(index, pascal_root): + """ + This code is borrowed from Ross Girshick's FAST-RCNN code (https://github.com/rbgirshick/fast-rcnn). It parses the PASCAL .xml metadata files. See publication for further details: (http://arxiv.org/abs/1504.08083). + + Thanks Ross! + + """ + classes = ('__background__', # always index 0 + 'aeroplane', 'bicycle', 'bird', 'boat', + 'bottle', 'bus', 'car', 'cat', 'chair', + 'cow', 'diningtable', 'dog', 'horse', + 'motorbike', 'person', 'pottedplant', + 'sheep', 'sofa', 'train', 'tvmonitor') + class_to_ind = dict(zip(classes, xrange(21))) + + filename = osp.join(pascal_root, 'Annotations', index + '.xml') + # print 'Loading: {}'.format(filename) + def get_data_from_tag(node, tag): + return node.getElementsByTagName(tag)[0].childNodes[0].data + + with open(filename) as f: + data = minidom.parseString(f.read()) + + objs = data.getElementsByTagName('object') + num_objs = len(objs) + + boxes = np.zeros((num_objs, 4), dtype=np.uint16) + gt_classes = np.zeros((num_objs), dtype=np.int32) + overlaps = np.zeros((num_objs, 21), dtype=np.float32) + + # Load object bounding boxes into a data frame. + for ix, obj in enumerate(objs): + # Make pixel indexes 0-based + x1 = float(get_data_from_tag(obj, 'xmin')) - 1 + y1 = float(get_data_from_tag(obj, 'ymin')) - 1 + x2 = float(get_data_from_tag(obj, 'xmax')) - 1 + y2 = float(get_data_from_tag(obj, 'ymax')) - 1 + cls = class_to_ind[ + str(get_data_from_tag(obj, "name")).lower().strip()] + boxes[ix, :] = [x1, y1, x2, y2] + gt_classes[ix] = cls + overlaps[ix, cls] = 1.0 + + overlaps = scipy.sparse.csr_matrix(overlaps) + + return {'boxes' : boxes, + 'gt_classes': gt_classes, + 'gt_overlaps' : overlaps, + 'flipped' : False, + 'index': index} + diff --git a/examples/pycaffe/tools.py b/examples/pycaffe/tools.py new file mode 100644 index 000000000..8e658b29a --- /dev/null +++ b/examples/pycaffe/tools.py @@ -0,0 +1,111 @@ +import numpy as np + +class SimpleTransformer: + """ + SimpleTransformer is a simple class for preprocessing and deprocessing images for caffe. + """ + + def __init__(self, mean = [128, 128, 128]): + self.mean = np.array(mean, dtype=np.float32) + self.scale = 1.0 + + def set_mean(self, mean): + """ + Set the mean to subtract for centering the data. + """ + self.mean = mean + + def set_scale(self, scale): + """ + Set the data scaling. + """ + self.scale = scale + + def preprocess(self, im): + """ + preprocess() emulate the pre-processing occuring in the vgg16 caffe prototxt. + """ + + im = np.float32(im) + im = im[:, :, ::-1] #change to BGR + im -= self.mean + im *= self.scale + im = im.transpose((2, 0, 1)) + + return im + + def deprocess(self, im): + """ + inverse of preprocess() + """ + im = im.transpose(1, 2, 0) + im /= self.scale + im += self.mean + im = im[:, :, ::-1] #change to RGB + + return np.uint8(im) + +class CaffeSolver: + """ + Caffesolver is a class for creating a solver.prototxt file. It sets default values and can export a solver parameter file. + Note that all parameters are stored as strings. Strings variables are stored as strings in strings. + """ + + def __init__(self, testnet_prototxt_path = "testnet.prototxt", trainnet_prototxt_path = "trainnet.prototxt", debug = False): + + self.sp = {} + + # critical: + self.sp['base_lr'] = '0.001' + self.sp['momentum'] = '0.9' + + # speed: + self.sp['test_iter'] = '100' + self.sp['test_interval'] = '250' + + # looks: + self.sp['display'] = '25' + self.sp['snapshot'] = '2500' + self.sp['snapshot_prefix'] = '"snapshot"' # string withing a string! + + # learning rate policy + self.sp['lr_policy'] = '"fixed"' + + # important, but rare: + self.sp['gamma'] = '0.1' + self.sp['weight_decay'] = '0.0005' + self.sp['train_net'] = '"' + trainnet_prototxt_path + '"' + self.sp['test_net'] = '"' + testnet_prototxt_path + '"' + + # pretty much never change these. + self.sp['max_iter'] = '100000' + self.sp['test_initialization'] = 'false' + self.sp['average_loss'] = '25' # this has to do with the display. + self.sp['iter_size'] = '1' #this is for accumulating gradients + + if (debug): + self.sp['max_iter'] = '12' + self.sp['test_iter'] = '1' + self.sp['test_interval'] = '4' + self.sp['display'] = '1' + + def add_from_file(self, filepath): + """ + Reads a caffe solver prototxt file and updates the Caffesolver instance parameters. + """ + with open(filepath, 'r') as f: + for line in f: + if line[0] == '#': + continue + splitLine = line.split(':') + self.sp[splitLine[0].strip()] = splitLine[1].strip() + + def write(self, filepath): + """ + Export solver parameters to INPUT "filepath". Sorted alphabetically. + """ + f = open(filepath, 'w') + for key, value in sorted(self.sp.items()): + if not(type(value) is str): + raise TypeError('All solver parameters must be strings') + f.write('%s: %s\n' % (key, value)) From cf765b983a7a3dd30f4c339f2bb3d296e6990c4b Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Thu, 18 Feb 2016 11:50:15 +0100 Subject: [PATCH 187/458] Refactor and improve code style. Fix some typos. Correct imports. Refactor data layers. Apply PEP8 formatting. --- .../04-pascal_multilabel_with_datalayer.ipynb | 3766 +---------------- .../layers/pascal_multilabel_datalayers.py | 299 +- examples/pycaffe/tools.py | 48 +- 3 files changed, 254 insertions(+), 3859 deletions(-) diff --git a/examples/04-pascal_multilabel_with_datalayer.ipynb b/examples/04-pascal_multilabel_with_datalayer.ipynb index 6839841a5..43aa539d5 100644 --- a/examples/04-pascal_multilabel_with_datalayer.ipynb +++ b/examples/04-pascal_multilabel_with_datalayer.ipynb @@ -11,9 +11,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In this tutorial we will do multilabel classification on PASCAL VOC 2012. \n", + "In this tutorial we will do multi-label classification on PASCAL VOC 2012.\n", "\n", - "Caffe supports multi-label classification through the SigmoidCrossEntropyLoss, and we will load data using a python data-layer. Data could also be provided through a HDF5 data-layer, but the python data-layer provide endless flexibility, so that's what we will use." + "Caffe supports multi-label classification through the SigmoidCrossEntropyLoss layer, and we will load data using a Python data layer. Data could also be provided through HDF5 or LMDB data layers, but the python data layer provides endless flexibility, so that's what we will use." ] }, { @@ -23,7 +23,7 @@ "### Preliminaries\n", "\n", "First, make sure you compile caffe using \n", - "WITH_PYTHON_LAYER ;= 1\n", + "WITH_PYTHON_LAYER := 1\n", "\n", "Second, download PASCAL VOC 2012. It's available here: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html\n", "\n", @@ -34,13 +34,10 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ - "# set root directory, e.g:\n", - "pascal_root = '/data/pascal/VOC2012'\n", - "\n", "# import some modules\n", "import sys, os, caffe\n", "import numpy as np\n", @@ -48,6 +45,9 @@ "import matplotlib.pyplot as plt\n", "\n", "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", + "# set root directory, e.g:\n", + "pascal_root = os.path.join(caffe_root, 'data/pascal/VOC2012')\n", + "\n", "sys.path.append(\"pycaffe/layers\") # the datalayers we will use are in this directory.\n", "sys.path.append(\"pycaffe\") # the tools file is in this folder\n", "\n", @@ -133,14 +133,16 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "workdir = './pascal_multilabel_with_datalayer'\n", - "os.makedirs(workdir)\n", + "if not os.path.isdir(workdir):\n", + " os.makedirs(workdir)\n", + "\n", "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet.prototxt\"))\n", "solverprototxt.sp['display'] = \"1\"\n", "solverprototxt.sp['base_lr'] = \"0.0001\"\n", @@ -161,7 +163,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This net uses a python datalayer: PascalMultilabelDataLayerSync, which is defined in ./pycaffe/layers/pascal_multilabel_datalayers.py. Take a look at the codel. It's quite straight-forward, and gives you full control over data and labels.\n", + "This net uses a python datalayer: PascalMultilabelDataLayerSync, which is defined in ./pycaffe/layers/pascal_multilabel_datalayers.py. Take a look at the code. It's quite straight-forward, and gives you full control over data and labels.\n", "\n", "\n", "Now we can load the caffe solver as usual." @@ -169,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -178,8 +180,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "PascalMultilabelDataLayerSync initialized for split: train, with bs:128, im_shape:[227, 227], and 5717 images.\n", - "PascalMultilabelDataLayerSync initialized for split: val, with bs:128, im_shape:[227, 227], and 5823 images.\n" + "BatchLoader initialized with 5717 images\n", + "PascalMultilabelDataLayerSync initialized for split: train, with bs: 128, im_shape: [227, 227].\n", + "BatchLoader initialized with 5823 images\n", + "PascalMultilabelDataLayerSync initialized for split: val, with bs: 128, im_shape: [227, 227].\n" ] } ], @@ -199,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -208,1602 +212,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "Ground truth: horse, person,\n" + "Ground truth: horse, person, \n" ] }, { "data": { - "image/png": [ - "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\n", - "AAAASUVORK5CYII=\n" - ], + "image/png": "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\nIm02n1uIrR+TZTlS8iJHsSzLFzkXZVmilKIoEmu4s93q/8/nczsMkAKpbOZBWRZMphObFBN3iMKI\n9x+fIIRHXmQoaZVgiAq9E+MITVkUIDWHt47QTY3WmuUqYbVecHZxyWgwxHMlZVPx7PiU56cXOHgU\nZYMfh7z2ygNevneEriqaynLtlOva2La6Js0TFss5s/mMKIyI44i9vT18zyYHL9drzi/HzOYrHCXt\nzUBgx5COh3J9jG7QQiGMAuOwvzPg5NnzjYCm5OoywRiF5/t4rmK1WiClxPcDAj+g3WkjhOFHP/kI\nIaFuNNvbOzx5eoYvHU4+PacoC+I4Yms0otI1W6Mhg0GX119/lb39PaI4oi7tQvZ8n+FwC9AoKdF1\nRZZmzFYrzi4uub6ekueVbZoZTV01lGXFDz/5iL/6y+9gTEO32+LWrX1GoxFbwz7DXp84jnA8B5Si\nNlBUNivQr3x0o0EawMJoEeD7Po5UdmQm7XWXRlCtE165c8Tehz9msSoxG8FO5Sv+1Z//Cbf/xX/D\nURhT5SmIhlY7xmjDfLFiPJlydnaG47r4rRaTmxtuxmPqqqDVanEzmbK/t4uSksc3M779/ruUvsIx\ndsrQNDXn40v8+ZLtra9bW7356bW+rmuWiyWXl5es12u6/R6tOLbQlE+f8foXXqKpSnSlkZ5kvlqy\nv7/DvTtHfPDxY/SLY8d+XGlBaQBsb23RikLQDbXWrFZLsizDd128zcbOiwLX8zg7O6OoK7aGQyar\nCWGoXmRRzOdzlFIM+n2SPOdkIz/u9rp0OjGOkn9/F/6d53M7DJyNNbRpLOg0y1Yo5dOKYzqdPmUN\ndVPx6SdPWK8TgiDGcw1ZPsA52mI9m3L33iOePT/D9wN009CKfIb9A87Ozsnzku3RFnlZkOUVYRAi\nGoiDgJ3dEbvDIU1ebpBWVodutNk0uyRhEGDo4ChFEPibL8WnKCqyoiQtNGfXS84vr3Ac2N/dwqkq\nqrJia2tAu7tRPZYlwvXQwFtvPOKTjz+mqi1FSDv22ljW1p+RZGs7gkLiegHKdfF9F+UrcASBH3Bz\nM7UTFQFxFKNche97iE+fkucl+wc79LotTk5P+Pov/SJCGHZ39hj2ehgMTVmgXHcD7RBIz0fKlDxJ\naEUeb77xGltbfRxpKMuK5WLBKw92+epbL3F5dcXl9YT5fMHF+SXXV9d0uz3b4RZwcGuP24cHtCIH\nD2i3u5TLOWVVUVWbunsz6JPSXsnrTS4BruLs4oKoHfOV+w+4fP89prqmxmCUyyQv+N7HH7Pz+psE\n0myoVAVaGxv42rWJw8fnZywWC6qqQrkuW1t9trZG7O/tEYQx7376lN9953ukro1nB3CNQNcli3zJ\n2oeyrtC1VWOaTa5iWZZ4rsvtW7eZTqe8/PAh//Qf/yYfffgh19dn3Nxc02m1SZM1takJ2x3+0Te/\nwfX1hA8//mRDQdqIGmHjcLS3g8V8TlM3tLstVutkoysAz3MBg+/5TCYTnj5/Zt/ursd8scSTLoNh\nB9/3qBqN5/uEQYjr+fzoxx+QJktcT4EUTJdzht3uz92Tn1+ZUJd4yt3U1w2+7xIEMd1uhyAK8Yyg\nzCtee+11bsYTVquEZD0lS1JWq4I7t45oBT5BFJJXNWEY4EjY6nbwPJ8ff/SYdVlTlbXl7hnNoNvl\n/tER+/u7FEVKVRXkeYlyXJSjXnzpjW6I2y1q3TCeTojDkEF/wNXVhPliSV5UXNzMmCY5bhjjSc3W\nYMh6tmKxvEELG+rieyFBKwQB88WMfifgK196hePTCyazhNlyRVnbw7CurRBJVzXaUaTlClm75IWP\n0bZk8VwPgd1EQkranTa+b2veIPAQAtbrOe12iwcP7m0O2RRhxijH4r6VMLZciCKkcqiqmuNnJ5yf\nX/PwpXuEgUNZJCjXRbkwHLbptB7x1huv4YcxjhdgGs1qteD58XOOT045fn7Kxdk1l5cLVnlDv9+m\n5QcEStGg0UJSFOUGBsImj8A2j6WxuYSahuFgizjyeSMI+fHpKcv5mEpKZC1wXJd/95d/wzfefJNX\n+n3KNCctc8spEALXdXj33ce4nrWeh9023Y4FtVyPLzl5fsz27Vt8OJsz0TZhyTHgIpEYqGu6oced\nW/tWkKbk5nZg+xxGG6Io4sGD+xijaXesJ0Bs2IeOcqxILXOIPBt6q4ThcH+Hw/19js8vqDeuQSH0\npqFnwSjNxuTlOo4lUKc/za2QAsqyoNftcO/uHTqDHqeXY8bX14hAkBYZQRzheIpQ+Qgkz07P6G9t\n0+63efLpR/zk4yfgCO4c/QMVHQkBuqoQgUCg6bQjPC9kMr6m228wQtJpd1DSpds5xODw/Nlj6irl\n8nLKN97+CovVnLyqmC0Twrht60fp4AcBYRzzwcef0ul0CH3D7qjPFx68xP72Dnm6hrpCIsjzjDxf\nIh0XIWx9KB2HNCspKg0ozq8mnF1OWCwTFosVQjrguJi6QdcF7X4LWRcM+i16/RZR6OIqQa/Xx1GO\npTpVGkfCL3z1be7fH3N1M2Uym1EWDbPZktlsSVrWrDdQk1obixlDUJoGoazwRuqaprLKuqLIN4vW\nvsVs/e0SxRFRFHB5eYkxmjwv7SHiKiLPZZWkMJ2hfNu4TPOEMPRI10tOnn5qo898CzCJoxilPKIw\notaGbL2mqmqMbtg/OOD20SG/8WshjvA4vbjmb99/n+PjUy7HU9A1+7vbhFGI52oWizmN0TibSPPP\nWP4acKTinb/9EaIpGQ76vH33Hs9/NOWmsdg0LaAMFf/qz/6M/+rtr7LlukhXWpWd51OLml//1jdR\nyuVmPiNwPbI8paxKOnHIYs/wdDLmO++9Q9kN7PjKCIzQCDR3trb4J1/5KodxnzTRGMf56WLdjAc/\ny5ksy5LBYIAxxgJc6pqzs3OMsTW7akrLUXU9Xn/tFZ6enHP57/+EOs1+Zv3/dNx4fHLKeDJhq9Ml\nK2qePn2Kbmp2t7fodjpWJ+D7eL5HIwWtKKZstYiDgN3tkV2zwiFL1+RZznI+4+nTEyqdI2RDr9cn\narUos/Ln7snPz7UoYH59A4cjXClwBChhePTgPs9PTq2qrCzZGm1/9i949MojhDFcnB2T5A1Cebh+\nwM5Om6pqEK7HPMm5vr6gSNeM+m1WyYpBZ4vRcI+byZLlKidL1hR5StXUJFlKVTfkWYnWmjCKaLXa\ntjPrumR5RVUbyz6UHsYNbLw4GVpXeA7sjQ6JAxfP9wGFlAKpoCgKqpVNV7p3dJc8z3l+/JzVfEm/\nE/Pqo4f4rsvZ2QWz+YrawHJpI8PW6zWXl2N0bbgcjynKehO4Km34h643L1jXkovrGl0YSqxabTab\nsV6vQRiSNLedcuWwVNZ+Kx2J67r258mK+WJCkSfknQ5BEOL5AVEUkacNWhuCMKGqC5bLBUjBcDig\n2+2gHJ+6aVjnU5JsgW4aoii2/grAU2pDG7YHFga0Ad91+fDDjxgMhvR6XZSj2NneRlclnoQ7Ozu8\nurPH984vKLWF1daO4fuPn9BzIv75195iJ46t0rCpcYQHwrBeLVhOxozLinWa4Houg24bM+jzZ9/9\nj9TtNrqprbgK62rYiSO++eprvLq9j0kr1mWGDNSGui2tE1EK0IYkSVkuVwSBb1WfwqEqGz786DGP\nHz+hKHP63TaPHj5gf28f5SqOjg7Y2x3x6dNjjGZDfmJzO4CffPgx89UaI6XNVOx0qMoc3wvwXNu8\nNALqurEvBjSdVkTgughj04crXaHrGtPU7O/usLuzhx/5zGZjzs9vMEZYjczPeT63wyCvG1qhx1Qp\nHKXsolzP8ZzbPLx7m8bA0+dnFFlCmheMtrdI0wRHKh48eMTZzZT9gx2EVBRFiSMVWVZY//t4ShS4\n3DrYZ52nLJYJk9ma45MT6rqhqUukNISBR6cVWd++Y3X+rushHUEcRWxvb5NmKVfX1zw7PefyZkEY\nBISBj+NAFHq0I2sb7XT6dDttFvMVJ6enuIGi27OpN8ITLFYLZtMZjdEMh1sEYUgctijznMgPaR20\nwYGd7dcZbA24vLjm+bMzsqTi/OIUswF0zhZLpssVq3TJZLKiaQx+ELBcLW2TFUNZFswXcxylKPIU\nIRoQUFeQCXswOHKD9hKGosjt7LyuWaclZQ0kCWGWotyAqjL43hpHGVbrOY4UNFXJYjrDC0LyImU2\nu2Gd5DSVSxxGGAmOIzBVia4qkBLlemhtU7SDIOBvvvsDHj58yBtvvIYQgre++EVakU+Vp1w8P+X1\nw7t8dH7J2NRo4+BIj8YxfHB8zj/75V8kK0t8x8VVFk++WK5YzhNoDO1uh4OjQwaDHhjN//Yf/orj\nVULjKpRQIMERmrbr8IWDA968fZdylZDmJbXReMYayaRwXoiNkFBWpUXBb8ozow2tOOb2wRAlBWEQ\n0O222d/dJY5i5oslw16bh3cOGV9PWK4Sm0MJgG2QZnmFRrHOLIFpuVzywQfvM9oasT3aYmt7gHLt\nbfXmeszF1QV5nnB06wDlvEQYhriu9dD0d/dZrVZcXl0jZsIGsV6eoxF2NP5zns+vTJCGva1tntYl\nyvPp9ftcn1/x7NmH7O/u0x+OePXRfc6urplNb4jbAVmWM+htc3U9sTlzbhdHBhhToXVDsUGB7e7t\ns1pMaUUR/X6HJHnG+x9/vEkdLvGlYDDoc7C/zc5wSK/bpShzsjwHJFlW4Hsh8/mc45NjxpMJWZoT\n+j6ChqYuCDyfo9sHHN26hTRQ1nByfkmepvR6HbzI+ymY0lWWXKMbtra26PUHaO2wXq0QQnH37gPO\nLy84Pj/GUS61NlxdjekP+rRaDXt7O+zv7tBut7i4OONmesPzsxOurqYkWc5ktiTwDGlaUlYFja5Y\nL+dMbi4IfNtL+IzWK4SLcGxGhDHWqqub2oJYhENV1pRljfKcze/k9q0irUa/rm26kKu0fWOtK9J0\nQVVleK6P1naMqoQCo2lMg5D2DWjjwBqkY5uTL7/0EqPRNspxqRvND3/4Ywb9DmEUUJYNZBVv3b3H\nX3zyEakBhQCjuZ5N+f57H/DrX34LVwoqXbBcLVmvc+bJmnWasnj+lFu7eyxmXT6cTPk/f/ADUMoC\neIWgMSVSwHbU5rX9Q1TVMF2suJzMGO0cgLDbtWmsHFnr5qf9AcduPCmtRLjb7vCFR48wuiL0A+Iw\nsDmiVYPjKLaGA37hS2+yXiZ890fvUZT1C2WibSoKLs4vuXPLQm/LqqLV6ZBWBU8vTqmcBnSNkh5R\nGNPrDeh0b/Pw/l2GnR7T6YzJ5NpmO1Q2On42mzCdznnw8D4vPXjAs+PniPAf6Gix9lw6e4dUZ1c4\n0kUpl93dXT784B3CwKVscnqDEVuDDru725xeXGB0jVKS5WJJVdc8/uQpWjtsDXfQpmIyueH6+oKH\nD45oqozpZMbh4S5f/MIj/CBitlgw7PVRxtDrtiwEM004OV0ipJUcz6YLjk9OiVtthCMJw4Cw1cZP\nS3whaPkuRmv8wEU0DTeX10hHUlQl48kYU5W8/eU3ubm5oaprRqPRi2DZKIqQ0pqkdF1RFqVNfnYc\n8iLnZjJjvS6J4hZaa24ftOgP+2TrJetkTZ6lzGdTwsBjZ7DFqy+9glAON+MZk+mcNC24vrpkOpvh\nOJKfvPcO9+4c0Wm3qesK1/OQjk+9GXtLqewc3ZFIz7VvLN280IDUTYEx1hsCxppzhEQISVEWSOls\nyg+QwkNKhetK6rrC6AKjm41s1oHN2PWzt2xRFHzzm9+kKIqN7Lfkj//kOxgBu7s7BFLS7nV49d4d\n3n/yjHNdWiGNpYPz7/7yP/L261+kHwdkaUaeVwwH2/SH2yR5jiskdVHw5OqCf/0332XuK4QWmKZG\nGoFjNKMw4u07d/nirTuUyzVlVW/4BmzEYoK6spJnpWx/QghBGIZ8phsw2ESwJEutUWhZ4Ehh1Yy1\nzWeM45hXXn6AEQ6z9ZoPH39qoSmNxmBZD7PFgqqueH78jPl8znA0pNPrEAQurnIIA59Rf4ciqyge\nVzhKMZsvMbXG1ICRaKPJi5wgCtm/dYug1eHiesp6vWKxXNtR/s95PrfDoPBDTtNiE5vmkCYZwmgG\ngx5pnnF1c8NB0RC2WoQ07O8Ocd2Y+WJNki7o+n3SbM1qucZxBhzc2iVuxTRNyeNPPqbf7dNqdynz\nijhS9CKffA27Wz101YDRrBYrXNfBdRwG3QEATVFzdHhImlccn18wXzwnatnaVEnN0a0dut0eypVE\nvk9V2i9G+R73HtxltZiyTFbWdel5uL7HcrGi3xtgNNS15umTp3i+b2GXno02z7KMbqePMA43VzdE\ncYuTswuysqDTipmt1tR1w+nllG6vR9N4pKXBpBmO9Lh/7wF13XB0+5DVek6yWtDptm1WowR0A1WB\np1wrVzUaLZUdMzoSrcVGaQdCOggtqRubcymMB8IKewQSbYTNvXQclOPQ1DY/oCjsdbdpDNpYyEyS\npoRBhO97lugjQQhbGlZVtVH2WYdfg+Txx0/44Q/fRwqIWyG7uyPqOCBouZTrNXVVUyYlk6bmD//g\n2/zqm1/k/r1DiuSGH7z3Pcq0ZF1kIB2cbpt5J+CkyDGBb+PVMXha048Cvnb/Pr/6xhvU8xVCG7a3\nhgjlcT1d2pm8trcm3dTg2AxGKSTdbhchrS5Fa8PN+IbJbMrD+3fotTs4YMG4khceBidw+PJXvsj5\nzTUXl9fM5ssXtw/dGCbjGbP5nINb+/R7PYqiIFCKth8gpMDUsFys+N7ffJ+zyQ3D0ZCyGCG0YdDp\nMRqNUI7FumdZzmQy59OTYxtb3zT0+n2Wi+XP3ZOf22GQ5RV/+qd/wd5bX4JG43sBg0EMTUYctUjT\njJOTS7Z2BsRVThhGdNounVZI/OAuSZpycnpMGMTMZjPmyxm3j27zK7/y6/zovR/y7t/+iL/8zneo\n8hRHgHSsZPdH77xD4IdkScb9h/f5+jd+AVcahNHUZUW3FeIoh6peEYUttJAoJdnb3mJvp4fvbugz\nSlBVBXEc40i7UZL1jCRZIpDs7u4RRhF5mnP/3n3Wq4Q4bDGZTTk+eUaRFyhPcXTniLIxDIYjRlu7\nxHHMbDbGDyNOzy548ukTev0eWZZTZA1OFHH6+ClNUbC7s8V8csNytUYbTbvd5sH9B/SHW7jKRTqC\nbrdvHXRNSW/Q52Y8oSgrirJEOBKhHOSGIOwFVuRiDDiOQhjQSHRTIB25gYUolOOBsj0WXdUYITBS\nWYCqqax0HNskLqsSzw0QyE0zzqr+mlrjSLMxeVmsWKcT4/suZWFLmiTNefrshMaB1q0dzDpDJzk6\nK0iqhm9f/gGnH3/Kl7/0Bk2W8Bf/9v/GNSCkYJrlFLtDyrsj6kDh1AakpKYh1JqdqMNh3KZeLOjE\nLSI3oNaCZZbb4F4EUhiCwKPX7bGYzyiyzMp+WxHGNNRNQ9U0ZFVBXlr+5Gy6wGhtk5yFwTSayA0w\n0gUlePvLX+S99z/mP333+2AMxlhW5+MnTzm6e4t7h/v40sGTCqk1nmOzLS8uJ9zkC7ww5PD2bfb2\ndul32xRZwtnFKbf3D1DKY7FeMx7PuRpPUJ7Dzv4Ovucy7A1Zzv+BHgbr6Yz73S43iykaTb/Xhbrg\n1v4BWZbx8OX7TOc1T55+iusHbI0GZGnBaDiyRGUahoM2rVbHXpFXBU0jmE+WvPzyA+4fHvDDd77H\nJ48/4fLyilbcpt1uI4UVPKkdRbfbYT6f02rFFI5huV4wny+oas31ZEpRGwb9LnHkce/ogP2dbVaL\nOWVZ4vsBylWb66QhX6+piortwTZKubjKw3c9TGmYz6wIZr1es0rWdLtd3C2PvMysC1NKsiylKmrS\nNKXTiSnrknY3xp1ZEOZ4PCYKO9y7tUfLdynSFGg4ONhnVBQ4ShGGIYNe17odk5RVknA9foZpDHEc\nMthv8cEP3rOQlTxDYy27URByeOuA+/fuWO17XZJla6bLBVVdW2ahH6Ckg6ihxgEsMVh85tl3PRoD\nVVUjpG1cmbpBVwmC6IW+wHFsxmajmxeGIL1JA+q020RRZMedaWrLAgGygfT5lS11cBj0uizmC6qy\n5G/f/SHff+cHbPcHBMLBSIESAtlp4+1vsfYcq/1z7N3Dp6HrKu6GMV5WcvbsGeLWEU5bskoyrqdz\n4v62nX2LjThK2bSjoixtwMl0wu7uFr63sbNLh8l0TpnnzGdL8rpBScnO9pBRv4fbVXjCRxo4urXH\n3s4IKQWWhGbRaOPxmN/9nT9ie3vA/rDHqw/usX+wjcDQarfp9jp0gK3RgDiOydZr6iwldj3iIKCo\nSqq6oKpqGqPxAh/fCVC+iycdlFTs7ez+3D35OVqYNcLUVnwUubjUlirjWE/6ZD5jPMmYLzOEbBhP\n13SjgDsHOVtbXYQj6LUCNBVx5NHp9CiKhun0mh/94Jhbu11+7Rtf4utfeZ3v//DHLNcZjuPSarXY\n7m8RBiGr1Yr5csVsOSGIQozQrIoSJRxrbFGKXqtNrxcRhz5NUeApD8fxcKSibiqMMCjlEne6BGG8\nGT9lzMs1TaPJshS1sThLKel0Ouzu7VCVFa1umzxPWcwTkiSzQEtHbvIWGtoq5pVHjzg+PbXza6fg\n/Pgp9+7cYXv4MkZAt9vDbIi66/Waq6tr0mRNHIV4rksdVzQNSEdyeXXJcNAH7JjRcQVVVeK6HoPh\ngLrWXF9PqOuS8fSGy8mYRhjCOCQKQxzXut9co2h5Ib3YIriElDRlxc1kSpGXxFGA73tWOKMMDg11\nVViBEFZzBJ+Rg81G+SlwN405R0o810V4PkhjhVNlY52PTYO70dhbhYr9bLPVmsCzG8N1FPWwTRo4\n1NJg24YCB0MLwcuDAfthQKwkTdEwmUyZXI9ZpRkah/Zg92f+k5ZwJISVz9/c3PDx44/Y3hkw2trG\n9azv4vLyEm9/j929XXCEbSR3bDBKO2oRhiFCGrI8pRX5dDpt5os1enML85RVNw6GHaY318zTgtdH\n20hhWK9WSNel1+sRtmMc5eLQ4MrYQl/KgrqqaeqSVrvDw60dNLYkK4uCoiheYNd+/p78nB6Jw+P3\nP+DRP/snVE2OLguKUtuQzlpwcTnlybMLtIGyyjBGkixyZjcr9m8N6fdjDnZ2EVLSCj0ra/VBqZrx\n2YdMzhOWN095/fU3+eYvvMmnz095enpOlq05z2s8N0IoxcXNnKubCZ6r2N/bYtCzevtWO8I0NU1R\nIo1GVxVlA1pIGi1YpguKKsNRDkVZkWQZTVERRSFpmpFlKY60UmY3DGltUNhRFKGUYjG3X7DWhtli\nwdNPnhJFsfU4+HfY3t6hqiqisE2Z5ygBVdkQeC5bgz5RFFE3jfWqFyVpmjCdzcjzDNd1GW2NiFst\nsjRhNp+xTu3C2xn28X2Ld+/1e5RlwWK54PL6hvefH9uSQxu00Rjp0BjNzfWcRmq0MkglCZVPK4jo\ntFq4yoq1HGB8OaZIMwadFr1uh7jVIorbCGklvRhNU2urPBTOz1iFbW0d+D7Zek2yXm+mG5tZfGMT\niyQCjbFJUq2YZJ1sVpPBiIa0zJCeQ6kUTr9F4QoaA44xSKlxtWa/2+Obr71FmxrftZ9ltVhxenmO\nH7boj4Y2L8GxzUGzQZ9pIC/sWFE69lBqmhpHSZvL0O/w8ksPN9ZxReD7BIHVCZjGBsQqZR0Jj166\nz4/e+4jV+rE90IyhqhruP7zDL37tTb7zp/+BT54e84VXH3J0sMvuzi7S2ehXhMAIcERIXVVUVU1e\n2jAiJQVJsiYvpxuhmEeV55w8P6bdbtPr/gNNVJJIiOVTJwAAIABJREFU0vEcKRwcxxqKjo8v6HQH\nDIcDhoMdjLTz/PFkxs1kTd1oksZwcjllleYEXsBw0EM0NR4GU+eUxQ0+C4RquDh7zHIx5ZVHb/DS\n3Qe89OA+T56f8+57H/PJs2McZXkARVlhas1qvn4RLz5fOkS+RyuIcF0XjV1Yy9WKVZqRZTkCQ9wK\neX5yxsn5BWVRsbMzYmtraH39rkuRFwghXjjGVssVrXYLpVzSJCPJEpTjMNwaWHKzI2i3OqAFcdgi\nyzMG/R51XZOsU5SrODu/pNVaU9U1/V6P5WxBlqW4rkN/d5etrSFozWKxIFuv8F0Hf9AHIUmSjLRI\nyYoUbWwuwHK5oMgzut0OUattXZ6TGTS2ueUJl067zWDUxY89kJK8qFiu15zc3LAqMgsvbUCUFck4\nYTyfgNY8evlVWr1dPN/bTBQ8SyuWn2026/Vv6pog8HGEQDc1pW4248gGzAZJuHlDp2nK3v4+q/Xa\nine05jPiTFEVONqFJMXEHYwjLL/QNES+j1ca/EbhxyH9Xpd+q83hoWBv/8COf4WiFspeDIR1dzZG\nIx0HNpOEhw8esr29g9kg1B3HoRW3rGFLKDzHQUmJg0NTN+jGshrTrKLRNffv3WFne4sPPnq8sTEb\nal1zfHLMrYMRb7/1FtJRbO8OQTmUTYOsbaM1CAI8T9FUFQa4vr5htUrQ2mZUVmWO4yjrHvVcev3e\nC9FXWaY/d09+fq5FNldB6aAb20muGwvoEAKrcOvF+L5ke9jncrqi2fx8NrHR1dezFXmlCVyXYa+F\nIMdt1vhkuK6dk6fJjB+/9w55nnLv3iMeHu0Txz4fffyEs/OJVXVVmjSvObmccDmb4bqSduxz9/CA\nKGqxzguW6zVFUbNYLFklCVIIBr0unW6L0fY2yvPBCLq9NjvbIzwhKYvSatqDcPO57LW4LO3c2qDp\ntltIR7C/v4vn+jiOPTTyouLq+oZ1krBYr3j66TMEkqLKcRzB4eERcRQTRyFRHNKKAqSSKOWi6xpH\nQuC7tKIRSIfFasnl5IbFMqFurGtROKAcQRSHdLodtIaqMaRFwfnl9YtIdVOXRJ5Lpx0RxgFCOVSN\nJs9KFoOEabZisl4wX62oXcE6z1ms5+gkZ2dnn72qwvWsSyfwfdJMb3wUtpfSarUQEsIwYjAcsk4T\niqLgs/HdZ5hx81nYqZSkaYrv+9bd5/uUpZXalmWFk+SI2QrRDpChTT0SWuMXNU9/8oT/9cMTdndG\nHBwcsLe3w/ZoSCeOUBKyMsOLo413wmYkWdS6TTtyXZdbB7eIozZN01A35YveguMoO32RVlhVFDlF\nWW1gKBVl9f8w92axlmXpnddvrbXnfeZzzx0jMiKnyqxM1+jy0HbbuG1kgZEaQQPdQqAWIPHAA4gn\n6DeeEPCAEI9IPAASLbqFZMELjdsGIZquKrpcZXcNOUbGlHHjDueecc9r4GHtezPLQ9FSqVXe0tWJ\nOBFxdOPcs7691vf9/79/50NhY0+e8lxGh3Vej/DkyTlN/U2+8s4XefjKfba7gmJvKXcF+/2WMPAB\nq8M8R3cdg0HOZnVDZ6wnPglHmqQkSUocx5TFltF4xHA4QBtNUf4FFR3VIchAQKAwrQMR8PDVh4zH\nE/Z9cq4UAUrAKMs5mB/Qdh1JlnKzWrNe71iudjx5cUUSRVRdw3wYEuO74NJ5cUtgBU1X86MPfkBR\nlrz22puMk4hf/MrrXJwueP/j5zx6dsHGWjTQOYlpLNYUXF7dgJUYZ2m6lqqqsMaSZz4LYDgcMhqN\nmB8sOD0+QVjtJbc4yrJBKsV0OiVNkrsRWj7I2O8rT7LZbsjyFCkFh8dH5MOUm+UWoy3L5Q2r1ZKi\nKOlMR55n1E1LGiQ+ECSNefDgHhJHIEPiMKRuG8qypCyh051nCASSqqpZrVesdzusg2GWE4chWIsK\n+5GftcRhjHAaGce8cnRIXftpiXMaYQ1NW7PbbJBCoqQijRLmxye8Kk643m3ZlgXbsmBVbilWa2Sj\nkYEPqL31K9I3F4VwPH36hM1my8/93M+RZ0NGozF/6Vd+lTeuv8B6vea73/kuRbn/MXSYtb7httvt\nmM9mVFXV24x91qGzDqkNqm7pdgUqzAmEYCpDyvceU1+s+FF7wYcfPyaO/zGD4YDF0SEPX7nP8cGE\nBw/us0j8MUH0mgrnnB8v0qs1rcYYTd1odNf5z2qfw4H1RURKr0sI+mmNR6b7BOum9cfJOI4o6xap\nZA9dlUwnB3zv+z/gm//vt/nVv/wNXr13ShpGJKlHNm+2W1bLa9IkRSnJwXyKFXD//imT8RgpFHmW\ns9muaZsZzsH5+bnPKZ38BXUtZu+8zqrz+GqcQBsQytuWZQBFVaLbltEoJwoDdFNijePmasfR8QkH\nwyGYp5R1Sd12vLi4oaoyRhFIElxXEbq2T8dxdKZhuXxGEBgW8wOm0zkP7y2YjodMxyPef/yC86s1\niBBrFEVR88njF1xd7RiMhozGA6azOWkckYQe4DEcZoSh9+ObrqVuWqpKIxGoKPXILCxVU2G0AWHZ\nbndo7ePdhZBgBWEQEwUhzhm6rvKin67k6OiAQPkpgTaWq+WSui777avm6uolgVQMsxGrruNmveby\n4gKEL2D7bYG2Fm0MKgg8FiyJ0KohtBaVRBwtjv1213hysIoETdsSRAGJFDgMQRSQpgOieOG3vMb0\nDbUAnId7Ho0mTJKcMqu43iUsXeBHxj2cQwlF53QvKfCKxKIo+6aiQCKJIsEX33mbd8QXub665off\n/yFFtf9MDozo4SgOYX13X0iP+VLKi8EcoNuWpIux+xKVxoQaUt1SXK8ZZDGN9TuzYr9nv99xtbzh\n8ZPnHB/O+WvH9xhrQ6qC3l0p+okJdyIq3bUI4Xc3QRD0xTny4a9S9UYsH9EWBBJnFXESY4wftbad\nZnEwYzwa0er13RFI64a333oNJR/y8Ucfczyfcf/0hIOpbxKvVisuLi7YVmVvkgoZDofs9gWDLCON\nY5x13tcQB4RBSlnWnJ2estlsOFwc/cQ1+TMrBvHrD9Gfrmkai3MCbXz1L+rG/8c3Wz784EPyNGY+\nHfPqgzMQguvrJTfrHafzA47mUzSOy6s1Xae5WhWsAsMkHjAMQ3JXIWyJijSBEnTVhuurkjh0BGFE\nUbdEKuIbX36Lhw/v88P3Pubp+ZKL6y0N0DnFpujY1SuuVxtmk5w8i/yEYTgANEoqLwqxjqJs2Gw2\nFEWBUL75NhplmK5mOpkxHOQkaUYSpxSlx6WPspSyqmmblq7znXjdaV579QFh6DFsoUqo2o7xdMZ+\nv6PVDcW2oGkqZJLQdi3rzZaiqtDOkaYxkzwnzQYe9FrVOCRdZ1CyxSYxohej1U1N3FturbGEQBxF\n1HXtG3yBJIzCO75eq/0YM4p8MMl2u2G72wOSptW0XYvqLIMoxWiN7T0ViNvpAX0PwPHgwQOUCnyQ\nqBAY07LbLsH57rz7HNpb9Mw/DwbxCUT7/b7v+nu+IvixsXAGWzdkdYy62aGkQTpFivQFzFrPwOyl\nhoEQ/gzuQBtHpw1J5BsVt3j+W9ZiXdcUReF7HbdjVQn7Ys/18prF7JC2bX3Oh9WA7f9OwG5fslmv\nqduW8WDAfDzmZrO7a1Bq0/Lo0SN++etf5iv//G9zfDRlOBiAtVRN7ZWkbUcURiRxgtF+kjXIc9I0\n9VOYJEJI4Ue3pkMgKYuSOE1pOv0T1+TPrBjc7GvS6YyryyUqsBRFQ5pEXF5eIYWn/TqpuFp5l9xf\nOvoGxkGWD1jtd4zGY5x17FuD7vxcurOWppPs2wlIh4wqlLki6PZEaCIFzb7mk09amhaG4wlx4IMz\np1nIV7/4kAevHPGDD5/w/scvKCqNExbrFE1nWN7sSJIF+XBInCYe8Nnf1ZSSZFlO07Xsy4KqrjBG\nM5kOiMPMd/YrS1EVWLdlubyhqxvmE0+9nc2nRKFPaFb4JmanDc+ff8qubKh0R11VBFISxRFZ4o8N\npu1wmaMsSpIkZnzvHoPhkDSO0cayOdj1ABC/be3aljyNiSJfxNrO8xu6LkC63jhTVd4UFgQ+uDNQ\nFEXB9fX13Vk9yzI/LhPiLhJOCEUUehdlVJc0bQcqIOyNaFLJ/pztm25HRyf9WdzvXhwG0+5QwJNP\nPqTuWoTrlY+fyy/8fBbBZzSifjLRV56u60hrzdlogOkKMplTGAtNR6wCOuN6wGnPD0xjZtMpSRQj\n+6OBkNLzA5sGKT34xheEyr+XnZ80pOmAYl/z4YePMQ9gMhp59qBusUb74hmnPlBVGwKpeO3hQw5m\n7/Hx00+RSiECgdGGJ48/pd6X/NqvfJ37971gCCtIsowojpjNZtRVizGW7XZL1xrSLCXPc+I4xloP\nia17n41Qyve44pBtVfz5C5KfYTEYTKas1ns+fvIxxydHrJY3SCzzgzmPPnlMWe7v7hgyiHl5vWY0\nGuOEZDqfIYTk048/4eX1Em0FSgqyQcb1ckutJVZGdIQExpFIRe42DMKKWAXUbc3zp0+ZHew4PTuj\nKFcIQlA5x0dzprMxZ8eH/PEPPuJyucOKGKFC4kAShr4irzY79vs9SZxydnxEEoYkScJ8PubocI4x\nzmc0OkMoFU1jePHsgl1dkGQxrTa0RtNpzWQ6JokjgkCSpimb3Y6yrAiimKpt2BYFu7pkt9lgtQVn\nfa5EUzEe5KRxRpYmXnAiOhSiV7c5xuOhJ/cGAUpIyso7FGUgcH1Yadu2WG28Zl8FPiMgSfoE3wBr\nwGhvTDLGsFwuefbsGUop8twnAidpjjG+KO+LLUJBmg1wMgIhub3J32HIrZ9UyH5X5ZwjUAJlWmIF\n11cvPN67x4sDd1BSjwFXOOfvumEo74qEscYLenAeWBocIIlZLbfeW2FbBlGMVoqiqnF4ZL91XoUa\nSOfj4IzPbOx0h3UWBeAMaRITRxFKhR69luUkySFpmqGbhqoTjIOQIHGITuCs6tWXgvl8ymQypi5L\n4ihnPB564CrSO0Glo2o0u6bl7/1f/wAbwi996V2yMPJ5j1JS9M5dJZVnZ1pNGIZ96pdHuHedt7dr\n7dOcZ/M5rfNHxZ90/Qzj1aBrahoNRVNT1iWr60veePMNdn/8R4RhwOnJCWmasrxZ8sGjZ0TxEm1a\nwkgRBYJIOOYHM4SKCcOQPM+ZjHdcrW68nXXjx1NxkKHziDBokHYPxlDVW25ES2csh4cts+kMpRIc\njjiUvPnqEQezIe999CkfPLpgX9ZoC8Uu4um+pG4aaq1J04xGWxazIZPhkEzEnnEfRIBjtb7h5mbF\nzXLD+ctn7JuWMI6wGHCG6XCAEMKfPQeZH6kJP15UQUSUppyeObT21KKm1XRtQxgnSGOJo5A883cF\nD221BGFEkCQEznpyLg4hHEJYlABjDcWu9tmEzt+pkjjmFtm7rzSbsmJTlERBTByFxEnE2ZlXh758\n+RIHVGXJ8+fPcQiSJCcMI6zVNE1FkChO0ozNZkeeV8Th4M75B5+xBYH+CCGRTpIEioiGZr/FdT5E\nFOhx5T1mvO8hOOd/fUsLAv861hiCwDssq6IgMNpvx7UiEI44csSRIgozirqj6jTaGkbDnCQUhBKM\nlSBs79cwGAFCOOIoIAwjVOCNXUIJVJgiowkqsnRoVo1C2hhJQBh65aOmQ1ifitS1NVVVk6Yh0/GQ\nstH9dMGgreGLX3ybZ08eoTXUbYczxmsfpPLhs/TwFAcOTZZnAHdR7rdkZCEEaT9Z0Hjz2U+6fmbF\n4OLcN79MD+qo6oqua/noow/I0phpnybjZ/Qxy+sVzlWARUhHHAbcPzvCak1VNjhXsi8rsiTmwdkC\ncbZAWBBKUTQd29WSottjuMaxBTRdXbC80hjd0TQ1hBWzwxMGadov1JyvvfOQk4MZ7334mH1RMMwj\nVuuaNB8ie43/arsjSUOqpqFtWg/ccJDnKav1DS/PX3q6brnxkJLSkaQxR4s588WMQT4EEdC0Hrsm\nZUCSDjDakAqFNhVBAMkwQwbeNBTFMXVREagQ1S8I1Ut7vflIYYwhEALdNVhr6Kyj7fx5ViGIVIB1\nEqP96CxJE4yzVDc3PH36jP1+zyAbkKUpSRoxnY5I45jpbMpk4rUPdV1jrCVOEoIg6HckFo3m3iuv\nU1aOoqi5vHpJlg+AHpnuPusHOOt3CsYa7r1yytE4JYv/HtI5dF8APl88bqPOb1Wd/j3zBeLzDGIB\ndI2GtsP0jcBACJQTSOfI+p2P3hfEgeLoaEYcCZzTSBmiggBnY8IwoGlKT+eylrquadqWKFC0XYNt\nW/Z6A8pvy7dVjbSe5xAohxKGUDrSyJHGITIZ0u33jCcTFocLbjZb796sW/852WyJVUJVapSKyPIY\nEOjOIlUIfT8gUBEigDRJAM+I0Fp7vYT2R7Ew9DEBKvB+i590/UyDVzvjswVkH0SVpQlaVxwu5jjn\nWK9XrFdrptMpB/MZu12BcI7DowN2+5Lziw11XbHZrHB4kGkSKcbDhCxN+gXiEWXCWeJ8TBpPWK+f\nIM0WZWtwBc224byqaGXLagsPXjljkMe0dYFwHWeHQw4mX+Jmu+OTp+c03R7ZCdIkxNmOsmh5eWEY\njYaU+4rr6xvatiNKQrquQXcGoRyD6YI3jhZkSUgUhWRZwsFkgtCS8/MLVps1BktZVFjAWUiCkDBR\n4AxZmjKaTMiyjNFwjJK+g36zWrG8uWHUn1WHk7E/DzuIVOCZexLCOCYd5GRpStg3BAV+3CWkxOHo\n6pYkDnl4/xSjNVXTsry5YbO/oSi3DHomvzGGNM0Ig4AsTcgHOQioqxopQyaDMZFUmNCx6Xa8OD9n\nsTgDL5S9W9yu7ygq5blDWZqz2e4oW40Vsm/UcTeq+4wD8Fnq0a2SEbizGVtr6ZxlVRQMOk2rOyL8\nqFA5iCzYtkM3FWEgSBPFIFdI2SGEQ1uDRBDFEWmaUlf7/pxecLXcoKKA1159cLcTCQPfE9FYtGkR\nTlI7ge0cWIu0jkgZktgRBgIhckaLe4znS4qmxQk/aAkCxdPn50gU//Cbf8jxfMj94xnFviTLBjx+\n8oQsyxB4CbqxhsXiwLtH+9/PpjOGwyFKBWw2G9/jkQlp8NPxDO4D/z1wiP9e/xvgvwZmwP8EPAAe\nA/8asO7/zd8C/m3AAP8+8L//WS/sZMDzT5/zG7/6Kx6rdXpCGEmSNMBov73Pm5YXL698g0QIhoOc\nal8SKMFkMuDZ03MCJXnttddwDpbLK4zVbIuW9a4CCcMs4+RkwfHikGEco8IAmSSsLp7T6GtCOky7\npWtAZBOEdSwvbyiziCjuiEOBQyJtwmx0gHg1wCJ58vgC0wbM51PWmy260+yLEqkkx2enhGHI5eUl\nk6nvbxTFvg/kkCRxShRHtI1mu69ReJP+weEh+6rk5eWKT1+88KyBICKIpC9mYUA+SJmMJ9w7vcfi\nYOFn2NYyyDOyPCWKQ4RwgPZd8CTEOUFVerbihx99hBCC+8enxFFE03ioy3gyZrvf4RxMxmMGgyOa\nsqJsWg4P5zjh4+rpacHb9cabo/IU6SAQfhubjcdEUUSaJv7u39akkeTwYEyShtRN2+8KvKDH9cEi\nopc+b4uCjz/4gFVRYZEes25/PA3IFwMv1Ll9/rYI+MLRFxsHRd2QCEnb9WlYQhA4vzhFZ5mORvzN\nv/HXWF1dcnZ0gMSrMgUS3achCRRK+kIVJxmPn3zE4nAOr99D4MNOFBZ0g3AWYcCj4QOsEKAkFkfj\nBGXpk5iiQBGkE+69/haj+YLl9TUvz1+y3e4oGk2oBA/uHXF5uWQ+SgmVJJCS588/pTUNWZb4PA5t\nsdKRBBFxEJJlfqrgnKHThn1RkKU5Whui9KcLUemA/xD4HjAAvgP8HvBv9Y//BfAfAf9x//UO8Nf7\nxzPg7wNf4BYQ/7nr8vycX/7G1zmYz9jvSrIkYjBMcX3CjLMW3a549eEDPn70iOPjE5I44vBoQRyH\ndLqlmA4ZDD3O/OpqiXOSJB72yTF+KxoGARByMD8kxuEkHB0nRMEQ6WryvKFaP+Hq4iW2vWJ33VCI\nlOnilOFIoWWNywxhmJAkOYdZynh6ypfehcdPP+Hy8iVt0zKdj8jzjPVu6+EfTdVr8jV5ltN1Ecvl\nDefnL3mS+EATpUKCwLE4GJNGIdW6YrPbUzY1b7zxOk1Tc/7yEqtBdw1d15IOEubzGcPBgDgJ6eqW\nKAoZDHM64wk6ttPEYUBZVyyLPdlggHNwdXXFbr/FdJrTxcIHrUrJpHc6qjBkv9/TNC1SebXgcDAg\nHw3vgCZd53MVkjD0O4pAEQCB8Bbl6WzGaDi8kw37uHRHGI88E2Cz8WzITt81Aq2TGCyd7litVlRt\nh3PSjxBxuP5OfztFuC0IQaDouu5zOgT/vFL++eFohKu9hNsHpdAXIoVCEIYhRSB5eP+Mo1HGdJwR\npwmNFSB9qrPWvjBIJQhCxWQ2IYxC8nzAeDSmbSy6q0lCsLd0bYdP7xax35UisVJghEDboM8VBBdI\nZif3GE4PmS0Kzh6UaONNXc8fP2I4ymkNZMMJh7MxEscv/cJXqJqaNE1p24ok9SPkcrenqWr2ZUFn\nNXW54/hogXCGptpzc7NmsTj4qYrBy/4LYA/8qF/kfxX4Z/rn/zvg/+yLwb8I/O2+iDwGPgJ+Efjm\nn3zh3/6NX+cb3/gqf/T9HxFGIa6P0v7DP/we737pXbT2nnCtDVobPvroI9754hdZr29I44hACQZp\n7OGmxtJ1msFg2At5/A9dotDasVpuuYhjTg4OGIxyktwxyAdIp4hjQTE+Isqfsrx4znb5DITCmIJy\nHxPHhlW45Og0JxILkiglUJY8lky+/FWWqxv+4P/4fVY3V8zGr3J8uOD5+QW7XcHDBw8BuL6+Zrvb\ncXZ2wsXFNVWl0brFuYK2LXHW8Nabr7LbFzx68gkQkSYR282G1157QBTFDJKYQZ4QZ7GnNamI5fWS\nJIrR2tDZ0qcMIanKApwnFoVhSGf8HSLNEh4+eNj7AFJsaEjTlJPTU9/72GwQQvYw2ABlHUZrtus1\nXWfY7Xce2R5FJEnCYDig1T67Mo1v06kFq9WKuq5Zb9YYJ4jTMUGY9GyI0C9eB9fXS95//wPeefdt\nhtMRKlTcbDaIMGaQpezXJVq7u9Hi7fY/CAK6ztxlIN4G3/ojg0FKetl3jXIOJ/qxoHVY6f+edAZh\nOiIZkOchmRoxGuSoIKIr/Y7Ff348YLZrW9qm5mA+Yzafcv7ynE8/PWGQpSjXEWaO1nUE0oL15ijb\ndWBCpIz7NHFPrw6V10w4fLydC2E4Vj4OMIjQXUcSpOi2ZH664KoQ1HrPIFHce/AaoVC+EGMIgwBt\nDeVuz7oo2BUbhIRhElHXJXk+ZLVasVxekQ0GP1Ux+Pz1EPga8C3gCLjon7/ofw9w+icW/nN88fhT\n11e//C6RUkCIQ+N0x7bZ8MmTj3n7i2+zL0vK/YbBcEKe52y3Wz569IjFfM6nz54xn44Yjses1yta\n43qkF4SRZJClxHHCzXKDNj4ANc9yhFSs12tEYJlMJ4TSJ/QOhkfk4wVHR6/x5MPv8uLFB+x3j2ma\nkCiMifJD8klHENUY7aPaszxhvy8Iw4jf/M3f4vGjj2mqgsPZlN1+T9zHqasgpNgX7LZbZG/CiQNF\nHEUcn5yiAu8KvLzaEEUxX/vaV70MW2p225yDwzmhUIzzAacnxzgl6doWnGSQ+ZxBrTUq8Co3KQSd\naWg7x3Q+8bNnbbw2Ic+JIr8Y4yAi7HHgdVVhnacABUpQFDsOF4eI3iBktEYpx3Q88bzEMPLGozDA\nCYiDkFAputZLtoui8I/7EhkEJHmADBK6rmG1WlPXNWEQcXV1zQcffMArD+4xGA1QKuDTl0uqpvHk\nZuVw2vbYNX7sSAB+dHZ7fb5v4CcLgrKqGUQB3IahOIuIQh9oggOjyQKF7WqKYovtWuqmIx4d4lR4\nBzZTyguvBmJAWXXEccj19TXf+uY/4tWHp9w7HGDqa4RQjKcHBJGnKnVor6h1liBMPNjFOpwBhEQK\n75sIlN8ZleWeWkMc5RwenmExyFhysavYlDBMFPuuJQ0Vgzwmi1Os00RRyOnZGYQBJ+qYIAgYD4cI\nbWlqzXA0Yjiek6TJT1zg/6TFYAD8z8B/AOz+xJ/1mrI/9/oz/+wPfv/3CYOQk4fvUG827LZ7sjwg\nSb2AReuO5c2WpvXwzNdff50PP/rQx2MnGTfrAlTsz/PC+URcLM4ZJBpBixINWmgm4znT6RjpPKsv\nDCWhlQjXEaoAwojaaFww4OD0bbLJnGdP3mN984I0LhDBkP2uxrEizToG4wn7uibNU/TWx7M9ePAq\nWRrz6JOPOD6YU1YNT599ijY+vDXLfC5eIBVKORyGoiw4Op5xeBTx4sWnONty7+yUV1+9j7UV7vgY\n6wyT0Rjbaba7HUL67XqapuRZitGWyWgISmB2mv1+TxzHOOfY7fdcX18zGvhte9cfv/I8J4xCVN9A\nLEsvC66rkmpfMByNiCN/hxJKEoWeBCwBp00/yrM0VUWUxn3Yqr/zpWl6F/zZNDVV09Kh0A6kCsmz\nAV3rO91nZ6f82q/9ZUajkVcOAkYoiqplMBwixLmX87rPCoD/OPkCcTtOvA1G9cXgFkPuexjGGB+y\nkqZ0Wvvzao8qRwissUzGY5RzRDIgDCJa63DS7yi82cASRTGt1R6x31acnpySpRmm7VBSMM4zH35b\nbFAqYDic+D6CDGi7Bqf9JCDA8xqMs3f/l0D25+hQ0NKRJwJUTKs7Hy8oAsqmY3mzYbGYEicJ5nrP\nKItJAoFCM8wCpuMZu/0OJUP2O7/j3O8rXn34OoGKkPJPndZ/7PonKQYhvhD8D8Dv9s9dAMf4I8QJ\ncNk//ym+6Xh73euf+1PX//Z7f0CSJswPPuDk9JSze6fUTYcUMdb485xSEUVREoYh2+2Gw8WU9XpL\nWdfMTu+jncAiCQJBEqdeTWcMcTwgCD28QwGtKqmXAAAgAElEQVQ3yysGScB8OvVzYilQvc6dPp2I\nzqK1wakMogXZ1CGCAbZ+hulK2qrA2F4gEoT+QzYaUe733ujjBJPplLeit9ltN3zyySe89uorbHc1\ny/WaTntzyiDLMVpTlBXrzYZON8xmU9Ispi47kiji+uqCMIDpeMLi6JCbmxVBEFBVFVprsjxHG41T\ngWcNdh27Ys/VzZKyLDlcLMiihDiJcaPxXcf9dnt/m83XdH6GfTum051fpGmSsFmv70ZVTdfRaY2+\nFSdJD9/cVwVFsfcLEckoHzCZTBgMPMwjy3MG4zHX64ZO4wNWs7xXx8Fw6ANCjPXkI6O7Pskp4uj4\nmPc//AiMbzTeqv/uSM/8eP/gdsyoddcfKXzsuVLKm5uSGFMYX+BC1fs3HMbBbDYjQBBKhbGwLAy1\n6WXUvWtRdx3GdORZwnQ8ZnpwyJfefYeb6+ckach8MfNKz2KPtQbdVYjAw2Zd12JdiyLBGIHqdwQd\nHnsWqhAnHK0ruH75gjKfcHB4wuZmzXA8JgwCSqWRQYZWAVZLui6g2TkCBS+ePkc0a6ajkIPDA5p2\nQ10WtE3D46fP+Lv/699HyZAo/OmyFgXw3wI/BP6rzz3/vwB/E/jP+8ff/dzz/yPwX+KPB28C3/6z\nXviv/s5vMxgnhOmM66sV1kFVa5wNehS34vh4xvNnz3jr3Td58fKcrvEMgaKqqdodUZzgJARxxHCY\nk2Upq+2WotzTtpIkjkjShMV0ymCQ+UKgJE3ToBtLUZW0xjCbz3yzShuchSBMOD57jcCdYZszzj99\nwfpmiQ012jna2gdc6KYlUJIgCmnaBtNpcI579+5jdMdms+XDDz/mZrMnTmKs7TBpQpKn3H/lPk3T\nUlZ7urbhYD5h+MohJ4fHVLudXxhCsLlZc315xexg3t+9vTbeOssgyVDSLwqjDZPhiHunZ0ynU4/N\nNsYv2rLE9n2Dsix7DYdA4kk4YRQxGg5QQcB+7zX2u+3Opw9rDdJr+o3R7Hd76qZhMhmjJNSVF2Ad\nTOfkee77PMZQVRWRiwl7t6LA93GE/OwuL/qiIvpGoVIBWvtewO2Rx+9dbkNLHUJ4gdHtzP8WSXY7\nevRWYuXBI6FC0ocUxAGBSHBF/ZkLUkoabdmst2w2a8b50A+5ncAahwokWhvKfYkKJVIpsizljTde\nJc1y0jgiimKEFKgwIkAyVBHOGK//UJK2aXBSI5TAuRYjATTW+RuVcwpcizGagJbjxdCLzZRmlIdk\nkcRaQxYq0jimsQZMTRz10m4rGc7mOJ2xK3dcPbokHw6YjY9QSnP/jTn5zSVltSOLfzoF4q8C/wbw\nx8B3++f+FvCfAX8H+Hf4bLQIvmj8nf5RA/8ef84x4fj4gHyY8PjFDZfXV4xnC4wTBLEfSRnrKIsN\nbzy4x9F8zPXL5zRNTRoq4ihnX29p2oLZ9AAlA9q6otpv6JzDWs14OOFwNiVJol6yG+Os9303nc9g\nrBs/fmyamq7tSNOEyXRClueAQmiNMUOy7IzVas/1ak+5XbJb+ztTHEYczGZsrWFxuGC/3VE3NeWu\nYj6ZM5/OGA4nfPM736WqGxAevR0Mci4vL2m7lvl8zHgwYpynTIc5QRAyjEO6zvisPSmJ79/HOUtX\nN/4sKHw02a7wRp0w9EWvbRre/+B9wKPI8zT1Y1d8ZPpkPKaua5LEh27oTqP7HUK7WhPHMZP5zC98\n7dOAX15cUNQ1SL9g67rz0xopSMLAMwhmU8bDCQezA4QQ7MuCumkIOkOa+a071vW+fw+ntdaLk2zf\n+OOuD+DNPdaYXnugMcYhpc9/ML1jEj6vRPQfMd9g9H4RL6P2EwiHoGo7VJ6g217ibA0iDGi6mm9+\n81votmYyHhOnGS0p0/k9rHEEQUCSxjihwaVkmZcOy8DbluM4xZqKttNIJEmSkyWZP8Zog446TNZh\nXEvb1bRtd2dnts4nQHfa79Ck0AwHIVKFSGEYZxFCGS5vlmSDIQovrRcYNuslXWcI44wszQmiGW2a\nURYFn54/Y7UreP21d5Aa5uGI+vIxh/d+Ogbi/82tMPxPX//sn/P8f9p//cTr+fOXvPnGG4wGU15e\n/hArIox1qCDk2fPn5FnEl3/ua6RKEqcx9++/gm78GVbrjg8//BApFe+8/ppXGjpDsd+xXu/obMfZ\n/IDZeAROs1/dUAUBu92e3b5gNJoghCQMI+q2pq73hGFIHMdIqbxmXhiqtkaKgHw4J83HHJ7CJ0+e\nc35xiTGOWiniSJBEsW+ySclivkAgCUPBxeVLvvKVrxKEKdYa3nvvRxR1hbAG5zSXV+dEgWWcRUQq\nIJRewSeFJBvl/pzfdSRJ4kd6o155ZyxREjCZTb3duNelI3wc2JNnTxkNvSehKkumsykvz89BCIbD\nEVkfHSekYhz6j8BqteJmtaIoS6SDJIruchGOj46J8xSpQPYSV+9iDEjiiDgKEE5QFIV/P9vGx6Rf\nrtjuS77287/M5ODUcw16elH/y8/0A05gjPbpWIHg4f1XOD064G//3d9ltyt7H4IvAEZrD6Pl872E\nz17rNowVQCYJpemoWk+jHo4GVNuKkQyRccDJ2YLtdt0vRkFiLUGa3Im26qZhu98ynY7BCkyrPasx\nClChZxg43fjAGWNQQvhUbHpbqADlAgQpaTrC9hmat4Wh6ToIlJdPd14yLm0/WtcaIyVRZFFSI4BI\nRTRNy83Fc4qiwjpBlCQgQ7J8xOnJfaL4dbQ1oPzxMB2OmIvXiAZ/QXkGIhjy5HzN5c01xgrOX1x4\n7LgKuL66YimMl9taS2ta6rZE9NtBrPGQSKX43nf/EOkgDiTSgeksQRqxX29IlaSzLWmWEqjA/yCs\nd3uNRiNGoxFDMaRuKp9wLP1sfLfb0XYdaZoyHI1AeQHJp0+fe3rxIGG3L2i7hpeXnzIcjLFItFPc\n3KwY5EOm0yGLxYKXFy8Z5SlKwDe+8iWurq957/33Gc+mzA9+jjyJmY/GxJF3Ixrj/f2+AdfcOQOF\nEL0rzUJP6i2LEhX6aULYG6UmkwlRHHF274zpeMx+vWW33bFcLhlPxsgooOpairqibVvq0j8WRUGW\n58ymU3COQHjT1OFiQZpnOCmpm4rLixeUuzVBmFHVvls+n02YjfoPWj/qS3qj0+X1DevNmnQwB+l3\nNB7+AZ3uNfT4sZ+XAEd98pPlwb1jT1WGHjLSqxGVwvbF7/aIANz1PvyxxENUWudH0xZH2xrqYYQO\nFYWSHM6m/M6/8M+h0HRN692UQchgNMRYSyAVYRAQhkHPtFS9LdtinaXrWrTukHg9i5CeDt22HUkc\n3JGS+rcFgSKOFI6IKIowsUYoLyEvi5KiuB2BQmsaQukIlSJKQ5zQGKcxdUWkIk6O51gD69UN6+2O\nB6++TmcgCFoGMkAGA8q2IEsSnHaM8qEf3/+E62dWDB4/P6dsOopygzXQ1A1N3eCcJYklTVOyXu1w\nugVnkUqgTUcQBATKp+oI69j0AE9pLcI5sjRlOBmy2q5YrQ+YzCeUTU2aJEigqWuKsiBJE6q6xuK3\ngtkgBxy77Y5d4XcK+6Jku9sxGY8wxvLehx/RNA0HB2NOjw8pysKjyUqFtoKy7mibjvl8Rhi9wsXV\nBUIFHsiJ4Pr6igev3Oedt9/icrNChSFHiwV5HGG6Fq2tF610HSr0YapRFOETh3zy0Ha79XcMY0jS\nlDAKwTmK3Y5/+O1vMRwN+frXv06kgt7HnjCZThlNZ2jd8eT5M9abLeA4mM+ZTiaMJxNGwxFKSYaD\noT+lG39236w3vP/+h6x3W6IoJs9SDmYz0jRjX9Ts9juqfcl5UZJmGZPJhNlgjlKKh/ctb7/zLq32\nvQFnoe2dj7c5gwDaGIz2acoISV113CxXHB0umJwesaueoZA0nQfH+P6AP2bcGpU+oyHZO2JyIASd\nNRgMrh9PtgDDlJuq4TiPePedL1DvPV/TaENRVTTWO0MhJAwjhFBcXl5yfHREVdeU5ZahGKGCjq7r\nCKXzUJN+OuP6ScGt1No5n6zkzUgRYeghskEYoZRPz87SDKMN3/7OdyialuPDQ84OD0j7vo0VBu0c\nwhqsMYyHKSqIGY2HnHaGKEnRzmJsSddCIgXDOEAJH8abhiFWGn7S9TMrBlfLl3RG4IztvwxVsUdK\n2Gz2hIEijkOcbREWyl2LkApH3Zs0QOF/6FIGCALyQY6NQlQoeXB2xmQ4RvR5eE1VA46DgwOm8zlO\nCmTo5b6r9Zonz57gML3qzBCoiGJf0HbaM+tHI+7du08QKMajAYvpBOccl8dXfPToEdvdkiiMWN1s\nKcsCbTXTgwOGoyGmbYiUYlfs+OCDD9mWe04f3CfPcr73h99hNhszyMcU2x2BhPF4cMcL8Fx9HxVf\nFMUdZCSKQg4ODu7oPtZY7h2fcP/+KUnvVBwMh1jrWK43lHVH3ZVIpXjwykNGoyFZmmC0RneawXjI\nMM/vvPCr1YrNZkOnDcPxhMY6Vps1FksUK8JQcXgw5ehwhlSSutFstluub5Z8/PFH/r1rO+pW86Wv\n/yKjwQRtP2v01XVDEPhYPWP9tj5K4h6VHtBZwT9474fYxRjz7Dmi9pMOYb0IyUuOb6XHvrhIKbDW\nW7ORDmk9hUkH4KRCKD/Sc6MMOcrIF3PWy2vSMKLr8yZDpbAobqnIIEiTnNFwjDGWZy9e8P0f/DFv\nfeELfPVLX/HGJxUQqBBherybc318HRhza6zyBVwpn8MAn0moIxn1C3xEU2t+8N5H/OBHjxikMePh\niLOTI+7dOyYfpKSRwnQe3yyVR8AnYYgTECLQVmFMh9UlkthDaJXCKUPT/AWNZC92K7rOIQgI44i2\na3HO0DQV+6Lw0uPDOYujOQEhF1croihhMh0zGY95/vQJJ4cLDg4mSCXY7UqqtvWa7uMFD85OSLLM\nh14slxhjODxccHx8zHK9weLo2pYXz5+yXq0Ie5uudZY0TlBByGwy9T8wJZgvDhjkA++QE75JNRz4\nEeZ0OuO99z9mtV7hpGG3r7EvHJ+ev+Tk5Jj7r9zDSUk+GBOqmIGecrQ4ZXYwYzzM+fu//3vc3PyA\nLE65f3ZMnnvb6Xg89oTjasVut2M2m6GUZDDIPXevjwvX1jLKB3z1nS/jhCFJEyywLve8eHGOUhHz\n+SHHyYEXGgl/7pbOoYQiTgKaqmR1dclms6FuW6bTKcNhjlQBMweHJ4ceQOIcoQCMp+Z0naEtKpo+\nKi0IQ/99SsX15aUH01qNcb3EuPfedm2HkgHPnj5lPB4zHI3BgZIKFYVcNS2Pttdso4D09IjyyQWy\n7XcCn5Mn3yoPfSHopxRKgnAIB7HycuJaBYhQYQOJlZJwPuP+219guVyRxxEyCGis9bmfSmGk5yU4\nB0oGDIY51hi0sZyfX/HK/QeowBOT4zj27I1Oo7W5G53eBtXq/mjhnKPrur4YfDYa9cAXA1Lxy7/w\nS1xe7/jwkyfcbAvMiys+ePyEh/ePWcxnhEqxmE45PDpC6A6HQ4h+ctFpwihhmIbe4UhL17QYAC2x\n3U+vM/inck2nI3TjUGGECAKstX31HLBwxygRMhikZEnI8cEhX/vaL5JkKQAvX77g3tmCcZay3a5o\n24ZXzk4YjkZkWYzC0FQlnTHcv3+f8XhM0weAFmVJHEc0nW/SJHHA8dGCNM3vGlNJTxEajIb+rldX\n1GVJ1zYYoxnkOYQxZVHStA3zgzl5/oKXFy9wWDptqaoQIQOur5eIMODhvVfY7ArOjo6xwNX1DU3X\nMRll/Kt/41/nj//o+3zn299iOJ4xHE1J0pTvf//7fWIP5HnOYJB51p9zrFYrkiT1WCwh6JzGSIEK\nIoxzWOsl1ydnZ6T5AF0Zit2auqwQUrFa3/D4yWOqumKY59w7PfFWWOnIsoQoUgwGPih2td6QJTHp\nYMZ2u+fq4gppIc/8uNAYQ9e2/ZSmwRnvsHzzzTdJBgNUnGONxgm/7W7apt8qC7773e9x//59vvju\nuyA8eWlbVzxq91zi6OKQ+OyEernHrfY/Rj263WV8XmdwSyhyeC/CJAzoRMAlEhsrbChpsOy6jg+e\nPeOdo58njAKy0L9vZd2A6l9fyZ5zGFK3Gm1axuMJb775FuPJGN15PkAU+e1+HxrVW+JbgkDd+S/g\nM96AT7JWNE1DXdd0XUcUROSjnJOTA15/cMrL5RU3ReWDcB20nWG12rK6WfO+eMp8NuZf+Zd/B5yh\n2O6pqq3vuyiP9A9QSOER7xbQtGj7FxR7lsQhRlqkCkizHCcUINjvdt4zpmLiNEVIyabsKJ6/REiH\nVL4Jc3J0gLAdlxcN1b4EIxgPh4QEbNYrgjCkrmourpdMxkPyLGO323J9dUUUxf5DrA2L+YIojnEW\nuq7B4vjk+VM+efaE+WzOfDghCgJmswnDNCYIc+qqodhvkVKx2ex47+OP2O53ZHlGmiZoY7l4eUUY\nJlR7x/VzS4Bgs12TxAFZPuLs9ISr6wuy0wWBCvjCW1/gF37+Fzh//oTtzTXf/H++TxAqmq7l9PiI\npml5+fKS2WzGdrv1op4kodjtGU+mtNrSmJZhmhGlCXVTst9uKPZ7gp5Z4IxmMBkgpGLfVKy2e1rd\nMJ5MyHOPbE+zhNlwTJoOaHXLdrvxacydYH3+gsdPnnNxsaRrWiaDnOlkSJzGZIMByjl2RcvNzQaj\nW+6fHhMPUm/K4TNCkZfQJt48JARpmiFEgDE+H/amqrkSLTvliFCYJGDy4IxV/QjRWOhMn2XB3XHh\nFvYhcGADpNRIp8nDCCcFa2VpVeDP9oDpap5cLHnv+ad87d4J0+GINIpJko5V5ZWK1vWpTdaw3eyJ\n44ijowVR9GWiKPR4fydI0wEIRYf240bhjUgW0ysk1N2kx+GPH8pxNy0qy5Kb+oZ0l5KmKa++eo9P\nz5/TffIclyReg5IkCOHt5nXTYQWEYcJgEDMZT3BWsN6sePny0jc/g8C/P0GEkAplNbH4C7oz+O3f\n+iuURcXl5RVRHNF0hovrG4JgyG5f0eqOthGk8YhO97NYLLrriJOQ7/+oQLcV+33BYDBAmZZv/aNv\nI0XogyR6yedolPP2W2+ymE7pupYoithsNiilWCwWdw06g6GqalrbcXJyzHg+I5CKPEoI+xZvsd0T\nxr7ITCYT8nTA9fUN69WaJE8Z5DnD0chz6t6o+eEP3mN1syFSIcubNcYYzl9ec3goSLOUxcGCyXjG\nZrNmOh7z8ccf88rpGQeTsYeN7laMx6M+wdneOf0ODw+J44j9dsMnjx/z/ge/R6UdBsEwy5GhZDjK\nGOUpu+2a2XiKNZZ9WRBnKfODBVmc8Fd+7dcJYsUgTUnDiKItieOAUT6i1Y6u08RxQpJlXFwt+ejR\nJ9xsNlR1R1l6HNunV9ekScRk6qPEjDYczKeMJ2PSOGI0ntCagEZ/pgsQCIT0FeLXf/3XiJPUh9ca\njYsjLulopPPZDkAnLFEuOTidsH5yhQisD3u1DikUtyaKW+uyRRAaOEmHDKXGSsUsEiyxaBVg+mSj\n67LgHz95xr/0W7+FXd6wXm24qUoIckTUs1Z7kErbauI4BriTe9f9nd31DUcvyfbuTWM7uq71OxYR\ngRMEUvUiK0B+xnG8lVPf7nhGoyG/+Ru/zltffMnl5TXrmxuwhkZb/z0oS5wErFfXZMkhzlqkVNws\nlz11W7BZ7zg8PGRbFEgZgbD/vxFrPzmw/Z/e9Z/8u//mXycJJePBgFfunzEceJlqUZU+n8DRe/UN\nxhk63fYdY+mZfEYwGg/56jvvcP/4mNn/196ZxkiWpWf5OXePiBt7RGZGLlWVtXVX9VbtnsXjGQ9j\nJLDnB7YsGWH/MiAZZCGDBJKN+QOIf0hICAkhIUAChBBCljECPNjI2GObnumenu6a3qqrq6qrcs/Y\nlxt3P/fw40RV94yn2xh7umsgXykVETczlefkiXviO9/3fu/b1MlCYRkowyLNtXtNEMwZj4eEwZJy\nuUy73cZ1PUqlEvP5nDiOEULr8A/GIy1qIQSiUMRBqM+2Kxrtw5JVo9GiXPZRCNySR29rk83tLda7\nXVqNJpVSCaGg5ldQRc5kMkECUrNMiOKl9k60HDyvvNJVlBimAKlzGdvnztFoN7VakWVp/rypG26q\n1SpZlhIsl2AapIVi7+CIJM2IkpgoiTEMgWUZJHFEHMUkcYQwBGXPpdNsUfY8qtUKSZYQLuYcHx1y\n9/49HNum6lUQaJWcQimWYUwuJbbjkmQ5cZwiC4XleAjT0EeUIkdmGb1ul3NbW2ysb1CvNzFNk2CZ\nkSudLMzShIODPYQwcFwXx3Z1KFtAbpu8uneHYxFTWAKk1JTiwsAMpvzUn/lhnr18hbdv3dF2ekJn\n6w1DPHKHKhRYhqRXttlybSyjwDIsDEeRmRZ5yUY6rnaSFgZxVjA67ZMtFoz7fZRl4pZ8CuGsVJRi\nFosZatX3EgRL3FWHpj4eCKpVF8+zkDJDoFau3Dl5niDzDEMYK7t0TVsXmlMNsDoeSxzHoVwuP3ps\nt1vsbG9xcfc8W71NwjBkOg9YhgmJDLlx40l8S1FkIZYBs9mE5TJEKUGtXmdjY4PZbEZ/PCJNMy11\nF4R87ZXXAf7+d7spP7HIYHjap9ls0N7sIIVCSLh+9TLLZEmwDPAsV/vLCS0GArqd1jAElmmhlEmS\nKe4fnGAYD7Pra1y/3iJNJFGcMhiesr7eQeYZfqlMb0N7BCg1RwH1RgPP80BpObC13gaGpdlyMsug\nUKS5FpecTme6aaje0G5O/T5ZluGWPDKpZaXINYdBFQXNZpPeRo/1bgdlmPzqf/l1XLeCcMtkhS6N\nHR2d4jia0mpaAtMUlCsuSQpr6xv89ldv0dvaoO6VSKOAer1GHCdIKTnpD9g73Ofw8IhlmHD1iSvc\nf3CfAkm9XtO06yim4ldW3fsFtmXSbjURFITLgHv3+yzTCEsIbGFSKWkH5NFkjO1WSNKUIFjQHwwo\nEDiuR5YkKJlT90sIFI7j0Gy38KsVSpbFZneDbruD6ToUWNy9d49FmGN6NrbSYW4YRliGjXLLZHmB\nVPqce2d0xEE6J7UUKtfMQSEVcjLlameNjVKJ1hObXP7FX+Cf/+t/x+FRH709SzzXIkljdjY3+Lm/\n+NO8+/I3GN69R5CCX+/whc88Q+/p5/mlf/pPMJ0yKANpwDzPuTud8aM//HlaRY4UsIgUsXzYBp0w\nnoxIkpBa3SfLEjzPe5Sf0DJjCbZZJY0ipFQUtoVSkjyNdS+EAlNo/oMuhdo6F+FovoHv+1jWioZv\n249k2bMsp8h1w9W169cRloPtnJBbLZ678TRNUXB6tIclIAxjGvUaXrmGZWuHKSkLjAKyIsN1LBqN\nx9Rrce/4iIOTU9I8Zmtni06tiYyXPH3lErs727zx9m2E7ZDmEsM0sC2X3IwRQpJnKUpBljnMpSIr\nFIUMmM+WKAzObW3i2hnVsk215mOYFuIhGcU0ifOMKIqoG4JU6kyvJt4ETKYTRqMhs8mYZrXOhQvn\nub9/yCIMubh7kWV4TLnkUav5rLfXODw8ZDabkaYpaZxSq9ep1Wo4ls2wP8AyDcrVKp99/jkWi4DB\ncMRkEVIplTEMxe3bt6hW67ieiS0UgWdSadR47/4dWq0GJa+GMAos2yCLl0xGQ9546zbzaEGcaJVm\n23RAFVzePYfnuJT9irbtjkJuv/MOy+WSil/m0sVLgMlyEXJ8fIwywfFsjAKa1Tpl32cxn7I/mRHn\nijzT/QyGYbDR28Aybc5tbnH10kXSLMUA6tUqlUoFr6SZiJbpkuaCwWmf08GQw8Ep1VaXTqlGUeTY\nloNS+kaSeYGUilTmJLbJvdEpoSEpTIHKLaTKMJICvyi42OlycG+fE+eUza1NfvZnfhxhuLx37wGj\n6YTe9gbXrlxlY62LX3J44lwPz7JwXY9lHJNREEnBF2/c4MX3DkhMQ4vPWIqTYMbv37zJn//cZ1Fp\nShAmCLTtmSxS4jhiOp3QaNbodNvIXFGsypayUKhcqyYZhWIZB8xmEQKxsmw3gJRCrSJawBbo96NS\nGKb1SIzFMAyiKCKOY8IwJMl0pKcKRVZIPN/l/MUt3SiXSFJTG98sZwsmswW5mHL1ievUqhWC0OTa\nE9cQhkmaZSyCQEvXfwQ+sWPCZ3/weYRlaTtq20QUYCilw62sYPf8LsdHJwhMHMshlxlCSMKlrv3X\nqjWSKCGOU7JVrV0VitkiIlgG9DY7VGs1gmW4EkrxWC5DxpMRhSpo1BskibYje8iYK5VKdDpddrbP\n8+STT7C13aPeaGKaFvsHhyyDgEq5QrxiKRZFwfraGr2NjUd24+aKrYiCcNUYtLm5BQharQZXr17G\nMCQHBw8QAhzP1WSXYMTo5C7Z/ADbDDFAuyVVHOIkI40ilIpotascnhzg18tUqjV2z1/AtE22t3tc\nv/4keZ5hCUP3TXTXaDQadDodBoMRy0Abxjqeh1cuMRiO6HTX6La7bK73YKVO5HgeYRjyzjvvMhhM\nmAcx+/vHPNh7wPHxIYP+KXW/woVz56lWq5q2bOg8gGl43Hz9Dq+89hb3D4447vcxDJNWu4Oz6vM/\nOT1e2cpZ5FKRCsHre3c5SOZktkBJMLAxVE4xGvFXf+onaEst5lHyfJq1Kk9fvUy33eDa5Uvs9Na5\nfnWXnfU1/JIDMsUrlTBdRzcGWSZ+ucJ6vcn21ha//r++Co6NsvQZWmtxCj517UlKQhGlBamEvMhZ\nBjOOjo9Jk5SNXg/TsFef7rp6YAjwSzYVz0CnRLSjkVIKZ+XEbNn2SiT3YX4AzQYUq1Zq1LflDgCU\nIYiyRCsfSYkqJCXPY727hl+p4tcqyCRm0h9wcnLCLAg46Q/obW5TrdZWpkQmjUYDQxgrYlfOf/3N\n34EPOSZ8YpvBz/z0TzKdzRHA0eEevfVNqtUKrmNRq1bpbW+ye2GHdrPG22+8gSoK0jQHbMplremW\nJDFSFkRJQpKmmIaW2EpzyeFRnzvv7XqDaXYAABr8SURBVDGczHE9n2q5hpQ5hdLagLoklmuPANej\nXC7jeWWiMMJ1XDrNNq7tAtpDYKPXo9VqsZgvqFcbnD9/gXq9Rr1ep9/vUyqV2draZn19XUcGtsU8\nWNDudnn11VexLYtSuayNQm2Xq1cvMZtPGfVH5FlKkgVEiz6WWpAlC8J4TEFGvIxoNppEYUQQTEmz\nDL9ao7O+QbPeotVsceHCeSrlMvOxLh2alonpOFR9n0ajzvHJEePhjGajy+bWFv3hEM8rMZ3OGIxG\nBIuAJEpxXRfLtpnMZuSq4NKly+xeukycZ4zGQ7JC0m43eeG5Z7n+xJNaeitPEYaBX61hey4vfv0b\nvPb6W0RZhunauCXN3aj4VWRe6LB7NMSw9QYSpCl78xF35wMmIkEoE6PQnH85G/ODF3a43mghipQn\nL19lY22L7d4GnuPiGA7lUplqrUq9WiVPMhbzBcmKWYptswwDgskc2zLJVU7Dcii1anzzzl0yU2AW\nBYYqCOOMxWTKC089gSwUizBBGCbhMmAyneH7Fer1hrZIWzUb6WN/QdkFixxZZKwKCSs/Bx36a6IY\nJGlCoaSWURM2hmVhWOYjdWsA27Ypl8vaVLdSYW1tnc1ej3PbO2xu9Oi0WvQ2NnA9ByEM7r97h2F/\nSJYXZLlkOpuxvXOOsl/BQBPIhsMh4/EYBXzlt34PHrecwfjkFBWnxCrj8pWr1Jq6t/1rL77IsD/g\n2RvPY1ia3vnlH/0S03lImikOT06YhxFRnGG73uqTUGnteFngeSVyKVksl6RJjOt6zBe3efWb36JZ\n93nyiUvU/Caua2mSUaHpyDJPuXnzm7z+xtskqaRSLrHRWWNjfYNytUSwXFAul7Qngu2y92CfUtml\nXq8Chi7NrfT7Hzx4wM2bN1lbW2M4GtHr9Wh3WpTLFSzLIgxDLMvg+WeeJY4Lfverv0MQx9imTyAy\nsiLBTo6Yzids9nY52I+REtrdDrJwCec5m501DEOf/cPFBM9xWO+08P0qpmOwDEIGgzGnp30Oj05Y\nJjGz995lMD7myuUrLIMQKSWT6QTHsnjt9W9S8jwq5TLVWo0wDnn79dfxKj7j6ZRGrcanPvVprly8\nSMmxEUoRpymLMGT/4JD7Dx5g2yaW5ZGrhFkQY8eeTtY2yziWS7msGY+W5RDFOQslGWUxt0cnTJX2\nnlSFJDcEKp6zgeCv/LkvUxMu0/kEUxlEyZLROKXTbrGMYhzbptlu0x8MSOKEer1OrdwkjBdk8YKq\nY9PeWNfCIyrBlJIXzvf4j0IyMnUzliklocy4PRzz2v4BLVvrU2a5olyq6GTcdPLIJAaUjoSUoOZX\nECQkaYxl6fKhNlFVLIMQx3bxSgLDBCk1FVtZgGWhpIElwDRXStWWFmOJolDzFpRC5O+Tuww0KWs4\nmeCVXap+nZ0LF5jP55yOJ9iux3Q2ZzIZMZlOyTLFeDwiTXJdYfHcj7wnP7HI4MZTV3j22WfZ6G2g\nZMFgOOLrX/s653bOc/XKFV26q5SxHZv5Yo7nGmxudanWPOIk4fjkWKsaCShWffY6EafD9IcZVK1x\nHyNMQZZLBsMxB8dHzOdzLNNGZgqZK/IkYzlf4Fd9DM9lOB7SbTfZ6K2hULzxxhu88sorHB0csXd/\njzt330XmGY7jUq7oKsXDxE+j0eCpp57i/PnzlEolxuPxqkFHS2ELIajXtZmm41hcvLCLbQvu338P\ny5CE0QQZL4iXE5RMSdOEQuS4doVXXr7HtWtPs3N+k5PTPWo1bSU+HY0pCvjq736VyWTM3nv7jEZz\nposIwxD41QrbO5ta4EIVlMpltrY36XTa+kjRbtFq1ImTiMViTqVSptlocOXSJW7c+AEMAePBgHF/\nwMnxMS+99BI3X/8W83nAdLagXK7i+zX8ep0kkyyWMWmqKbC64Wkdv1xByYJbd9/lTv+ESMDhfMw4\nC0mLAhMTwzJQQpEPh/yDn/95zvs15vM5pjJxXAvHtvFKZVzPo1araaGWPEXlKVKm1Gs+rmPhulpO\nzHFcrTREThIuGfRPWAYzClPw7umI3C6tHJgE82DJYj7l85/5DIvRDJRiMQ9JM11KTtOM2WzGoN9n\nMOwjlaJaLmOoDEdokoSODIxV2VDo9nKvpNOceUGaZaRpTpLmxHFGECxYLCZEoaaxL0OdM0iS+H2b\nN7T2Q5ZlLCO9GWklqpxayWa6mBNEIXGSUln5LtaqNQxT2+M12002Njbobfb4lV/77/C4RQbr6+va\ninxtDbu3yXQ6pVmt4bgux8fH3L9/HyUEi0WA5Vhs9bpEcUiS52xvdkjCkJLno4TBaf+Uql9e2U8F\niEJnrR829KRpRpZJYivDdRxc10IWS0aT2zoZWWR0GnUunNvCLnucTEZcvnqRZrXGzZvfpN5sYhiC\nS5cuceniZXa2djBNSJIlhilIsow3336d+XShjTB9n3q9ju/7tNttDMOgXC4ThiHzuV70o6MjbNuk\nXm9Sqfhcu/4EmztbfOXX/gO+Z5AmEscpOD3ex52NWVvfJgtzbtx4jvl8j4P7A0qmIAsWqCzh0oUe\nSZrx9NO7jEYLstTm8OSUAoPeWgfPsxAypdWoUq81uXz5Co6r7dgLVSAU5FlGulJALoqCKIpIkhQl\nJbvnz+M5Ho6tVZ42NnoURUF/NOTtd++xHE1xHJvz53dxS1UsYwqWfETZfUg8soSB36zz4L1bmCph\nQU4qCjBWpWShEJMpf/rakzx47TVuz2e0Gk0MBJVqiVarTQndLj0ajej3B0zHAz7/Q5+m5NQRZCxD\nzRRFmaSZFp1Nk5D5Yka6XJInCedsmzUlOVUZkTKwXAOvYmPVW/zW732D585d1Jt2o4bjGfr/oFJO\n+32+8fLLXLh4np0LF3RHpClJigTTKFAZUGg3ZsPUH0qmmeA4urRKHJOmCcIqtOJ1mmKa+ua2bRfT\ndqnVaziOg2W+H7nato1Snm5aSxNNtXY9TDPXHpv1OrYbYlqwt7fH7qWreJ7ulsUwOD0d0F3746kj\nf8/w3I1n8P0a33r1NebTCZcuXaLk6hpr7epVKn6VMIyJ4xDbcXAdg8sXrnBycoxh27RrFd56622S\nNMOrVEiTDEybQlhYloPr2poNuPKby6VCmBapUmRxxnyRIIRBuewCir3BkHkScX6rxwvPPsPe/ntM\nJ0POnduit7WFEJZ2K/ZcHNPCMBR+tcNiGTKaBQjLobu+TqvWoFqvPWo7HgwGHB0d0e/3qdfrdLsd\nDg8P6Ha7VKtdTk+PcV2XWbBAAZ3uGtvrdV5+8bcp+QLHBtNwGPcPqdVjjvYTvIpDkVex7Dq2YeOX\ny7z6zVd45saz7O5usNbtsH84pL2+RrPeolYq4Xk2XslZWZoLCimJguXKfBSyLFv9r/QGGoYhs9kU\nwzDx/Qqe64EqHjn2oLSfRBDELMOEZSJJC4u7948BQaPR1p2mRU6SpkRJTGFAkWvdyVxKlllM6pkY\nORhodmC0XHCu4vND165Ri3IGiUQBnmc/ksmxbZs333wDx3WolCtsb23hmFobMpfaGFVKgeNUUAri\nOOHwYA+VJqgiJ1rMyCPJBd9nslyi3Cq2zKnYZXyzRBEXmIZmqRbkxEnKfDZlOByTpbq6oIpCW68L\nsfobMZal6dkq10xZy3GRSmtM2rZNmmSEUUgmcyzHBqUl3E3DxHU8vEoZy3HJZU62zDBEQlGoleW8\njnjjOMYwFbZtIYSBSAPSJKbWqNJ12sRJzKA/4+tfe4kXPvU8tm0QLEKa9Sau+Zg6Ki2XAaPhgI2N\nDtVq5ZEVVJomTGczWvUa1UqZg5OI7lqHXrfL4d4BWZ5hGAmdms/nPnWD8XxGEEYc7p1qmqal5bO0\nqKrQ3YzlCggto61WXYC5pbv1gkBr1kkpGY6nCMPkirvJzs4FwihiOJzw4Bvfotlo8+kXfoB6vUYa\n61CtUAWmZfLee/d0VWF9jWrJx6/4ZFnG8ekJN2/eZHNzk6effpr5fE69Xqfd7rBYLFBK4PtVbMdE\nmbqOv3tui7Jj8exzn+J3f/832H9wG5KYREqC4BB7NGK9t6Xtts0lVb+FYwuuPXWFJA8Zjga062tc\nu3KeTBoUhcC1bAQ2eQHCEqgV0SWOY9I0JVqFprnUNN8kSZAyw/fLVColTd8utHqSEAbj8YT9/QPS\nTNLd2OLKlescD8akef7IZCVJU23oWkiEoQ1AMATCtjntDyjVauSmQklFLoRWQRISL4348S/+KVrK\nIZIJO1d3MQqJZwk63R533r3DvfceMBwNdS9DHPMjX/gCiyBEygzLtlbMwYKiSLBti0a9Buk248Ex\nh6eHrCQU2XQEfVXhAJNEKqIi52g8pFSqgihAGZRKFabTCUfHx7RbHUzT4Es/8iX8qk9RFAxHQzwV\nU3elplOjEMqgkAV5nOB4Lo7jMl8uicKUZRhpkpG7YiWaJklqMQ1C0jzXob3rkmcZFbeEbVoooXBc\nb2UdkFOpuPieh+k6DA8H+H6FTBmsr3UJl0v6xxNOT0+xXBchFK5XYhEsmc/mH3lPfmKbweH+Pqen\nJ1zYvUi33WUymWg7b1MbrtqWhWGa1Js1CiEIo5Bebx1D6PqwQnFycoIwBCXPo1Vtc9QfoCyLeRDi\n2AJD6N73NFnqTcC0SNNcOzYJMIXA87RgSBxFoEzefOsdbt16m0arqd8UyiBJFf3pKXcf/De21ts8\neeUi1aqPgWA6nbDZ3cGyLO7ee4CJSatZJ5NaxOOpZ55hvdvF9ysrDzzJ/Xvv0Wy3ePBgjyxLaTWr\nvPHW21y+fI2ZaTKbDXjn1l0EMUVRJ0kzavUqWb5EFT6n/YjR6YC1tTZZGLGcj9jodSjXmjx17UmW\n0wzDAiXg+KTP3TunNFobRLFkOpnoN1rFZ3d3l2pV26vLXGolIlg1z6SApoFneY5jl5CyQMqURr2K\nUlu8ffsub7x9C2GWiLNczxnNt8+ydNU4o63qKTSxDMtEmSAcS0uBU1BYJqblEA/nfHrzCZ7a3mWt\n5JEVCct0iZIp0Xyh240dD9dxEAg6a13WOh1N3rFd4kK7LDmOy8HBPmEUgswwUAgpMCyLWr3JMg4R\nMqVkS9YoOJ7MoVRhkSYcD/s8+3QPRYEQlm5mK5XodNaolDW/pJU1iZOEQkp9k2Ig8xlJrG3xxCr6\nkmibtjyXWLaD7Tp4xfusw4d9CWmWIQUrZ2d9nqp4HkmY4JU9bbwqpzoyMgS75zYJlwEP3npAEi3x\nyh7tVgvfKzGfTgjDkFZ3na+99DKmYXL1iWt0mw3dMfoR+MQ2A7dcotluE0RLZvcDNnobpHFCs9XS\najKJDlUNx2b/6AAhFY5lk8ucer2KbVs0m00qvnb3PT464eknd2l0u1T8GmkuV67E2m778PiU0/6Y\nQhZYhoGUWh1IGLrk5Dgu81lEkmqS0zLKwcowDIvCECA0r3wwmTN5+TUWwZKtrU2m4wl5npHLHMu2\nufHMk0ghqFRrzBYzZBzz5ptv0Wo1tRCpYWC59oqolOC6LvMgwK/4mAY01+oIFy4Jh1vvfIvr159H\n5Rl5obh/9x1AUjdc0lRycnxCu5XglW0sc4k1n7P3YJ9Wtc729nlG0z6Hx+9w/+gEa3BMb+Mivd4a\njuMQhRGD4Ql7B30++6nnKZX0zR4EAUIIatU6i2BOHC9xHIssT1YU3JKmvDaaVKo19k8m2n69Ukau\n8gzGSor8YWuuaaVkK7qwYZhI09LmIRgYmBRZQbZcUE0lZgxv3r6PuHKJhl+mWSqDlBQVnaBtdGD7\n/DbXnr5OmCQ0/RqvvvotfuDpy1RrVQaDU4JgwcHBHmkmcW0T17b1DYWiwMK0Sriex7pXxpIFiWHx\n1iImNkycksv61qZuP860SIljWzRbtZXtiXikSZDLHCUl6TJmOhpiGhJlmBi2oxuEhLZHjy2F60iE\nYT7Sr0xivZkUSpEXcHA6ZK3b1oKvhSTJcq2W5Fp0Wm1kmtM/PSEIAuLlmJLnMl8sdC+I0WXDtsny\niK3NDT7/QyWOBxPmScoiN3j1rXs0fZeNxzVn0G11aNWbLMOQYBmRJRmWpfXd8jyn22njlj1efvWb\nCGHQ9Gta1LNRp1IuPWoCkZnEr1bZutFDKkmYpsTxkiKXVB2bNBe89sbrvPXObaJYAhYCQ7v+Ku3o\nXMiCNNFagrVancpK+MO0jFWbaYSUOY5lYVtlCmXw5q27SEzSNCFJYlzPxcXkjdv3ef6Z68yCPifH\nh7QbLWp+lXK5jJIFURhgCEV/OCROE2azKdVaiSwOKdKEaLFkcHLM9s55rj/5E1imCcqiVmvQqNZ5\n89a3mE8CDBKkkyHzCK9kswgCyhUTtwyuuaTfl1Qbdc5tbfLa6+8iLJsouk28tsb5c7sUqqDmN7l1\n+yWevfYEi8UCIQxc16FUqiOEQans6RxCIVGF0hFVUVAUOvTsbqxz/+iU8TQgiJagoFQuPSqhCiWx\nLRPPK+HZ2h3LMLTbkCkEahnj2Q6KAltmvHDpAiq1+cZb73LrnQd0a1Uu7m5zdfcC3dYahkqJoxCh\ne3pplKvYGLz1zj0+d+MJRsMRQbDAsnR0kMtI8x0cD7vkEkdLLW+nBCYKA4uNskWMy63T21jVGpZj\no5Q2aFHKfKS2nGcS19U0YtO0Vuf3lNFkSElAtdogXM50a3IcI8zikSq0rjJ5eCulqFLJIQhMoigm\nzjJyqTjtT1nrdMjSnCzPWMoQoQrGozGTyZS6X6HbbbOz1cP1tATchlL4lRqe4xIvJiyCOW65il+r\ncaHe4sF+H7mIiMOYQKY8CKOPvCc/uRZm26UwC5IwptNs4fv+SsFHK/ocHB5zdLiP43k0G3V67TX6\n/T7T6ZTxeEyn3QYhMEybLFWczAYcHe3T296h2+2S59p0ZLmYgyqolMsIlaAKoamkQmlNRQukIUBo\nAku9UcXzPJIkZT6NCYIFSmhRjVK1jqHFt1dU1IJcykdqO0oVBGHMiy+/RqPmcmFnC8dyaXa6VOs1\nVK5NRxvNBsPhiGrV58H9ewSBR7IMaTY6bGxs8sXPfJFcZbz89Rd55tmnkTJj794dRCF59tozhLOI\nF1/5KmbLxDBy8lBimHUKlbGMxiAVURQQ3pUoUaFZ67CITbJ0wcnxlPHomCtPPIthQpzEzBcz8lzi\nejpbbVgmjmmQJ5qUpS1fFKWSi+d4ZDIjjGPqNZ/e1jrSGLIMEm1rJ7U2oGUKrly6QKNa0l6Lnruq\nKghKpomZZpSEoEiW1Bybp86f5/L6Ol5lg7wQui0dxYNJwIPRTWwT1lpNzm/vYGYh8/mYzfU2VsnC\ndiwMx6HTbdPqtBmNxrjeHMcto4QO2xEmdc8njhMMpcjyHCVM0iij45V54fJFXjo8IZeS6XTGdreG\nYWrykFyJtpjG+7LsILTtXaVCMFpwf+89TAMs18K0DITIwQDLtigSRZpJqArdO1KrsrbWZDSZk80W\neJ4+0haZ3mxhJfyaFqSqYDZdYKAouw6WoXCVdsYqCslgMCGKlniuSaYUk/4xxycT8kJrW1QrFfyS\ni+c4OPYfz3j1ewZdt00ZDIfkhWJ/f59GQ0uJBUFAr9ej1e1SrvmIXJ+xut0uWZ7THwwYzXWIdHh4\nTLfbYff8Fls7nyVOUoIgYDqbMhwPSPKUTqdBIVOWywTbcvF9n4rvkxeK4XhEFCd4XhVZKJZhQJxE\nyFxRKpeo1WukafyInz4YDrEdlyxLdQY+0592CJ27iOOY4WTB/n7IG2/e0bbejoljCj77mU/R63aw\nXY9r159iOh3y4EGZnd42YRDRbLaIooi9/Qe89c5Ndna2uHf/Fjs7l6g3KzRbNUrlGoYqUWk2eeWl\n3yDPQlyzgGyMMlIMZwSZSxJl9DZ3yTKHTlsR90eoIiFL58TJgps359T9DsvljMV8gsJgsQywVixO\nVSh2NrdxvRKT6ZT9fa0IlUtJq7NOq9NlPF9QSINqrUl1lXPTXZYmWRYxnY/pNNfJZYYqSmRJQoE+\ncrm2wyQOKbsWDdumgkEWp1TLkrrvYzaqLONoZapTaL+IpODl1+9pNSTgeDKi1/ZZRIrx0oA8IQqn\nyEKxfe4SnuuSZRH1WhOEyXg6wbYtsixnOJpgmgbBMuD08IRN26FhGSRZxng2ga72ApIyJ1ouCRZz\nWs0WWZat2pTBsnWbfJzlmI5HLhPN/08VwsgxhIlpqUf8kzDWHhTBYkkhp0iphXwLtManaRmkUao1\nC9JEywGqgjgVJHGCTAvW1to4ThnTKnCdEjs7aygh2Ds+4PVvvc1ouqRQJlIW2KbFeBrQaDZp+D6u\n99E5g4/+7vcOrwHPfUJ/+wxn+P8ZvwN86ZMexBnOcIYznOEMZzjDGc5whjN8CH4MuAW8C/zSJzyW\nPwru877n5EMz2Rbwm8Bt4DeAj5aS+fjxr9CO2a9/4NpHjfmX0etyC/izH9MY/zB8tzn8PeAAvRav\nAl/+wPcexznsAP8TeBN4A/jrq+vfb2vxJwoTuANcQFu9vwZc+yQH9EfAe+jF+yD+IfCLq+e/hDak\nfZzww8DzfPuN9GFjvo5eDxu9Pnf4cJ/NjxPfbQ5/F/ib3+VnH9c5bAA3Vs994B30+/77bS3+RPE5\n4CsfeP23V1/fD3gPaH/HtVvA+ur5xur144YLfPuN9GFj/mW+PVL7CvCD3+vB/R/iAn9wM/hb3+Xn\nHuc5fBD/CW1c/Fitxce922wB+x94fbC69v0ABfwP4BvAz62uraNDWFaP69/l9x43fNiYN9Hr8RCP\n+9r8AnAT+Je8H15/P8zhAjrS+TqP2Vp83JuB+pj/3p8kPo9exC8Dfw0dvn4Qiu+/+f1hY35c5/PP\ngF106H0M/KOP+NnHaQ4+8CvA3wAW3/G9T3wtPu7N4BCdTHmIHb59B3yccbx6HAC/CnwGvZtvrK73\ngP4nMK4/Kj5szN+5Ntura48j+rx/8/wL9FrA4z0HG70R/Fv0MQEes7X4uDeDbwBX0KGSA/wF4D9/\nzGP4v0EZqK6eV9DZ3dfRY//Z1fWf5f1FfpzxYWP+z8BPo9dlF71OL/2B33480PvA85/k/XzC4zoH\ngT7OvAX84w9c/39hLf5Y+DI6m3oHnSj5fsAuOrv7Gro09HDcLXQe4XEtLf574AhI0bmav8RHj/nv\noNflFvCjH+tIPxzfOYe/DPwbdJn3JvoG+mCu5nGcwxeAAv3+eVgO/TG+/9biDGc4wxnOcIYznOEM\nZzjDGc5whjOc4QxnOMMZznCGM5zhDGc4wxnOcIYznOEMZzjDGd7H/waAuS0nHax3iAAAAABJRU5E\nrkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1812,7 +228,7 @@ ], "source": [ "% matplotlib inline\n", - "from pascal_multilabel_with_datalayer_tools import SimpleTransformer\n", + "from tools import SimpleTransformer\n", "from copy import copy\n", "transformer = SimpleTransformer() # this is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", "\n", @@ -1824,7 +240,7 @@ "for idx, val in enumerate(gtlist):\n", " if val:\n", " print classes[idx] + ',',\n", - "\n" + "print ''" ] }, { @@ -1836,20 +252,11 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 13.9 s, sys: 363 ms, total: 14.2 s\n", - "Wall time: 14.2 s\n" - ] - } - ], + "outputs": [], "source": [ "%%time\n", "solver.step(10)" @@ -1866,22 +273,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BatchAdvancer initialized with 5717 images\n", - "PascalMultilabelDataLayerAsync initialized for split: train, with bs:128, im_shape:[227, 227].\n", - "BatchAdvancer initialized with 5823 images\n", - "PascalMultilabelDataLayerAsync initialized for split: val, with bs:128, im_shape:[227, 227].\n" - ] - } - ], + "outputs": [], "source": [ "workdir = './pascal_multilabel_with_datalayer'\n", "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet_async.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet_async.prototxt\"))\n", @@ -1914,20 +310,11 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 15.7 s, sys: 476 ms, total: 16.1 s\n", - "Wall time: 16 s\n" - ] - } - ], + "outputs": [], "source": [ "%%time\n", "solver_async.step(10)" @@ -1949,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1958,6 +345,7 @@ "def hamming_distance(gt, est):\n", " return sum([1 for (g, e) in zip(gt, est) if g == e]) / float(len(gt))\n", "\n", + "\n", "def check_accuracy(net, num_batches, batch_size = 128):\n", " acc = 0.0\n", " for t in range(num_batches):\n", @@ -1978,23 +366,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "itt:0 accuracy:0.9430\n", - "itt:100 accuracy:0.9511\n", - "itt:200 accuracy:0.9573\n", - "itt:300 accuracy:0.9600\n", - "itt:400 accuracy:0.9583\n" - ] - } - ], + "outputs": [], "source": [ "for itt in range(500):\n", " solver_async.step(1)\n", @@ -2011,26 +387,18 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Baseline accuracy:0.9243\n" - ] - } - ], + "outputs": [], "source": [ "def check_baseline_accuracy(net, num_batches, batch_size = 128):\n", " acc = 0.0\n", " for t in range(num_batches):\n", " net.forward()\n", " gts = net.blobs['label'].data\n", - " ests = np.zeros((batch_size, 20))\n", + " ests = np.zeros((batch_size, len(gts)))\n", " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", " acc += hamming_distance(gt, est)\n", " return acc / (num_batches * batch_size)\n", @@ -2049,2059 +417,14 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ground truth: bird, \n", - "Estimated: bird,\n" - ] - }, - { - "data": { - "image/png": [ - "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\n", - "ogUA/wOLS9SCjyKcPwAAAABJRU5ErkJggg==\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "% matplotlib inline\n", - "from pascal_multilabel_with_datalayer_tutorial_tools import SimpleTransformer\n", + "from tools import SimpleTransformer\n", "from copy import copy\n", "transformer = SimpleTransformer() # this is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", "\n", @@ -4123,6 +446,15 @@ " if val == 1:\n", " print classes[idx] + ','," ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -4144,7 +476,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/examples/pycaffe/layers/pascal_multilabel_datalayers.py b/examples/pycaffe/layers/pascal_multilabel_datalayers.py index 036d16787..f0039eff4 100644 --- a/examples/pycaffe/layers/pascal_multilabel_datalayers.py +++ b/examples/pycaffe/layers/pascal_multilabel_datalayers.py @@ -1,5 +1,10 @@ # imports -import json, time, pickle, scipy.misc, skimage.io, caffe +import json +import time +import pickle +import scipy.misc +import skimage.io +import caffe import numpy as np import os.path as osp @@ -9,12 +14,14 @@ from threading import Thread from PIL import Image -from pascal_multilabel_with_datalayer_tools import SimpleTransformer +from tools import SimpleTransformer class PascalMultilabelDataLayerSync(caffe.Layer): + """ - This is a simple syncronous datalayer for training a multilabel model on PASCAL. + This is a simple syncronous datalayer for training a multilabel model on + PASCAL. """ def setup(self, bottom, top): @@ -22,78 +29,60 @@ def setup(self, bottom, top): self.top_names = ['data', 'label'] # === Read input parameters === - + # params is a python dictionary with layer parameters. - params = eval(self.param_str) - - # do some simple checks that we have the parameters we need. - assert 'batch_size' in params.keys(), 'Params must include batch size.' - assert 'split' in params.keys(), 'Params must include split (train, val, or test).' - assert 'pascal_root' in params.keys(), 'Params must include pascal_root.' - assert 'im_shape' in params.keys(), 'Params must include im_shape.' - + params = eval(self.param_str) + + # Check the paramameters for validity. + check_params(params) + # store input as class variables - self.batch_size = params['batch_size'] - self.im_shape = params['im_shape'] - self.pascal_root = params['pascal_root'] - self.im_shape = params['im_shape'] - self.indexlist = [line.rstrip('\n') for line in open(osp.join(self.pascal_root, 'ImageSets/Main', params['split'] + '.txt'))] #get list of image indexes. - self._cur = 0 # current image - self.transformer = SimpleTransformer() #this class does some simple data-manipulations + self.batch_size = params['batch_size'] + + # Create a batch loader to load the images. + self.batch_loader = BatchLoader(params, None) # === reshape tops === - top[0].reshape(self.batch_size, 3, self.im_shape[0], self.im_shape[1]) # since we use a fixed input image size, we can shape the data layer once. Else, we'd have to do it in the reshape call. + # since we use a fixed input image size, we can shape the data layer + # once. Else, we'd have to do it in the reshape call. + top[0].reshape( + self.batch_size, 3, params['im_shape'][0], params['im_shape'][1]) + # Note the 20 channels (because PASCAL has 20 classes.) top[1].reshape(self.batch_size, 20) - print "PascalMultilabelDataLayerSync initialized for split: {}, with bs:{}, im_shape:{}, and {} images.".format(params['split'], params['batch_size'], params['im_shape'], len(self.indexlist)) - - - def reshape(self, bottom, top): - """ no need to reshape each time sine the input is fixed size (rows and columns) """ - pass + print_info("PascalMultilabelDataLayerSync", params) def forward(self, bottom, top): """ - Load data. + Load data. """ for itt in range(self.batch_size): - - # Did we finish an epoch? - if self._cur == len(self.indexlist): - self._cur = 0 - shuffle(self.indexlist) - - # Load an image - index = self.indexlist[self._cur] # Get the image index - im = np.asarray(Image.open(osp.join(self.pascal_root, 'JPEGImages', index + '.jpg'))) # load image - im = scipy.misc.imresize(im, self.im_shape) # resize - - # do a simple horizontal flip as data augmentation - flip = np.random.choice(2)*2-1 - im = im[:, ::flip, :] - - # Load and prepare ground truth - multilabel = np.zeros(20).astype(np.float32) - anns = load_pascal_annotation(index, self.pascal_root) - for label in anns['gt_classes']: - # in the multilabel problem we don't care how MANY instances there are of each class. Only if they are present. - multilabel[label - 1] = 1 # The "-1" is b/c we are not interested in the background class. + # Use the batch loader to load the next image. + im, multilabel = self.batch_loader.load_next_image() # Add directly to the caffe data layer - top[0].data[itt, ...] = self.transformer.preprocess(im) + top[0].data[itt, ...] = im top[1].data[itt, ...] = multilabel - self._cur += 1 - def backward(self, top, propagate_down, bottom): - """ this layer does not back propagate """ + def reshape(self, bottom, top): + """ + There is no need to reshape the data, since the input is of fixed size + (rows and columns) + """ pass - + def backward(self, top, propagate_down, bottom): + """ + These layers does not back propagate + """ + pass class PascalMultilabelDataLayerAsync(caffe.Layer): + """ - This is a simple asyncronous datalayer for training a multilabel model on PASCAL. + This is a simple asyncronous datalayer for training a multilabel model on + PASCAL. """ def setup(self, bottom, top): @@ -101,51 +90,68 @@ def setup(self, bottom, top): self.top_names = ['data', 'label'] # === Read input parameters === - + # params is a python dictionary with layer parameters. - params = eval(self.param_str) + params = eval(self.param_str) - # do some simple checks that we have the parameters we need. - assert 'batch_size' in params.keys(), 'Params must include batch size.' - assert 'split' in params.keys(), 'Params must include split (train, val, or test).' - assert 'pascal_root' in params.keys(), 'Params must include pascal_root.' - assert 'im_shape' in params.keys(), 'Params must include im_shape.' + # Check the paramameters for validity. + check_params(params) - self.batch_size = params['batch_size'] # we need to store this as a local variable. + # we need to store this as a local variable. + self.batch_size = params['batch_size'] - # === We are going to do the actual data processing in a seperate, helperclass, called BatchAdvancer. So let's forward the parame to that class === + # === We are going to do the actual data processing in a seperate, + # helperclass, called BatchLoader. So let's forward the parameters + # to that class === self.thread_result = {} self.thread = None - self.batch_advancer = BatchAdvancer(self.thread_result, params) - self.dispatch_worker() # Let it start fetching data right away. + self.batch_loader = BatchLoader(params, self.thread_result) + self.dispatch_worker() # Let it start fetching data right away. # === reshape tops === - top[0].reshape(self.batch_size, 3, params['im_shape'][0], params['im_shape'][1]) # since we use a fixed input image size, we can shape the data layer once. Else, we'd have to do it in the reshape call. - top[1].reshape(self.batch_size, 20) # Note the 20 channels (because PASCAL has 20 classes.) - - print "PascalMultilabelDataLayerAsync initialized for split: {}, with bs:{}, im_shape:{}.".format(params['split'], params['batch_size'], params['im_shape']) - - + # since we use a fixed input image size, we can shape the data layer + # once. Else, we'd have to do it in the reshape call. + top[0].reshape( + self.batch_size, 3, params['im_shape'][0], params['im_shape'][1]) + # Note the 20 channels (because PASCAL has 20 classes.) + top[1].reshape(self.batch_size, 20) - def reshape(self, bottom, top): - """ no need to reshape each time sine the input is fixed size (rows and columns) """ - pass + print_info("PascalMultilabelDataLayerAsync", params) def forward(self, bottom, top): - """ this is the forward pass, where we load the data into the blobs. Since we run the BatchAdvance asynchronously, we just wait for it, and then copy """ + """ + This is the forward pass, where we load the data into the blobs. + Since we run the BatchLoader asynchronously, we just wait for it, + and then copy + """ if self.thread is not None: - self.join_worker() # wait until it is done. + self.join_worker() # wait until it is done. for top_index, name in zip(range(len(top)), self.top_names): for i in range(self.batch_size): - top[top_index].data[i, ...] = self.thread_result[name][i] #Copy the already-prepared data to caffe. - - self.dispatch_worker() # let's go again while the GPU process this batch. + # Copy the already-prepared data to caffe. + top[top_index].data[i, ...] = self.thread_result[name][i] + + # let's go again while the GPU process this batch. + self.dispatch_worker() + + def reshape(self, bottom, top): + """ + There is no need to reshape the data, since the input is of fixed size + (rows and columns) + """ + pass + + def backward(self, top, propagate_down, bottom): + """ + These layers does not back propagate + """ + pass def dispatch_worker(self): assert self.thread is None - self.thread = Thread(target=self.batch_advancer) + self.thread = Thread(target=self.batch_loader) self.thread.start() def join_worker(self): @@ -153,72 +159,96 @@ def join_worker(self): self.thread.join() self.thread = None - def backward(self, top, propagate_down, bottom): - """ this layer does not back propagate """ - pass +class BatchLoader(object): -class BatchAdvancer(): """ - This is the class that is run asynchronously and actually does the work. + This class abstracts away the loading of images. + Images can either be loaded singly, or in a batch. The latter is used for + the asyncronous data layer to preload batches while other processing is + performed. """ - def __init__(self, result, params): + + def __init__(self, params, result): self.result = result - self.batch_size = params['batch_size'] - self.im_shape = params['im_shape'] + self.batch_size = params['batch_size'] self.pascal_root = params['pascal_root'] self.im_shape = params['im_shape'] - self.indexlist = [line.rstrip('\n') for line in open(osp.join(self.pascal_root, 'ImageSets/Main', params['split'] + '.txt'))] #get list of image indexes. - self._cur = 0 # current image - self.transformer = SimpleTransformer() #this class does some simple data-manipulations + # get list of image indexes. + list_file = params['split'] + '.txt' + self.indexlist = [line.rstrip('\n') for line in open( + osp.join(self.pascal_root, 'ImageSets/Main', list_file))] + self._cur = 0 # current image + # this class does some simple data-manipulations + self.transformer = SimpleTransformer() - print "BatchAdvancer initialized with {} images".format(len(self.indexlist)) + print "BatchLoader initialized with {} images".format( + len(self.indexlist)) def __call__(self): """ - This does the same stuff as the forward layer of the synchronous layer. Exept that we store the data and labels in the result dictionary (as lists of length batchsize). + This does the same stuff as the forward layer of the synchronous layer. + Exept that we store the data and labels in the result dictionary + (as lists of length batchsize). """ self.result['data'] = [] self.result['label'] = [] for itt in range(self.batch_size): - # Did we finish an epoch? - if self._cur == len(self.indexlist): - self._cur = 0 - shuffle(self.indexlist) - - # Load an image - index = self.indexlist[self._cur] # Get the image index - im = np.asarray(Image.open(osp.join(self.pascal_root, 'JPEGImages', index + '.jpg'))) # load image - im = scipy.misc.imresize(im, self.im_shape) # resize - - # do a simple horizontal flip as data augmentation - flip = np.random.choice(2)*2-1 - im = im[:, ::flip, :] - - # Load and prepare ground truth - multilabel = np.zeros(20).astype(np.float32) - anns = load_pascal_annotation(index, self.pascal_root) - for label in anns['gt_classes']: - # in the multilabel problem we don't care how MANY instances there are of each class. Only if they are present. - multilabel[label - 1] = 1 # The "-1" is b/c we are not interested in the background class. + # Get the next image in the batch + im, multilabel = self.load_next_image() # Store in a result list. - self.result['data'].append(self.transformer.preprocess(im)) + self.result['data'].append(im) self.result['label'].append(multilabel) - self._cur += 1 + + def load_next_image(self): + """ + Load the next image in a batch. + """ + # Did we finish an epoch? + if self._cur == len(self.indexlist): + self._cur = 0 + shuffle(self.indexlist) + + # Load an image + index = self.indexlist[self._cur] # Get the image index + image_file_name = index + '.jpg' + im = np.asarray(Image.open( + osp.join(self.pascal_root, 'JPEGImages', image_file_name))) + im = scipy.misc.imresize(im, self.im_shape) # resize + + # do a simple horizontal flip as data augmentation + flip = np.random.choice(2)*2-1 + im = im[:, ::flip, :] + + # Load and prepare ground truth + multilabel = np.zeros(20).astype(np.float32) + anns = load_pascal_annotation(index, self.pascal_root) + for label in anns['gt_classes']: + # in the multilabel problem we don't care how MANY instances + # there are of each class. Only if they are present. + # The "-1" is b/c we are not interested in the background + # class. + multilabel[label - 1] = 1 + + self._cur += 1 + return self.transformer.preprocess(im), multilabel def load_pascal_annotation(index, pascal_root): """ - This code is borrowed from Ross Girshick's FAST-RCNN code (https://github.com/rbgirshick/fast-rcnn). It parses the PASCAL .xml metadata files. See publication for further details: (http://arxiv.org/abs/1504.08083). + This code is borrowed from Ross Girshick's FAST-RCNN code + (https://github.com/rbgirshick/fast-rcnn). + It parses the PASCAL .xml metadata files. + See publication for further details: (http://arxiv.org/abs/1504.08083). Thanks Ross! """ - classes = ('__background__', # always index 0 - 'aeroplane', 'bicycle', 'bird', 'boat', - 'bottle', 'bus', 'car', 'cat', 'chair', + classes = ('__background__', # always index 0 + 'aeroplane', 'bicycle', 'bird', 'boat', + 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor') @@ -226,6 +256,7 @@ def load_pascal_annotation(index, pascal_root): filename = osp.join(pascal_root, 'Annotations', index + '.xml') # print 'Loading: {}'.format(filename) + def get_data_from_tag(node, tag): return node.getElementsByTagName(tag)[0].childNodes[0].data @@ -247,16 +278,38 @@ def get_data_from_tag(node, tag): x2 = float(get_data_from_tag(obj, 'xmax')) - 1 y2 = float(get_data_from_tag(obj, 'ymax')) - 1 cls = class_to_ind[ - str(get_data_from_tag(obj, "name")).lower().strip()] + str(get_data_from_tag(obj, "name")).lower().strip()] boxes[ix, :] = [x1, y1, x2, y2] gt_classes[ix] = cls overlaps[ix, cls] = 1.0 overlaps = scipy.sparse.csr_matrix(overlaps) - return {'boxes' : boxes, + return {'boxes': boxes, 'gt_classes': gt_classes, - 'gt_overlaps' : overlaps, - 'flipped' : False, + 'gt_overlaps': overlaps, + 'flipped': False, 'index': index} + +def check_params(params): + """ + A utility function to check the parameters for the data layers. + """ + assert 'split' in params.keys( + ), 'Params must include split (train, val, or test).' + + required = ['batch_size', 'pascal_root', 'im_shape'] + for r in required: + assert r in params.keys(), 'Params must include {}'.format(r) + + +def print_info(name, params): + """ + Ouput some info regarding the class + """ + print "{} initialized for split: {}, with bs: {}, im_shape: {}.".format( + name, + params['split'], + params['batch_size'], + params['im_shape']) diff --git a/examples/pycaffe/tools.py b/examples/pycaffe/tools.py index 8e658b29a..88b1834af 100644 --- a/examples/pycaffe/tools.py +++ b/examples/pycaffe/tools.py @@ -1,11 +1,14 @@ import numpy as np + class SimpleTransformer: + """ - SimpleTransformer is a simple class for preprocessing and deprocessing images for caffe. + SimpleTransformer is a simple class for preprocessing and deprocessing + images for caffe. """ - def __init__(self, mean = [128, 128, 128]): + def __init__(self, mean=[128, 128, 128]): self.mean = np.array(mean, dtype=np.float32) self.scale = 1.0 @@ -23,15 +26,16 @@ def set_scale(self, scale): def preprocess(self, im): """ - preprocess() emulate the pre-processing occuring in the vgg16 caffe prototxt. + preprocess() emulate the pre-processing occuring in the vgg16 caffe + prototxt. """ - + im = np.float32(im) - im = im[:, :, ::-1] #change to BGR + im = im[:, :, ::-1] # change to BGR im -= self.mean im *= self.scale im = im.transpose((2, 0, 1)) - + return im def deprocess(self, im): @@ -41,33 +45,38 @@ def deprocess(self, im): im = im.transpose(1, 2, 0) im /= self.scale im += self.mean - im = im[:, :, ::-1] #change to RGB - + im = im[:, :, ::-1] # change to RGB + return np.uint8(im) + class CaffeSolver: + """ - Caffesolver is a class for creating a solver.prototxt file. It sets default values and can export a solver parameter file. - Note that all parameters are stored as strings. Strings variables are stored as strings in strings. + Caffesolver is a class for creating a solver.prototxt file. It sets default + values and can export a solver parameter file. + Note that all parameters are stored as strings. Strings variables are + stored as strings in strings. """ - def __init__(self, testnet_prototxt_path = "testnet.prototxt", trainnet_prototxt_path = "trainnet.prototxt", debug = False): - + def __init__(self, testnet_prototxt_path="testnet.prototxt", + trainnet_prototxt_path="trainnet.prototxt", debug=False): + self.sp = {} # critical: self.sp['base_lr'] = '0.001' self.sp['momentum'] = '0.9' - + # speed: self.sp['test_iter'] = '100' self.sp['test_interval'] = '250' - + # looks: self.sp['display'] = '25' self.sp['snapshot'] = '2500' - self.sp['snapshot_prefix'] = '"snapshot"' # string withing a string! - + self.sp['snapshot_prefix'] = '"snapshot"' # string withing a string! + # learning rate policy self.sp['lr_policy'] = '"fixed"' @@ -80,8 +89,8 @@ def __init__(self, testnet_prototxt_path = "testnet.prototxt", trainnet_prototxt # pretty much never change these. self.sp['max_iter'] = '100000' self.sp['test_initialization'] = 'false' - self.sp['average_loss'] = '25' # this has to do with the display. - self.sp['iter_size'] = '1' #this is for accumulating gradients + self.sp['average_loss'] = '25' # this has to do with the display. + self.sp['iter_size'] = '1' # this is for accumulating gradients if (debug): self.sp['max_iter'] = '12' @@ -91,7 +100,8 @@ def __init__(self, testnet_prototxt_path = "testnet.prototxt", trainnet_prototxt def add_from_file(self, filepath): """ - Reads a caffe solver prototxt file and updates the Caffesolver instance parameters. + Reads a caffe solver prototxt file and updates the Caffesolver + instance parameters. """ with open(filepath, 'r') as f: for line in f: From 9f8f7775a890b693964049c5154ad95bfe944029 Mon Sep 17 00:00:00 2001 From: Oscar Beijbom Date: Fri, 26 Feb 2016 19:17:21 -0800 Subject: [PATCH 188/458] Finalized tutorial. Removed asyncronous layer. --- .../04-pascal_multilabel_with_datalayer.ipynb | 484 ------------------ .../pascal-multilabel-with-datalayer.ipynb | 478 +++++++++++++++++ .../layers/pascal_multilabel_datalayers.py | 99 ---- 3 files changed, 478 insertions(+), 583 deletions(-) delete mode 100644 examples/04-pascal_multilabel_with_datalayer.ipynb create mode 100644 examples/pascal-multilabel-with-datalayer.ipynb diff --git a/examples/04-pascal_multilabel_with_datalayer.ipynb b/examples/04-pascal_multilabel_with_datalayer.ipynb deleted file mode 100644 index 43aa539d5..000000000 --- a/examples/04-pascal_multilabel_with_datalayer.ipynb +++ /dev/null @@ -1,484 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Multilabel classification on PASCAL using python data-layers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this tutorial we will do multi-label classification on PASCAL VOC 2012.\n", - "\n", - "Caffe supports multi-label classification through the SigmoidCrossEntropyLoss layer, and we will load data using a Python data layer. Data could also be provided through HDF5 or LMDB data layers, but the python data layer provides endless flexibility, so that's what we will use." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Preliminaries\n", - "\n", - "First, make sure you compile caffe using \n", - "WITH_PYTHON_LAYER := 1\n", - "\n", - "Second, download PASCAL VOC 2012. It's available here: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html\n", - "\n", - "Third, set paths and import modules:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# import some modules\n", - "import sys, os, caffe\n", - "import numpy as np\n", - "import os.path as osp\n", - "import matplotlib.pyplot as plt\n", - "\n", - "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", - "# set root directory, e.g:\n", - "pascal_root = os.path.join(caffe_root, 'data/pascal/VOC2012')\n", - "\n", - "sys.path.append(\"pycaffe/layers\") # the datalayers we will use are in this directory.\n", - "sys.path.append(\"pycaffe\") # the tools file is in this folder\n", - "\n", - "import tools #this contains some tools that we need\n", - "\n", - "# make sure we have the caffenet weight downloaded.\n", - "if not os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", - " print(\"Downloading pre-trained CaffeNet model...\")\n", - " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet\n", - "\n", - "# initialize caffe for gpu mode\n", - "caffe.set_mode_gpu()\n", - "caffe.set_device(0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's start by defining the nets using caffe.NetSpec. Note how we used the SigmoidCrossEntropyLoss layer. This is the right loss for multilabel classification. Also note how the data layer is defined." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from caffe import layers as L, params as P, to_proto\n", - "from caffe.proto import caffe_pb2\n", - "\n", - "# helper function for common structures\n", - "def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):\n", - " conv = L.Convolution(bottom, kernel_size=ks, stride=stride,\n", - " num_output=nout, pad=pad, group=group)\n", - " return conv, L.ReLU(conv, in_place=True)\n", - "\n", - "# another helper function\n", - "def fc_relu(bottom, nout):\n", - " fc = L.InnerProduct(bottom, num_output=nout)\n", - " return fc, L.ReLU(fc, in_place=True)\n", - "\n", - "# yet another helper function\n", - "def max_pool(bottom, ks, stride=1):\n", - " return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)\n", - "\n", - "# main netspec wrapper\n", - "def caffenet_multilabel(data_layer_params, datalayer):\n", - " # setup the python data layer \n", - " n = caffe.NetSpec()\n", - " n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer, \n", - " ntop = 2, param_str=str(data_layer_params))\n", - "\n", - " # the net itself\n", - " n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4)\n", - " n.pool1 = max_pool(n.relu1, 3, stride=2)\n", - " n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)\n", - " n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2)\n", - " n.pool2 = max_pool(n.relu2, 3, stride=2)\n", - " n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)\n", - " n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1)\n", - " n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2)\n", - " n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2)\n", - " n.pool5 = max_pool(n.relu5, 3, stride=2)\n", - " n.fc6, n.relu6 = fc_relu(n.pool5, 4096)\n", - " n.drop6 = L.Dropout(n.relu6, in_place=True)\n", - " n.fc7, n.relu7 = fc_relu(n.drop6, 4096)\n", - " n.drop7 = L.Dropout(n.relu7, in_place=True)\n", - " n.score = L.InnerProduct(n.drop7, num_output=20)\n", - " n.loss = L.SigmoidCrossEntropyLoss(n.score, n.label)\n", - " \n", - " return str(n.to_proto())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can crete net and solver prototxts. For the solver, we use the CaffeSolver class from the \"tools\" module" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "workdir = './pascal_multilabel_with_datalayer'\n", - "if not os.path.isdir(workdir):\n", - " os.makedirs(workdir)\n", - "\n", - "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet.prototxt\"))\n", - "solverprototxt.sp['display'] = \"1\"\n", - "solverprototxt.sp['base_lr'] = \"0.0001\"\n", - "solverprototxt.write(osp.join(workdir, 'solver.prototxt'))\n", - "\n", - "# write train and val nets.\n", - "with open(osp.join(workdir, 'trainnet.prototxt'), 'w') as f:\n", - " # provide parameters to the data layer as a python dictionary. Easy as pie!\n", - " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'train', pascal_root = pascal_root)\n", - " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))\n", - "\n", - "with open(osp.join(workdir, 'valnet.prototxt'), 'w') as f:\n", - " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'val', pascal_root = pascal_root)\n", - " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This net uses a python datalayer: PascalMultilabelDataLayerSync, which is defined in ./pycaffe/layers/pascal_multilabel_datalayers.py. Take a look at the code. It's quite straight-forward, and gives you full control over data and labels.\n", - "\n", - "\n", - "Now we can load the caffe solver as usual." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BatchLoader initialized with 5717 images\n", - "PascalMultilabelDataLayerSync initialized for split: train, with bs: 128, im_shape: [227, 227].\n", - "BatchLoader initialized with 5823 images\n", - "PascalMultilabelDataLayerSync initialized for split: val, with bs: 128, im_shape: [227, 227].\n" - ] - } - ], - "source": [ - "solver = caffe.SGDSolver(osp.join(workdir, 'solver.prototxt'))\n", - "solver.net.copy_from(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", - "solver.test_nets[0].share_with(solver.net)\n", - "solver.step(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's check the data we have loaded." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ground truth: horse, person, \n" - ] - }, - { - "data": { - "image/png": "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\nIm02n1uIrR+TZTlS8iJHsSzLFzkXZVmilKIoEmu4s93q/8/nczsMkAKpbOZBWRZMphObFBN3iMKI\n9x+fIIRHXmQoaZVgiAq9E+MITVkUIDWHt47QTY3WmuUqYbVecHZxyWgwxHMlZVPx7PiU56cXOHgU\nZYMfh7z2ygNevneEriqaynLtlOva2La6Js0TFss5s/mMKIyI44i9vT18zyYHL9drzi/HzOYrHCXt\nzUBgx5COh3J9jG7QQiGMAuOwvzPg5NnzjYCm5OoywRiF5/t4rmK1WiClxPcDAj+g3WkjhOFHP/kI\nIaFuNNvbOzx5eoYvHU4+PacoC+I4Yms0otI1W6Mhg0GX119/lb39PaI4oi7tQvZ8n+FwC9AoKdF1\nRZZmzFYrzi4uub6ekueVbZoZTV01lGXFDz/5iL/6y+9gTEO32+LWrX1GoxFbwz7DXp84jnA8B5Si\nNlBUNivQr3x0o0EawMJoEeD7Po5UdmQm7XWXRlCtE165c8Tehz9msSoxG8FO5Sv+1Z//Cbf/xX/D\nURhT5SmIhlY7xmjDfLFiPJlydnaG47r4rRaTmxtuxmPqqqDVanEzmbK/t4uSksc3M779/ruUvsIx\ndsrQNDXn40v8+ZLtra9bW7356bW+rmuWiyWXl5es12u6/R6tOLbQlE+f8foXXqKpSnSlkZ5kvlqy\nv7/DvTtHfPDxY/SLY8d+XGlBaQBsb23RikLQDbXWrFZLsizDd128zcbOiwLX8zg7O6OoK7aGQyar\nCWGoXmRRzOdzlFIM+n2SPOdkIz/u9rp0OjGOkn9/F/6d53M7DJyNNbRpLOg0y1Yo5dOKYzqdPmUN\ndVPx6SdPWK8TgiDGcw1ZPsA52mI9m3L33iOePT/D9wN009CKfIb9A87Ozsnzku3RFnlZkOUVYRAi\nGoiDgJ3dEbvDIU1ebpBWVodutNk0uyRhEGDo4ChFEPibL8WnKCqyoiQtNGfXS84vr3Ac2N/dwqkq\nqrJia2tAu7tRPZYlwvXQwFtvPOKTjz+mqi1FSDv22ljW1p+RZGs7gkLiegHKdfF9F+UrcASBH3Bz\nM7UTFQFxFKNche97iE+fkucl+wc79LotTk5P+Pov/SJCGHZ39hj2ehgMTVmgXHcD7RBIz0fKlDxJ\naEUeb77xGltbfRxpKMuK5WLBKw92+epbL3F5dcXl9YT5fMHF+SXXV9d0uz3b4RZwcGuP24cHtCIH\n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\nrkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "% matplotlib inline\n", - "from tools import SimpleTransformer\n", - "from copy import copy\n", - "transformer = SimpleTransformer() # this is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", - "\n", - "image_index = 0 #Lets look at the first image in the batch.\n", - "plt.imshow(transformer.deprocess(copy(solver.net.blobs['data'].data[image_index, ...])))\n", - "gtlist = solver.net.blobs['label'].data[image_index, ...].astype(np.int)\n", - "classes = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')\n", - "print 'Ground truth: ',\n", - "for idx, val in enumerate(gtlist):\n", - " if val:\n", - " print classes[idx] + ',',\n", - "print ''" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alright. So far so good. We now have a working python datalayer that we can customize to our needs, e.g. by adding more data-augmentation or modify for other data-sets or tasks. Next, we will look at how to make it more efficient. The PascalMultilabelDataLayerSync loads the data syncronously, meaning that the GPU sits idle while the CPU loads the data. Fortunately, some simple multi-threading solves this problem. Let's do that next. First, though, lets measure the step time of this syncronous layer. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%time\n", - "solver.step(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Now, let's setup solvers and nets with the PascalMultilabelDataLayerAsync layer. Take a look at the code in ./pycaffe/layers/pascal_multilabel_datalayers.py, it's not hard." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "workdir = './pascal_multilabel_with_datalayer'\n", - "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet_async.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet_async.prototxt\"))\n", - "solverprototxt.sp['display'] = \"1\"\n", - "solverprototxt.sp['base_lr'] = \"0.0001\"\n", - "solverprototxt.write(osp.join(workdir, 'solver_async.prototxt'))\n", - "\n", - "# write train and val nets.\n", - "with open(osp.join(workdir, 'trainnet_async.prototxt'), 'w') as f:\n", - " # provide parameters to the data layer as a python dictionary. Easy as pie!\n", - " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'train', pascal_root = pascal_root)\n", - " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerAsync'))\n", - "\n", - "with open(osp.join(workdir, 'valnet_async.prototxt'), 'w') as f:\n", - " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'val', pascal_root = pascal_root)\n", - " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerAsync'))\n", - "\n", - "solver_async = caffe.SGDSolver(osp.join(workdir, 'solver_async.prototxt'))\n", - "solver_async.net.copy_from(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", - "solver_async.test_nets[0].share_with(solver_async.net)\n", - "solver_async.step(1)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Check runtime ..." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%%time\n", - "solver_async.step(10)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alright, that is a modest runtime gain. However, as you data pre-processing becomes more complicated, this difference will increase." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's train the net for a while. First, though, we need some way to measure the accuracy. Hamming distance is commonly used in multilabel problems. We also need a simple test loop. Let's write that down. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def hamming_distance(gt, est):\n", - " return sum([1 for (g, e) in zip(gt, est) if g == e]) / float(len(gt))\n", - "\n", - "\n", - "def check_accuracy(net, num_batches, batch_size = 128):\n", - " acc = 0.0\n", - " for t in range(num_batches):\n", - " net.forward()\n", - " gts = net.blobs['label'].data\n", - " ests = net.blobs['score'].data > 0\n", - " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", - " acc += hamming_distance(gt, est)\n", - " return acc / (num_batches * batch_size)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alright, let's train." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "for itt in range(500):\n", - " solver_async.step(1)\n", - " if itt % 100 == 0:\n", - " print 'itt:{}'.format(itt), 'accuracy:{0:.4f}'.format(check_accuracy(solver_async.test_nets[0], 10))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Great, accuracy is increasing, and it seems to converge rather quickly. It may seem strange that it starts off so high but it is because the ground truth is sparse. There are 20 classes in PASCAL, and usually only one or two is present. So predicting all zeros yields rather high accuracy. Let's check to make sure." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def check_baseline_accuracy(net, num_batches, batch_size = 128):\n", - " acc = 0.0\n", - " for t in range(num_batches):\n", - " net.forward()\n", - " gts = net.blobs['label'].data\n", - " ests = np.zeros((batch_size, len(gts)))\n", - " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", - " acc += hamming_distance(gt, est)\n", - " return acc / (num_batches * batch_size)\n", - "\n", - "print 'Baseline accuracy:{0:.4f}'.format(check_baseline_accuracy(solver_async.test_nets[0], 5823/128))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Let's wrap this up by looking at some qualitative results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "% matplotlib inline\n", - "from tools import SimpleTransformer\n", - "from copy import copy\n", - "transformer = SimpleTransformer() # this is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", - "\n", - "image_index = 0 #Lets look at the first image in the batch.\n", - "test_net = solver_async.test_nets[0]\n", - "test_net.forward()\n", - "plt.imshow(transformer.deprocess(copy(test_net.blobs['data'].data[image_index, ...])))\n", - "gtlist = test_net.blobs['label'].data[image_index, ...].astype(np.int)\n", - "estlist = test_net.blobs['score'].data[image_index, ...] > 0\n", - "classes = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')\n", - "print 'Ground truth: ',\n", - "for idx, val in enumerate(gtlist):\n", - " if val:\n", - " print classes[idx] + ',',\n", - "\n", - "print '' \n", - "print 'Estimated: ',\n", - "for idx, val in enumerate(estlist):\n", - " if val == 1:\n", - " print classes[idx] + ','," - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "description": "Multilabel classification on PASCAL using python data-layers.", - "example_name": "PASCAL Multilabel with python datalayer", - "include_in_docs": true, - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/examples/pascal-multilabel-with-datalayer.ipynb b/examples/pascal-multilabel-with-datalayer.ipynb new file mode 100644 index 000000000..fd66114d8 --- /dev/null +++ b/examples/pascal-multilabel-with-datalayer.ipynb @@ -0,0 +1,478 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Multilabel classification on PASCAL using python data-layers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this tutorial we will do multilabel classification on PASCAL VOC 2012.\n", + "\n", + "Multilabel classification is a generalization of multiclass classification, where each instance (image) can belong to many classes. For example, an image may both belong to a \"beach\" category and a \"vacation pictures\" category. In multiclass classification, on the other hand, each image belongs to a single class.\n", + "\n", + "Caffe supports multilabel classification through the SigmoidCrossEntropyLoss layer, and we will load data using a Python data layer. Data could also be provided through HDF5 or LMDB data layers, but the python data layer provides endless flexibility, so that's what we will use." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Preliminaries\n", + "\n", + "* First, make sure you compile caffe using\n", + "WITH_PYTHON_LAYER := 1\n", + "\n", + "* Second, download PASCAL VOC 2012. It's available here: http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html\n", + "\n", + "* Third, import modules:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import sys \n", + "import os\n", + "\n", + "import numpy as np\n", + "import os.path as osp\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from copy import copy\n", + "\n", + "% matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (6, 6)\n", + "\n", + "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", + "sys.path.append(caffe_root + 'python')\n", + "import caffe # If you get \"No module named _caffe\", either you have not built pycaffe or you have the wrong path.\n", + "\n", + "from caffe import layers as L, params as P # Shortcuts to define the net prototxt.\n", + "\n", + "sys.path.append(\"pycaffe/layers\") # the datalayers we will use are in this directory.\n", + "sys.path.append(\"pycaffe\") # the tools file is in this folder\n", + "\n", + "import tools #this contains some tools that we need" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Fourth, set data directories and initialize caffe" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# set data root directory, e.g:\n", + "pascal_root = osp.join(caffe_root, 'data/pascal/VOC2012')\n", + "\n", + "# these are the PASCAL classes, we'll need them later.\n", + "classes = np.asarray(['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'])\n", + "\n", + "# make sure we have the caffenet weight downloaded.\n", + "if not os.path.isfile(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'):\n", + " print(\"Downloading pre-trained CaffeNet model...\")\n", + " !../scripts/download_model_binary.py ../models/bvlc_reference_caffenet\n", + "\n", + "# initialize caffe for gpu mode\n", + "caffe.set_mode_gpu()\n", + "caffe.set_device(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Define network prototxts\n", + "\n", + "* Let's start by defining the nets using caffe.NetSpec. Note how we used the SigmoidCrossEntropyLoss layer. This is the right loss for multilabel classification. Also note how the data layer is defined." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# helper function for common structures\n", + "def conv_relu(bottom, ks, nout, stride=1, pad=0, group=1):\n", + " conv = L.Convolution(bottom, kernel_size=ks, stride=stride,\n", + " num_output=nout, pad=pad, group=group)\n", + " return conv, L.ReLU(conv, in_place=True)\n", + "\n", + "# another helper function\n", + "def fc_relu(bottom, nout):\n", + " fc = L.InnerProduct(bottom, num_output=nout)\n", + " return fc, L.ReLU(fc, in_place=True)\n", + "\n", + "# yet another helper function\n", + "def max_pool(bottom, ks, stride=1):\n", + " return L.Pooling(bottom, pool=P.Pooling.MAX, kernel_size=ks, stride=stride)\n", + "\n", + "# main netspec wrapper\n", + "def caffenet_multilabel(data_layer_params, datalayer):\n", + " # setup the python data layer \n", + " n = caffe.NetSpec()\n", + " n.data, n.label = L.Python(module = 'pascal_multilabel_datalayers', layer = datalayer, \n", + " ntop = 2, param_str=str(data_layer_params))\n", + "\n", + " # the net itself\n", + " n.conv1, n.relu1 = conv_relu(n.data, 11, 96, stride=4)\n", + " n.pool1 = max_pool(n.relu1, 3, stride=2)\n", + " n.norm1 = L.LRN(n.pool1, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv2, n.relu2 = conv_relu(n.norm1, 5, 256, pad=2, group=2)\n", + " n.pool2 = max_pool(n.relu2, 3, stride=2)\n", + " n.norm2 = L.LRN(n.pool2, local_size=5, alpha=1e-4, beta=0.75)\n", + " n.conv3, n.relu3 = conv_relu(n.norm2, 3, 384, pad=1)\n", + " n.conv4, n.relu4 = conv_relu(n.relu3, 3, 384, pad=1, group=2)\n", + " n.conv5, n.relu5 = conv_relu(n.relu4, 3, 256, pad=1, group=2)\n", + " n.pool5 = max_pool(n.relu5, 3, stride=2)\n", + " n.fc6, n.relu6 = fc_relu(n.pool5, 4096)\n", + " n.drop6 = L.Dropout(n.relu6, in_place=True)\n", + " n.fc7, n.relu7 = fc_relu(n.drop6, 4096)\n", + " n.drop7 = L.Dropout(n.relu7, in_place=True)\n", + " n.score = L.InnerProduct(n.drop7, num_output=20)\n", + " n.loss = L.SigmoidCrossEntropyLoss(n.score, n.label)\n", + " \n", + " return str(n.to_proto())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Write nets and solver files\n", + "\n", + "* Now we can crete net and solver prototxts. For the solver, we use the CaffeSolver class from the \"tools\" module" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "workdir = './pascal_multilabel_with_datalayer'\n", + "if not os.path.isdir(workdir):\n", + " os.makedirs(workdir)\n", + "\n", + "solverprototxt = tools.CaffeSolver(trainnet_prototxt_path = osp.join(workdir, \"trainnet.prototxt\"), testnet_prototxt_path = osp.join(workdir, \"valnet.prototxt\"))\n", + "solverprototxt.sp['display'] = \"1\"\n", + "solverprototxt.sp['base_lr'] = \"0.0001\"\n", + "solverprototxt.write(osp.join(workdir, 'solver.prototxt'))\n", + "\n", + "# write train net.\n", + "with open(osp.join(workdir, 'trainnet.prototxt'), 'w') as f:\n", + " # provide parameters to the data layer as a python dictionary. Easy as pie!\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'train', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))\n", + "\n", + "# write validation net.\n", + "with open(osp.join(workdir, 'valnet.prototxt'), 'w') as f:\n", + " data_layer_params = dict(batch_size = 128, im_shape = [227, 227], split = 'val', pascal_root = pascal_root)\n", + " f.write(caffenet_multilabel(data_layer_params, 'PascalMultilabelDataLayerSync'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* This net uses a python datalayer: 'PascalMultilabelDataLayerSync', which is defined in './pycaffe/layers/pascal_multilabel_datalayers.py'. \n", + "\n", + "* Take a look at the code. It's quite straight-forward, and gives you full control over data and labels.\n", + "\n", + "* Now we can load the caffe solver as usual." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BatchLoader initialized with 5717 images\n", + "PascalMultilabelDataLayerSync initialized for split: train, with bs: 128, im_shape: [227, 227].\n", + "BatchLoader initialized with 5823 images\n", + "PascalMultilabelDataLayerSync initialized for split: val, with bs: 128, im_shape: [227, 227].\n" + ] + } + ], + "source": [ + "solver = caffe.SGDSolver(osp.join(workdir, 'solver.prototxt'))\n", + "solver.net.copy_from(caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", + "solver.test_nets[0].share_with(solver.net)\n", + "solver.step(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Let's check the data we have loaded." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nx67imaaZ79+/8/r2qp7touzpTz3vHw+K8by8/Mpjmpi3AMctS/qoRReSJIdSpal5n3lItNnefTdi\nsXmoaHZNv3iPyKnSOxlWd07kbdaIWqTkhC2ZVm9/KWUdNjoMYji1xUzImaBS3BDECKrozWFeAnOX\nGPrEqbNcxw5rWzUDM7Te45t8zFQMYvhmjSzH3aeJIP4Uh5rFmEzjRZrXNA3bGiCvmJA4W8fZOVwR\nz6OYxOQNJ/Ob/WQMHHMsw956yvpyM3obkpqekB629eIljzW63q+e9EUHnMVIazDp4NQYknSDxGLD\nON02LTozKseSWMhR5OlGNo/3Fufecv0sS9bBFllzYMmaUuU8XdernNdRise7XtuTjfyP0o3v7x/c\nHguLGo6J4m6Pdksafu3URiAQU9ZCbnbNx7/X1M+LFZVKpVJ5Pv7YE7FSqVQqT0Mt5JVKpfLk1EJe\nqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk\n1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVKpfLk1EJeqVQqT04t5JVK\npfLk1EJeqVQqT04t5JVKpfLk/AsNeRHC6zkzzAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "transformer = tools.SimpleTransformer() # This is simply to add back the bias, re-shuffle the color channels to RGB, and so on...\n", + "image_index = 0 # First image in the batch.\n", + "plt.figure()\n", + "plt.imshow(transformer.deprocess(copy(solver.net.blobs['data'].data[image_index, ...])))\n", + "gtlist = solver.net.blobs['label'].data[image_index, ...].astype(np.int)\n", + "plt.title('GT: {}'.format(classes[np.where(gtlist)]))\n", + "plt.axis('off');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* NOTE: we are readin the image from the data layer, so the resolution is lower than the original PASCAL image." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. Train a net.\n", + "\n", + "* Let's train the net. First, though, we need some way to measure the accuracy. Hamming distance is commonly used in multilabel problems. We also need a simple test loop. Let's write that down. " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def hamming_distance(gt, est):\n", + " return sum([1 for (g, e) in zip(gt, est) if g == e]) / float(len(gt))\n", + "\n", + "def check_accuracy(net, num_batches, batch_size = 128):\n", + " acc = 0.0\n", + " for t in range(num_batches):\n", + " net.forward()\n", + " gts = net.blobs['label'].data\n", + " ests = net.blobs['score'].data > 0\n", + " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", + " acc += hamming_distance(gt, est)\n", + " return acc / (num_batches * batch_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Alright, now let's train for a while" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "itt:100 accuracy:0.9526\n", + "itt:200 accuracy:0.9563\n", + "itt:300 accuracy:0.9582\n", + "itt:400 accuracy:0.9586\n", + "itt:500 accuracy:0.9597\n", + "itt:600 accuracy:0.9591\n" + ] + } + ], + "source": [ + "for itt in range(6):\n", + " solver.step(100)\n", + " print 'itt:{:3d}'.format((itt + 1) * 100), 'accuracy:{0:.4f}'.format(check_accuracy(solver.test_nets[0], 50))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Great, the accuracy is increasing, and it seems to converge rather quickly. It may seem strange that it starts off so high but it is because the ground truth is sparse. There are 20 classes in PASCAL, and usually only one or two is present. So predicting all zeros yields rather high accuracy. Let's check to make sure." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Baseline accuracy:0.9238\n" + ] + } + ], + "source": [ + "def check_baseline_accuracy(net, num_batches, batch_size = 128):\n", + " acc = 0.0\n", + " for t in range(num_batches):\n", + " net.forward()\n", + " gts = net.blobs['label'].data\n", + " ests = np.zeros((batch_size, len(gts)))\n", + " for gt, est in zip(gts, ests): #for each ground truth and estimated label vector\n", + " acc += hamming_distance(gt, est)\n", + " return acc / (num_batches * batch_size)\n", + "\n", + "print 'Baseline accuracy:{0:.4f}'.format(check_baseline_accuracy(solver.test_nets[0], 5823/128))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### 6. Look at some prediction results" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nyqvrC+7XC3ZbCL170iwX5WnISRNraOqSdxdXXE/nFKqfTLbeJC7fe8eh79h3Pa1zOC9WdVmUNGUN\nUXqirtoDt4c9nw47PrV72hjZx8jeRKErZdiOiYs9Ce0xxEx20VBCNSQuk3UpczlMkgQRhgrFZBkL\nva9znt2uJfSOoiooq4oqGqGtJQl9mZtcbo94QLKWFucDm82Bm7slf/30wP22o3cxhw7M6HbS2mRO\nbP17xuUaQ2qKkT9TBW/0IjBq7Ul5MqspSmHsJEaKAubTCeenc67OTzg7mdBUBaWVMpVCqz+jSbh1\nkjGuIZDh2IdopHgniIJM4cdYl2rQi0IwKbm974YcgJFk5nRac3Ux5+3LS15en3N5OqeubG4SkhpY\nyOdrXDcJctfTdR2HzvG43HD3uKYo16x2EfaRrpPmE2VpaZqSF89OePnskhdX5zJvzuPaHuc8JkSa\nYDhZlhRd2siD30w6o2YIgZFs1Sz9xkaYSfqWFMLBREqDlMTbSGuCwJBtBBM0XGOG3RkjxkVwgVgK\nn3Bd1VzFGW/6jo+rNVttjzdWLYVJLJriPljViimFnUMrMVE3mByCHTzafCuDVM4qbThqY+Gf1nXY\nx095mL4e5usig+M4juM4juP4bQ37//+S4ziO4ziO4/h7HkdBfhzHcRzH8RsfR0F+HMdxHMfxGx9H\nQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+\nHMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzH\ncRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ecx/EbH0dBfhzHcRzH8RsfR0F+HMdxHMfxGx9HQX4cx3Ec\nx/EbH0dBfhzHcRzH8Rsf/y8kbXZODisB/AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAGJCAYAAACXcbjTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvVuobeuW3/Vr3633Mcacc132WnufS9VJqiqpHMsQIimE\nMlEjQRGCRBC8gA/RoBjw8qB4AYXkQaNGE598CRqiiKgkIIKQpBSNxEQQSUGClKeqck6d2mfvtddt\nXsYYvffv1nxofcy1zjn7VJ267rVT47+Z7DnH6KOPr/f+fe1r7d/+rS1RVc4444wzzvj8wn3WAzjj\njDPOOONXh7MhP+OMM874nONsyM8444wzPuc4G/IzzjjjjM85zob8jDPOOONzjrMhP+OMM874nONs\nyM8444wzPuc4G/IzftNBRH6/iHQRuRWRf+RT3v+t6/ufuj5E5N8RkT/zy/i+73k+EfkjInK3vv/D\nv7wrOeMMw9mQn/FOQ0T+aRH5v0RkLyLPROSvi8gfFZGvrK/dvWUI3/779/4Sp/5QVa9U9S+t3/OH\nReTPfj9jUtU/oar/wq/imv43EfkH13P9F6p6+Ss91xlnwNmQn/EOQ0T+deA/A/4j4ANV/QD4l4Df\nC3ykqheqevmWIfxdp79V9a9+RmMO38dhuv6cccavCc6G/Ix3EiLyAPjjwB9V1b+gqgcAVf0bqvrP\nqmr5Nf7KTzOuf0REPhSRb62bymlsf0xE/uv19xNt8s+LyDeAnxQRJyL/iYg8F5GfBf7gr/FYzzjj\n2/D9eA9nnPFZ4CeAAfgffyUfFpH/Cfg/VPU//n6OV9U/B/y573j59wO/DfgR4H8Vkb+hqv8Ln+5N\n/wPAV9f3/kXMeP9u4Aj8hbc/o6r/0C/rYs4445fA2SM/413FE+CFqvbTCyLyf4rIaxE5isjf/4t9\nWFX/se/XiP8i+OOqOqnq3wT+LPDPnIbyKcf+sfXYGfgngT+tqh+q6mvgP/genznjjF8TnA35Ge8q\nXgJP3lZ6qOrfp6qP1vd+IwzjN9/6/eeBL32fx37xUz57xhm/bjgb8jPeVfw1YAH+8c9wDF/5jt8/\n/EWOfZtu+ehTPnvGGb9uOBvyM95JqOo1luz8z0XknxCRyzWJ+LuB3W/QMP5dEdmIyN8N/GHgv/s+\nP/ffA/+qiHxZRB4B//av1wDPOAPOyc4z3mGo6p8UkQ+BfxP4r4AD8HPr33/tOw9/+w8R+Z+Bv6Kq\n/+Gv9OuB/x34Gczh+ZOq+pNvvaffcezb+DPAjwI/BdwA/ymWOP1UiMiZPz/jVwU5/wtBZ/xmw5oo\n/YvADPxTqvqXP8Ox/HPAn8IUOj+mql//rMZyxucXZ0N+xhlnnPE5x5kjP+OMM874nONsyM8444wz\nPuc4G/IzzjjjjM85zob8jDM4t7Y94/ONsyE/453Ep7SlvRORf2N976GI/Jci8tFqeH9aRP4tEfnB\nc2vbM34z4qwjP+Ndxu9S1Z/7lNf/NLABvqqqNyLyO4DfqarfBC5OB4lI/0XO8RsGEQmqWn+Jw86t\nbc/4FePskZ/xecSPA/+tqt4AqOpPq+qf/3X4nnNr2zM+Fzh75Ge8y/heFY9/Hfj31/L3v6qqX/u+\nTnZubXvG36E4e+RnvMv4f9a2taeff3h9/V8B/hvgXwb+loh8TUT+0V/qZOfWtmf8nYqzIT/jXcbf\no6qP3vr5ywCqOq/JxR8H3sOaVP0Pq4f+641za9sz3jmcDfkZn2uo6h3wJ7COiL/1N+Arz61tz3jn\ncDbkZ7zL+FTqQUT+PRH5cRFJIjIC/xrwGvjp34AxnVvbnvHO4WzIz3iX8VPfoSP/U+vrHeOnn2Me\n8R8A/qCqHr/j89/V2lZEfjUG9O3Wtj/JL7+17V/EWtv+38Cf/5Rj3h7rmT8/4/vGufvhGWdwbm17\nxucbZ0N+xhlnnPE5x5laOeOMM874nONsyM8444wzPuf4TCo7/9Dv+7s0uAgEXs8ZAlxcDPzgl97j\nardhPmb+5v/78/x/33jGy7sDu93Ij/zgE7xzfO1nP2FaMsE7Hl5tuNpFghdaVW4PmZILop27qZBb\nB4HkHShUVbp4fuLv/R38gd/3Y8yvj/ztrz/jZ7/xEfN05O5YuJsLh1LYjiPvPdzxpfcvCSJM08KH\nz++4mxa6wsWYiKK01tgvhf1cEXE83I5sN5HdmNiNiVYar26PfPjijqkUau+oKiIgIgTn2I4JBXJt\n9N7x3hOCo/dOK522Xkf0gncORQmieAF6pwFdBY8wNchN6aoYbWbUWfSOzZi4uthQAUFw6z1x3uGD\nYzou1NpQIAWHKmiH7W7Db/9tv4Wv/ugPcblLfOPnn/HTX/t5Pv7kEzYRhuh4dTszLY3alOCF4B3e\nOxCHOEG7Ukqja0NESCHcv3ZcMs4JTx5e8MM/8ISvfOEpm81A1Y7DUWpjP2U++ugFh+NEbXaO2hql\ndYILHHNhygW8MM+Zec5o77ydMwxOiMEzDJHald4VJ8Jv/6Ev8oNf/oBHjx/zxQ/ex6ny4qNnzHkh\neM92s+XF9WsQ5Wq3YTMm7vYTv/DRK37mmx/x6mZPbY1HFyOPLjeMm8jLmz2lVHpT5qUy58ZSO713\ngnMMMXC5HfDe07pyKJnkHGMMpNHTurAshbv9RKkNVYjB8fT9pzgn3N3ckpLncjPw6HLHB++/x3tP\nnzDuLvmpv/U1nn38CfPhSPCe3XbkcrclxYEn7z/iyZNHeBe5ub3l+vqatj9yfbvn7jCROzx4cMnl\nbkSc8upuYj/NoAs2w8z3e/L4IQ+vduy2Aw8fP0akc7x5hfcjcXuB317w4Tc+5O72jlIyN4cjd/sj\novATv+fH+MoPfJEHD67wHZZWuDke+fjDTyi14YLHJcc3fuETPnr2Co89J+cAFUCJ0XOx27DdbBlT\nIgbBBeGwLHzy4pY+LUhvRO+pNdMUGp45F2prdFVCTIQQcd4x14K2TkC4uBjQ3pmXwmHOOBHGGLja\n7BgvEl2Uly/uSCq8/+Qhv/P3fJVXz+/Ix4X339ug0fNqP/G1v/0MlxvRO4bNwDeffcLNzS09Zy6H\ngWEzINuRXMpqCzyHKdNaQ0TRDsE7gvf01mm90+j8wreef1ci/DMx5MF3vANVwQdPGCLDMKC9MU8T\nh0Om1E5TxTlhTI4hOaSbQWhNcR6cD/QOXcCJ2MUrtArau128CF0bTkzLVhvM88ThcIc0pbdKLZVa\nG0suTEuhasM5wTnPcW5so6N3OC4FVezGqqAidO0spVFbwzkl14ZvkRHBBc80Z5ZSqa2uxtXugSr3\nxtx7hwJe9V7GoN1+s8lrxznn8E4QAS+CWyc4q1HKXWn9ZLq/XUTRVMmtc8iVMUVi8Djx+NNxojgv\nuO7oCqV2nHPE4PEdfFccHenQazcjVTuLdmoVpqVSSkcR9DRmQJwAQuudXCohOkLw+BAopdJ03XS6\nkkvlMBWmudFbJpfMo0eXDDGwLPXeAA7J4xFKrSylURAUO08QZ4se6KsRt/8J4mQdjz0A74TtMLDb\nRB5cjnzxg8dsN4G6ZNLgyU3JdaHeNqbDgeCEivD65pZXh5kXt0embJtz70qrnSVXuiilNVqzTbh0\n++mqdk+jZ0iesI5F1+vH2TNOKYAITpR5ctTS6N2OefTwEucc0/GIE1hK4eXtnscPL0lOuNgmhjHi\ngwdRxNvE79oBRRDEB5wLxJTwMXCTK8elULqSYkDE5ucuRpZRaV1ZlmIvqqIqXF4OXF4OaFFcs3nW\nKwzBsR0Sw9WWj2MCHE6F4IQUPF6EFD3iHKV1lkMh94UlT+znjPOOMdh6aL2h2hhSIMRom3dRZJ2r\nZTXIPni2m0Qc7Lj5ULldCqUUutpzcOIYg+CjZ1LlWKo5OmK2JCLmEDXlsCygujpQwjAkdpuRNI60\nVlnyQu1KLY39Uqna8cGThkhIgdw6rTRbd73hAcHjnSNEj8pAFcGrMOIIPtC1U1qjtop2tbkhb/S3\n/d4efDqJ8tkY8pZZMszaUXEEB047N6+PjNEzzwu3d3taqZzW3WG/0GpnWhZaVwKO1guSBnwM9Ca4\nOdNR5tZYulLWBeKcQ0+emUDOhf3dkZiFWgsqne49TRxVoXUhrIut1crSHdNSWWq3U2hnqRWfPCqC\ndgAH4lHv6L1Sq1ALTHlmqpkq+m1aMxHBibOxqY3LOUdEKLWRs20+DtukvBcEW/RO1DYAERxCW72U\n2s1gf1oC23lHjJGLccsweJxzdByqnd5tAjlxpOBw4nFBUO1oa9AbtRZKyeQYmeaFw2FiKZXDZAtC\nEWRdqE5snK02vEAIEYLHCfj1mp2zDeR0V1SVpTRuDwu5N4YQEYmUBikmtheJ4l6ztE5ynRQdm5TI\nXfj45mCbZW2EaAvGe4+2tm6Wb99zIfqA8+bVPdrtCHjmw8LrF6/wjx+CdpaaQZWSM4f9Dcuy0LVz\nfXvLMmfm2lhaw6NE5ykdau3cHSck20TrXejVnptz4BS8WAQzJoc4RbUjqG2YXlBRSlW8M6OJM6NW\ne6dV5VsfPcM7xzwtJITuHToor15cM3hHXY6QM9Gbh6qi9PW/uVX2y8JmmXn6ZMegA3LtuNnvOc4z\nXoTNdmAcAykJKTqCa4g2tDm8B5zQumMcB3bbLXkR5typpTBnGAdliI4Hu8g4OnwSaoPtdgsKrRSc\nCK0Wjocj+TAzzwcO85HWCiEMOBWWY4EKQRwiDb86HuROHGwDonUGF9imxNXllnHc4m8PfKs8J3qH\nBm+ba7NNEQpLK+TVi1JAnMOHSOkNReiqtNJwziHOI86u52KMhCGQlw7qiUOkuYYPjgFhodHINBe4\nvZ24vdnTyoT2RsbjykxHcSGgHlQ7eAhOEfHkBrlnam225kOkO0cTpWmltEYKnk16hwx5zY25FWaE\n8WLDMCS888zHCanKsnTmpYITtuPAw8sLBEdeMortxsE7ovdsYsI5x2HJ1GZeTz8ZbjEDJwCqmNNj\nhgr11NaYlsrdlGkrHXEymil6UvTQOrma1921450DEXrviHjECbUrznmiDwTnQcxIdnUsTSn9jSf+\nBhZthOgRL/c0iGpHu41FYPXSZN3Q7CQCRGdeTu/mbbVmRvx7KZNFjC7ZbRJKp2ELPCXbBGtreDEv\nzmEbYO+d3pTuheNx4eXLW1Qdc67U2qnrvRGBzSay242kGCi5kpdCq+YNdTUyx7xEQRD86bqcwzlB\nFWpr7KcFlY6PtouVthCjsNuOPH3/Ic+lc3h9QyuNmBR1DlUleAfRE7yjrlGLc288cotoBHEOwULW\nIUUuNokQI7kpL64PDOPIJgbGEKB07nLn1c0d81JorSIom2Gg1c5+vzDPha6dEOzB9A5aoLcGCl2h\nd0G7IF0RZzRXjMGepzoQKLkTPHiv9izUQ5N1Xr4VuXWj2bw4llJpgFfh7liIr+9o2kA7IThEjJaK\nviG9sxk9vTbubo/stjtyMWrqblpwrbIZI5cRHu4GduMAvXHbO641bDsyai/4wJASISaWaptNFyEr\nzKVxOB7htadUozFKLjiBwTt83OBwLHOlaaNOC6V2anf0NXLoraGrlxtioPSFoFg06sB7R/QOjxoV\nFTz0SgoOHzxzaaiArPfLOUV7J1elAcF5Bh9wySEemtraPlGe42YAjK7ttSNAo6G12D2rjaYdL4rX\nTl8KeZqptRJCoCOU3lE1unRInnEzcNkucT6QlwXVRkyRGCM1N1rX9aeZnaqCOtvcvThGL2xSZDt8\nusn+TAz5nCH3RguN4B2bIRG9Z3+zN060gYrDh0BKnocXG2ou9NMkXrnOMUY2MaIot9VCGXEO79UW\nbLf4/uQh9g5xcMRgoWVtxl0el4bDwmPvheAju3FkN47M08K8LExLQbBJFJyjrXRNR6l9nXTB471j\nGDdsdyMXF4kXdzOtcW/IT/QPmKEJ3qiAfvJOV4N+8iKdrPSKgKx0hRMz4tEJS7fJ2lWx4PnTLbms\nCyFFz1Kb8cfOMaZArY55zshKT4muRtwsCEMaQM2Ybzcz2jvBh5XOsnsyDoGri4FxSExTYXa28Zba\n0G7XdtoEWY1sCJ7QOqE44/9aZ5oW9seJYXCrVRSih93W84UPHtB647CfOEwL0oxbp3cG70je0df7\neaKiThSTXdub9/x6vPdi3mptSM/UbtHLGAPzMTMvlde3R46zGXIvin8UyKWz32emUnAeUnT4YN/R\nWqfkdv8AW7dcwyllIeJwft2AXMB3YS4N3DqfWiV0sU30NIedW50Eu4UhOJo6fAyMmxFiZCoduZsI\nw0DyHu8CS15o1SbgJkW0K/Nh4rA/UmtlyZnDUthqIxAI2th54cI7ppqR1pCu6zx0hBAY0sBus2Ec\nRo7zTEyJpkpDyLWx3x/JrVJzgdbppeC8MKbIbrulNeU4ZVoHakNdxCWPL8YPz32h9mYOW4ocDwtD\nBwlmE+xeCIMTiy69kOeFusnUWlhKJXpFPDh1bJzSKpSieOctB+UjeKWLUnV9Vus82W1GSlOOJSMK\nXdc1LhWVdeOq1ajQVjnuD8yHGRzmzMWAjwHnA+I7MSUePLhAYsR5z20rK60cEO/p0uisa9sZVdpW\n2hf1xODZpMgmRYbwDhnyqXnwkAL03hlHz26MvPwEcmtUUbYXG3JvOFGcFpw0xJlh8x7GwbHbDoxD\nNH7aC9vtBu8Ksp9YWLlzZ4u2NqWjjCmSIqCZJS+oKilGasvgBU9kuxl5/PARjx9e8kl+yWHec3uY\nSd6xiYHoHbUKop1WKq0qIYLzIF54//0n/MAHj/nig5Hrm4kXL/f09oZGOHmLzplnuvqNOHF0sfwB\nsC56S0xqM+NujqcQRXGqaAVU7qOON075txt08wzNM0GV5GAThYvkmREO4iiaEVFidAQRYnc4F/mB\np494/N5Dtg92RKfsBs97D7ZMeY9bwCEM3ry9IhmPcjUGejTvqHUlV+Nhg/cE70HFjIJCqx0tldY7\nc8587ec+5qNtYjMEnj68xLdK7JXHX/kC6p4yF8ezjz/mcHeg5kyQTgoB543/dG71/tvKLatt5N6B\nE0+IkSF4Ao7jcWZujcuLzgdPHvPk4QXbIfLJ4ZbDdOB6f8v1YSLnRimN1juH5TW9K9PSKL1bDgEY\ndxahzbnTRYxjXTnljtLWZ1J6p3UlukDwie4ECY05F+gNEJrLFiF6h+9i3hqdw3EieU+KgQcXGx5d\n7Xjy6Ao3bmwDmRcckRiUzVhYckOdpztveQEPiFLmhXmamPd7SincNaMxQwpEd82cElk7Uyl0Ot53\nYohshsTuYsPjBw/YbTccDzO73QbnPdfXt3gVyI3ajyRRhihkL4xDYHexZXdxwe3hQFwy4zhCDAzb\nDRvvabVwc33L9XFPcXYfhuiZGrjmiBLpYTWWTvCuEweHiLK/man1FXeHGcmZuBGch4DjIgVaqdwd\nZjR5Cp65dHru+OAIMaAuWP5EIYTAnBeOy4xrldbNARm3kY1EltxZXt5QtbHPM89ffEKrwma7IdC5\n2o7MV53DsbLZbHl4seULj69Im5nWC9evjDPvDXIpOKek6BBJuFNU1+FwnNDWSES22wG8cCiNT8Nn\nYsgvdomijSonjiqBj+yXSkpGbQRR6J3aK8uS6V3p3UK86IXgQHtjmisdMz7L3NHeV97XQlIU2ltU\nhapxdnNp3E4LuTTCGi6WZsnKXOw7l1yovZFrpynshsG88WZ87nFpLNn+4Rfz1j3DOPDlLz3lS08f\nE2um42j6hqc9pS9EBOcF7z0iQm8dePOQZPXKBbFEvdhilg4By0Y1FF2jgrae08L173HjRSB4pDUz\nclqZ3cLSFBXbaNyqhgk+os6ik3FIjOPAuB0YgmOzz0QfKcXUFCF6nPfUBq01nAoN87CPS7nPuHdd\n4441wRlDJEhEm66JQTP6N/sjx3khBs/xmDlebaiPL/Bj5OLqiq/+yPvQJz7qjdtqz6fT8TiarvkD\n580Txe7hyav1QQgBklNcr8xLp5dqUdHVSJ1umYrn1etbrg8H5lxxOGIwz3opjf1ULLm6Rizee2II\ncL9RdmKwpC5iieO2qosES6i1qgyDEqKg4hlaoGaotZJLZQjRkqtd6eqhrhtiU7oz6ms7RPxKhQ0B\nCJ4uA5vthm0fSdtASI5aCq0VSqvENa8yTwuvXt/y/MU1tVa0dY65MefG7XGxpH2waAW/GhdtOBrb\nAL1M3N7MfPytj/nBmOwe9073kBWoFoF5JxTttOPMOAwMTjhMC8VllM64u2QIgXEcyOPInbd8xzEf\n2e4SMbr7Oe1EiNE82a6dm0NB0kJKneOycH2cmKbFcgq1mUIpJmqpHI6F1/sFP3TUByqOmjODGjXj\nAJzDIQSx5+m9Z55n4iz0YWD70GjTmi2vxGpTclOj3nAc7grEyDBGxjFCa+tzhBQjF7sLrh4+ZJlm\nwJxTabKqcSD4gAShA3POaGuU1tjPC+I8/Xsoxj8TQ+69ULslvWJK64MR7pbCpXOMIrS6qkla5ThZ\nCN27LdLgbYJ07cy5Ik4IPnCsEyVX2skL62+MHJwMnSAmeWEqlaU240yDx/uKardwczqyP3rjIXsH\nHCkGWjNFQu1KrkpubyXRQmC73fGF9x/z6GrHi1+4vZeOiRNE31Af5o2b7E9w9NWV7m/YlVX2cRq8\nqTC6WtKsd6j65vr69+TGV/5dbAw+OEo2br20TtGFotg1rhyhE0GwhOGQIt4HfAqkcWAMgRgnEKGW\nZsbfmcywd/P6pStoozTzwk9RgDq5N+J9pXoQIXhvSgksjF1yJa+exzxnaqkIUHrjC18Wrt57xJgC\nMQUkeGq3wFS75Ri8c8QIuQiiJ05q5eS9EIIjOrtpx2x5gGVeOB723F2/wjnP65tbDvNC074qd3SV\nZiq16T01pEAMaz6lc6/ACX7lxOQ0b1kdCVanRBHpiOumzIqOKpHshNYbMVpCOvdO62uu4ZSzEBA1\nLj3XyrwspDERo/G+lxeRLpE4CE4619d3zMeZuZQ1J+GoNbPfH7m5PaJqCrG5mbLpWBqdzgaHqj0j\ncZb8brVQlplnn3zCkhsfffScBw8fENNAb40W3Zo0FDwmi60d6nFhkybm3YbDcSImz7CJFiUAEWwz\nFKG2yjLNjKNRK32l+uhKHAIuBkrtHJdOmgqtw9wq02Gh5EpIkVJnEGUYAtNc2GflUCH0ik+Ci45S\nKo5OCx5cwK8SwOCEFAPDENnfdvJSabngWqfRVsqj4wW884iL5FpoWpgmSNETYyAE20RrqeTa2IwJ\nvXLMufPqxXNqbpbgbrbZ9a5EEcR7Ex7EcL/5H5eCuIa8S6qV5/sjPiQ2uw273ZbkjU895mrSJBH2\nh8xxqcaJTpXtJq6cp1EQ3jt8XJUVODyRedkzLZVu4hJbON0MmGKypZQcV5db3nv8kA+/+YrSuumV\nVRGMC2xdmevCfnHkktFuus6mylwKpTaGwTHExOwbpR7w4kgxcXl5yYMHO4I0Xn7yITVPeG+cpvZu\nng0WHqYQCM407vbAhNpWpQ0WjgfAiylSBId4U6n0pmaAsQ5SiNwbzLdxUrAYtw5JlEWVqqDiaVVN\nHldXgysexTHXxnYMbLYJosfFRBpHorg1OujfLo9SxeEQhdoKqt28yXVsJoE76dsBNaPemjIXS1Tf\nj/WU6MU80ru58tH1xKtD4dl1Ztw8Yz9lpilbcmpMeFHoDSng1oV0nJf7qKbr6pWLkLxn9DZ3Dt04\n897h1es9n+xek1JgLjOdjgQIEeal0tQWsDhhHCxRuuRiC9+DD0Kr5rl3bYjt4GuUuEpjV89cRegI\ntRScdJIIMQXz5L2SvKcDPnh0NgrylEdRhKqwVGW/KrVSGq02wCtOTKq59VCGgTs5MJfCVDJD9Gyc\nw4eKC4p6ixxaN+dkUQiqxAa6rGoVcYSYTG63X7i5OfIz33xBt7Q1Hz9/xWYzmrx0HI06Q5mmwrKe\no6jj9WFmfvaC/bHwwdMH7K5Gk81OC751ypIp2WSn2hpaGg1HqZ2lVEqtbLYjPibUd1KKDMmRglCK\nt/XkA34YeP2qsdRKapUqHj9u2YVEXSZC8KQUmQ+6JquFzXZnnw/eqFtvksbXziMqliS+O1CdZ6pq\nlEyD6DxpGMBnugTwIzEkvHaqwu1+oqbK+08e8t52y4OtefA31y8pRYleIAiumVQxuLAmlh3JJ0S8\nrX9VsnZK+/R/+vUzMeSCJU0uLnb80G/5Enk/8+LVNUlg8OClM5dMria7eXU3M5W2JqlMg3rSOgeg\nt85xyZRcqa1Re+WkjQbTC5uZNtWCFyF0xa2urGnTBdTdF+NoU+Ypc5wypVb6auxyMVXA4COFlQ5Z\naQnvHbvdhuTEMv29MybPZgi03hAJ1NYp1Xbi6IXBm9ut3ZFP+mfbglCV++jiJDFElXnN3nds02FV\nZbwx2d/tnqtCzpWX13sORyuourzY0mujlcayFLsv3jywUgqLs0UUQyTFSBBHq53DYeL27s6Snqtn\nHIJtSB1TkHQ1j3QjfpU3Nnqt99GB854uQumNOddVJyurhlnvFQRm+BQJju3VjpQS4gMPH19xJTb5\ne8kcD0dL4LVKa928dNV7hUwUx+VuY6qdrrTgUBytZTa7LcF79svC8+uJzRhoteHUm5LHu5XGMgov\nhsDFJrIbI3u33nXvwZmGvuNNLRLs2OrXwqRTZLSqp1IcCc6chxACuSl1UcpSSTsL+bvAPK0ODAKe\ntThmlXl2pebOdFxIMTFsduyPRoGoCkJAcdTaKTUzZcVRGGWLoIToKdXmTNPOlCvbaBrzGIVUFDqI\ng+agAEur63x0RKe8fPWax48f8uTJU4bdSK6Z25tru9wgpNGTiyeXih6NThHv2d8eUQfzZEV8U555\nfXfHPC94cWYQY0ScwwXBJ0dKDnUm2dzuEila0t1y2kr0ngfbgXwwLrt3XdVsa+3KWsPgfSD6CKEz\njnGVw5q0sHU1jvx4RMRkzHe54OeIBKGq4CWCVOZaefn6FR7PxXaAKJS8UKcJtJNrpbfGzfUdDx/u\nWFrnxYvnlCUj6oBIa4WcK3nO+NAZZCQOHmLEdUcQJbNGeV6+a23DZ2TIuwohJi4vLvjgvYd8/eZb\nvHy9N/79u4y1AAAgAElEQVSud0opzCc5YYfaIddO8Ca69551l7SbX3Njf1jIpdLUHlp/yxM1usAW\nblz5MC3dnltXWu9oM/4rhWBeUFeOx8xhKpRq3lBeiwi8mGKkVKtUdM4WaIyBhw8uaEsmHw9Mc8E5\nIUZPWATnA4gVMZzkjWktfihl9URPEfm9xnulTxROxr0E28ndySisSeA3+G5j7tbk22FamJbMZhzW\nRVxprVFbxwV/vyHU1lhKMb42JTYpEcQxLTN3+wO3d/v7e2xD0/sCixhXuqMrIQilmqzsVOQkIqb9\nR43eKXWNmHiTrF2vR9fCjNo6LjrG7chm2DJuR9IYcQHm/cTLl9fUBrkeKbUYVy92Ir8WEu3GxJAi\n82Gh9JMw1Qo+vPfcToW7yaSSKQUUk36dOHZxjhiFbfJskmcIQsVoQe887nQN0ulqBWUhBFwt93p2\ncc7+r0pwHi8d7yElj2Yl09aIRXEOxugJKx1igsWTCmf94bRJZ0vcDyPTNOEEovdW3iAWjrdWyWWl\n5lju52FeTAXSOuTSULGag7TxSIJQzRPUgslW12iCld652d+x3W642I7E7ZZ6aCzLQhpGQvKEwSPH\nNTfQOyF6am3c3OwZtn6N8KzQZl5MSx2dkEIkpsHUTd6tFcNQ6DgHlxcDu+2GVpV2d7TNHyVox4ug\nKlYw1tt9stunSAgRHyLeR6DhRCzqdqaAUfpK5XQrzFFzrrpzpnpRB17JtXOcMyUvPH1wxSZ51FWm\nw8R0OIKaTFEbLHPmuEwclsyLF6+oS7Z6Bjy9Z8rJmaqd6Dwuxftiut47KlbZG9M7pFo55s5VsOy3\n18LN/o7nN3dE5zncTewPB45ztoRQijx9dGken1hSX7SZMUVM8F+qefDNNL3OebS21auzsNl502xv\nx4R3jpytJLQ142RDMLnaGB0hCrlUpqUyZSsUcAglN0K0Y7w4tK+l0970q+Mu8YX3r7i5vubFx8/5\n+ed3TKWu/I5xnWAGf1iNSvCOslIOVoGmiDPOXZrxqx1A+8o92iYWENYKeKSvvClvqPW3zbisPHSK\ngRQtKojRE4PjdtV6B2/aanH2HbV1RIyT3Y6BizERnOPlYeJuf+C4LIBSa2U+zsgQwVvEk5JbM14W\nDZU1Mdh7xyErrRSZy2KVbHqSW77h80FQMapmWQqvX98Rgudqt+XpezsQZXdl9Nx+GIBA0cBxrqsm\nuOGdR+l4L2xjxKla3mUtPhIRYkqkkPA+EFK1UNZHLjYb9vOCI+O64PEEDypmEFDz+lPwOB9xEmkl\n46TjnRX4xOSJ0SPZvcmjrB5k75VSZ2SVCXa1ZPk4JC6aghovG1MkOE/yEYKylGwLm3VzXKs3VSte\nKtsk4Ky2InrPcnfEeYuATQLpqOqZbzOlN4bgyM7RfaDJSgFhEUYKiXEXWVS5vd3TpkKt4CSYvLA2\nem/E6lhyppUZXxO9dHpRhsuACwKLQ2k4b9TmdNyT1ZROw7Bje7HFhYHD0XG3nyxn1CrJw3YTGIeE\nV5BSoTVYOezHlzsuH7/HYS5889lzcELtnZfXtxymyjE3CoXgLTfkXSB5R0gJ9QPqj+SpUpaZOHjG\nq8hm661uwQ9mO+aKc8JuN/DgcsS7gdacVYHPJoONrfNwLNAzrc3cXd+yP0xI8oia5HEYRvIycdgf\nrH1ELcRVeeOcOSw5VxBTD7kglDUybrnQBbY94PUdMuTiA1cPr7h6eMmzZ695/fqOpsrFmHj9+sir\nfaZVSCny3uMdP/rD7/H6euL61kT3KRhH7hzMvTG3RlGltLU/QbgvA1qlaKZWiNHhTPlGEzN+pr02\nYxyCs/BLLCHVmlUmltYp3TSnpuKyhMyp7D7GxG634cFu5HIQvvnhNd/65JrDmkwtzYpCajMBmvem\nNxcv97LAturAZeXMtVsSSEWQtVBJMS/8lPzxyJsw252kMd9DtSIgXvApEKsR9fOS11YBDseqZ2+m\n2jFPvXN7OPL69pbHj6+IyXN9fc3t/kBeJZ9dLfmbNOB1pYZWFUpvHfFWmCLONNYigqwUUS+VVo0G\n0zXJe9p8bci6cusmS90fJ+7ujhwOkxnp1um58uDBI9QllgbHuz15UloVgk9rhWanCRzn/OZ2qBWb\nDGlgOw6IE2IQhhTZjAMXFxuKdGIODDFQewOs6rL2ztIUvJK8M0lrGjhMipZCb8o4RIbkjQJr9mh8\ncG8VFFiE6IMVhXi/asSjow/Q+1rxq6agSNESklLWDLg4SlPm0ugUemmMdwvbu4mlmmPSo8lNjNbx\n9KpoMqfDoSQXTb67dFqd6D1Ta2WaJo6j52oT0W4tAo5TpreGSLd+OsHjglsrPs3zn5eZIp7pcKQu\nBV8V8aYcsZyPPdVeKtvNhidXFzy+HBEPuWZELZFYSkG10WsjdGFMI17rSl1Zktk7Z1RqqWspvTNn\nDECFTjH6R8FFEzOkmKDVVYcvDEOgFEcpilY1dVHr+O7u73EXaK2zLI0yLfSgtO6Yl7q2mOiImuZ8\nP00Mh4n9dGTKCyGMFqWhdC0c9pX9XSbXTs3V1kfv3B4XpmlG6VQVikKvuhY0Qa1W3zJEczA+DZ8R\ntWJGOobIL3z9Ga+uD+Dg6sHIzcGTO4h4ri63fPD0IV96/wGHQ6HWRmsVDRHFEm7T2idiWeVZ98qP\n9bss9NS1iMg+U5r1R+iyGkqRlc90qFg1Vq1rT5eVRulvh/q9U5usagmIMfLgYsPFEMj7Azc31oCo\nqVK7JaecD/RqhtN7NcmjczjUlAirVw731P63iVZO1Imc1FhrxV8Xo1v0/kh425LfG0WRtUzfU5yV\nLt8dZivKEGzyN1uk9dQnRGDKmZc3dzw9HAhD4PXtLYdptoZTfqUJTgZ65SpbbfTa73uI6PpArOzZ\nvk+1r8Z+pWf0LRu3Fhqdzm1zRplzZT/NHA4TV9stZe4cWuPR48c8eHBBUyEf9ty9bkxHRYLHTcqS\nM6X1VY5odEIIZiAvtgPjWi03RCs9H8YNISZEjiv3utYvOIcGpTejB7sKY0psx4gLjrnI/bWEtbrU\n5kq3iuHoAbsHJ683xEQaonnuKqSmOPHkLKs66k2PmJbX9KJzOG9J6dbV+t6oY3/M7PczjU4MgjTL\nVWi38ebcGAejBn2yiuLahIvNaIl4rAXGtGTmJZugwCcohXlpVjmM9ZQJm0j0gnQrZe/aubm9xc2Z\neSrUpdBKxcSyDpVVzdKtbiBgpe+9ZJZjYT/PHEtjnuc1n2S9THppDCnS69qrBqs/cM6R50JZrDeJ\nX2W11s9kQPYZcrHtQ7lXldVuOS604p1Rf9pNxdZPdG1cK5ubrv2UrLnbMjdiqnRxtGa5MRGhO2Wp\n1vztcllYSmaulaHVVQmmtF6ZZ2FeKrVbnqyXgpbM3VzI1SSwOHef+xLX14Q5jCkyxESM8VNt6mdT\n2Tln6pKZDxNf//AlL28ODKPj/Q+2HKYNr64TReCD9x/x5S88ZYwblqocc2Fwxhkt1YT6N4eF/XEh\nr2XEbqUGTtWErStUSDEQvSfnwrwslJItLHUO54Pt5l4oXTkujSlbMygraw9W+l0KpTd7EM6ZEcRo\niyeXIxunfOPrHzMdZrwo0QlZrcOh26R1IzLuNgKDs8rCY67UVWt9z8GfhOer9tqtpeX2Wetc2JuS\nu+3itWOqk7dwklvCOpGdY/CeyZkKI0+VcQimbaYz5X6fkENl7VHjeH135PntHRo9r/cTS7EqV5TV\nWwykuEoLuylseu/3mulabGMQt0YcTujSachbutg3hJBz3DcHizG8SViJZymNeZn54pMH9A5Trtze\n3fLe0/f5oa98Ac0zX88zh8PMdkj0JdPawtKtJkCckFwwTe9m4NHVyJCsYGxMA5vdljhuKEVYDtbU\naVkKS6uoE1IybbCoEFzk4dWOEDzznE01s26pWisFUxbVWqwSOUXEe2q1ZmFGdxmdshkCwUerPvaZ\nWxplrlStNDWlwzQtxGCdI2M0CsiJ4NXutXnTmTiYrrt3o75aN/VXXrKNYeeIKVJ7RlvmwTYRgiBB\nmLOpslpTLjcDbrsju0xhbSql1kMndRtDCJa0XnLmo2fPSXEAdaukM9NrY1pMGdJUyLWjpVGWhf3t\nDZ/MldvjxH5ayGA1F17wLjDnyuE4McTEsVhSN6qyiVbgdLfPaDPqLKXAss94cVxeXPLqdsblbG0A\nmhLbm4iwt0qfmlFXCMM40MWSn6JCXJte1aXgxd17U0VXQYRzDIOQq6dWh9a1KV3tLLVR1aTBdSn3\nsuDSjOrr6No2AFqt3M7Ww0nV7Ijz1uWxaiU0ARohOB5d7ojRM+c3UeXb+EwM+dWjEZ86pRzJZbGs\nvXMc7ibmuYA4LjZbvvylp3z5i09o08pTquDEo9gOObdGqdbTQNSaBPm1dwfS18TZquZwJg/zziHd\n0RoEL2wGRxkdQ1wVK2qSqlY6tVTj1p31dtAWqKo0tYlemxUKtVI5HGeiFzoe6RWnnWUpTLnSBdKa\nSPR+XdBi/WDUW5KpNYsARFYPVcyLOukOrJWnubNV1w0KK4vua9L2Plu4Qk9sC2sPi94RLHtvDZEi\nQ4rGS6sSQzCddO8mIcSKTcYx4b2j1ELJjd6MsjpVmg7BWiaAUCvMreGcR7B7dJIWWnm1UUXa+kk3\nuXrduo5XTuIcG3d/I1l0WDvhZ89fcbVJXO52DCEx7WemzYS7iKQU8THQFObjzJQLS1WWEw0W/CqR\nbCw5Mx8s+e2DVRdfXW4ZUyQfJ6acOSyZpZhB8OoJDnyMbIaRq92Wq4vN2jWzMc+VWtrqbgdK68xr\nglzUGqDF4NDuTLFQhTxXgixskgfpxBR4vLniUCbKsWNyeku6ulVy69c6ihTXhlpFGfwaAagyxGCJ\na+24bq1ZY3B0DzHYj0tCPnSmqbL15qGiq45ZlFwzL2+uGVpnzrqqtvqa+O9rMtYRx0TOhVZNITIO\njs04kobE5mKgi7VNqMeBUu055zpTu3IonRf7hdv9wrJko2u8KVTA2jYosL3YMS2Zw/HAq5tbNtqQ\nkJiWzmbK4JQ6LQyDFUOlXWDcRsYSzMErEFxEnCfnSsda5eZmtF7wAW2N1mApEMRzmAuHaUFXGmYM\nngcXW8R7cq0cpoVcLSdn0l9bq3H09FuLxEYCcYwMPhCx4qrejVVoqzMU40ClWnVzNzqlq1VCxyEy\nJCv1320Hply53r9DhvziMiE0pmlCtTFEzxADx31mWRqIYzNuePreQ957/ICPvvHcLhJATE5W+9oy\n9CTpWjcD54VTYYushsGvlEKMHkdYey04hhTYjYGag4VkzpKIGhzW30nvm1VZ10HjkrtaJzobjoI2\npnkxeiYmqIUlF45zYa7VKsbEOE8rVgn3RTTAfcOcvhZHyPqdq7LQGkzxhmZpavyRqvH8be16aAPi\n2zjyE+fsvWlnx5SYgpWuS7BJ3HqjBWEIkQYs1QySrly8c9YEalkyuZjqRtypX4knrv3enbMcRNdq\nPWQQ5lLseHHWaCmsVElta2tV623SW7+XHtq4bfx9bT4EayFZ7dzuZz55dQM4HlxGlrkyT5mUCoiY\n4iJF67/RV51865z6rcQQ1jbKppippeCdMEaP2dPKMh84zjNTzqvqwZLNdMXHtbf75ZY0BOZSV1mp\n9fNxYlRaK1YdbHPXitZ2mxHvijUd6515yYh0tmOgaWccHZe7kZis54PNwWbKpDVpJ6sCycJ7ObE/\nWAxq3QFTDEir+FatUjoILawdF03JbsVtpVFolFrR1kzXjJJb4+Xtka06ypr7UD1VeJ4S1zCkBB3L\nA2Gtj8cxsr3cWssKtR4rYzJeXoEWK0tTpv3Mq/3MNBW0drx4y/ess72tFbFXgynJcoebw4LGyDBa\nt9FcrAfOfJz54Isf8PDxFWmTuLzc2XvHildL9jpvstDaqxUrdVPCxRTQxYx66525ihULlkZMHrdS\nM2OwYiR1Qjkc76XB3OfUbJNT1CI2MXsUvUVNPgRCNBWUsQemDsrd6KrWrJtiXwvcupryKEZzXpdc\n/3/m3rRJkiu9znzu7u4RkZm1AA00W+LQRNE4I+r//w3ZyEwzQw2HS28EUFWZGYsvd50P7/VINASJ\nH9HRC7oLaHRWRPhdznvOc7jO28+uqb/IQn7wjrIWruuCUprDKECYuBZSbijtCMPA6XhkGgJx2yg5\n9wRaZXQeUys3Uo+vy4LtO6Rk65AgrfoH4C2Tt4zeUlvAB8c0GY6T4zYG1i2RurtEq0bNBSgYLQzu\nVIr4o7U4DnQTn7k1+n7Sz1Um+EcHny6R59vKeUkUKko3anu7BVgjGqdWWgA5nb3RqvjDu9JK6dq+\n1mq3yXaNvmvPDdH6eRvaslvl+JPDOeMYeDwdeHc6dt53ReuKUsKgMRaRIoCm5ZouwyRJ8i3z2oMZ\nqQ/+wFsrrGgjTBXvRP65uzm0Im+tD5cs0zRCq3cGvBQ/CHRrX4rqHTC2O476Yq+MDK2VoVT47ssN\nrQPWjWhvZCCdCyXD4ANPDwcwmmWLlFnmJtZorHeM4yCYViO2vlK6XOA1eV5Yc+b5yyu320xMcjNp\nfQHLOqObBl0xDlJfFsXXr/pBQ2BWNUrSUAbSmsEH3p+euLmZ27qwtUzOjbYW/FWGkDTNh3eG4D2D\nFwJhzVlShEpuh601li2xpYpzlsFbKpXSMko1xsPAEBzECC3hbA/1GEupjWWLGOcQ67Ri3RLbmigp\nEawmVZFyXpZK0lEY6VoTlSEpSbfWUlAVJudwTbEpzZYSussXxsAWBVGBtmix40PTuOB5vcw8v16Z\nlySIAdMPUtqgEUdCzsIy8ibLDEE51lR5aJbgAoOX7828blyuC3/zcOLbX31NbpXlvRBLr/OCdQrr\nNcYJLiMlgVRppQjBMRwGCisahTKahJgbSgNvxAFXSqPlTJgEUKbON5oy7KmPXCtrSszziqrgOwk1\nlSgkxKo5TAfWKs+CYcdTa4FxIbA0nXXvJ1DE2jCiE3OZZ5Gftj+jhXy0jZQ2rlFi11MIHA6BtEXh\nIwyK9x8fCePIulV+/8dnrmsUfq/Zr+btrsMKeRB8cHJSiVnwsOw40+6cwDKdBp6eDjydDnz6/oo2\n4l5Yt8jWtcYlZnIBlMgFd5dFFY27tcroLZNzoOVEnbP4QLO3XBdpDNpywTmF06BVpWohDkoMWQZI\nrVVihzH1pEj3vYtro3UP6z4cpcGSJJlZmwxjdsuYvN5OtHckgVLiyumWnB1Ba7WilELMcq0soXQp\nRxbpWsR/H8IB70YU+n7bMU4TgsM6SdzqAvOaxO2SC81rWsf86mYYB8/H90deXi4sW5H3VokLQuyy\n4i03wYqtrckms6MNQNjgShuMNuQorgI/DBTVcMFzejzIadzKorHk77Gd9+G1AJhGZ0TKaZqYYVk2\nTkcwxpKz4nad2bbIZY4iyxTZ9GquOCODbWcCg58Y/MCaZainmvxegtcYZKGXibXqgS5h43hnKc2D\nbgzjRC5FWp6MzFzOt5Xyh+9Y1ohzFqN0RwSPDPNKqZVtXaktdS6IxpuuVxtLzhGjM4dpQE+BUhcw\nkhKuWjAKJRbWdWPJmTln1nm5+/xzzoIgyA2nNqyxDKPHjw6rROYTALK4UKzTrKtshLomUlHEpEmb\nhiryyFZWSpa2J2MsmT58zQVrd5Kp4TBKY0/TMpQsSomUs0Yegsd+fES3zDB2e6W2LLlIA1PK3F5f\n2Y4jw3Dk3XikfWjoVknryrZtXF5eaCXfn6XUGltMmFm+18aIIaJpWfRt0gzOCWIgF+aYYFmoSmGb\nNI8Vb1HK4rRC2UCKTmQqldlyIsaEbY1QG1/7QDtZDtNA3jaxL8tXXzYRJadx5yxjCPdbe6mK67Iw\nzxsppZ9dU3+RhbzETKqNWAzjcZQwRMuiOSEL8tP7B0JwxJh4OV9JOYtEYnUftPU4h+oFC0ZgW3tK\nXVwDqp8GTX9DGseDZ3SalhKtFGETe89iVrYkjI/bmkml9jIKGUIYo8mxn4Z7WGNnhRQtbPKUK5/P\nM+c5iv+8tR7m2Dkge5wDueI1STSmVO7SkZzA5X1q7JEVesOKXDm3WlGt3rXkvnS/vcE/+o+q31ZK\nrqQts3nx/+Yi+mOsldz1zWWLKMRbb7TGO4fWhuEwCEg/yel412hNvymUbmEspUlqld06KDY1TOu3\nIsdiNdlqlHZy06lVuOP7NRXumj3d/w6S3k0xywJpRHZaN0GWHk7yHbIajtNAiRO360gYvHx2iDtJ\nijj6d7DfamIsjN2hFBWsaWVZV25bvLcXxdxoubIzcXRrAqtSjXneWNbUWTV98GY1qf6pG2cfZHtn\nqcqjjObhdJR5RM6onkauDS7XRYZmRQBw3lrM6FFWbG/iWqoYLXJYcFJ60FRjWTfW20weHN5K8Cal\nQsm18+AhFqBTKdGKQp/TVBnWlSyzEYg47zBW44KV/EMTRkzJIiGwI2C7zWjLGbtFYfRoJ8OeAlob\nIXdqw1LLfe4xDpYxOMYgt2brAmgrtYdRGCVx3RjCgeADOa74MTAMgwCxbgtysVB8/vLCZC2/+mAY\npoGn04GUI88/JK4xcbveupMGUqvElDC19tuKQhuxNSpnsDZjtFida1ZsqYl9VXjQwptH0tzWOqwW\n5o7kEHTHfGRizNjaCPR2oybSXk1SP7fPGoy1mNZvXdbinOsHOQH53ZYoPvP2p4aG/fWLLOSvrxH8\ngJsC3zydiNczry+vvC6RNTfGw8jjwwHvNOua5HrbpOtw8Ob+3bFaLGCtW8Pk5PwGft6v7S5IK0es\nmdNgUTny/P1n0hJxaI4+sAXPbU283jLLIgZ8YyVy7b3DG8s5ycPdigx9cmk0o6jWcHCeXCr/9PnM\nmjKpw5uslYVoi/K/sVZOPrEIE7yU/lB0KehuW3tby/oiDt5KWs1oRdFvQ84fSyj7a9fTd5linjcu\n2uDRdw98TKU3Isnz+BwX9u7AaRoIXmG9ZzwF3CBtSXSZxOwhhpRQSveJu8ZW+VLrjhHwTvzpwRp0\nrozWoMcA1gv6oMnmlaJ412MSO5n8voXFvG84u54bTSU0eLncOL288tU373AGtuWKd0dZYDT44LHW\n3N+LXAXkVXuQq5bGjgCu3Rmyrol5XUUm0FLgkHOmVYWpcvIsaSXHmRgdX84Xli1LDWFrGGMkwdu1\nfdGVJQzWqDin+0IuernSitQhUc7Ie7oshe22Mq8bpWWOwRGCZxyk7sxpJZjgHSLnNMpqUkxs18SX\nH17QuXIYBq4vK8t1I2+R09ORgmItDZKkUachoFrjtqxsS2ZLVYbuVFKr+EX0aYzC98ShppHoILP9\nlmS98F/iBhRG1/Cuoq1ldBZVCtY0rIG6ifZttOIwBU7HwDh4fK0471DWk2rjep6JKbOuG4/jAecN\n11Uz+cDD05FxGkga/PWGdY4//vCFvCWC9rwLHwjeEoaBrSe/5yWia6XUTCziFvE24JRFO4OyYJoW\nDovJLCrKrMw0CmKNbNQu2aWOo5BgndPgnWIIitikU2FbU0+bKzbTeD0vxK5973MxpYTm6DrSwhqL\nd0YOSgpylazAuiWBhvWDzU9fv8xCviS+Okz86t3Aw8nzLy+Vl/NGcxbvNWMIWK2YLzO35wsoCM6i\nlBjonTFko0Qfrn1qrBtbkoET/Tqum7SnHLxjHIOcMIvieonMrbBFGWAZo5mclQYTLcGhUioG0Y0n\n78TpkGWy3xTMRR5uZTReSz1dydLNSNe+Wl8hdq9vabXvrqL5i4SiqT86Qqdc+wy0a8RNEAVGC11P\nbIrtPsR7O+P/5NXdHx25SK2FLUVu88y6bT1FKpKUUzKYVIhEVHKVQgA0VUvwqFWZpFdEt7dWTsmt\niWyEkelyU/u1Wza8uCZG79GtUVKipkTeIrEXNbRWxbNfRYfeQ01SEGLk9FnlxrDfwHRfvEpJvL68\n8sMf/pXXTw7rPN98+2sphJgL82UVaWgMIh+UhooFN2+MQSShomAaB949HDHa8UUnlppIayQ3Of2H\nQXz3KEWslZdlY/nuhT98ufE6b92GaWhVbnhaaWrdWej71LZRUma+XdHWYbRi3WZC0HhrcNNAjCu5\n42N9MKRqaFshlUZeInXdOE0j2nm2CMu8gWq9SUfTmiVnwTCk9BlqJabKPK9AJa8rp8cDwzSy3YTF\nH6zl5E88a/nOxyiNTvvPHXNi2bY+bDVIyvltEz+/zmgjnbtPDw/ctignby8BuwJyMi2Jphq6B/OC\nMzitaHs4xmgYAiiFakUkLG+JtXLZCkPKWB9wo6dRqGnFKodGOgusNZyvCc2Nz+cz4TEQ9MQYHFU1\ntpLYcsT2YJc8m1BzJuVIcIPcNK3cQpUScmZKjVql8et13bAxoY3MEbxTMmuxWuSqJXObt24ZNqAs\njUxTCu0tuUtS1lqUeZvNpCK3d9fnBK1Wti3fzR37TV5+vj+jZKcxUqA7DYbJC9dk2QreOEYfeDhM\nnIaRlivLEsk9naa1+RP3yG4BFB1WyIG51j7klP+vWmVBsUoz+oAPgVQK83Xrf53uV/n9IN9EJ6sN\n+gKqkQLn3AeuIClSpQxO9cag2gt3f2SXU0pSoeJQkAejlMq6SszaWYPxXaKxEgTYHQEoOuh+38GF\nuRJ7aKfcaYE/s4jvr3tGaL+iiWc3FnEGGaN7rL73o3epZEuFLWUp6FUaZx21NJY1Qp870N7KKkrf\nUPc0KFpTiurRY+4nkK2fwGvtg7AmckTuiNa2/8h7uIg3F4vpmuybRaMRc+I233j58koIEuRZnmZa\nLWhde+GEVLrpdZVgSlOsWwQE/2Cd4zAFjocgA9FNS6JOiWMkOMvopDIt759lLKypoLS03OgednEy\n2JChaOkNS/1GVKrosefLjePpiB+CDChzt4Sq4c7c11p06dKaVOYJl6EPGfcyBEdTW4/ot3uBijaW\nLcvthdoDXrUB4u1WFXStxBgxuteHOUvJjnXz3JaIKpLDtD0ME1NCaU1wsmA6bdjIpFyY14R3MATH\nFARH/7sAACAASURBVAzoIFbXXmelmtyS5dkpkiK2shELUlc265ylrpBWMa3hvL/PeGrriOhxwA5Q\ntpXltnI4DPcIvHOW0hqv88LvPn0iHB3vdcP6ICdcayX3UXY06lsHbqn13vyDMcTcMct3BkbHETeh\nje63rFrE9CCM/QoYnAtQLa1GRgfVZqiVVAspRorSYqrYccJ9RiIZkbtZmtLEKaa7+8H0v17fW2f+\n9PWLLORPhxHvrDyk5a0EQtXGNHjen458OD5StoXcyx5Q7Q4wasjQrhaBLukmDIvSEbBWicZbmyKW\nxrwkxlBwJ8vh4cjtMnOdE6dJrtYlw5IlHVpLwzlFgv73oycQBZAF/c1uIhsMXvodc6vU0rsnu7fd\nGEVM9b7o7lp5qlkGdd0LLCEFRTXiINi/a9bIQt6A2PtIUxErXb3bVH7iN2T/tR/9upIFJpfKGiVa\n773q0pF8MVprKC1l0rlWSkx4pzlaxzAMbGvkel3uD1cpBZqcPHOWTa42SR5iZVM1fYBZlej6phTQ\njmYg1cheMrG/X/fTax8Q1lKoWqQZawwxyQ2k6kbOktpbFNzmDec83hla3tC2MU5wnCxxMyyLwSmR\nPLRSrGnrvYuNj4eBaTAEr7huEekXbWhjMUjz+xQ8sSaua+T1uhGTkOhGbxh0QOL2YJEEZ6nlbVND\nPoZcKvOaeT4vuDAyHvYyjkjpgSFJ+Co0jXEcaGgurzN0N4W2mnmL+Fzxw9DBVeJZ2t97awwFhXWW\nwVjmbSM1keSasqxzJq6Jz9eF02CZjCIEzSlo5tHy6SILhqoKrzW6/+xlSxITV4ZgHDOJVAobwlTP\nuVBzwilDorGViFXCqPE0zt0F1bJGja63aYleLHZK2FYB0FmnsUNPBNfGYC2P08SHxxMzik9/XLme\nVw7HSKuq0zlFArrdZv7pX3/gePB4r3h4OnIYPdM4dhRI6e40sTGIfbP/S2uKkqxCKhXjDdZbdF94\nvbf4YNFGc5s3SoEYGzZlTKsE73h69468bGxq7riKwrYKcnlbNyF+xg2jFN5YyVPodl9ftJKbj7YC\ntGutYJXBaycSw8+v479QRL9KPDXOM58uN9ZtwQ+Wh9Ez9iBDjDM1rVATg7e8zgvkytNpYiuFJaV7\ndVaj406LuFm0lh1t16GMNXhvGZzcAGqwhMFxGDXzkjjfNpaYCc7yeBqZlwi6Yp1iPDlGqympMQ5O\n3lwaQ2e4WCtWK4N8GZWSAUjd9e/6dnLey960Ev3YWc3oHYZCrI3UXTP7Eqz3ZGYTyaUpyP2E3pA5\n0s8K5Pub0gedShm8dfJz0VN+GdCJ1h0xrhMftVIEb6A2xiBOAhc887Kxrj28ZcQXP04jqtMqr0tk\njXLTkP7KfoKojYP3DMFjnRaSZa1o58gp925Q2ZX28JL+0Ym8Kjn95CS3IdXtmLbflGQDohPyDNsc\nSTlyWxZyQRqakI2lpo3dqJkBFhksfnm9kaKEum5bJG2FmjKhd7BWJbHyEoX/UXIRAJP1vP/qKx4e\nn3DO8ft/+P9oNfaAk1wL5ValuwNByUA9SuJxGDpDvBUGpxn1QCyFJWfGIWCM5XJceyer6PuS6K2s\n6yJ2WONAWV5fBScwDo6Hh4nTYcJZx+eXM+0i3z+rpWg4blJGcfCSUqxKnGBBNR4OAYC0ycZcUsNg\nGFyQOZRSlJL7eqKIpaJyYo6a15tIk01B1Y1EorQiLJN+k7baAAaNcETSFqUrNDgU3L3jJmRybVjr\neHp64PAw4idPbRZtBlDgjEebJMC6EBjDIGXJGtaYWZfM06PFaGnGziWLmUAZdFPYJr7t4KTDV5hA\niKOqSQ/AcQpCQ22w0oR/7kXKmi9CXDVxIyiNIqOZMUrsy7mzVLT8zVg2CRCmXPrttw/TU+6YhYbR\nuc+XTPehi0Tb4zJvh52fvH4ZaFZrbMvGl7QxL5nYNA+nkcn5rg+tpPXKy/OZ7z59kQWiNby3HIZA\nzYWcq+jmiIczRjkBmSZX3b24YLfLtdbE0rRFah/aqW7tWbOcCmtfcEv3LlsrpcLeKGIVOUIKfEXP\nqsjJUWk6EdGyrE7kj6zk5H1fvuk/i+pTaqHT7RTFUnb3CDKAU/tCvt/OG7WqLtv86O/5v36noUsm\nx+OIs4bX28q6beKISAXfYU2tCrfFKMXgbK8S8xwPAz5Yubb3q3KrDWVh8sLrzlYm/tyknmqnLRot\nv7fgBDyVOq3PWEHHtlpJST4j2dzUXdtXXVpScimRjc30FGijy0uN1jLXeeU4bdQcqFkLR/62dWeF\nEl5GbfdNWO86fJKE3qcXYWDnmFhLlyWanLqNkdo6SfH2YFNwHa418pf/7ls+fHhHKZXPf/g921Lu\nn5t8BKpr6JZx8NjgyLWwrCshBJxWOCMnyqwrVctJOISA0lkSs/1UnKuEnZyVtN80Cj9HG01KUrNn\nnMU731OS8iw4a6muEtN258/T+okUaE1uFM4oHg8DpcKlNtImfZ2+inVVa4n05CLznlxLL1pRpCQn\n/SGIzGGcwQ6Sms1VPodSKzEWghVchg+OWnOXI+nypmjTtdefaQ3BCtMHBcEHtHUUNjncVHrTmCU4\nQ7SGQmNdpa5RU+W96HkB4ySkI963+sa9UbKpOS3NPC3LYSYET1UKvyWqd734Q5AY+/eT0oitcJkX\nfvjhExbdC2QkCOadxQ+O2jRrzMSYcM7ciaAlF2oFpbXw9ZvCNoX2TnC8qhGcyMr/s3PbL7KQaxq3\n28ZtjbwulY+/esfH9w/orXJeEvV2I80jv/vDd/z3f/mOl9vC4TDwcBh4mgKtSjDkuq5YBfMWua7d\nV2skTl/b3gqkRKPKmdu6cX2d2XKi1EzO4t3tdXmkVJhjlLYcwGhhrJi+mqTypte2rsk3BB51HA3F\na+bYJNFZM0VrUG9Rnf3h0Vq8s0bLhhOTDF5joi8W+5mF/UCOujfqvKFG36wp/+N7vOvNSoun+vHx\ngA8yPMolE2OjFHBBUq17HNpoRXAWChzGgdNpwltJ3g7ec71c5RqIwlAwKJRRnEbPliJbEg3cqo5R\nzXJDURqWOaOs/EzT4MlR7I4SIOmaJYrcuza10XR1iWo6FxyBQK1RAkVGa6y5MnnD42iYBkfNmbgJ\np4Q+nN03g9Z1ThqoUlm2yPPrhRg9zmpi3qvchIipjSK2RkY8+9aJXTV4zzhN/PtvP/LwMPH88oLz\nhhTNfbP7kZ+SITgeHg6M00ities8453hMIx4N8gNpUUqihAGrLOknNHdn960sF2maeI4HRjHA0qL\ndbO2xjBMrClJgYcyLGuGmkgx9fYqx+t8JW4ZVcE5j1XmDb7W5BT4dHCkCluqnFd5DrzSBCuLVq2t\ntwnJHOU6b73nVXFWC6fjwGEKjGMgOGgGiq6gFSmJBVbKry3Hw8AyL6TW0LXitcykxDJq0Yh8llNk\nW1bSYWKcLMpqcpOCk9SPq9qAsUj4Lgv6OK4bLa9YI3q3tET1m6JCbmqtQW/d0T1wNTiFKo5WhdEU\ni3zPxt6jSmnEbtX1zuKNY14j88uV6+3C43FkmibMMEpQ0Xnefzjx+XUj3lbWdYPm5XnOYj02WmGd\nI2ZRT4RVr7tuTp8BcJ+1/fT1iyzkKUlx6uscwTk+vn/Hv/vVR7777Q8oJNI9L5GXy8K8RobBczyO\nDMGRtkhumtSN884p0HBZs9gQjWLwWk6cuUmfXy4MWVwYscmAZXCiJVYtoQalnGjk+yykIcUTpRDZ\nB3UNp2X4IG3WmmPQvDsOjBaWEik5k6I0fuSeMFVdj+vRorvks5MYt5R760rfGBBNG3lO5X/Tq9NK\nbW9DwR+tFf+z176Yl5oRGJtoeXu57Dg4UpKIuzECwDLaoXTDeIcfHKpkdE44BcdxAIRVclszNAnM\nNBTrukoAQltSKv0qqKhKBsHX29IlK8M4jF3/l03RWhk65x6O0k1Rs3iclXrz7GslQS9JmMot67pu\nvM4bD7cN42/clpV5WcDISe10mnhcNm43CfvkfvxrTYpMgjWM3mGNodYkAzetxTKpNbpW9CC+3lIr\nk5fGpJYLf////AMAl8uNT19eqDmLne+2sMV8Z+BYo5mC5fE4ss6QtoV5PaNIGFMYRyM+d2sYRi+k\nx+vK5bZhnQS6Dt7y6/ePfP31Vzx9+MASI2vc2HLsaVNDaY3nT1+Yr68sWyKlhDOawet+E5QB/XFw\nBCtD+lgr/WJEKIXHYMmnQYqMe/jt3WGQBqMiHPdGxymXirZaGpKMeeuPVZotFrQqoGAcR5QyLPMs\nGQ3kdrGarc9KxLI6+IEhBPwQyDmxLTOfni/4wTMeR6a8oE2jqMbz9UIpijUWOaTdZPYxjAGl4bIs\n/O4P35PtgFaS3BUrqLhIWjV91lMxVpFy5vnlQm0Vb8QaOQ0DpTRmrUm7bARUbWi64a3h3cd3qPON\n6/VGrZktNlyoDMFxO6+onNGtSSjpNnO53iTMqBUxJXIrkmZFVAethK3TlNTvtSq3H21EAvq51y+y\nkN/WjcuycYuZx2nidJx493DgJbzg40ZphcttZdmEnfF4mnh6mBicId82liRJLpk8d8znbqXo1j85\nLfeH3/R6Jy1fNIMk4mLnXew2wF2T3hdS0+WNnCR9KVzhLkM0GUaGrruXnFlivUfF847V7ahLsc5x\nHxbSRNePmR7vb3cbolZCP7RaPORNwVaUTMj/rZX7J6/9FBqjnDoUe4G10BBVd8nUKljRwzhwOo5Q\nFcfjERcGGQiXSumVd1KgXPuQsvWkaGGLUlStkSCL0Qbrpdk+piTebENHyMrwyCXTgw4/4lX032Lt\nUC1xyuyoXwnm7BmB3SGyxsx1i/hlZd6kJtApy8GPHAYp2q1FrrWtt/DsV9Wc3+QUmmAZWncf6dqg\nn5p2yccYQFW2tPK7P3wvslepfehbyN31U3b+vNZA7fZEkZ02FC+Xhdscud1WSQU3kZyG4OXAkhLO\nW1JOsmB6IwuxE6lrGAPaWUx01LShtWzyP8SFZVn7Zy4zBG16q71TjM4x+V7akSFvkuxt1ZBrwVvH\nIXh8sPfi67a7cJQA5q5rt1fS7rKEtZppHAnB92uUSD+q4wlaU2xbkgUJRWiKzTtakaIYhaAuYk4E\nJC1ZjAWtiSlzvdykYUgrTqdDRyispJRQWvDTKRcmLYPLect89+mKPxRKjnhvSJt8B8Pg2I9Emt4I\npRpLL1pmcBynAaNFvt1LZHKWjl+Jq4jxQtPk++wsaSv351xrTWniTIrreu9dFV1dIGHiwecuLaru\nULFKk6t8h6gNa73ULVr/s8/5L7KQn28rtzWSGmIbc1YWlmDxi2KJhZfbjVwLwxB4/3Tk6WlCtcrz\nbWGJSXoekUUk9VZzmuhWzRhSrZQmkeBpmpgG0SNLrf1crElVTtmSfFfQyxVkLiUbAk2uhDGKnpa6\n7mqtZnBWKr+M4nltXKOwYlIRJkxrP9LRZHp590HrrtvGuvdVtvvPZZUiaBitMCKq1tStEEtD3Vkk\n/8aryy5NLOHclt3GJqXDsiiJla70tpxp9Hx4OvDxwwMla9x0wPuR2jQpVdaYuG0bW07Q9k1F0o5L\nTKTc9XPdcEbmBs5Z1ly49eGZxqKVeIiHYIjJsswStNo98iIb7Zvw3qhTabknKGtBWSkYUN3hkqv8\nDPMa7xuKq5XJWcZxINfM+Xrl9dLuu1ttwtNYNskHWKt7Olh8/9pYnNa0ktgK4pqpjVwTuWWWrRDX\nwuAd0xiwzhJzZUlJhqt9gKuU6Ncxio/eGo22nufzSlpnLGdeXm4UNMfjgTHIVb2WzOEYeH5JbFlO\njbEqGci+vDAeD3KLsoHn8ws1LahWeP70idu8iTSlZdOr99Sp5eAdRjdKM9RmqNVIq5Cv1NzZKlY4\nJDvfaF5XmjESEBsG1FXY+vTDju1Uz8eHI85Y4ppwvTRDG8PoPbU2Vi/hHwliJfIwUHISBVJp1pSI\nWSyNisbovchRDZ5fL3z68sxX33zDh3cnKoGSv2BqYexs/Fprr0xUpAKvW2LsM4bgPSVFjFGMg+uW\nwQ6wsm/NWDGmXuVY79/LVDKlClYgl14Lh6EmmC83aFXop0a+884aahM7dE2R23WWZ7t78UsuAp3z\nHvsjb7jqN/L991KLuJGCkzSrdX9mC/maMspavJF6t+945nJdmNfEsiZyTTSleDiNfHx34OEgp5Rn\nMVtjFFhjeZ4jKVVJvTWJgjtjyS2C0hynwMd3J4K3ArW5zZI8VJXDYeCkZFBzvi7MuWBiImcBJcVc\n+Px8pdW33j8pohDb4Rgsh9FxHAe2ahi2itbrXT6B/WsiL1Vl9Fx165Aliefnns7sqBW8hslrHkaP\n856qFbqtvXlHvOm79/3n7Ydvr4bYJ1/PMzE4hkFqxbSStpV1ExKfeHEN02h4GA3nc8EaSzgciKVw\nW5OUOiyrJDa93eGNwhfvJ2qN0O4m7xmdkDniFolbwVpJIy7Lhq4yWIyp3Hkq4q2VU57p/u9pCn1Q\nVUnRCIGxJHSVYIV3tnuolVggU4KaaC2xJTnBGw2eitlpi30mIG+Q/OxLLMR567ZV+ewvW2FwhsFq\nYmef35bIsmygJNauqmCMaymY4GhIcnA/GOy+YLnFFGqLOOd4MB7cE99//4XzZSaVldIUL9fI5bYy\neCNWN2+YgmN8HPn4/j0fvvqI954UE0Mr+GFkfBj54ctnvv/hxuvzM99/OWOU4jQOtKYoqlKVhJWU\nUqRaua6Vr3/9LV998xdQ9xsrlBR5/vIdy+fvBLcM0CprrcIMooHR++8Ka7SUUg+Oj1+/x7kgacfB\ny2bgHcEFrPeU2ngYIl+/H8kpc75m/PTI7SpQNusMQxhBKV5nGcxao/G5CkUUSXdP1yvvveMv/+Ij\n55Ph9fLCeT5zmDw1F1SuuFFok2TPMHpsbcRqWOaVHCtxyXtvuqA1Xi5YbWhV3esWa1PCS6kiyyqD\noIyN6PtbKtwWIXEaK0Pwh9OBIRiUE8xAq7UP9cVLTy1MfhDYnDP3YbXqt/RWxEqaSy/PVn2G1ZQY\nOvKfUUQ/NzDWMoyBafLM28q2rby+XFm2SC4ZpSF4x/E48nQ6MFjNZStvYn+DHDOtwTh4DpMnrhLl\nT7lQKjhvOB1Fltm2xOv5hlFwGj3BS9glF7kOW6PxVlJ2yci106h9Wt7/2Mp9MGeNxgch8sUsV+uS\nKzG9NcJD68Cn/urXLZEWTE/+9Ws+fdHv6FzTT+1WK7lOT45SGmtsXTbqb8K/9eq6e0oZaxSDsiiE\nyz0dhs5XT+wtSjVXbreV12vm4+N7Hk4HltcrqUiStHRNWTjJAqAKqnU92N43U5Rol6mUDtPq8Wul\nKK1xXcVrnTu+Vt5mdSchBicuD98hV0pBitzfq31CLY4DeQhqUSjlUGRUqTSVaWUjR3g5Sxl2/ZE8\n1Zpo9zsZtJSCd6JVys9WiMmQvBG+eRT5KKbGXlKgEcupiuBVI8X0Nhtpu9QnD79R+h6u0cYyOctx\nGtFoBj9wnRcJDhVFXDJ6TWineXc6Mo0jx+OJpw8f8CGwzjcMG+QVrGaZF663RayzqA5nk9tApQ/6\ntJwma21oG/j1b37D3/7d39GqyDXWGmqF3/3un/H//I8U81vm2ywusjhTMyhTCVW42c5ZWpNnzSgt\nmrIf8d7JItV2PpLBBccaZdD3epaU67olhpOjOE1z0kLvBw9asWormOvuFqvdtaWU5nZLBL8yTBsp\ndiJgTgRnSF6kEKrcYNwQGLwlNzgUuI2ekuQW2mrq8L3GPBdBxlor8Cxvcd71zVdO7oIJEbSBQaOU\neL/nLWKSPK/hZHn3dMR6x+uayTTWlOAm2RQajMERfOjAvYy1sjbUIoiH2hRFiW1caSU/l5ZOAlX+\njBZy7RzBGk6nkcMxEGtiuSyczzfRVq0hWJFcHo4Tx8NEy4XaxPJnjIFUuM0RZRSHY+Drd0deX25c\nbjIgbTTG4Hn3eOTheOBLunCdN4bBchgt3hoojXWOXNdV6r+6w0P3kIyzhiFYcoZcZdOwVgnb3HRY\nv4LX28ptTaxrZFnznaGwU/to8kQJV8HcS5cLP7Gq7S8lxMNUG65VgtY8Hj1LrLzc0ptU8784jP/I\nuHi/SexCvVHiTDlMA1uSOUHJooUuayLGwstceK/g6eHAehZtcvffGKM7ptbIKcZAHjNOi+zhnAyj\n1yQgrjUWuQUYKX1GGZlPlK79/gi2rp24dUIvihYyYutXTUGoqu5nbruubuT0BBprB6l0a5FaC3Fb\nqGXju89nrst2P4mr7vyJWSiVqm+agb2hqMlwL7Uuk3WLanf3aC32xKbkz6eSqFu7D7n37MDOIQ9e\narpSKihdcTQsjafDyGk6ME0Hvv/8hS0l3j098Xq5cZsXyrJyOhxx3jOME+8+vGecRq4Xx+W73zO/\n3GjuwvX8QkoR6ywHNcp3pLdeoax0gCJ9kVppPpyOfPvtr/iP//GvpG7OOayzaON599V7xtMjygxc\nXl+4nF95fvnMuqwsuWFjkqYlZ2k5iXe7NbxSPJ0mDocR4zQ1J0pJ5NZQrhJz5Pn1yvnSevpW8ZW1\nqFoJtnEIYl7QxvAwHng5K5ZlwTtHqUYq4BosS+WZBa0/88PnFy63K1ZnnFZ4Z6hRCJzYRhjE+moR\nMNthDKxqoxXpB5XQkbrXRCqlpHQ6eMbR9y6A3RJZsd1+GGMh5ni/vafciH3O8ngY8ePAUmeqaiw5\ns2UpbtEoYcAEJ2aHdUN7A12GccbJTEXLXMooKQLxum8m/BmxVh5Pcv06jY6DU7RiadZzU5uwVgaH\nMRbtLcPgsd4Ra0YbeDgOPZVXWZ6TkN+Mwiq5Di8xs0a5xj+eJr79+MiHD09oH3iZE+vtzOtllTSY\nFtiQD5YUxT0SO/vAGE3TilwQ7TUmCrLAHEbP6AWjmWJjTjeho3Uve6tvJ0zd3Rb7Auj6abwUYZqo\nupcN6zelRMl2XFS3vWmFPzjCLIUNUhsjC8XPL+Z/+gta7RZKSFtlsBbbFGnZZJjVFIMT3XLbepGD\nsgzjyHgcWdeVZV065KqxrAmF4uNjwPfwU/YWaiFF4TIPQxA2RxJm+u7TH4eRw2TR2vF6kRRdzrKh\nGU2PXKs+0RedWmkp5XDOyXCpFFrJaC1e/zB4mfIjIavsA8Ulrucryx9fqa3yck3CrLECtNr9+Hdf\nIq33NJb+DsrG15q4rGgy4FZaGPKtNnJrUnpNn4ckwUmg+hegD+Kt1UyT4+EYaK123d9iFTSnadow\nHgaOS2Cqlm++euB0DFyuN14vL7LxhpFf/7vf8PHjR0pOfDrf+O77V15evrCkjZfzSqkNN1h0Fk62\n0XAcAhUZ/KVN7InD6Dk+PBC3jefvv+fXv/mNtEBZT2uKb3/1NcF7ToeJ+fLKfLtynWf+2//19/z+\nd7/n0+czzgmqN+Z6H+iVWHl6PPL4MFFKxtiR8/XGdz98Yf70he9/eOXL5dYJpXITu8yFIRiG4Kjm\nKpueDbx/DIzeY7RmGjxbqWxR2Pi53w63skqYK0UeRvHja105rzMP3griuTa8d6TWKMt2RxILA0kc\nU50OfZ+bKCXa9WGaMM4zu4y1GlXk+6atYd3qvY/XObESojXnNfL58yvHg9TOeSXtQs52320DCoRB\nk0plifSDjEI100NxMnTPpUjosRVa/1nrzx/If5mF/MPjI5SK6xLG3rq+5UQIHufEqKeMurMFUirE\nlEDK1GRhQnXITOF8XQV92R0lo7ecRsfDIO3uUwj86sMT/zLfRJ7RmjBKz6ZPlu+/eyGl2v3nGqMN\ng3OcJtd9wZUxOI6TlO0Gq8hVmm20USyr0Psq9X663AuP99Ojs+Jx11qxbVIYQG2Yff6mfoSx7Tt0\nLI2tNAkttfb2QffXzx/Kf3LK7yeNXYLwRqxuW8w9cackdecsoMkJpoeR6TBgjWKZF7b+ELS6F1Er\nhsGjWiPHAihyqWz9/Sh9cUz5DdHb/YiyMHlFnmRwc71KenG/ZORcJcKte+Cqe83F//umcxurcU4z\nWNM3Txm0hsEzlJGX843rLHrMwziwJMEwKBAvdO5Vgf0drA35+TvXxvTmo9KDWjIjbfu6T6NCD4YY\npe6fgzip+lC6NUov4TVGS4LQiIPKaQO5kFuj5iQtOkrjdaYFRauWkgOHKfQi8ke8aby8Xvjy+TM/\nfHrh05dnlrjILa9X9e1pUpDSi5yTlLNU0MZxPBz4q7/8DY/TyHI58/LpO1p9z+F4QhvP4DTvHo/w\n73/Db/+pEWPi40fPf/q7v+Wrr7/iD3/4I89fvidfLhLs2kROen29kteV7BUxbgwPB25r5Pf/+sLr\n65nLdWGNSUiZ/YIYS4UoTqYxWMZhxFnhtbRSMTSGQVO3Ri4KMwa2rTKnxG3dep6gcL3BWmBZI7dl\nQ1t5hoO1xOwlMTuvdxa/bNjqLuvVUqn9wFCrSBzjGHDjgeuySlq825t9sPjR0s4SsnJWwjrG9JhR\ngRgLc5b5Xa397+lUTyOLcaJmeT503zicN9QYBe3Qz2mmp65T53O3nz7b/fULsVYeiNtKrZm0FWJ3\nRCxpY6qahhXuAP6entxiZl1Th8woVBWyoUaGAPM1kvvk2zrLcfIcBotTjbz2UtYxdFKcZRwDx9OE\ndYp5ncl/kLSovHmG4BxT8JwOnp3N4J1lCI7gDd5o4ZYDg7M8100QqdS7fqqQD14p1ZkQ0ppzTxlm\nCdQILxsKPeEI94FpKlLquqbST3v7EFX+/acJz7e0Xtfo+19sjQQttBZPMvRQTX/wlRZeTavi0nl4\nPDFNgZKlJHtbY9f+hS3tOlEypkTeZPFdU2HLhUM/2YmdUH4ArVUHJAm8qZZK8DJ4jbF0OFShACll\nXJNqOuHrvBEiWz+t7Ju81lKEUfqv15KxoTsjjCABnDZ8fDzyclto64Y1ipRFd8+d5yG1eT30paQ7\ndbCiM2c6zbHb7eSf8seKANvufIG+Mtw/xSbziRQTpTRccJ3NLQ4GZQ26NGrODN1N0tLWbyYw1X2w\nkAAAIABJREFUhMDhMHKcPMFWlvMXvvzwPZ8/febLy5mX88yWN775aLFG2txbE3SvavIZy7A5Mo4H\nhiHw9Yf3/OVffMvgHdvtxr+uCzVFdC24cBDpCHh6euCPfqBhcA7+97/9a/7DX/8H/vGf/sh//S//\nhT+k36KY+6C7cr7OvL68otLKukWevOVyW/nXTxfOrxdKzhhjcE6kOfFKm17sJqGyx8cjxgZezysp\nZ1AVa8FE0adDGChNnFOxy3K1KW6roA1ui/S0qlnmLeNgucyWlAtx2To2QyifxpiOg+ifJ+0eugMJ\n4QxT6CU1/XvRA3PD6UBMG/OsOlq24Z3kEbz3tKa53GaRLos4xIzrzBzEi55ylYBWvxErZ7nVJGaG\nKrJK8JZxCNz6/E//OS3ktaY7O+L5fINub0u5sqwZp3eoFNRq0NoSs2IrCu0CtQnDIeaMWmURjFF6\nDZ2zHI8jX79/4HAIbCVhUmbeMp9eXkHB6fHAh68eGZwlp0hJwoMQTG0hOM1pchxGy20VposfDF7D\nloQB4UdPzpVlTcwtc71F4ipcamPeyon357sppFiVRlpj1xW7dr4vuK0DuqQwVB52wLbGaDTBaN5i\n+/sff3IeV3/yB/GkW800DRIDr5VqhAOz9GGadTLsUqrdtfD37x8J1nL5fJb0XUqUJgkl7x3TOBDC\n2wlwjSspZRSKYXBYbagFTtPEvG6CwC21+3It85zQ/cr5/sMT18uNdY1SMZdkwGWtJfggWnfcqFU8\nusaa/mtSDkJRIgsYzXVd8EVOiIbGafIMThwCVTcqhYbq5EuDNW9zhH0DllNZIef9+/qjRfzH77na\nPzNJ5vY/CXuquH8GpVTmjg2YpoP4pYs4XZ7eP+HDwOXcG2OqVOHFbe2nObEqXm8L//f/+d+IKfJy\nmXm5XJnjRurlv7U1OfQoQyxJ+NhGM28bJTeG6chf/83f8Pj4wDgElii8lpIjaduE4FihqGe01oQh\n8PjxPX/3n/+a61/9ht//y28Zh8BD8Lx//w1WB7w/8N///r9ibUbTUNbwcllIm8yJhrVitOPhOEHd\nSEmOLdZp8cv7ICUWShgm25JIQ0IpTzWGqC21JuYkeAI5tlVGVxkePGF45HK+cbstrLqwLQ2MwMhA\nNOYtJmKdO0PI9YxHJhfBYJumMdoSBiun8lLYSiTnSMsbcV1IURw02goRs+TEepMbqjUGbC9OGQLH\nw8Q0hS670M0NtsPBhDgavKEqvV9QhVOdE1oJXjcV6XKdguE4eMLgQRvhDfXU809fv8hCfr3d7kWy\n2lrhN3dTaimNnJtwNejBFScdl856Rm+5pCRatKgr7FVspTYcYs4P3hC8wTnF4MXoH2MUN4zTHAbN\nZBWXLZPXiNM92l8LTYNzMtQ43zLT4JgGIwOStUggiMa6ZS6zDNXWKNN77mEAWSx2v3Vrb37y3EmG\nVDkF0j3nFXprCFiUVGt1f/z1FpmXRO6nhf1L8FNp5S332QdtznCcBqbRi9a8JW5rpPQQj7cCoArO\n462DWnEWjscDGsP5eeZyndmitKO4ftXb2cmqSWmsSBSyOLa+mTmr0NqxpQhJfr/BO4L3xFuW0U2P\nwtduM1xX8ZTbznah1bsM0moPSxhFzkrgaw2athwenjieDpBuxFi7rt04DprjYH4U0pB/KRS2whbf\nSr33bs3dIZFLP3X/aBH/H/bNvlrvtxWF6j7mbqdUqrNGNMpYhmGgtExMEnxqDVwY+OrX70nbSlwW\n0rqQq0hqjcR4CBin+O7TM8ttERdEq5ymgLPisR8Gf6dXNiUOGmGfWSICn3r/+MC3v/6G4/FIyY2U\nEuuysMbI958/M8eNr77+hoeHBw7ThNXi3uAw8PT4KG6OEHBh5D/95/+DYRwxVvNP//D33C4v8lnl\nih6lB1MpgVV5J4ykZA0Ncbt453CmV6RR5SaCNFm1UhiCl6q9rZC2RGsGtCbHJJ+HUoJP7tRH7wwn\nPdBorMuK9TK8Vag7UE3XJt9jIOUsQ3PAKHn/ilHEBEYZVEPcLVvsDpce4KsVSkElCep450UhAKgN\n1Z+p3VvvnUW3PujUuuOYW980JNNyW4UN773pmNwOGUNLmnsTZDBFGoZ+7vWLLOSX241xDBw6k0Aq\njXqku77xgYVJ0k+M1hK84xDg8nomliz+1V79lmO5L4KKvXhZ3AWqJUreBOjUZKyocqbWRFw24pol\nZWgNKSeUlq6/nAvzkng4BB6mkZgTW9qI3Vc+R6H+CSe8sfci7Lqb7C99Z+66/j5kq/3P0fnp3R4v\n2ID+hGva/fr/+SVy2WQh7/sXP3Me/9NXl1QOh6GfuKFVw/UapWxayTTPoEQ31wZrNLWTDWuF12dx\nAsWS79Yrq5RYo3gLuqQsJ1rbQyh3DblrgqWX9SqFRLq7Z1wrsVUFLycWrXbmcpXy5ipkuFyEnifV\nWqJ/5iIuFm0DTx8+8vVXH/jyu39mm5fOkqkM1nDwAkaTdnsjPmGj78UP3SXYF9/+YcC91u9nd8z+\nGUhqs3+e9yPW258zRlOiLDxt/++ZroOKjGW05Vd/8S3n52cuVGgJGy0mGiDinQJVOc8L823tcCyJ\n2U+Do7QmUXJAxyItTS3jWwYvtxeQpPJxGvnw8Z1U2+XKvKxUDa8vz+TLhV998y3DODBOI8Y6Sk60\nmjkeB4nRd+/+X/1vf8HDw1FQBSXz23/8f0nrWRakIfDu43twcgjRNAbncEZOoj44NApdZLPbHT4F\niCljbWI8DazekbeNbV6xfkAbK/O0CkU16halSLnH3YMzPVwoKALdb7CDFxxFikm+j1VQEMarvkkL\nPlb1jWZwAdU02xah82i00uSUqClTkkK7grUBbx1bLGwxoXJl0BpavqeXnRErnO7ul1bFfr0npJWG\n67oRU2LwDjcO0m16p2VW8hbR7IeYP6OF/LpFqlH4GjgeBnKK3K5V4FYlsqSGzoUjJ4wxyD/khDc8\nONbfN25rotbK6BxaIUGV/cqM6INxSzynyJWZ754XPn26cXo6sC2V77+78Xq59RQmNO/JZiNVxcMg\ntVm3OXJZVt5Hj2Jg8o6zjmxJ/KNrzqQm7pPUedy6W+Nqa/chn7WGIXi8Fa0O+skb+XDugNs+9NxK\n5dYbQmoTjfaySI+oQuOMIlHJfRG63/TV/YoiOnLbT6Gy2BhtOB1GtiitM3KNb5ScyTmxbJqmnXhv\nx4G4JH749MISJclmrb6XXpciU/t1K9zm1DtVFcPo+PD+yPPzzOvrQmmF2xqJqaIqfD5fibUT8HRn\nyXS2ircW/+CYUugNO51D00sdpiCLgdGKYVDEYoilYa3l3bv3/z9zb/ok13Wm+f3OepdcqgoAQYKk\npG5Jvc/0Zvv//+YI2xOOdoxjwm3PtNSSuAGoLZe7nNUf3pMJiC322J+ojAC3AAtZWfee+y7P83v4\n7LM3PH39G0IKzGGR8IrcoavGVrDt2qB8uEhkRN66Fy3dkaoFrcp1YSs/m9+fTSpFAywZmfO3UJEP\n4xd17QJQNDjXid2mJ7boLmMU++2OsfO8ur3l+PjEaVpZF0EJkBIOxen+QOisML47TZkzx6cTzgib\nxfYdr1/eUrXh4bCIlyEs1DATk+SakmVmu6yL6KGtZtxsefnyBZ+8/pSHh0fWacKYjofHA1OI/ORn\nX0qnFTJWW2hz3q7TeK/49JM9m//pr+k7zf++3fJP/+l/YY3ytN7ut8wpXvEMplScsWjvRRGWEjkn\nYpXOTOvKcV5awESlH3oc0sU9HY5sd4XtdoPznpoTqlRh+phIVBIHeZwCx2kh5kpZo+xOjEZVGdc9\nnxeWEBuWQ2OrFIExi9rNeYnU22425Jp5eHpmuJVbyjpHmQIpi1Sx02C8PBSm85kwB2YjITPnecZV\niyKRSmBNEVsaJrddP8ZZ4Z13imXOLcO38sluFIVMBYy65uvejRuMt1TzRzQjH/uB3WZkM4zEIKMJ\n1dIv1iwyKa0KuxjIJcvTqLXsy1liwkoR91+I8s8hCaTGWnXVTS+xEOeVWuDhuLCmxE9vRm5vNvR9\nT7EO24nU8enhIAzmEBi8Zlmj2NpzYQ1SmVtrWNdMCIKavIQwp8ssvFXZl8VcKVWqWKXkptMfqUc+\nuuXldSnjm3qiVEzM1FwlC7FVlMaKPr0AOf3+zFbej27Lm8vXEuCX873gV52jO6/XeCmjtahDECvy\n0Flu7vZ0vuP8PPH0fCBnSdQpBaG1WdfGE2JdDi1EQWaBUoW4xtiIqyz5LoflNK8Sp7fdEIJUulXJ\nQalNFaTC0JNi5HwOMvaxFXKV/M+2e/BWkJ9GK15/+pqf/vRL3nz2Kf/8T45piZzngFaGUjW5gukM\nZhH8gdaqLbzqtTKCS5XcOqZLi9Qehh/9lAAxAmn50KWA0FoeDOUDnTK1IuHCnH4+TZIrmS7LNgG4\nDZsNb744YoHtZstms+fsn5jsETXPKGRZDo41rIScUV7iwvq+Y7sbmFcJ81UUus4Ta2GNEec9L0bP\nfrfjy88/Zb/bysKsFlTNGJXxFl69vKXc7CgxoKxj3O3wXY9x5XoApRTIObOcJtIaJY9zHPj5L35G\niIFpWXh++xWnRfwB49DTDb0YkppKzegW3BAEMFeVxlmFQxPnyLJmQsz4zpOq3BO5ajQGh7DFdSrk\nKtxubQ3KNO14FoSCsZqaCylmQSVURUiFw2khRSk64PKQVc1hXXBOxjBLWCUQw3kphiS1jVSlAzTK\nNDOUXDPGapQ1xFx4PJ65PXnG2reAbNnDXI/wVqylnITHn6qcb43b9GI/CNY3FXTL+6WW5gI1vxcL\n+fHrx1Gt7Dbsdls2Q888nZAYK3mlgqhEtPC8U47kJEaAmgqn54nYksS9sywhEpuMrO+kIhJ1h8SN\nnabEmgXJWSjc7Hpu9wObfuBm6Bn3W6w2/CZVTk8nlnlCa1jTyhwiICakkIW0l5LMtgLt4LzMOS4j\n1Msh0NptkMPHtAP9+vsv/8+lrefDgrIiFfucZDknYhyR2xkt0j6TpR3M3/u5XqrAy7igVjGp2K2m\na/sIGU/IqMU00XuuFVOK2Mf3W4yWrmSazuQcREJXFCmV69ggBrkpUpERimvKmBSF9y5p4vK+RB2g\npRpdJLHp8oaVkVScSkHlguub1jsXXOflcC0ZZy5ByRVqaVFYjs8//5TPPnvNdrshF8XcPAGDd6At\nmTaOaWMfoxu7pfCRnryFTdQPnVG9frYfKYCun/MHHgZtZGKBnAX8BDIbF92iItXMNK+8qw3I1Tja\nKWec93z55i0lF3abkWG759GbK6PFXuSK1hKIWO/YDBtUhd5JaMrD41Eq4e0gn1kprMvKbrdnt9/z\n8u6Wu5stnXNQKrFEYZxM8pDY3byg226ZpxPduGGz2+GtpcC1o1uWSpgDcQms04rxjmE7cne75ee/\n+BlzSPyn//nIHGbm6cx+uJFroIoSSRlNpyTmb57XxizRDFgJ4I5J7qtSOJ1nrJOgZ6UdznR414E1\nqBDbZ5guu2VyGzk6qyWubW7MEq2pVRNTYl4jOQa5bowszZUWqBv1UnBpznPAa4dWHbrKHLuqSlbS\nyQiP3rf7vOC9oxQIa+A0L5zOEaUtKbZOxsmDhSrM/1QKMQRRgsVKZ8RbMnjPftOxxsyzabkFWkkV\nruSa/6FZ6o9jCLoZ2PQeZzSnKA6/ZQkCklEa6y3OObwx1JQ5HmfiOlPCItFVSaoEbzQxhhbcWznP\nAitCmWZvtyjjWeMsS4p2dyoNrtPs9hv2d3dUDJpvuOiVj+vKYRHK4mYcZZa/G1iXSOcNS4CnaSGV\n0iA70v7UUn5vTlorjTwnDjuZwddrlqPmcsDJokd+ycFagFDqB0u/+wjiFfJ1bPv9V2ltI5U2lxON\nbKcF2fp8mKTVRg6jGKXKsNZSlMzrjdPEsJDWhZplyx9SFEmjEulfRXH/MHOeIloLe2Y/9AzGcf84\nEbLkFKac2tc0GGPJSSr407ww9r3MNJv+GSoqK5ESaln+KAM0UJgrstiKBaYUmUPCD56XL19itOLx\n8YHzOpNbBdN1Am1S2soS7fKZNOyBseb6sJNnw0fKk48UR7/3UhddO+K+q2CoTSViiaawij1AFlpF\nfp6Vltc6x+YtEPlZfD5h7Tt+89uv2Aw9+5sdL/aeGD3TJMECGoGQmV6z22zp+57tZsfpfObp+cA3\n371nPmfubne83G/xfsNDKSyr480Xn8oeqlb+9df/yqevZz558xkhR56fD8znmc73fPETx+thy/7m\nDuMM/vJwrZJ/Omw82ggTPanA6XQizBPohFWyUP6zX37Ob/7lFfff/I77d9+R68rp+ciyrsxTwGjD\njVJY61AmkWOmxEJnCtpfohwbGoOKVgWjZPfiOsewlS76HAMpLpT1LLLkhvNVRg7FrjpWlemsYTv4\nq+hAcM5iROqdYzt20jVmMeYNzjI4wxpEHqoppDBRkmSdGq3ZDgO3mwGjBLFctWZOMzZrSjGopFlT\nQS2S6+q1wXkt3UeRMU6shdNpJqxirNtshxZVp4WlFCWknRTbNVmJIYh89w/e9T/SQd5pyCGQasIa\nS87CgEil4DpHP3ic6+g7CWA9nQPH08rxvDLHQKVgraKgWHNjj1RplZ1TeCsqE2ctU3B0NYlVfI0c\nTisvl8zdzmCqRiex2r59eOK8SOp6TpLjWYocWK6zjGOPypqTWYmlNpWKiP21MahyQVteDmd5iEqA\nRGvxC9ccQsHkKEHlakSLXBX5clhqoKq26BXZFa3yNQ1vm5t08d88pNuD5KKZd9pwngPTvHI4y/tX\nVol71kj8ltOi19bG4azn+Hjg+emZeV1FAaLEcXu7Hfn0ZsO+73iaVrZ9L/Q2rRmdQSPjhWUJzKuw\n5X1LCHLOMM+S7BNDQo/grSxYlZM2siYZb0mykKcoUE5hRs0yz/LAxGC8oes7xs1ILZnj6ch0noQX\nPvatmkqoNu5QReaZtcr+YrcZcc7zfDq35XP9qASXn8VVOsqH2+eKQGtdDzQ+dRupaS0+hhgSF4Km\nbcgH6VLsNfVnWlZSraxr4HR6pvcGVRLh9ITOCa8NxlvWXAjTSqHQOSAJRfFwmnl8PvP8vHKz2+E7\nx2E6sbx7pla4GXv2HoZORknfvp0o6VtCWNjtR6bDicenM1YbqX5NZrff4TtPjp4SE9P5SC6J4XYD\nVZKHqhezzLosnJ+OorpqeAtnLdMSeXj3hPv2kdMcmM4z1Cr68d7SRUMuDmMUtcgD1/Ydu82GuAZK\nDCwxNhSEY7u3wjXPKy9ebalqR8yRt821S4XBd2QuiVCWZT0TYmJZZKkaYmqJVcLA0bZSYpRqvsg1\ndV4DmSK+FlV4OlY4LtjOt/GSKKVSjljjqVXMZEPfUYoip0q1Ge2sLHSdw3tFipnjQcaAViksUmwW\nJDJPtY5OIeq0JUYxLCnxXmjE5ayQXdUfev040Kw1EJLMvoT3oa5huF1rXfqhF64xmsO08nxeOc2B\nkKLcMEZB5rqsqu0WM1o3loEYD7re0gWDbdvx+6cTr+5u+PwTgyqVtCyczxPvn56ZmnHIGAlX0Ko0\nzK1I7pJpbO1GIZTqX8JfU2lp2LleK65aK7ZJ0EqBmOQQkzHKBZClWpaiuroHm6sfa7SgYK1mjfka\nUiB2dvkVLwCU9rrMey9LTttAYNMSSDmzrBkM2CIxbOoC5TIGpT19P7LZjJzePXB4PhCSxOyNY8cn\nL/Z8ervjtneYWjnMgaH3DLqjagMpiYMwVTH5XKp9I8veoXfUUoW4mEUzrVRTd1gLVHLN1BivVmlV\nstyADp4OkRgL1sNN32OdY+h7puORJ2tYQ8A5xc3NFmvgfHim1iIteDMo0WRhY99jTJLuhe99iJfX\nR7Mu1cZissjmOn65jLFyEaOJMuKSpS3ejdH0reOQ61bCnBVKIgzb8jius7hWS+Lh3Tsi4n7sh564\nBtHx50RcAufzhLKGaYrMS0ah2O82KF355v0j58eJ/WbDbvTk84FMpGhDiisP5zPL+cjnn98xzZHz\naWaZIzFFYpj44svPGbdbuq5nVTOnpydKzVSV6fo9WjtZeFZLCorlPDNNRznI+x7bjF/npTA9PZOL\nsLSdFWS1s3I9d06MQGhPPwxs9zvuXtyRQmA5nUjzkVwrzii8c4SwMJ0rn5o7toPj0HVE4YO1cYcl\n1Sz3kbZUzoSUmNeKb2HtzjhAOqMYMzULqbSoinIdNYm2XA5OOGVRLu21wfemqYwSMWi221GyRWul\nNx3zkrlITJ01DJ1Ha4vxlXkJPB3WlvhTZMRnZKxTS26BMlIAijCgmX/0JUtUsa5Twwn8EUGzvrl/\npCiL63p2u4FUCuuamupEdKb7zcDgHbUUgVKFtSXdFxlPNK2hUjIHk0gz0Y8PfZu4VoluEr2yPA2/\nffvE61d3IjVShfP5zP39M8saCTnTW8Nuv2mpKaUximVEEPPKGgIhZ5w31CA3c+c0MUslX3WTsGma\niSRTigKlxYhQhJ15MQMqXdCXGCoqkt4l6eObzjB6jVGanC6LjiqVgPqB2QofiRJrvcbfLS2Rfhjt\nNdB4XRPOOqRvd3T9yO3LW15/+oKnr78lrgvGZPpe8flnN/zyTz5n7wzLHLl/OnF/PDEOPfthSy5a\nTCZrZp5lwSnxdEglai2bYduYEZM48JYVax2261E5Q0nUBjKKSQIGFMIMX5MkElUlXc7+boNRDpLi\n/rv3xBBwneb2rsda4aHMp0NTRsgNnhFo18ubDSgIU/i9ZefHn+BlhHL5d6PlczTmw0P14t68YCG0\nbqz72h7Gus0+O0tBRk05FfrO03nHaV4gJFEo5EhvodbEr3/7HX4c6MeR292W2GVSA1C9ffeeeV1R\nxkJKDM6yezEwbh1vH4/86rfvGZ2l85bT4Ynp8R2dc8KytpYlZN6fJmqZwRjWJfH110+8/e4tz/dP\n7Ie9HHg5c5gX8pow2jI9TqidwQ89xipSiVdc79t37whhZbe7YbCGn7x5zcubHd++uydWgx+3pHlh\nsAlykWV9KqIPN5WXL2/44rOXbHd7xiaA+K//9z+Ta2SuiTlWYotI2759RCnLoBSvXt4yhYVcpLK1\nVXJ2ilYtTFzkjuPYUZUhKQ1PmiUGQi6IcVccwrve4Iy95naK1FbC0cduQDlD5UyOheo1w2aLQ2Nj\nYFmPpFSJIeO5ROM1NLBVJFPAXPYyteWMivghJskb9s7hvCNQSM0drhVCSATm1Ba5l+7ue68fh0c+\nZ6oq9AgrWWlxr3U+iQRNGQYn4QPlIpNTBW1hMJZSBJqVsxyKnTPsRo/Tit2mYzv09H6gsx30lqOe\nuLBLMmC6ju2LO0aTOT4eWM8znbXQebresN/tmELi+TRTKpyOM+8VLEsg5oozBl2rGAbacpb6IUTg\naj6xps1N5KJIubDGTGjzWjnIZQFXMy3JXLVDgybzUxgLnTWkWohZnuCXuLgfWn6A5P45Y2Q+r5pi\nQ2lSraSE2KOVWIa1Vuy3PbvRYVTm+XhiWhacMYxDT+8cusK8VN4/rnz3fmFeHL7bgLlhHEZSnTFx\nx+ZmxSVpQQuRsfOMfYe1lpSDZJOWwnleobX1zkg+oXyOSuL32kxdWCctuNoovNNsN16g/ksipZX5\n9EwIYu6Yp5VpWom5QCqEUklFNNBD3zEMPU8H0cdfjDz/5lUvh/mHyltrqaRMrjRCNdbaFj4gC06j\nGoYhR5w1bIZOWPopyRI2Z8IqSq3Om6s88bv7I/v9I7e3uxZMULEEdIbpeCLGRNfZhnzQ5CjGlKQL\na4DlfeI0RbqmKFpC4P1jQmcBkllr6L1F6CWa+4cV6zwJjbbSut8/PfPr3/6GKc7sthvIBWsc3hni\nHHlOz9jzGectyiiMV+zutmzuN6THyHw6461i7Bx1Dby+veXF51/ys7/4a6bTmfff/JbvvvoXzJJR\nKlKqouTM4fnAt1rz4m4i7XaAIodVsjaxWAxzUkwpM88r1lcSRQoSdOuOIyFKIpL3ls5prJYc1pwS\nIQdxDueGpa0KbRy+Wep95+VnqxS90WxGuWYVlmoVIWe81gzOc7vf8/rTV5ymGbNUbu5esGQZxzKf\nGJxi0xmKtWL+KxKoDaXlxWqUupjGlEhEg0EZxZJWSinoKvJWrzXaarLXLY/1j0i1cglGlgM5oa3I\nqFIuDN5LBeEkxFaUCWIcsVaMK/LDqCQFvZW57KYXfepm7Bi6jt51eGMJSqRQuS2dnDVYawUn6zT3\na+Dp8QA546ym7z03NzuejjOupVirAssSmYMoLZwx1CQdBLWQs8CnFAi3BJpUUDeOiZgTlkZXTC3M\n9bIEkyq1tKWWZvAG73TLEBUDhCgtZGafSkuRL3/YEHSROPad6GKrEi37dRRQoCjd9DBAu6B2u57O\nadbpzPE8Ma2BimLse5ztiEExJ8eSR5T3vH4z8uLFLS/ubhmGkf05cNuq3JQzuSQKgb6F1tYaqXYD\n9h47PctCNdE06P4jwL7o5Y0WtUPOl0xHfV3g1pQ/uBOXiZRmtC44rzmfFp6PE6qlq8j3p9l2HZuh\nRyvDtERO03pddP7Q6yrwrFzDM5QShYNSwqdRjdMOjSXfFqrWafpOAkicbYLFnMklU2OmcwbvDLXC\nw2Hi7f0jqILSkmQzx5UpVu4fj+Rc2G5GShFbuKpC70u5MM0ra5rJVbEZvHR+qTDnQo6JnCO1ZAar\nsc5jnUcHy7jZ4IeBcdMRQ8Jaxbycmc8jnRVmtnUObQ0xJcI8oYwoY/zYoZ2j155x6DkfDOfT+apW\nUlVxs93xpz/7KX//j3/LdJ74b//PwLpM5CKpTHUO1Jo4Hk+sy8p8PnDc7rDGcj6eGAePMxZVJIBl\nzYHnw4nNfkNVBusNNhoyunFysiTSp4jGYFzroEKQh+gq3pPLRe+cZTP0DEOHMvJQNSiGzrLfjex2\nIzFWziGSYsQqxdh59puB25sNuURi0uz2I/tj4HycWOaCarF+MSbBNScJxLh00VqZq+rwKNI5AAAg\nAElEQVRJa6hV2PwqapYQgUrXjHeujfRGb1mzIv3AdfrjqFY2FlTFOkVMAWMt212PQg70zSBqhnWJ\nEuarMrZlX47eELNI51TR7FSFJPNpvMM631JKIOeF0/TM6TxJ1NPg2XQOkxYOb9+xf/2K56eJX/32\nG06pMG56nB3ZbjqGsWMce17ue/ZDJzduq+BCSMQoMVC5VeYlVzl8WjCCUQqvTZtpy+hHMh3bwrKV\nemuqZCXmH63BWM3Nrme/6Xj3MAnkJyuKlj9PoD71w0H+A6NdazSb3cBm7CX2qz1oMjK3z4iJyUpc\nEspYht1AKYWHb59YQmSJiVQSd7e3eDMS0khRe15+dsvPX7zki5+84eXdnt2mAyrx0iXQOOFVKidb\nDSUXzuuZd9898N3Xb/nmt1/x3dt/ZV2fRUM7WEnEQcmCtaUKnabUFpxyA1CFQ/Hdt8/iLciVx7DK\n96wV223HGjI5V7qacd7Se8/OdwxOdi6Pc2KaA0uI/84hrq7ZoRXVPu9E1KrR+/R1Bl6RB3jNksRj\nQORtGrTKGMRsYoxDKZl1QwaNjF1q5f5p4vl4xqiKt55SCvOy8nScSVW6u+O80Hcdne8YRs+86rbQ\ny2DBOjkcwpJxzkvn8fzEeV0JceWkNIoJbSy7mx3j7YbdTc+YNJbKbjPwky8+YX9zy3a3Z9jcYqyM\nBA+HM8u6YI3G3o5QFSUWSsoYCqVEDvMZ5ztitSTt6DcbhqFjcNDfGMKXnxCWv8DoyrwsHE4nSlaE\nKD6N5+cjY/eIt5Y1Bl7cbKi1EqtlWs6s68zvvp74Ur/m9u6WVy92PNUzk1zwFK04H2dOxwnrJfFK\nVSPXcsjSwbfxrdyfmsEZtp27RjNaY9mMI+NmxA89SifmlCm5UVGNxjvQSh6OOVfKUjCIFjykwnla\nQZ84BrmfL9meVgsZtFaL0g7F2uSVrbCNuSnZRIAgYg+Ia0Jpi1OWPzxY+ZEO8qfDmc5btnpAK1FJ\nWFVJoUoyh7N46zmXIJFw1CZPTPROlkVaKU6HlRSSHKwFtp0HXSkl8nw8cT4vfPXtE0/nmVgqXllq\nyjy8e+b/+i+/4qtff8NX377n3fOZJWVSLWy2PXIQc2W2OKdxSrEfnYCaSiVcSICq4cERdClN0yqL\nibYVg5b3ebmYRGN+USrGKoe4bZyMfnTc3fVM88ppLqwpE1LLDmwYzg9LTa6Lt8tLtcPGfpRjeA1N\nprZIKxkHFeq1wu+6jpgyb9/eczyeWddI1bBGjR/v+PwnP+eTNz9hs79h3I7s9hsG53HaUGpp3YNU\nprnKoijlemWh74oEKNy+uOWzN59w//Yznp/eMZ2fUHqBGqgpEU0iO4sDtlUJyyXnpm6S53ZIlU1v\n8J1hjYGUakMc0BacmbktTU2TLKpm0JnmyHrBhf7A6/vSw4vzNhdQqlBlCC5xXvWyg9EtEMNgq6gL\n1jUzW4N3QlQUPbtU4QISu+x6Ko+nmTVkYYhXmNbI03ECrRiHjnFwdN6y3/ZstgPLKgqLlAtTmolZ\n7pErasCIoGAKcJoiTmkMchD1XSQvAdaAMx5FIaxn3n37tQQ51yw292Tbw1nQwlVX1hgwyFKzVNFk\ne6vxSnN3s0e9tMwvV4ZhxDrDt7/7HSmciDFzt98SvvwJp9OZ9/f3lNLeb+sUc7OwG2Mlai0XlpKJ\npZBy5TQnwpooMbXDL1BSpKoi92lvWBepXMOaSHGVIBqlZenqy5XXY53DtlxRsiCwFc0bkCsWhe48\nfSysPpOHDE6i8sIi3gqlSlOUJWrNYAzKe2zfC+QuN6yGkmV7qZVconTvSjps1dRnpci4zlzGrUUg\ndUrJoqleRPN/4PWjHOQPh5lt3ypn7bBKy2aclvhtpX3OKbGs4sw8zSs5J4ZepIClaGJIzGtiWRNL\nrXTtBg7ryn0MHE4rT+dFgmu1yMB0VSzTwtvvHvg6RR5OE6dllVFNisQQWaZZkJtaKG2dM9IRVPnA\nP5DN5IC6qCFo1nwhCCp0yjIOKJeZdoNl0Q7epni7QJpQSKRaI7RpJRV4SJklt1DnXETG2CrsjwRz\nbXTyYZ6rkIVrzh8S4kuFVPJ11KSVyCONsfjOE5eV9w9PhDVIFWF7dnevefPln/KLv/wrvvjyC8bt\nKGOjNnaqWZbPpZldKo2HkStZf1hKdyiME+na7W7Dy7s9z48veXx4x7w8s5yfmE9PKAJaiYzLqUY6\nTKnNOMv1htBG47xjDmtTFxm0sRiT0ZeHSRYFzZIUKX3geaQ2tvrvver3/7leHlZSkdfG+XDOYJAQ\nCWcNvb6kIGXOS6aS8V7hrKJW4bzErAnNYCYHd2JdC8uaxI2YM1MU41fnHc5ahmFgGDtRUSiD72R8\n56OTcOnlWdp0pTBBckVjhiVUIlmwCFoOqzivLKcz/SDL8xIrhxjwWtNZh/EWYzsqGsG1iDEiRuG+\nK9XSnS5O2RBwWtH1HuflvWoKj+/vWc5P9OPI/uYFSr/h3f17ht/+KyUFshJqAlpyZDEaU4U1kmu9\nDAAppTKvhXkWvjrWUWum5CxuVysL6dpGWzkVzkvgZrthHEds37NfEyGspLDgtchDtZHleKlZvl4R\nFrrOVeLi2pJbaVhT4jjPPD8fmWdxiuasUTULZMx5lBU8cecc4ShjmZRBt+tWXM5yOJf6IbzaGENO\nuRmZZFSkZJwvYogqe7Q/9PpRDvLnKRAz+D7QO00IhcNx4bysuN6iVCHHQA4LYZqZ18ThvFBqoesU\n/Si/Z1kz51CYYyYpxKATE3MunIOkzjvv6IuYasbBYZQwnjvreDxNnBZJddkOjtFZVM48vH9iOs9o\nrRk3I6MFlVbCEq9hrN5Zak7EBlaSEITaqnGoFEJKDF2HUqalorQPQF20yRe7eGm8jkpZE9++O7Gc\nFiiVNRTWWIilED8ap6hmJKJ+NCdX178A0gFcKgHVWMpWWdYY5SIxis55xmFku9vge8t0PnE4nAQ2\n1I2M+xf89X/4e/7+H/6On//8T/DONcRAG5+kLNblUjDKyM1Y256gVqwSd2Ip0obrWrG14rXhZj8y\nDoKxfX565P3bbwhTpOaJmmU8pHRBGYezhqNbRdJYhNsCYsg5TwumasbRs/Ed5EK0BlQn+YdFM2eN\nyxU0FCX7gnoR/v+BTcP3lSwXLfnle69VlvC+czKeMupqzYfCbhhYUuWwBA5LEFdjbwUclSU1yTkv\nod9LuO411lI4Pk/SSVzog02K6YxnHLYYazlOZ0qG3nm2w8i46ym18PbdA8+nCas0cQ0SJqFAKU0q\nRbojq1HaMM1See9uVqwV+qWxhpIK87xiDge8HzDakSrkImoqjUVXjVMSmZiSBKq/u39g23cMm4EI\n+JqpQ6UYxzxF/GAY9zv0sOHFq5fc3t4QzmfWIigOpaBqMdlc8lkMldEZVqNYqtzrp/PEduMYbgym\nZbou5xnfOVSS4sV1khtrF1k4f/rpKz75/A1ox+H5kbfffMV0PEkHr4RbtEbBIu/HHnKlrlHCtXMi\n5kxYIlOOLIvcmzkn0BVnZY83dJ4wSihGzAE9WM7rwvk4kxHDmLZGCtU2W82pYgbF0Du6vuN8mFvN\nJYgREJOh1V7uqR+ICPpxlp2Ath7vRzSemmYomU3fyTwa+Oq7J94+PPN4PBNSZVkDRsMyGb5Lz6wh\n8zivjQ8u32xMlaIt/X5DVyvzGjmeF+GwDB0vX9zS99JGhSXgvWM79Hhj8N5QsuJ8jli7ssYMWiiA\ncVl4epz55u0zT6eVHMQaHGNqmZcVSv7AUWlzcWOkvY4pSbRb000r3ebmIKEGSOteK8QCxzVJyLHW\n7WtL6sjlYfDhedASc9p8RfSo7cD2ltqIIL11YvVvVvdaW0q9kQpxGD03L0QaGJZECplUHJ998RP+\n6j/+Lf/4P/wjX375BUM/Cre61pYW1NQ6tEzNKoabq5NYNakkuRkpxEBFls7GGoPRPd53WOOw2mKw\nJBRPz2+JqyzXjNIym1K6OTBrCwsWmWnO8ueFnDmcF9YYSc101Qq7K5cnhMTcQrKbM/vfVf783kup\nayclyGH5vLWqWCW8a5Dl9bIWWW4HIU1Oq8I5xX4cpJ1G0muMjWiTJOZOyVyh2VpklNPepzgYVxKR\nHBLvH46kkNj2DkqgGMvpeGKaYsMpF9aYJC2oKSRknJM5TsJ2fzKa3mv2J8FWvLzdcXezpSrNPK+s\nYabvPb7vMK5DmQ50ZZkqtfaAIxfNskzEsABF2PUpCSuIyrIsFGWhgK4FUwqd1YzDyGZzgzL3GJNx\nZEJcRTKrRVJ8XALP5xmrz8xLQFd4dbOj24ysVbHcHxj6DbubjYDvlHRrox/E9FMQp6dzeCeBHg+P\n9xyfHqlxYTt4nHVY5agm4fteiis0a0ictaZTDqp0rQqN1YK5OC3yXp21lOwoTRm1rInBFkavGXZC\negx9QpfC2PWgNVNjvVijGQaPNboFzW8kQq7x+JUqrbMtlBzotaU3f0SGINVSfLpBpGA5pmtOoyqF\nsBbeP584zEGq0dTGGVVoe8sSJVuzFFItjZUgs89pSWy3EvUWYmq5j4ph8Oz3Wz795IZ1WXi8f7qG\nLR/bTROjoHD9IjNXP3g2Q89xWTlNiffPC/MSGmZXrLTX+dfFTdnoh8JXaSaXXFhDktlbm41ro1Cl\nAbbaEvNSG66pSQ+tnDS5XrC3H505rURUVzXzh78aLUtj6yQnUMxHQkKmjWuUkvxRYxTD6Lh7uSPG\nyPm8EhIMmxt+9vNf8g//4z/ysz/9GbvNpsVUifW8oqDpxC/jIWGXlDavFnt3LeLalfn2hWsipiaU\nvY6BtHKAgWpkVFIKj/EtxjaUb+OdC4NeYRoFLrdF6GUkZ4zGYyl4apauiJrBWBQaqqamfH3f/z8u\n2vY39VG4h1T1QqTUbHpHrZIypDDtzxF8RIwCW9OjXOdVy4NHVVG5KMoVxCXOhw9u5VJhWSNPhzOb\nwwGjNcfjRM2JHDU5rxRteDoGQnOUQuvItBK6pFwuAmSK6YpOcFpxXAIhC8r5tVaoFtxxeH7CeoXr\nnWBkVYcxHdZ57l7ewnbEGNNCMCIpRdYgnXMsMJ1nljWQ0eyGkbyuTIcD1TnG3vPFl5+TUuLd2/c8\nPck4T1fwLT1pKZoUEzHLglhrw9A7MeRNAU/h9sbhfE+umiUInqFzjlQSINdD36SvIQTev33P6fkR\nUyP7jXCWlBIOEbbdTaoIMxyZ2ZfSFMZUvGtxj5uBch2/jpxW4T2tMRGDLOGtlsNaGyk4nLdoY0jN\nJKjbfeq0uNGHYUDbiZIy1II1MnqJJaNzpvempRH929ePcpBLVJii32huX45oXTnNC4/TiedjlEM5\nRIls05p1yVQKqSSWnKU91Jqhs9foploqz0exAptaudt2HM4r9/cnXr3YMXSOcXT87IuX5CXw1iim\naeJrEsdpYpkDVcn2fp0XlPEMzrMfOtajpSKLo7XF0gkDWaO1xjtNyrXJ0cyV0EcVE4BY+S8Kk8uS\nVIGujXr1QRJFk7mlqlhb+kuuMkK4tPfXYcDlJFIfvi5IavtuM9L3TpjqIcoM11hRwE0rWles8lgN\nm9Hz8tWO+6+feHw+syTFz7/4nD//qz/nL//6z9m4oTHGm6a/ypWt2kMht3T50hQ1IYiKodbUknby\nddmqVVMcKeFGiEvViHKlG7i5u+Nzfg4YwprwPhHiyrpOUqnqy5JNItRKyz90XrMdHJ/f3RDIHNaF\neQ6sT0fCGnBGt/SWEfTCcQqoJXx0mP/3T/XLIW6t+RD9VqW+dlaCwkFhU8X6DiZFzMJTF+2i6MyN\nU6LyeD4TkyB8UxIVy+VgT805LD/3ynkJpHcHSilsRg9K0XWKJay8++2BgmqmMgljoSA7gZIEF1BF\nGnmVUbYl61phipIu1Hc9X8bISy8HzfHbA+EgvP2KJi0Kg2Oz2fDLP/sprr4ULXrMhJiYpom8Heg7\nS2ec7AiCXBtb3zEdz4QQMaNnsxn4u7/9S7746Rv+83/+Z/7P/+O/oI9nLJpeW4ZOs+s3pDIyhUA5\niPIs5Mzp/ozVml+8ecF+M+CHDUk71KmQS2BdQRUFWVGVpt/2aKc5PB95//aB8+FA5xTedKAtRkn4\nszw4s9wb3tD1YsNPKRIaiXUYOj59fcsXbz5jPZ1YQ8DfbniYTjKyLJmCbfdykcV7LqRY0LXSOUH5\nPtyL8qlzFq/AW0dnnHT6KaIpGNtTaYVBKWRVUfaPyBDUOcPtpufldqCsK2EW9YmvhriI3Mw1JGrJ\nmRDODJ0j1wafAdGrtpY2oUgtyfw8R75++8y7B+mpnTXsNz2dUUyniYf7B2wt1ByoZJYYeZ5WapX2\n2zoL1uGcpesUOq3UuFJLklBoIy2+MVqQshpUSwT/oA1tlL5S26+25KygzeX/NdD4H6rREi8v+VqV\nXPWV4SHfslRaF3PXpUL/uFLXChSVHAJLlcitomtrz6QdSLnglcFqj9GdtIslc//uifM5sb97xd/9\nw3/kF7/8E5zzLWtTKrtS5LCQJ9WF5Fcl1DZJkkkI4kQsOX0YwTR+jLViUXbWYJRty0mD9VE+Tyq7\n7ZbXr1+ja+J0esfh8ITVC5015Ka7NsZi3eVAk0VTVYriFBSDVhZrk+wySqGzls7KmME4UJclbP0o\n/ef/6+uyaK7yfa9KlBdWKzabns1GtNrGSFAGCpY1cF4Ch2kRx3KtLci3Q2tFCI6cEylnRlvJyRBi\nYQ5yGNQqS/D3zycOk8FbzWZwpFw4ToELVlMpxdh70OKGjTFSKVgnS/fYlEQ0N6o4oAunOfLd44lf\n/+Y7np7OKAUPj8+klK4IDKcs275n6AzT+cCpt7h+JMSZlCNrLHzz9p67m5XXr25R1uHw1w58TSvH\nZWKTepyG0Ru++GxHSn9KyvBP/+v/Rs0rOS4E5fCdo/eWofNs+40EEFvZJfXG8uLuBTfbPd24wfXw\noGQ2uSyVOE9YwPcOciStZ0qodKqSrMU4SVPSCnorOZwpSZHSOwu6MqUVVWBeV9Y1YCt0VeOyYl1E\nnptJ9L5gnboinLve4YaOah0xt67dWOYgqATb94KGaIqsJFpqnCuMvSeGQFhWpiV8QPMqISFeusHv\nv36Ug9w7y2bo2HaesMYWuyQf5hqkehU+hyVnaU2Uka0vV/jRx6qND5VpLkWMLIvAmnZjjzPilKRE\nHt894nQlx8BhWjmvkaIUw7ZnHHqGzjNaYT131pBCJAThMBuj8V50v6qqlv8oP3xZ8BUoWqR4bY6c\nW0Vea72ef1qpqxHlgznzw2hEdpbXf0IhEj4ZsahrZaWakqaoD3py01JRckq0dCip6nO5ImxF7qTR\nyjJutvRdT1kz03HF2Z7P3vyEP/uLX/Lpp59g2yH+MV/ksujL7SJNKZNiIsRwnQnHmEgxN7xoW7Ya\naVNlvt2B02hT0UYeyKUYsrcMfU++uRFp17vMGiPmPOFaOk1FrMrOWGm3ncMajXeequS9qVzIUfYW\n3orBzBkIRTjd+QeWRj/0utw+1xAQ5MGdcmFFfACziXgvlbkBvDJ0xuKMZUVwy+cltPcvEWh9L4k2\nqzPMy4LO4J0hp8K8ZiqpsWLkz1xjg7VlSW5PubLE3FKVpKIX3omoWVzn5LAulRAiqspirnzU2lVE\nyfN4mPn1V+/p3z2BgnkVqS3Ic6J3lnUMoMB6TQiBzf6GdT5DDXinOU4zpWScVdy+6hkHi7Md2sj1\nq5qaJMyB1QdebLf89ItPKdnw7puvOT7eo0qiYkipYHRmt+3Zbz0JxZJXSJWN73j96hW77RbjO3Bw\nPgrqdhzEPZtJ6FoI84yuhVp0UxkJn8W266nz8ndqbp4O2e3k0u67LCIKUys6F2qQgkUi/ERJ4r0k\nmClo16lvsYdAAeutPEBjolr5eZYq8lG0YHZLSVIUIrrzEESqbFSLVbxIEP/A68epyDtP7zxWW6Y1\nkVH43qNLpirhQtda0dZIPJZzpCwxbc60MIlcqEY28blehg6IXMgJ5Uwj/OwQJKhi8PDw9glLRtnM\nV48zpyUxbAbefHbH7XbD0HlMyaxRlALzlJnXJHOqRgB0zlBz4TTLD0LRln9ojGo2+jby+filVL3O\ntFOQajm3oM/Lg/aijFCAMpLdqRC0Z8yiXKH9qAFMeyjQ/qsx4lrNVeLvCqCdpdSM1Zqh88zzKqB7\npXnx8iXb8YZ4hrxqXrz4hL/527/i88/fsB236DYekpu+NHmWjEvEGBWJMRLiSlhXYlxbgHIhBKnS\nlSpXS3KMtcX2VWpN7ZeVC75mtK2CoB1HioElLZyXCXt4xBlLtTIeclpcb9ZokjX0Xcd2HKkZakyU\nNTIfZfHnnMUbi9KKEALPzyfRyP87y071UeXzfQVLqbWZvEQiBgWrZA8yTxGrAsZrUirEJVLS5fpU\nwmlRBe80fdcxdBpjwXpDKhqTLHe7npSgsxHFQsySTykPZAk28NYyx0RMlVq1xBKXSoiZNSQx1m1H\ntptepI1zYAnPUl0reSBxtXuLXPQ8R369PgsqAQG56dZpOKsZnOY8CUHzcDzx6uGZ15+8ILuKU5Hb\nnWeZZ+6fTpymlb/Z3XJ7e8t26Fjjiu88m2EgLIl5KeSyMA4b7u629H/Wc//ur/n1r37D0/0DumaW\n6UxOK6/2I8PgwDrWqOnR7MYNn71+ibZWUAw5kmpBWcPddmSeF5Z5YVkWzHOhxITvRuam2BqVk3Hr\n0NH3Hm2tdJZGEWNAKy24EG/RWuBmRsnYI4SVUReJ78uGump66xkGMXJZbei0xReLrRajHN46YpVz\npCwzpaSWdRvJ1jCHyDSvzIuEmIvkM2GbRt8ibtn0/QCC9vpRDvLdZqDzvrUX9crlTlXgMm7w6CqH\nZsmZ0XcyVsmGvKyEGoWuV/NHpo5GkUv1irakCoHv23slpgUF67Lyfhbe+ClmbNex349su57BOTqj\nyciBApk5HAlhpuYsietaYzJCXquioUZkqFBLS8upHwILaDLDpniQKqpV6G3UIvtOqcaFnAcXJJOm\nHexVxgAysqF9Xdr8sh3tqja0i5xOpVYJqM2VFGXOF2JbKHmL0oabuz3jbkueFrp+y6eff84v/+LP\nGccdtUplf1ntXbI3YyzEUBrYKhNyIMRVllIlU2sCCkpn0JFSkpAhlSGtlagS0Sa61eN8hzGOQhFl\nTZEuRyuFUZaxHxmHDc535FqJRTwB2jswwp9YU2R/t+PFq1tqqjxOj5yXtfHQC9TMaiBkOC+RdYm/\nbwa6SDr4/QMc/oAMsbbgEFWuD9xam/S1FqYYKGeoSRQHa0wUMrlm1pSI58SQDPSOHitSQGNaJ2XI\ntRBDImVJWJKDuCEpimJZokg3x561Fmndk8SphRgxWtQiu97x2YsNN692rKnw/uHM8fnIR5YCLkTH\nj0dzBdlfKKUwVTop4dsYhl74I93Q8+64cn9+xzePBzYbi3eyTu07BXTUanh8eGI79uy2A2kp9Eqx\nHXr0pscNW5zviacHfvVff83z+ciuM/yHv/kzljXyu//2Lzw/KEpcSLEpcGqV4BfjKCh++7tvubnd\nYfueWGHY7DHaocKZx6PlaA1JG85RUo3UeWVaRW2SciKsC6lz0HVobVDILsMag9UK25j43luMkcxO\n7Qx+49EacpKQjUWrZjAThEeKTefe3mdVlXVdULoKAx997XSssRgFJVXWKRFDpmTZm0iBWElUtBXZ\nr9V/RKOV25uBfvSgFWGJzaAhMjKlrDyBnMUgGmqrRBGRciUmiXVbUyFcRhPtKhRZnPy7hub0y5zX\nxPNpxWvNdFo5TIFTSHhvGIymd5ax93TeYhBZGSWRU+QwRw6HM+dpJdZCKhCzKGtKqajmEisNR0mb\nh/9e564ux3J7v6WITrbN1S99+8dnxmXmqi+HRUsEMkqcb5eWOF/SldpsvnO2hc1qtJGZtow2LhVb\nondOeDPOs7sZscbw7nll2N/x+vM3vH7zGuc6UaHk3ObIpUkIsxziUebDMUlFvoZVzBGtRQwxtUo9\nUHJAUp8cNSqpLIympETyCW09mcRViKlUc7lVvPcMw8g4brHGoVlRVVRBcjNG5hDRRrHdePJaeVRI\n11aLEPoqJDzLJDz6EJL87K4PQX5PlXK5lr7/uqh9xCHL1S4tygKphi8LX4fI0aaYSSU11IJIVUUt\nYggqSgIMiupqUzRpAXxpTW+1wNOqqLZiktm2QeG0UEILUqUti2ExhmBFpaMUzMuKOojpaJ6W9plC\nVaKcuQ4mm2wU5Jva7ndsxw1aa6bpRFgXeYjmypIyZQ08nmZiTDwcTuxGx2awDIOl4lANZPX4+Izz\nFuMdfbfDWI81jnGzZdzfYZ3n3eE9Tw+PvH965MXdLZ98+grXj9gKv9Gap/fvCBHqklA2kVPGdZ5c\nC989HpjDynY/Mux3bAaHU5klHYVTciEZWkNVbSzV7tEQS5v9SxHUdZKnG6uCUFo8myivJAhcrhHf\nWZw3hNgiDBNMU5L8XJp6rSZUTShdSUWCVMRq0IKma9PEKBndiBpFRk4XvLNtYo5LgWesQRn9Q8bO\nHyshqGcYHFUpTvPCvGRSVhg0xom+djMIOGedJlIz48xL5DivYva5AKNqu/lr5ZqtWBCrbDsYjLFM\nofC7hzOnaSGVirWGu9EzeIvVogE2RpNjJMdMmheWeSbOM+/vJ+7PK8rCGgshtoeOVo1UZ0glUGpq\nWuOrrkRe14qnflhOVnGvmlo+/J4KGYmssko44hcYfsyX7FIaDL+2kZIcPqaNGYZGGqxKSXVVSlNC\nGFm8Nl66wO87NhtHmiPffXfgs1/8Oa/efMZ2OwpqtLRRShYwWC5SjacoIKCUCykGYgwss/w9Zzkk\n17CwrgtxWUhJNMbWeVS2mGooVlMRQqK2K5ncHmSN/aJkiSxa24Hd9pahG4nLQqmCvJ1j4nBcWNdE\nTYlOZYrXaC3uS60qpSYKimwtx8PE40F8BZcnrbrczE2R8nE+5+Wa+kgn1N7jJQiWhccAACAASURB\nVBdWWPWVSk0w14TLcrOuVrgbU0jkWq7ZkVQaX6RyrisFST6qEcjglKFi6byn94bO0tAMlWhaBR4S\nyxrZ+J7eSZbt6Cxryvy/zL3ZklxXlqb37fEM7h4DJoJTkpnMaqsuSd3S+9/ITE8ga+tSDV1Dkskk\nCSACEeHDOXvWxdrugWxRpisZ281AAEREmA/nrL3Wv/5hiZFUM8sSuPvxA/mHctEfSMRfX5h1AVs9\nL7BbX6YbePvmFV9++RXjNPPDD9/z008/sX/aE9KKWQLWKtYok4A6NQ5LZBo18+SYxwGnLK0o7lPg\nlAuHmPlPf/efcG6iVCXpX1ZLWERLXVEdqbkwD45Xr2/R+j9yXAMPT3vx8Q8JnbqXN3LQP62Zh6dH\nXhwG/sPW4N2Gmiqn9YSqMCgDRrHdbUhoHo4rxiykUgm5oayXcBXV2OwGQoWVI2nJWGPYTo24BnKO\nKN0YBsvoHUZrnk4rqppeWxrFWUmiqg3dKs42/KgJOXIKK1fTBJh+7WRQUshpsB0cs7cXFlijYrVi\nnkdKg9jJH9rorpT+fz5+k0J+2gfiSTDbViqh5z4OzuNNo9XITz+fuHs88XhYCVEWZymXnqguSwDp\npKQoKtU5m53S4Qffl3KFly+u2MwDjcY4DKhW8aYXvtExDob1dORxCRz2J2JMsghdIzllDovEil34\n4kr4qcMgyjatFSGImKe2Z9ik9U74vMF02lyw8LOV7dlN71Nes+rME43ATrX/gEaHUj4tPlrhvbBs\nnNZ4JxSmEJPg4koxuIFYxGGNVjHWME6eq5sZ0wynUAnV8vKLV9y+vOqiFAl+LrlSi+B5OXdfmySe\nHqU24hJYTyshJAlW0I5pMzLfbIhx4eHuibIvpLBQSsCQqVq8oluqspAqTlJ2+njVjO0uhzIFKGMZ\nt1vsOJMfPnI6HjC6cFoTj/uAUnA8nHi4f6IWiMuKVVxySUtr5HxOiYrPBbp32J+g4X8FMzyzkEzv\nWlv/vPpXnz+/XthzAVTFFEVqjYRMT62rUI2W7zWmgS6spaByoxnfYRW5RrbesNvOvfNb5UqoIqy6\nngYOwP3jkUOOzINjO0qwtnUePxiWlDottGCqEY+fWnBOFnFGa4nS6F1FKQ3dZKFZFGjV2O4m/vP/\n9r8w7wZySTzt95R89s/hAg+KBbWRVJ5kSClhVcZpodl557naXXO9GXG6six7Hj82DocHQlz54d/+\nnbv378kpoq63PLz7C+H4SMHyuy9ecXM1sT/s+eWnn3m4f4BU0KbiPUxWk6rjsGT+4R9+ZLPbis1v\nbrx4cQXa8MOPJ1wtVCU2BM6Lz5ACrNP4sd8Lw0jdWvbXmaVWRu9Q2vBwWIhrYWMdr1+9YDSK9ZTQ\nVjM4id+z2VDInE5iF3C/XxnGgbe7LPekNpScmaepG2st/X2vQtFso9S1ULDKYHsoTqlC3tC1MlrD\nZnCM9n8gHnkpipwzrVXZKicJDBgHR26FdY3cPR758Hhkf4zkLEb+Z8yXdqbZPfdKje5X0JVszoqf\nRaX2LD4r2Pkg3GmvIQQx3ElRc7cs7J8WHp9OxCxwzJqE/5wui0vVb0QlnhLO4pym5nrBudunleC/\newjuJlVAOMJnX3L1V4wWyX9U+G56lZHDo3L2auDCZ54Gh3EOaw3eaJy31CaeEN5qRucYvSeti3SQ\nRuTZm+3E51+8IK2Jdcn4zczrz15zdXUl3im1d925ULJAJjmLMjLFSE6BUgphiaxrIlfw88g4e7yF\nSgSVmK8tuVhK1qQ10YwUpFY0qELDYWylNt1N98UCVHdYqdSGUpZxntlcXWPu3rOsklq0xsyyCEd+\nvz/x4cMDNE3OicFbclMM3dkuhkiMYmAE9Pf70zn1sgm4/F2KuBb/DuhWCoXn0v8MTdDEsIsCMVUO\nqxx06Rwc3r9D90XjWSQFwggyzkETPvw8OObJC0VVFciK2hIlNRG7ZFH+xqWIiC03brXGOGTnpJRQ\nOq3EhGkDuUqQgTFabAI6FEBDfL97F5FaZVlOHPePmBaYB800erlOz9duN2G7vPbeaJTOh89KoCLX\nYUZF47R/ghopWhHWwGlZeXp65OHunhoD82AZnKHmzOl4wk+byxLSesMSArE01lPslrX14joac2Y5\nrJTa5HOPGT12Kbz14nveJw5nLTg5uBSiBci5EtdMKxVvDXUQn3JtHWuRyDjXG7dWCmvIUPSFtugn\nx/v7E09P4ht/XGQXI+HYtrOQSqeR6m7L/JwsZboD6RqySPi1QpnWc2aFZZNLplUjNhi/Vlv+P6vu\n/w8PeXNLXxYEQsiSZXgr3cPTktnHwhprx1rzZeRtiA3rOZS2cNbUnClpCq0aBgS3ao2WCzWkniSi\nu/oSwioj3bqu7I+J/TGwX4KMcuebr9XLTdjON3dXZRkrB0csqcMQPGOu8Pyn/j+tVgx9ubmqQlF9\nrviEH+qNZjAwWMXgNBXxY0CLTD8LvM7oLNtx4GY3UZRwqAcn3VFIslibhw2TH+RCOgltzTtZMm+3\nG77+3Rvef//AaWncvHnBq1cv2c4bau4LtD7yCvYdyTmJ+CNEYajkQFjFEEj5kflmYLM1xKc7lv07\nQgn4+ZpxUqTFEI4rrYNHFUloaqqitDAvWhUr2EYSDj2GWjUowzAM3Nze8P7dhlxgeZLw69YapsLT\n8cTPH8SvfhiEuroPDe8VpRUeHwXTPU9yZ59yOUPPuPj5MD7vL6Twaq1FiVu6b80nhfmCpXcIplRY\nUyXk+Ey77FOigr4YF2viFFXvyjLWwqAVyjqGwcmk5wxNjSgtUFDRqh/wIjs/rpnjmlljkoPcmS4s\n0qgOHyoDDiXhC908zmiNroKV06c6SpV9SIGnxyf+/P2f+Jd/mHg6rNS8Qq3d1wTW9ZkOWbtATCi5\nPTgBCSamVmKMHPd7fvjhe25fXLG5vuK4FH755Y737z7gjOJqcozDwGaasONMs45h2nJcFkIImKa5\nvbnFuJHHxxNpPZKWE2vIlJqoudCSJNO3WljWjCmRlAqDF6fUWiq6Kry2KNudP3MlrBlaxJmDTE8l\nYgwYL+9/URBq7iZnAZomNWgxU73FTAa38Tx+f+Knd4/EGFm17NG0Fuzde8MxZUIK6Co7EKklQgX2\nXuwDiipy+CpoTQ5rrYUQsa4B18D9v9TU30jZqdj4AaMG9g1SOglWaIycYtZwvRtFnpvzs7S7QxXj\n4LE93CEDqojqU9HEStQIbbF0Jdjd056PWtJIXr24RlfFEjK/PCykkoQWl7vrYO/8L49PGQ0IXzyX\nQl1lYWGNJqee16gQAPsTKqE+FwQ0ToPRckgIJiT/2Hp3YLVi9rLkchpo9YKP5vpJgWkNbw3TOOAG\nT8uCXyMsLGqueCMf7ZqyZJ0GsSXdbWaMHthur9hsr/inx3cURr795gs2k3hU5FwJnT8fY6LkQEmR\nnCMpFEJIhBAIIRBLxXjHyzcjh/0H/vR//cS//f1/Y3l6QOnC5uWOzc0t1gysS8KYhnGW6kcURjb2\nOqGahqqEqtdZIZUCyqJMw6jG1XYjdLbrKx4fHmmlXFhA+1OgtorTiu3omcYBpQ05K9aY2Z8CKZcO\nxT0rMs/Xo+4fVCkCl7T6fGhLoru44ClnL4vL86F93n9c+vn23NmrJp/Xs35A4a2XwG6VJDgjZnyT\nfE5jjZg3rSd0NuJRgnjisLHENVOozPMg12oQZs7TacEgApNhdIyDZzNuUC1TlRTWmKPYoDeRwBct\nAd4A4dgPOgW1Zt5/eOB//z/+z+44mHoXmZ9f8IX2qljWxBp6s1XFK2W1wpHXjxJy/NFbXj5e8frN\nS65urxlH2YctxyPEyKANcV15+fYtL7/8muvbN/z808/88Kc/cffzO642E69evaRUw8PjA/f393x4\n/5H9/UeWsCekE+FhZfQe70bG0lCtsJqK9oY1VfIibCpjDBrNmhI2BIy2KErf7QRqSpRoqBpSSKja\nmAbL7TxhnZflcUy0UjkeVlQVjYAysodqCKRb4pFSkzSbKHLK2C6oc1rLPVphXQrGCpXYdiO3XEXN\nOfuBeR54UoFjTOLx8iuP38Zr5bzZqxISsIQoQoGSUE0c86zSXer+12PsmY1ytjLtSLngxahOnje4\ncaTpyCkE9ssqX9Ua4xIxOrOuiUMPOkX9NftFX4DT5zH7jJ9C9xUpjRASqSu0anv+ur8a2JV8QCIA\nMRgNOZ1xdpGmSwCBfJ03EnGnkZBnYfPU870jBlJUnDU4byTZpBZUFRn/WTzkvaUCS5TFl3WG0XuM\nNuyuN8zzSA6FZalsb2a++upzBu8lOLkXaxH3CIyS40qMK2HtbJSYSLFSjUZRCMueH/7l3/jX//pP\n/OlfvyceTxjdf/Z333D94hW5SKGxrYH23c9C7EOfBVAC1Mo+ALAK3aujd57tdsv1zQ2HwxFix4KL\nWMCmUrAaYipsUhVWh1EsMffu7a8xL4HJxLDIWqHchRBF4adksXzG0s+LUG2eU1paOfef/Yf99X67\n/94P4F71C/J5niGb3NX7soiUzn0JSQIsqsMoI9azRjHaiZRWjIPN1pD6AnptTYQlrVFqwXvx+DEa\nRutRWpEbRNNYg1BHa00oa1HGdEaKUEnPe6AcMo/704UOK02SHHrV2C70ElFNiP2Q7PemUoKh1yZC\nsdNpZXa2e/lXrFWi/q3iMz90vUhYM0oZNpsN293M1WnLdrvlI+/wRnOzndhev2Q7j8zjwM3VFT8O\nA+/fado+c/bt1sZQcqRm8SspNUtqUpOYN6M1g7GUpgi54HMk5CQTfO27oJRASYiMVqJG78RBaQaM\n4WF/JIfAnOTgfHF7zd3dI7k0Tmvkab/InkIrjBP/hValqXt1+5KwLTw87VHGXprH3J1Chfkktcz0\noIPQG6xfe/w27odVcKYcAvePBw6nFe8MISx4Zboqr1LyOXHm3BHLr5QSCUVtFd1NZFTvqgRv1gzD\n0G84JcHOSjLwHvYnQJwLU8k9dQfOVkWqX6xSV9RfjdvwDJ0oJV4WStVPcKv+XFVXYXEOh1Y96Vu+\nrmURyDijGAeNPR8aTV0UXLKtFn/yMyx7lui2qtBWFK9VyYiGruQGTgnmOWpLqaLYW1Pi1VZUq63C\nze2WcXI83h2oRbPbXfH556+xxpJCI6w9BenclaeVuJ5Y11WglCzueTV5zKxpZN79cMc//5d/4B//\n/h/ZxwM1ihJuvx7YvXnBdHWNUmPH/RrGNpqqgLBimkWcDo2lpW7ApYS5UptCNbkBNvOGF7cvePfL\ne5RaAdkZxFRJWV47LUtglE0UDWsWzvunlMKzWZe14o/uvbsYSwWVKLn7uvC8ENXna0MLna20jnNd\nCv5z0/F8vajepXWmS20okkCBXkRFRqkuNBMGzBIzg3NgxBKi0DBKlIOrh6yiCM/iIDqGfk2UWmR/\n0snhOSfcNEoh6aZjS5Wfn+OK9x7nvVgkp0SuYn4tZlHyvtZWRRRkFKPrVD5jiLFhtGEeR+73Vb73\nk9eeS6WshQUxcVu9gyYNzTB6QlXiWaTAdofFdS0yccREWPdYA5vNKEEcOaFK4fZ6BzkzGoX74jXD\nMErm688VskzXxlrCSTBz7S3L4SRe9lW8eazWeG9o2pBpLCWy5AAogYdqEfOrBjEmZieFvBSJajyl\nwoLi3cMT6+nAZ2rDzau3KDvw/Q/viGFlf0o8PEWqEqaQ9QZdxH5ZN83Xn39FUYoff/mZmiMhrH0P\nVSlZDuXBO1qFELLsQqp09r/2+E0KeQqZEAOH48LTMUAR/C2GDFbJyaikU6tVaGn6Qg/ro28ThzJj\nxZCdpgk5U3Oh2sIx37PmQqoFahfSqErMHdtrz8pL1Rrd8ARx9KtYawS+Qboqkdz3UIEmuOlzSo/g\npqp3ZeosF+zSeVlMypJUXAYU3mtJSZrEVjdlUelpc3ZMTBc4RWtFD4aX7k1JhFzTDW81oShqbKQQ\nyE0WveM0sLnadN6yYjcPWOuIRfPq1S2TH3n/40fGzcTtm1s2ux0tmu7SF0lBuOExLqzLwrIuhHWR\nRJwcaVWW1UZDyoEf/u2/8Zef/8zD4YF4/jclSsS1CM/WGUMKgjfOFQxFbHg1ko0m2ziogmVrJbzZ\n1l+30prNZsOrV6+4uvqJdV1ZltzbXaECDs5ytRvYzJ4YZHG+LkkOnp5edHGnNNJR2p6dqZCcU4DQ\nskSFIX7qZ0WucH/PMW7qrNjizCrqFJVLBNwZxrkUdiUsmpCLyMYbeGsYncE7i3UOg8WbgdE6vEYM\nz/pCzBiw3XphNzkGp9mUyseHhdMi75sxinEweC+wX6hVMi9DYlkzMUqX2GolhEhIQiuliiEZNDCt\nuzIKVOKtYrAWqyVSLevUpe7i+1KKMGHKBQY9T7hCk42lcuz88+HhAMZIyk/K5JBkae4iOQZKXDg+\nCc21lcz+uOf4VDAo3nz+FbE7SdaceHF7Ta6NJawsTx/Jy0mmFhTDNGAmz+MhEFKl5SxNkQZl+0Gu\npeutVaIYl5BpysgeJ2dyTCg74M3IYAeelsDD05G7xyeOxwWlICZJ63Be4b2n1YL1Fj971twoSyOf\nsmSMotAVXt7s2NzecvPyhh//9D0f7j+ggrx33sv0rFHsYyDsY2cbcZna/vvHb4ORG0k3UcpgnRWv\nEBAMydjOk5ZR7TzSwnNffl6uABeFnup/rnT3wNRHpXbGOTvrI/ckIrhwhy832yfP0fRurci6Wzpl\n1S1cmxSNknvobms9QYX+PJ9/0pl3bI3qTBrwFrZd6m+tmOPbpNE691GwR7N1/i/qvIiTnzl48eeg\nQes+6Gfa5bnzHAdhvgzecHu1kdgu69jOMze7HaoY7u5OvP3jd7x8+watXQ+vzdTS8fAkntRrEKlz\niAsxJmpKsnl1skAK6cQvP7/j8emRkIMUXdUkIEBr7DDg5wmvJuHf9y4S3aQiGtOXCYamDMo0tKoX\nnrMUxILSMI4D19dX3NzcsN/vWdblcmXQIbeYKzpkkcyHLOKPC6yiPvldMOvzrkJrfVlaqi5TP9Mi\nc+f2WiPF2zSN0Z/KgvqHpMzl+Zz92c8MGMHOu5NlDxNxxkght6JHMMbgLod5JiugaHI1VCWZr61H\nC27nCbQitCILtNaIa2QJIoayQdOKFNdUxFYhJLF5GKySJqcr04yVZkjLDSq0QqRQoyTkuimFMsKU\nit3MiSae6JvRgjGsIXX76PJsuNVk+XdKCbUsDE8H8SVpCm+fCQrOQQxHPn74BeO95Lw+PJFioITI\n/jBKbqj3+HlDXA4Mg+f29povvnhLvL3m6eGR9+/eAQVlDcZ6oe82scdFC4S2hsTohbBgjUMbsQgx\nWlgi2uhLIIpuAtnmIgrTEESB6ZxjHD3zLFm3KWUGZ2hF47vff+7CPxAxXioNI3mEXO1m5ustH+/e\nYZ40xlq87sZb1lKVpcRCzJXNZOV+/nR/98njNynkbhhp3ca0qcbpJPFjIWWMKxTUJU3aWSOYXntm\nhYgsXf6Sew7muSDXLvund0y6aelmkA07uTwX187JFKvKesFNxL+7i0NqRVtR0Q3eXmxcVYMYO/2r\nSov0XHQ/wWGg0/46q0RC7JiHgYoi1CbmT0qjlMYoLss0+uFyphyWKgfMPFjhpFdhBlhjqL4fXrlS\nqkR85Zjwg2U3DyyxYuzAq9evmIeRw2Pk6ZT5n794y6vPXlOzEpOrnKg1UWog5ZUQV9awEKP8CutK\njolWBdtXSbMsK4+PB/Fq74ekBgmQnUZ219dc3d5iskehKSmjrIg1mjV03px8ZxUVW21QU6J1tSS6\noLXFWcs8T9y+uOb+/o6Hh4/PC8Yq6r12CBwXoRrmInjjXwHY/cM5HxS5s3SUP5v4t84/79a8raFL\nT+npDBbTWVLnA+HcamgtMF8uYi94zvM8Ow2eF6Gl461Wa0Zr8dZitDhBOm+oNROSfB3ZoPoeoUR5\nfk3BvBmwg2VthRAbFNiXxmkN7E/r5bmdX4MYu8kuKYvEWGC/weO0lqmyJpz3GOvQDawz5Fq4T1l2\nFV2gFZLYuyoKVxvBiO0w8HRYOJwCxyWwrI2UZQKpVaYQFSOH0wnywOgdw2aSCDzTGAZYT0/88peE\nseIGeTgu1JIIKXE4rez3B3Y3L7F+5KHI89/Niq/fvkHZgQ93H9kvkRJPYvpQBB41WuGVXGuxVE5L\nxGuLGTXeOpwb0GSqk4W40HR1j2DrLLckOQgN8G7AecNmO3C1m1lzZlkWBm9oVTQdKlVsA6clGPt4\nkknXVjguCwq4eXHFdjew2U1UJxx3XWT60OMVDQulstttMVYYWL/2+E0K+ejdJZA31Sq5mzHz4WFB\nP62UJgsfY2UBZI0i5i4Y+ZT7daGNycV69gOfxwE/SmjB+aY8W62GKLmPKJjGUU7SmMSMpp8UlcYa\nshSFWvHNMXjHZhqhNVKWAFitGkafZb7nwvspDkt/fmKqtfWK69FRimMfK08hs8ZKs1ZuOa2F39p0\nFzmd8VkpcMKcsGy8p6EwVbMbZuxgWFOixIjqMBIG7h6PWKPY7SZqkQSS3//hK1LKPB1OKK+5vtky\nTxMpFlLIssRMSUbusLKGEzGdWMORsJxYTwspFZo2jLPDK4XSHmNntPH9EJTXMs4zn339Ja/fvuX2\nxUtUkDisFBMl5YvsuWlJQ9EUdCso7BmokEXuZcss0IhBsdvtmLcbrHPUKiHG4vIHIRaU6sd9ez70\nzwIfpSRvE5rsa9ZALYUhu+5HLcKqlCMVhfOSZm76VNb6Iav7PsMosavNrVy42t7ZLp6pnTPe+i+J\nM1J0uqyzEvChDINVGAvoSkoykWmh9cjPdYYcs2SulkjKMr3QFBvnKbMIUtQJ1pgEaizPbjyoHh/X\nw09SFgoeOrMdRzaTRWsr+ZZuYI3w8fGRw2mR16mN2EsPjhe3VygKThdayX0HZFmDYxzktWmlOa2B\nNUZA7s1x8JRUKEbcOEtNpGJZc+Bw3Esc3SF073GJVpR0pER5eOTf/+lf+cPfGl59/pZp/px1jZwO\nR/KamHcD2uzY7z/nlx9+4nQ8kIrsDZpSlG6KVFu31vBezMXGAWcaNWcaGYPnat7gnOV0CGy8wQ3C\nZ/fF4ILBRWg1k5OiZE+KVQQ91jCOM61Vfrk7st15vFEXqC01Odj2p5U1JF64gT9+8Tlf3N4QreP9\n3QNPD0+UNfO7b7/jeHzi/S8/4TdXpLgSTsdfram/kY2tRilDa45cBg52oYIk0/clS0NuCOATDPIT\nfOGTEfl8g47esd2M3OwmCZhtCJ2s9M7KCd4couDPSquOZ/flZB+nz12wdNnS1dXSLukcrYoc+0I2\n5uIScnmN547+7HGzxsLHfSTFSquKh1A4pirMFFd76r1I8nUfr60qKHGRZQmFnOVdKK1K2ITKhBzR\n3qJUkYLWMZ6YUhcqaXIsGDcJvvz6hn//5z/zcX9i3k1it9m/5ln0E4gxENZAWAJrWAhhZVlWliVQ\nK6I+s+LCpwbF9atXPB335FpopTBvJt68fcN3f/s3vHn9mnkcSDXLTawEVqDKgarqMyLRiphPtctH\nnMW6uMkiEC1Lz+28YbvZME0jIazkvuAUBlIH1S+fJp/8+cxAOtshV2hiDGa07iZbQmO1SqOMQhkn\nNMFckCGoXiADpTv80hW9Co3R8lmixLo1dZ/2lMonO55+kZ99N7QUAWvF6dDQ+4rcJ4I+FRhrKEUT\nYudzo4V77g277Yg2inl0HJbAfonEECUEBTBODh1D9+p3/nzls9uM7DYDKa4inzdKFuhFmCdaa6qu\nl4ZpOw8YXal1IUVZvBvbbSGaElbIIDulXDKXVChEzLPECEDCoJrCGcMpOmJVtLaSYkRbSStS2uK8\nxrsRZ0eW44nj0xMvX78R2LTKorNpOYQ3VxvGzcSyLiynI95qmvfUJL4nSms208A8jwzTgLKG/XGl\n5oy1js1mZjMNfbfWxKmwSj6nNYbRedQgwTLijigogNGGzXbD6bBQQmStlSHXi45AK81mHLnazOx2\nW/zgMUrjlWK62jC/fs3u6pb37z7ycP8IreKV5tX1Da+/+Y7TGvj48PCrNfU3K+S0StZIbuGZS200\nWov3Ca3grFiBCoz51+Ox6v85M1WU1uy2Ey+uJq7nkTVFWbxoTUT8NkxnENTaqEnYErXbQuouMkI/\nG2+db/xWe2hCFE/y2pDRVPUbOX16wMjdLUVcY7R05Guo/HwfcCZSgKVHeIn5U2PwjQElbojaYK3t\nGKWcBDmJxLi1Riylj+aV/XKkag+t9UIsHUhpMHqPtYaUG9PkmaeJeRp53AeW0Hj9xQusdpQk2/Ta\nsnR6MQrVMApXPKyRNQTWkAhReLjWGAZjcFpjJs2brz8jt4yfRmrK3L685suvP+ePf/M3XG3FDjeW\n/t6WXkzoyTVnnLopatZiBKa6mAZhUrQiCU3aqG4nPLLbbNjMs8BBudCULJQFHvnUtex5OpI/q0sh\nVT0H9NlPRiCRQsX3BaS2lkMuhNp64tNzERdmkxQ4TbuESRilUUYYSWJgljtfXdhOtYiKNZfS2VPl\nQlWNqUqKPLJPOO+DVEXYLA1CEKtldMUpcFYKuPOOuh0YTxFzWDgdF3KU5fMwSOxfk/OTwXucscQQ\nmCfpTksWD/JW0sXrxlrLOXM1JVkA6k6lLa2hjRFevBEDMJTGaZm+Si2kHC9L0Nw/p1wKp5DYJoeu\nisE6lk1BpVUsnnNkMw9MdkYbh3eWedpyfXtDWCKP9x+5ub7GGs04WloZORyPEkrjLbubHWtY2B+f\nGAePQXEqQiLwRrObJ8ZxEBvcBk/7BWcMN7sNu5sNpsLh8cCyLDSnWIJhzKM0MUqj/cA4TPjBgc0Y\nE3GuoawjLbHnEltxm+xZtRrNZhr58rNXvLjZdcm+IYbIpBzXmxk73TLNt8ybe077jxiteHHzgu++\n/ZZTgw+P+1+tqb+NH7k3UhjiSi7SBeYsKqx5HJlGh3aNGBKH48KnGOS5pAOTgwAAIABJREFUXp5p\nfVorjLU4b3nz+pZ5sCynlcMqXcTcaT9yw4gN65nDLUWv42zbkcFblFGclkiOmVp6B1Yaa0j8/P6e\nYfS9yEo3XjlzZp+78DP9UFFR7WxO1DjE+ry8VXJTay2WmoQqvOQqlCNZ9jbomOiaxONCa2lkTY8F\nC1HoUhqF1p6mRL4uLnMbrJG09M2oUU6R1oozV7x8PfHdf/wjw2agtYRRFqUykKklkHMg56X/kg4p\n5YJSlmFwDKMlx0SOK8Nu5Os/vuXlF7esx4AKmXkzsdtuuNlu0ShiKORTRjexQ/XGk1mpLUErPchZ\nPs+zg6JClqmqyQ1YQXyZtRasfJrZzTsOT3Jxay3MitQyscNnl2ulF2+lelRb3y3M81bYPjmxLJHS\nRBFpvMWPlo13zNYzaUlEP6yrLBP75Fg6Tqt0PxDacwddY5Lu2sqB4KzhBFgtC8g1BHHyjJkcCtmJ\nB80+JAadGazB+4GWxVP95mqL0ZoQo3T2TVSyKVdKjtKMOPEhH6YRvxk5PI0cDysxRgZ7dsGU99h3\nbL52rndMCdekQTFG8WI7YJXD+4nH04nSPegf7z6S1pFhMBhdxdrWOhyW6+3M6jMlRVppTK12UZEo\nLU85XmZprcRDZnSeEMU7p2RIa8a0Ir7ePuOnih8d46gJ4R7rJkry3L+/Y9puUKqR0wmrG5OxrNrw\nzVdfsNtuKCj2j4+EdCABVRmsG5jGiRArMa3dDsIyTyOb7YTVhvuPD/z44zvu90d2k2fwjsKelIQa\nPQwDG6+Z5gFjPSlBDPL+aBTj2O1740JISSaaDuPG00INK97A1c2OP2nH6bBi3j/w+ts/8sW3f2D0\nnqePH3m8f2A9rrx6sWO43vK3mz/8ak39TQr5n//ygdMaCSkzOi2dUDmT9ZV4AA+akooEBXxC2VC9\nFT/Tx86joUaMkZI1NOXAVGmZjMF40Anh8BrDYB2TNpfFgTOGq2liGMRhLORGCpJ2cwprVzkKCyLX\ngHNFPBuozwyTy/N7ltur/nw1iqoE96YzH5TWiJZIxnGlNbUpTmu+iJ28UxIOa/pEopssXq3uAIGi\nIWoyZRTj7KlaAiUMQBOGwnENfHN9xe7qltPRcf32G9y8Y9y+JiXxKdG1ApmYFtZ05Hh65PHpgaeH\nR06nE60pjPVsr7cMg8E51dVrkZYM02gZr7e03Q6The1gtQQQx1jJsfun9GSWwVpcHchFlsbURqvS\nmebSE3zObIEqYR0SJmJRzgGawXo24yT+IyVdIItGn7CsxjlxqytVAkZqFVqj6/82eQvdP/1s82qd\nle8dPU0bjlEOhizNukxNSpazucgh6rR0qNYIK6K01hetYp3qmiwyvbWM2xFQvPvwkVqFSXJcI+MY\nhavtpEtrFfyouN6NzNPAZnQsUXzQB28uVskNKFEs1rQSX/PBGa6UxtaGU7AsCmrqZldSXNeYSJ1j\nb6jy3jdYosKumXHMtGaYvEKZUTQEQby2x8GQVOVUxGfeaJnOtpNYDMRsyUk422efJKAfOmfWWeaw\nNoxZxFteNwbrsEqEcilFDofGlbaX93qJgetryzBUlmWlamG8pGXluF84Hk/E5cTm1Uuud1tev3rJ\nZrNhs90z33/ktAYGL0HHS8ffSyhsBoO1gGo8Hk7cP504rIlhGJgnj3dWRFelMjjN1W5i2o6Ywcnr\nU7qzfzTGe9Ia2D/tqTUJOUNpci0cQ+H9/QOff/xIPJ0YreHLb76mlMrV1Q27eYMpkXw4MpoMW4PX\nmhoeaGtC+/irNfU3KeT/8u8/dYzOonfDhVnQzmwTLZv12pWNFxoecMbEzwulc5elgWWNgqc53+NP\nm9DfjKYqTW4apavQhgZhSkgSiONqmnDeSOK1sp1ju/Lh8YHTsnI6rTzmI6lDMgygVO0HUDs/M2Fs\nGN0VqLJcErhdfBOcVQxOoJOK6v/fSvGv0qUJbCPLTGt0X7IVtBEWwTicF2mA1pcib0fHxiiyzbSQ\naDmSmijCbl+84vbFW1LbcfPlDWacqVie9gs1HKnpyDBqclrY7x+4u/vA3Yd7Hj4+si6BzW7Ly9cb\nbm62nSIpEX01Z8oaKU7jPFgzYL2RpXEuhBApsVCrwjiL9lqwWqMwxULMJCVFtOREToFYMqWCapaq\nan+tsrhTVlGUXLbWOKZ5ZBwcKVvxcm5SxCUnUmwMrLVi0lbP4brgjCwZ5f3VFKMFKusduzGCz8bS\nOC6rwC2l9N2NQRsurBetxElzHJz4erTWsxqFUaVaxSiJphu8Z7edUUrz8HggRMnRPMTInFbsKJF1\n+0UakzFlbq8N82hRTRxAU5a4NqtlgVZVo5scS1vThTejAT06HI3BwrJADZGWS4/pa6BEC2A7BHiM\nnVPeYDzCPI34ybMbLV4pllo5BVnep9Z4XHJ3pRDl5zh4RmtJzVKiHIwxSeCIVmB0YW2SmlRrY02Z\ndlxIVZabt1czV/NIaYZ4SixrQGuHWiMYjx5mhmHHvCnEFElHeX9ZFx7uHzjsT6Qc2V3t8NZye3PN\ny9evOe0P3HnPYTlRWxFbZ6ckGCVGNoNHcnIrD08nDkugobnabriaxSH1FCrGKKbRst2O+NmDsYQl\nXcLX51kYeU8l8/DuA643LsapPjlkjofK6XgiriuqFN5+/gZjPc6OpFK4/+kvPL7/STIbVJV74rgw\nPoxM15tfram/SSH/8PFRTHLmgeNJ0tB177Ktk2K6BpHRhyj2qOdS2fro65xjGJ2oHbUW3NZ5kaxb\njcVeQpG9H7ogR9ScgzdMg9B6NPK9CrH9rLVgrWI7j1xtB4qSAApjIITA0mlthCAWs62r9dSzGtT3\nAiEcVC62u1ab/twt280EWhOLFHJKlVE8ixJMWUNJpUfJCR/VGIV1Fj+NrKlQgghApAgqVGxcTyNu\nrMSnA0XJR3yz23B1/RnXr75Cj694qhKEcMyRw7tHDnfvWfZ3bK40kDgdDvz4/U98vPvI6XhCa8M4\nz8zziB+EKkkCTBMb4tNKLQXrEs4ErPEXJ8NaJY9TG4PSHV/XcghWpDskVeIpEpZALomsRCIvzH8j\nvOlO2ztTT1X3tZ62E8M4EFKELBPMOSdViFHiqS6Tnu07FQmCPrv5lVZJOVNy97s2Bm0c4RTFta5n\nUApe7LotbOsxcqbDfDyLiUIiRfHfoDWslbDpeXR0TISYI0rJ8kzRSKmyP6zQYN7Kcyy18PTwBC3z\nsav89DDLfZArg9G0Vgg5UKrpEAFi3YCCAlZZ3CxBzU+Dh0MgtRWVll54DbtpBETxeVwKa5QDKFmN\nmzReGVGJGkV1hqM2fDzI1CRZk4WaZaqy3rHxitlbsoGaNEensWokOMsSI1oh+5bUANk/HY6VdY0c\nT4HdPGAw6FoZnCE3g3UOP07szMCSIod1YWwVlkrLEVIg1ExojdMpczwlho1jnLfcvrxm2U7UdcEM\nisPxSFgim+1MipnjU+2MKA3KiqweGAeLHQyYZ+dLrcXlMuSCrWLjkFY5HEdjubnZsVyDGyxP+wOO\nxmTELK84C8ZyM0xcX99ghpHDupCWPVqDHTz3jwfe/fiOdz/8RE4HSl6pOVJD5u3bF3z+xatfram/\njbIzVyB1K9JESgXru1TaOoxyoDWbzQ5tR7a7zNPTI6dlEbHLODB4hzYwjg6jDa02ptExDJLpqLCy\nSVagtGXylt1G8j5pFa0KrSqhEqZENKWn20tntq4C9cSwYs5WuIMsBkN9tpN9jmh7FuVA79bOgQLd\nxUxZ8erQRvXuXIKDc4OiJD1mHMSbuyglB0uHlVqrsvQZHOM0okyhtkhMwrgQ9adQKGQRZ6hops0V\nX372NbefvcVMO9ageXo8cjgcCMcnnt5/YHm8Iy4P2DuBN8IS+Xi3Z10SrRkGPzLPGzabGec81N4F\nqgylu8jlQFKJaCzejpfXqJUCawXlsqY7V0KjiOujtTg/Em1GW7F8tepM42yovnhWiPTa9LANpWEY\nHNvNlnnesgQxzZq87wtJCXSAM2tJuilj5LoQrFi81p0xMAwUXdlsJ169uuXL333Gh/cP3H34yN3y\n8ElWorpYR9QmRmfaiC+QwDb0w0AAPzoUU2sjpII14jGeS+Nqu+u+NUL1zLmdiTzyvJUYrB1OEZcq\nTmt2oxxoS0o4JaHTo5tYkqiD26nivTQL2gjM1voi1RvLbhK4at/hyNEb5smJglo1puxF9JIqqttj\neCfuk7ppwlCoxnIMURhMSewM1lB4MgFnj9AK0+xJqb+/XZV6tr7QpUGtXf1rLnTIY6g8HgJLyCKj\nN4rRWSKPOGvZbjLTuKWWRCoR1kpcIyUGaAFjBrbTwGgHSi2UkrjZbriZR65Hz6gt//rD95zWRC4L\nRsFgNc4ZQogc90doGlPlkPTK4gcvPisKbMsMVjMNA5MdGBFjvpQTqZZOubS8efmSV2+/4rMvf8f7\nP//E6eEelVdeTyPXux1ff/aGz//wB958+Rnz6IjN8vj4xN1ffuZ0Wvh4v+f+cOTu/TtSODFYxWev\nbpmvb7l++fZXa+pvY5rVx8+QJFPTGMVmM3FzveVmt2N0npIL212XtJfK9z9KccwlMfQgBTHLtyKI\nyY1xsDinRD3Vx2vdec3eajaD46SglF6AFISSWVJCmyacXm0xrZCXQIqR5bTiuv/47D1llKryqWjH\nfoKLV7r6sy8sqzhZ9ZR38S/XRiYLQ2MwithkvMZIMENGy6gZ80XhWVsXJnknMuAmAccCFYjn8eBk\niRdzpWCoemC+fsm3f/sfmK5fsmbF/d2eu5/v+Hh/x+HpjuNeinhNx+5zruXmsiPDzYR3lu1u4tXr\nV2y3W6yx4oNjGqpqWqu0oijd56LqinIa5zTKCX0PJcpNbfSzSrcWoc515aebZJmprOn8T+mESyvC\n91QanMFZObiVLgzKMU8z4zTj93tKjNLh9qIamywVa2eZGCMsIuo5mEN8f0bvmIaBUhovX1zx5Vdv\n+O6Pv+P66oZxnMkVDoeDmD61SiutUxdbtyDmssySxbvBZQlAUEr1g8cIFIYo/BqK66udQE+1UhZh\nQtX63BTo7gZau8WvtRp7pm62RmsFrQdG68lt5bQGYogX2FBpRcoyQSol/PHNIFGKNFmuO9MNnVLB\nGtjOjjU5ci3dO792t01huAwj2HFgvyw8PB1IKaG0plTFMRT044mUEps4dIteuSkMqjvDGZo1ZGto\nVBwCNSqtWVIgRAmPdlaizgqN5VECjVOGm6tF0oRSIqnKclyJYUXpwG4yDM4yOMc+rjRV2U4Spj5O\nE+PnE+8+7jH2kVIfZCFbRQB0PC7iW1PlLrZK9k6DEahNG4NXksC1mSfmccQ0aXz8YLDFintnhVcv\nXvH6yy8w88w//v0/89P337M8vedq9nzx2Sv++Ptv2L7+jHEcMC1gB8W+FY5PR+JyouWAHzVYhyoD\nw+z5/Hdf8fUf/4avfvfNr9bU30bZ6Qzee6wVAYY1iqvNzJdvP+PLt6+Yx4H94x5tZQSuRVFLhgqH\n44FWGqlJTmMtoK1hHGQBmFIVFaOXlHWN3Gg1rZzCiccl4JxjM08op8iSAilLUWex3mGsIxXEZ7yI\nCk4h8nCsw6dEXiPrGqkp41qTRJjWscoswpVWW/dskcK2myes6VFPDVngUXDGMxiNwZDUiNUWmyun\nY+xjvJgSaSO8VfpBWGvthkuecbAoU1FFUaohNTDuhvH6C66//pZjMRzv7vnw4z337+55fLjndLwj\n5wfCuicsC5qRF7ev+PLLz3nz9gWbzYT3jnE2F1uAXCJZd4FFkWVyRaGrwBLOymFldGeb5EYzXZSl\nuhlTFSHOMwUJ/DjIIjRZ4e+XIrxfguC+xqCcCMTOjJ3WBVJWOwndVYZUM7ZKULXE4nWWizEdApAg\n6KEHN5QM02YQfLspXtzObAdDOiz88Q/f8u23f+DbP7zjv/6Xv+fnn37hdDyBFnl6rU3oeoCyEtox\njAO2x66ZpjptztGaWOS2WlHGXK6P2iT/M1cJylhjkufnPNaKz8vVPDF5i1OVtJ6oKMZhEFZVqRgP\n42gl/Dk3DoeFGIN4mhfB5yuaUuVem62i7SbWEMUVsFZClCzWzeBoVzPzNMrzy4X7j3ueDkde3+64\n3m3ZXW+42XgmZwgh0XLrDC7NL/uV+8PKZr9iznBjU0xGls6m00q9E8VkqwVtTV8WalDCeW8NahWG\nTapCVdZr4N39Pburmd04YqcZZZUonJvilAKHdSUsCxkL2nD/4YFvf/8VL1/cYI3FO4fzI6Vqjvsj\nh3VhfzwR9ispV5pRUCvOCBzW1oKy4Ee5huarDfNmR6NxPO0xqvLHb9/wy/2Bx6eAqpXbq5lvvnrL\nzevP+MPvfsfHD3f88v2fcCZxczXz+Rdv0cayHj7y+MuP0BIvdgNXf/d7fvrhB05H+KJ5/vbrt7LY\nHi2/++Yrvv7Dd3z2xde/WlN/k0L+v/7nv2EaNwzD3Jkqhe3k+PqL14zDSI5FiPhJMOvTMTF7yxdv\nbohh4pf7Jw7L2jMrZXxNKUuiiDFysxtzWRTmKIEINWVOKTNpw6S6IyEOZTS1idmQM5IelFsTl8Im\nHZLR0llZD1OxRKMvZlcDMi1I812f8XKjRDTjLeNgsEaWsq2KnWvJtXfrXOwx8eJZjqlYCyEK+6Gh\nsFYWuWeLAWM0rWm0EvRYK9ODOKDZmdvPvmb74i2HfeLu3c/cv7vj4f0HDo8H1tOBlBZSOlJyRmF4\n8/Y1v//91/zhu6+4vt0xOFneaduoXRhSqkapIhYpZ9odUJTImFsTPrYoyrt5fi/KpamLTBzd0Mp2\nKmbDdPhFGST5JcokYr0U4lY1GC1p59pCkVg/5xPzdsY/OA4H6Wj94PHGcFpXxkEiu0JMNK2o2pBT\n7PCU5vGjBGvTYDcNosJrlboERhqbFzuurmaW/QO6Ze7vDafTyhpCTzISGbfTFqMNox8Yx4l1jSgE\nl1f6Of4v5kpOYqt6KItYxuaC1kZUzlEWfMMgFNnSFGtc0Vj8NBByRWnDbrLEqMmtcUxr9wwBpWSv\nUjKkc0anlV1SLpm1VEwXwTnV8XtjxDazSvjKMDjG2eH0QImJWgpNCVtjNIXt2FgTpNny5npDygIL\nFmRZfwiJY0i9kMsE5rXpS3tFLOIPZKzBuQk/bzFuIKoDx8OBsJyEZZTzxXbWGYWhkmMgrKssC3PB\nOsfkPSllrDMUp0jKMDSN0RbvBmIsHE4r0zgyjobXr67R6it8Ddx/vCfEgs4iRHs4njAaduPIaBwG\nJb73uTD5icl6DIgFxJqZB8M4DBi9dEsGRUmFtAZOhxPb2x3WIUX73U8cj4rUoIbA0/0D73/4ie3G\nMu92+MkwG1B+BGvQasI4I/Bxc6yHwMPd/0CCoP/p775lGnbM8w4/DhhV8LoI9LFEntKpm1IVcqrE\nkLjaenYby7p4Hg4nnk5i/i+uZZWcEsNY5YayMkaesdRSm3iixHJJRaEXDaeMuPRVsZY1uuGUSMXP\nada2Y6BNiVNdrYaWRSxRtOq+Qz2tvrsNaiNqt8FZxsExDIIPq9K694QII5TWrFFsdo3ReIUoP1q9\nYIqtg8S1Cqe9ljPbxorMnUrJIhFKVVHtwHj1it2rN9hh5v2Pd/z53/+Vu3c/cjx8JC4rOXWYoFXG\nacOLF6/57m++4bvvvuLLr17jnJVOuFRqy8TYSEmdzf0uz1e3Jla66MuUIBJ2Lhx/lbuDdy4XhZ9x\nIiBB675j0Cgj+w2qwF61v25R6cpiDGVRneqltcIPA7ubK8aPM+qjdJ1ohbEOpRLbeWKcBh4PJ0KQ\nzNF6VnKhpFgsYI3l9srLIrdUyhoI+z3zPHK9u+Lt6xvicsIaw8+/fJBMVBAutnN4awXXdZbtNBDW\nCRAZ/xJXwfyVQms5dGNOrGvsEKAcyiVX1pg5nBYAnPegDMfTQs3S2RfEYyfHDE0sblNK/N/Mvcmv\nbteZn/esdndfc7rbk5QoqSSxJJXLqTguDwKU7UkG/muDAAGCZGBkEhhI2YgRV68SxUvyduecr9vt\n6jJ4972qAJqrDnDBCUmc+zVrr/Wu3+95Ol1htcI5zTwJICtE8AiIyaxjpBiTiES13AVZbaisJ+dE\nSIV5nqgqT7tp2NRbSizEuLDECW/WnkGcoRRqq7jb1MxZWtlzSsxLEtJhP64X1EguXf2OYFpQVN6y\nazpefv4Dnjx/RbfdcT5e+Oabr/n29decTgeWKBsHb8Uyn1MkLBOX8wlnNdo7bvbXMr9HENDOemzT\nYNB446nrRr4fScQx1sD1fkPXNLi0sGkbnLWcz2ceThfO40xTV3RtS1tX6CIlL6cMRlv5bAYhSBIB\npwghE+YosV8r78c4DGCP1K2BNKKSiMiD1WStGfqBh8cTb7+/Rz/dYZ3HGYczDtXW6KaFYuQSVMMy\nZx4/nBjGf0bxw9vtBm08bVPx4tULKqspITD3A8t8xvqF/c2GHAMpJfZ3G5wuXC49v/36JHVZZDeR\nUmBMimUJaDNQp4SvLK0zqFKYp7jG9Ay2kqNuUzvhdq9H8Rjl4tVaLYWdEtbZmcZXToh3CuaUMCvi\ncoyJpBTZGsYsO6CSC3Kvo7HGUlWerqlw1qB1oa08ORVmFvl3rFhSLsMs3HEUFYaSFCEUchKUvVHi\nSez7EWctlXV4I4WVQGGZRtKKns31lvrmKc8++yHGNpweT5zePfL22+84Ht4SwokYl5XBoei2ez7/\n4Uv+9L/7JT/84nO2XScjqlkkAGW90A0hryxxvR55hQOStRbG8qJ/J2uOSU4IGiqyuEljJFoBpWmt\nscpi82pr0WZNkWistiJ+zpq4yAwyryYgrSR1gtZypDYGR83VzQ0Pj0fu7x84nw8czwOTW0BB03qR\nb+/3/Pabt1wOZ2IM6BOfLraVNjjfsN3dSEErFEIZefPme07DSHd1i8qK25trjK94PF7Q/YDJRi6f\nvZdRiIHKFFqfyVcbxnlhnBaWqNbPK3Sbem1AyiJv1eqWzaJJW2Lm0E+klOmaRN11nJay6uEKde0Z\nxoWv39xzu9tQV5Jfz0vGaGk/hnhZx3zIYh8yJmYsCpL9RPFLMeNtYbupSGFmXAmJDYrWO3b7jgIs\n88BwkF3yYci8Oy40TYXTis6BN46gDEvRaFsLSXOShNjvRORSnpOutMLYmpsnL/if/sN/4F/+2Z/x\n7PlLTocz//E//kf+j//9f+O//tf/wjiMKzo6rifYyGqA5nw6U29b0pLYbTfYWqPGTNs5rm5anGvx\nvsb5SgxiKTKHhTAlbJEWOCpzc73lj758Tv/4lq+/ecu37448e/4Uoz1xFr2brwzGKo5TpAw9jXFU\nrqWkRIqJh4czl5MkYWzrSTmiVKD2gfOHbxkOB8Z333G723D76hVPnz/nN9PXnKaFD+eZzY1BBYMe\nwXZ7uu0V1dUNpMxyuTCezywo5r6nnP8ZNTtLcRQ0uUTCdJHw/zjx9s0D96czU1hoGysApZwgB/ox\ncn9/5pvvH7kM86d247xIa8poTUF2j0LBE4WT1itO8qNFXisoHoNdtWLlU8NMFWGvZD4af8AqcCve\nNIm3S1IQFJwX5VzMibjIbm8OsuhUWrNta6l4aygqY6ySKn3JonMzBq2M8E60fMRTyljnqJuKcZ4J\nQZOsFmqss3i3wsDW11LrVaKhLXNQtPsnNLun5NwwL4F5PHPp3xHjmZwnYpikTm4srqq5eXLFzd2e\ntvNolYhhJsciD4X1RZAKu2BVcwyUFMhZcAAfoVRZyR+0oihZIIuSk8Ka6JdLS62B1c+5Ds6VksI+\nJa9z7ED5xACXMoiILMq6AK4JIG1AO/ad5mq3ZbPZMPc9IJKNFBPvH05kNE+ePeXJ0xtSybx9+45x\nWmjbmru7a372s5/x+WevuN7t6B8fGI+PzMOR6iOPw0lb0GlD5R23t9eA4tz3lBjWC+bAOEfUKvba\n7K/ISjEsUdRtJNxauy8p4VbMr4zCJF/pnKOUzBwTLkSsDdhlwVpN0fB4Gbja7vHegzUch5Fx0dTe\nUCz4SssuXutPoxbnnIwpk8zBrVb4SkOxjFNkCpHv7w+ELJf33tdUTuJ/YRzZ7vd4ZzmeBuZlouSI\ndcLxViVLnLdtqH1NUobGGWwRZv3xciHHhNWaVOR0VlWeguaPfvoz/vzf/Dl//uf/ms9/8AVN3eC9\n4bMvXvD5Dz7nb//2r1jmRRJGWhNLZgwJiuS7ExDJVLbCaMVGtQxpIWWFbgf22xrvPfWuk+RMKvgk\nG5EwjeQY8F1F5RymGErYset6xi7y7O4a1+zIpSKWRIpyoRrMKDo2Y9DGyzsdFs7nnhADICm3eVo4\nH3vGvqe/nJj6njBOdEFR7U4M5wfCfKbyirsnN7SNo+ka3NUTwhBQ3ksxcQkM88IwTqQ1Fmv/STLu\nn/78QRbyfojUjcLbheP9PacUGfuBb7+75/E8kErmal/jtFz29NPI6TLx7sOZN+9P6Mqz2VRUzjIu\ncsxzTkoaH3OpMSW887RVA7oQSyaG5VOiQaBJcoGqWVkvBdZ5Bx9DYNaAWVPszhrCmqQwRmMKFK0g\nqU8FoCVJ39IZxbYRLkaiCFcaaWh+bHOyJnJYPX5lzZxbZ4VVvl5uKgM2Q9eI4sqs6Y+yjhe09Win\nCLPC+g6ja1JQpDQxDEcul/csy4mSZ0DYGNZ5qqajbRus1YRl5nI+MWtHilLm+QSTQa2Z8ExOyyc4\nlyxA8prnT48WKPpj6n9FB6e0wpRAZY0uhqLl9y/rQ7SskcMUAzkskFf5gbLyxc3CJlBFYZRBGY0x\nDmMclfZc76+5ub6mfzwQcqAoYWA/ngYSim63Y7uVMsX50jNPE8ZYXj2741/8yc/40U9+RGUrXv/9\nr3mbFpa5x1U1zXbDdn8lqYZ+QKXMk+sttTccThXv331gWcSuk2LikGSuu9nvaeqKJWbOfS/eWRTj\nuKBXKJY1hmFaWGKUpIkyYqeZIjHLKGCeF3xTgVKchonaNxhr6bo/VgiiAAAgAElEQVSay6knxYDG\nYwqf0jHGyD+dkSx0ziKXWJKM35xVEqezmpRhWOJ6V2Npao+1FSlm+nPPtuuoq4q23aK0I4SFEhc5\neeVIyIXaSD+CrKitfO7nq42c/MJCbQxT0lRty/7qmqvbO/71n/85f/Fv/4Kf/OQnVFXFNE+ktGCs\noqo8Rls2XSetzO2ew+HA+fjIEBbBUCihlBpzEoORUswh4EJANZ7KNtRtJw8CqzFO44omLEGMPH2P\n33jQhoLD1Fu67cht0Nzd3dFePUH7DZnE8eGB4+Mj2OqTjAQUi60Y+gv9+Z68PuBE6+ZIWXF5ONGf\nj+QcqbtW8MZTz+X+DWE4YnVhf7XHO6jqiu7mhhNnMVAVoXKO08IUVueAVTJ+/D0/f5hC0Id77m63\n1Lbh7YcHDocTx9OFvp+Et5ATx6Pkhqcl8e7DkcN5oB/Fp/jDV0+Fq1Jbvv7mPZfLgHVShKAopjEw\np0TbFGpXUVKUmWRMWJtYUmBJAacKWlYXSomo4j55P5XSK2Be4oqlKIwXgl+hUFnPEidBvoYot9zO\n4hKonGgs7HxmDKs1Ja9RuCJvxhQTepEd7WXJclGqpfBjdEDljC6FpqnoXIdGU1eepvY4ZyUPrRQx\nJ4z1KAymZOZxppSe7VVFmkam05Hjw3um8SLmEuvRzmNchTWWuV84fTjzoX4kXAaM0qQE3nms99LG\nLHJfIaxyAV1RPqru5E/WSeJbKwxqZVXK2EAVtEroLK9tKZmyln6Skt26ynKhmmOkpCjiHWNIGkqS\n+adO6ymochjnsNqJUckorvd3PHva8/7tW/J4Jq50ygxc+om///XX/NFPfsDTp9eM08K7dx/YNI4v\nnt/w9K7l5rqm8h3vv16FCq5mToBruXn5Ge/uTyzv75mHgdsrz93tDZdxy/F4pB9GlFZUzhNC4OE0\n8bSfeXK3Yb/pgMgwB6Yp8HA54FWRdq/3mHnBlkLbtcSUmeY11VOEKT8vC5tdjTKGwzTz9uHIftPy\n9HYLMRGWGa0FlDbNI4QF39QkCqRA5TQxFpZ1sBFDZI6RqDLWyY5V+1bSPGSauiPHmcswUlKkfXzg\n9nrLj1/smcot7x4u/P3f/COuLHgLvnWkDGEMXIawXphm2sZTOQs50WqFKpqm6Xj+2Rf823/37/lX\n/+rP+OlPf4yxFX3f8/j4yOH4yHevv+W7198SQuL58xf8/Kuv+OlXf8L/85//kv/6X/6S+/dvuEzy\n/V5iEsdlCPLZDwJts42nco1EPkOg3XVCeiwrdlpl5rjg57hGdz3+qmKHo97e8vzVK3Y3d7imJS8D\n38WF0A+0bYtrasEaA+fzSHwH796/obKFTetod1c8ffmMm7snPLzVVM7QtJ4nL5+jxjPEgfnhPfEy\nkJZAQC7ic9ZUVU1VhRX3Iae8WEC7hnrTCdrjdxX3/9/PH2Qhv9paSDPHw8I4JfCO3e0V2xvFMC0M\n08y8TMxzoJ8X5lSYF7GjGGvZblpurzoar7lvHNOoZawxi2TZKDl2q6IIKVJbWQRTLOBkEVDOiF2n\nFNT65iqVEEaiJEw++glRYt12VsQIOWrG2MsHKQvkf4qRGDIxyLE5hsS5n0nKELJ4IyXPK6OKsiJ7\nS05My0JYrTk2aBQNGuFxeOdpNi1dVSHQsARZcshFSRIhFKkan08T6EQVAtaMHO7fc7h/x9if5XLS\nWoy1WKtpWstuX7Pftuw3Bht7ptMASZGjYjAK7R22crKQ5ywPDa2xCN2vKLOyb+RBWNZ8s86yuy5F\n2o85F4iiqJOjaaIgl4M5K1SJkgzIiZwiKcSVwW3J1sjJQzCC4CzKylzdOIe1HnRht9vw7PkT3r95\nwv2HzLk/MSwBjEY5K+CnY09Ohad3V3hTcCqjUuTtN99RlsB+u+Ph/feM4wVrNbe3t7x4+ZwXL55x\n+HDP5XDgcv9ADoGp73l3f2aeZmHdFMhGRlZKKU6XEWMOWGs4Hc4sWVJNZs1OLrkwD8OKcdCMw7TO\ngaUUFUKSWKyzpJBorOH6asM4S1xxmZe1uaoYxoAm4KylriqsUlBk5Df1E9Y7NpsNVZXJQRqY2muq\nxtO2Gzb720+vvdGW4+nMNEkRZb/f0bQNpchYZtManr645XI4Mk8joV9IXDDWQdLkuDJvsqJuWpKt\n0cbz45c/4Mdf/Zxf/Omv+ONffMWrly+w1rKEyJs37/j29TeAor8sNM2Wf/fv/z1//Muv+NnPf8bV\nzQ05zdzfv+V4umee55W7EvBWAHzny4lms8Faw3gc6O0BS4a8kOIor3vJGOOxGvndQiAqhVeaYgxN\n19JVNVYrlqlnmHrOD498eC8boabpsNmjYmC8DIRFOOzXd0/QceR61/HDn/yU/a5F64RrNHXToEvi\n8f0bCCNpmliGiVgKuWi891TNDuNa0jThdUFbh3IVlQ/ECpKOWOtp2paqrn/vmvoHypEjnOspkpWl\nbivarqFpW8Jqip7mmdPxiP7wwGWYPpEOvTd4p/HO0HhD6x3OaMY5r7Ycha0cpeh15g3eGciZ2RjJ\ni1txI+qoIAvDgzUdUkpGFf2pwKONLCQKJUkMJQv9EgSG9FF+nHKS43WSaN4cIofLjGsq0BaFJqay\nth0hK70CorLskOLH38GQUvUpsWGMZO7bphG79yKGHnQio5lTIqvCvEB/6jEukNJIjg8c7u+5nM6k\nFIQ/Yy3eS3lo2xiuNpamUqiyMJ8W+d2VxRvPFAPFaMyq5IpZ6vHeOSrrcdahjUOpIrPvnFfmBnKz\nv4LEytpaLQoMMlLIa9yzIIxrouzGS0rkIvcNSmmcq0CrdeHWFG3RzqKMRRuLsQ7jPJqMaVsKN7x8\n8ZK0zExDL81EJY3I3XYj5Zt05tXzJ9zsOizSXnx8d08cR4ZNx/nwKKjTqqFyhnqNjtZeSIFKCeh+\nHCYePhw+FXqMMdLyNQKtOl2kGGO04ng8o4zUzJ0XyxGl0J8un5j1yxJW+mUWSFIqLCqthqwoRZfa\ns8REiJnjeUTOPYpxyeiSBAZm1qw2mowlhUhVWbpuQ1GwzEFwzOvfadNW3F1vKcA8zfT9iPcWZ1u6\nxtJ1HQrF6XShbTy72sGLO94azcM99KcTc+rls2UrGVcW0Bjadkuz2fPkyUt++cs/4atffsVPvvox\nN9fXNFVFAaZ55sOHe759/T23N3dc72/4xS9/xU9+8kN++rM/4vnLZywp8vzFU66urzDOwKJIa1N2\njolhXrDnjGtqbI4cj2eRPixC7xwukkZSFLa7a7S1WMN6AlwIk9zFGGuw3srJc5K7isfHR4HG5YRb\nRdkpFaZpAq2p64q4vyJdwDnP1dWOnCPDeAYi2kBeAsPhhCKT5sjSR8nLW4epK6ruCm0bpl6wDVou\nmLDG09RAnTGuot1saDeb37um/kEW8uN5YurlBrluKopzaAy73Z6qrqkrz3ZjuX94z6//4beM54Hz\n6UJKidobUgjM00zrWol+rfCs7cbTNZ7KOR6OEyC889pa0hJIOWCKxyizogA0OQrfG8Q6r1OhGCkt\nycWckUuNlGQHkuWCNSZZbKyFEKQVCpIhjRSGmAn9wt5VtI2TtmoOJNLqHFXEIkbuZfWAGqWonBPB\nqi5gkJh8LoxR5vkxy+6tkMlas2RDphCWwjzPVIgA4eHt5ZMz0XovMCit2NaOprF0raXWhf505jQn\nVBRkwc31ht2dYxgn4lSIk5EmZ8kUDaVq0E2DruTSVue87sBZ2bqSk8xRKI5FSdVcfoTLnLWCmCSK\nqbUIMPLKh88rjc85dFWtsgXhu5R1LKStxVqHMRajLEYVsJbNRvH551/Qn8/cf/hAZUciGWcUt/uW\n+2NiGEYe7h/YbxqapsWohrxk+uOZeOpJRdg8VeU5PXzgw7c1+6sdh3fvGC9nlDMYb0BbQhROUM4i\n6y6rwDuVzGlInC7rqatk6Th4S107rnZXGGOYU2YZ5QGqlFmNU0Lj7GOUnoTJTCFCP+NCYQnC+Tik\nxPW+o2hDUJpaQ1M5dq1nKYlULNrXqFJoqpZt04At9M6SJ3loxCUS9EycLiTtOfYz//Dr1zzZ1dxd\nb6i8gKSGceS7Nw98+fKG29uOzX6DcYKSeDicWS4jikLtZmq3pqqcpdns+dmv/iX/41/8BV/94mfs\nrnegNV45tDLkJHyV06nndLzw7Olz/uzP/iW3dzfcPd1jjGUJgX4cVmqjZq34CR8nFYZZHhxxCZj6\niJ8nhrFwPDxyOjbM8xVGO7SSzwxYqtpRVKBqOkiJ/nxCRYexlmAMqqqp2xpnDa6uqaPkyLvtFqwX\n9lPd0KzsnCFlxpw5Dz3vHt/CxaOVxStNUAmdAj5FtHWU2uOsYjifSFksSd43UDz9OYLXmDCjlNAv\n27b51I9xdYX1it/384ep6JtM3TmBMPmGmGSBevH8OdZq5nHg8P6R3/zjt/z2t2/IqnB3d8M+ZmKO\ngCbFgioWa5zIU9XKLF/ZJFVT441FFZhGgfEM88K+6+TJisiJpzmTwoKzIj91ztFUjrwsTCmsfkQJ\nczrjmceZJYaV17H+fQpUds2jx0hYotTdrZERg1a42tO6ihhmLpeeaZg+oXxzXHevWUZLksJRNN6h\nSmGZJ6raSCNQwZwKzqyuQeM5XcQEY01BKymbLLNw17URVd62a2hrT20llplCJC2BytdSBgmBECeK\nmpnChUSmmI8ln4/z68RQBHcaUsQYoTZqJMKnkZSQymtWfsUEf0T9plJQRXagYQETZrmPKIjgQepU\nYCwYD0o8lt5W1N5jmgZl3BrJlPdblYw2cu9QuY6bJ8+4unug/f4DHw5HUYaFyOVyIOfMfr/jJz/+\nkrJM5GVijiOJQkqKqEQiUVeaptKcxpG3H97jf/M19w+PzIt8TuYQOA8zp2EiFkkwpZxorGXTtThf\n8fB4lir56poNIaBGcAXGoZedPUJ1nII0eHVOiHZ55fhkGKZIbR0FeWjEKPcT1gqoq3IWazvCNBOV\nIpDZ1DXKWLK2GO2pao2yEWMKXe3xriWUQFmE2a+AttLk4ug6Rz/NlAd4cntDLqKM05Xn1I9oa2hv\naq73LSXfsEw9H+6PTNMs+N5cmEImKfjTn3/Ff/8//Bm//NVXbLYdzlqU1hgUKYk1qW4qvvzyM66v\nWl6+eMF2t6Nparxz8rkBrLW8ePmSL3/8E/7u7/6WUh5Y5omUA0vK5DkQk0KfBqoqkrJCeUvKjpQX\nAW55R+VrrBdwVQwwHXrCNBHnmWQFiNZWDe7J3ZqTLLSuUO1bShFZvDKKjXF0u1f42pOLwrUzv71M\nLJcHhsMF7SpQmnl9n9Iy0T8+4itPKoZxygx9T73d8mz/hH4J1Aq0KcSQyVFOdSlDWmbmS8FWVkin\n/DNayJd5hqKxtqJpa4ZJcqJxWTBYSoyMp4G3393z5u2BYjS7fSvttxi42m3YbbdsNx39FDlPC4/n\nXpIUMWOtkjduXWjGZWGY5U1XCqwuwlIoAjn6KHv4HcHwn75cak1IiBFnjitXe9U7iRBhdQCisVaE\nFUZrmlpwud5qacb5Ci06XeZpZpoWQdauqRhhLovdRhVpKH6cMWst7U9rFFVT0ziLc5Y5axQLVWW4\ne3lF3/ccDme52HSOpq7YbGpurjY4o5h6sc7HEBlR3D2/YtN1WFV4//49KQcu00zWogGDFctbFDlm\nUpiZs2TFjbGfmCDWWhyFVTpJVpLoUUUuenPK0iCVwS6UjIpR8vRFyYjESgvTWId1FcZWWOtlh1zX\nVG0Hyq72dnE+6ZXhYqwBqzFmz9MXr3g4Xjj2Zy79iVISh8MZ6yrafcXd7RXnhwf6eSDlZSU5Goqz\neLVSF0tiCRE9LlwuA9M0EZPECIdR5MJziDJq09I+9Faolpt1HPGxAbrM88oJypQlEmMvDyElJ7lc\nABXIYS2K8fEEoyFLc7RyDm20dB4oWCcGKWcNtfdcUl7NO3IC8ZUhGyMJCFUYp5kQFpxrqaoNppIO\ngsp69Z4mcpzZ1I7DHBiWiLJWRgBKxnunXjDOT6oG66WAtG3FmjOOCyEE4hwpyuHaPT/80Y/58sdf\ncnt3y7LMlJxxRvy0ISVCkD7F06d3PL27ZrvbyD2UkrZwXNtn3jpevHzJL371K46HI998/TXv337H\n8fSOaVyIMTEsCXWZqZeEsZrGNuScWKaZkg0go61lnsUzawzL9NE1sJCDwugEQRGvAlORMWlViUlJ\nW08pckp3vqa5uqHqGgqatp05v3nN43RiHmaMF5mIMpoYNMMw8/bhQlV5OcklhdIOXdUoZxmmgZIt\ndeOJi5zWCyJ1n4eBNI1s9xuMM+Tyz2ghP96fGJeI9RV3d7c0rWWeZ/76r/6Ku5srNk2DxTBNiWGM\nbK83OO8kwdFe8+zumtv9hk1dYZuKQOH+8cylv5ByxlWy6PoViTtOmTEVMuJ9VDpjbSKHjHWWVnX0\n40hMUpIgy1PdKkt2shN2ztJWDXG9eB2nSFgWWWhhRe2uJQ+jqb1l21Xc7FoKmss0kb2RE4Pm0607\n/K7qLuYbja8sVWWxzq7RRI1TTrjWVtM+uaZtBBX73fseYw03txv+/N/8nL/6b79hGEe0yTSV4fZq\nw8uXd1ztO4Zh5NeHo4ynEoxz5se7hi9/8JRd1/B//+fE2/ePTCGz7axMSVLCeYe2oBapSLMsxCUR\njUEZuUDFe3QG5RTZrkJlxO9BhJKkDVtIq0UHShRJskXhtaNyhspVeOvxrqZycrljG4/yHuMcRlth\na6zQLbQRmP/apDVO8dkXn2GrhlgU3333jxwe33F/GLjaygknhgvzJBFE6wSZgNa4usYiOfa+T5CE\n/NhtthhnyTkyzz3nYWFaEw+N18C6kLuG1tfcbFqutx2H88j944nD6SSZ+yxi6GkeoRRu9h3Xuy0Y\nzTBMnI9nwjQL04aENoqubujqhqttQ9N4QjyQl4Q3FotCrwgJbR0g8uWcI2DQShPCzBQy53Hm7YcP\n7Dctz54tdK6WS+ji8G3Du3cf+PD+nkYbpsqhvKe7ajAZ7GCIU+L1uweO6YLzirlYAVz1I0+ub0lX\nmsP5xOPDBe83PH/1Q168ekm32zKGyDRO1N5SeeHOxJSZpwBA20pe/yPSgXULIeNAg/aK58+e0XU7\n/vjnP+cv/9N/5r/85X/i7//m/+L+4czhNHC69OQRlpBonUK1nhwTl8eRyEhV91ztt8RhZn93xfbu\nmqQakjZE7amskcYrGpUXlqDoQ8IG2LWF3cZQbTqUtlhXs9l07G73aGepqwOnF1v03AoQzRRcXbHd\n1cQA/Wi4BMNUCk2j2V1vefb8Oe22AR0ZHk6k2ZHL1UpkFTRxjBP94ZFw6akrRe03uMr/3jX1D7KQ\nY4SzEELk//3rX2PXC71us+HqaktTW1SQL6jU6AXeo1E8udrhnZMacJipnebzp1c09kf81d9+zePp\nwjBMOOfQVhyG19pxfXWLtgYIchk5BRl7ZJn1Zi2LfKEwLwshK5IyGO/wtaNtanaNZGNPZwjLLLV+\nLRwJ6yWt4LUmOwF2mZi4fzihV/t4CZIh9oA3hnlllhsNbVuz3W25u95ilRy5pVJs8FYR5xmVI0Zr\nqqbFFMUcEmGIPLm94umLKyiK/jIxT4Hr/Yb9Zsvd7Z7b2z2V1aRloWsaaYrGQtJyOnp8eOD4qHg8\nnShasdt2WKUpSU4f286ilSVGy3AuhFCIWbEkqd4XpbAf2eI5obOWi08hJmG0QTuNsp6cZlJOIlyG\nT7tp753sMr3FeUe1vu5uHR85V8msE0l9SJ3fgDbrAm6wbhVK7CpcZWm6P+Obf7ziu9e/4XQ8kFLC\nakuYCyl8HFFoNnVHW4seLczTyoqR8Zsz4JtMXUPtIU+KRRu8ttTe0dYVfr3X8FbhycznnuI8Vimu\ndy1d64ghkVLBasfx0rMsC9e7Flc50Iq2MniVOZ1gHGeBi1GYQuA0znRtxctNJwrDflobk0qURSRq\nLxX/wxC4Pz+ufB850RVlKNpgKpGJnA8Tl1NPKRrrKn7z9XcrPcHzeD6TgMoYLvdHvFXM88Lj5cIQ\nZLd4GCK3z27ptOVw/0jT7tC2otrc8urziheffc7Pf/EVX3zxCmcM03Bh7HvOh8D9hw/cXF/jfMVm\n2xJDlFy2UjKGSh/F2xLvUgCp4Kziatdwu+t4991T3n1/y+XxDu8qvL+gtGVZFlKOjDFzuEyUpNk0\nDVhLIBPKyBxgCIHH05nrmyt2Tcu+u5aNwVp8++77B3ztqDYtaSmMSk4OmI628TSVZ7upcE4zTCPf\nvv6Gx4cHQpjFVhUnhtPE3I/UdU3bVvzxV1/K58+I+BkWDvcXDpcLNipub69pd5bL/YU0j5S40F/k\ndSMGluHI+8tBuEC/5+cPspBnJDOdQ+TN2w9YY+i6lqQVMQZArB1lnQjN8ww60zQ1lXdQxJ5itIWY\nqI3m7mrDza5jHGUWbowwlNu6ptpXdJsNTVvz8PiB/nRimia812tEThZyEedCCpmQMkVpvNXUjaeq\nHTEHsZIsgr+MSRCY3mhq73HOUKIlLwLaiSkzhIRSmq6SC5nKafa1pd+1oBSXYUJrzXbT8er5HU9u\n9gxDz/3jgRgj3ii8LjKDzBFnDVUMJC01eescz57f8fTpnuEwQMxsm4q2q+iqmt224WrfEqcFozS1\nrySdYgq11TS1QSOkxWVZ0NpR1zU6B4rWa9lJHijOOpzeMk6BYQwsWU4UAr5C+kNrSams0gaRJwhs\nQ2tFjmLa0WmFkVmDrVark6swzmOdXUtRMtIy2mKVLOK/851K6UV9HO249QJUG5xK2BWNulxOmDjB\nc3ldNdB5B21DYxWu0nRNR1PV+BW3sCjR7gn7HOaxJy4TFGHv1K7C+xltDdu2paq8GIPCxDJNTCmD\nr3HeUXvD1a5hCZkQM5VxVN4yLQu7TsBdhUJOmjLPpHlmWRYsmlSQeXwP28YTQ6SrLUpVTEtCYz6R\nMBWiT5uSsPRtKMwRUJq6sXRNzU27x5YCS2ScxvXCPDPPEWU9xtf4Rnb1psBwGriUwBwWxiWhjF1b\nzo6mFSny8Txz9+Iz9tdPMM5ze3fHy88/4/Mffk4M8n05n0/849//hqEfaNqaX/7qF9zc3uG8BWVW\nHlIihLB2EIRTX8jiUu0n4dk7ucPyrtA1hudPbum6Lburmf31hX4cGIaBYeiZU+QyR5zNNLWMRmJW\njCkTLiOXfhQ8tXW025Y4S/ork5nmAEpR1YKxWJaMIuD8siKeLcs0MMeF+8cjr//xa4bjiXleOF8G\n5hAARVW13N55rlrPZrNjmsQNm2LkeJZ4bJCUAPM8cjk/8nj/SH8+MY4D534kRUnLfP99YOgnjqfh\n966pf5CFPH6k52uIMTLPgVQK7b5lWSbGfuTxcBK2B4qH0xljK6qmZklyC6yyRNDG88g0zSwUtk3N\ntm3ox4W68jKvrBtub2+5vb1ls+n4xhpeT4H7Y0/rHJnMsvKunfc4pxl7yGGhFIW3jq6tMEbx9s0H\n3t8/cLr0WKUZ40JMCeUNVWXZdg05RuZeMU4zUwoUIzPdYVrwlaOtLNebFtc0nwpP2hj2uy2fP39C\nXVf040Q/BZF3FYPKiX6eUTlRRY2yPb4UlGvY3+549dlztm3Ff/vr1+yco3t1h/aWHEUysOksx2mm\nFLDek6YJ5xRdV/P8yZaurvkQB7wWnKhWmsrKQkaGYZzQRtO0NTe3N1wuIzEdJe2jZRE1a6zTeCdj\nCGQULmym9f6BDMaRk8NEsYxbZ/GVoXJessh65Y0bjbbqd//9Gv9UWqHMyutex1F6Nfd4VwtsLUfm\nJXB8GFgugV1V86MvbwnLyDIHTLGErhKee1IUgyRGVKHy8jDJSsu4omjuv/vA6eHENC5o5WnaCt8v\ngtH1FmcVS1yYh4FxGJmWBG5mt224u+7YdxVzVkxLpCJjTE3MNW0lur8QEmEKNKYQnCLWjilmpiCm\n+ZQS94+KN5Vhf91yvfOMS2GaCzFJVj+ERXoK2rDfdCitKEbjfMXNbsuz2z3Pnu5hCfTHnvfrgmOt\n5fbmminJZfT+yQ2Xw5n+dGEaAx8OD8xxYXe1Y9vVVM6z37bUzhKKIuD44c9+yR/99Ge0m5pXL57R\ndi0hF968ecvxdOLdd9/zv/zP/yv9pefHP/6Sl599TrvZkZB0WCIzzwvjMKCKaPh8Xcnuehx4uH+g\nqmtcVXEuA4+P74jhzLMne+5US8Qyx4Vxnvhw/8jXv/mO+3fvCXEhqcJ2s6FuGyKCiIhLYB5nPrw/\nid9XORFwF5Fr1NsapwxpSdiVUz+OGd8shCUw9D1TGBlD5t37e779h1/TeMs0J/76168JS6FrO16+\naLhDims5JPISOJ8vfHg88eH+Pd2244sf/ZA0TgznI4eHNxw/nPlw/8jj44FSoKmlzf39t28ZxoVh\nDL93Tf2DLOTGi5DVZEW7qVhCQhm49APfvj2wzDAMM7ubLT+wisf7Ix8OF+7vj3z97VthIXtHfxkx\nEj9Bp0Ld1Tx9dsPmZsfLp7e0dQMYLv1ZYEs503nH9W7LNE3MYUQbQ9U0mLWYoYuiqzxWO4oS56PB\nYDJsfMVYV4Qm4nyhGMswTszzwvEgueV91xCMomkrtjd79rsrpinw/v0919c7Gq+ZcwBruLne0tYV\nCcX1viNTWOKM0YW2siwpEkpCJYUzhnFJTHMg6pFdVXN7s+EHP/gB1/uOOPZsW+FUJyO4VuG4GM6H\nHuscX/zwJX9yfcXr198znC9YCt9/84GYhOZWUqCuHV5rKI67Jze8evkcULz+5g2vX39PST0xRnnd\n6npFCZcVbyCERpWVtFS1oHf1SviTVBGgNEo5wdKuqGG7lri0lssuYy3KaNSKhzUIr/3jjlxpBQaU\nkYets06wvtoI6iBY5j7TNg3tJmGLYH6dkYzzUhROi94rfRyrlQwmYwrCWDeaXBLLsEDWmDVTYrTi\ner8jo1iGM31YyBnOQ2CZBG61hBmjCvtG09V7Km1Rk6JMkfkVz1EAACAASURBVKayWGtoW09IhXGc\nOI3rzgaFLoVNZXHWsCQZyTz2M3/3/SMv5oXdtsFVNXUji1vlPcsycRknTv0sXI/Gc3t3xe3tczpf\n41DMU2Q4HhmORyqr2W5qbFWR55lt09DtNlxdX/FQ19xrxeXxke1mR50TxilI8vrrnCnZcHP3jJdf\n/oqvfvFznjx9SogLSmspM8WINYpxHPjt628FQ1A3tF3HpT/x+HiPr2qM9bx/944P797Tdg3Pntyx\nv9pzOTxyuL/neDiwhIXPvvgC5zz/+Ou/42/+6m9489tveHbb8uTpNXXTMc6BrLY8vd3z8vkt371+\ny+H+wDJM8jlzhq5uWKYFZQuq0eKzHSaW6kTVdVSmBgUOAeppZSneoPWajLOWkiLzMPH95cLxfOFw\nPguzfZK/+8+/+iPauqF2Hmeg8prD4ZHj8YTKmWFaeDgN1E5jyLx7+4bD/YmhH5mXheOpZ5xEnbht\nauYI83kmhoB3juubf0bOTuclv10ykpG04nZc5sD5MuJX4URVGW72DSyR03lgHCfevr2nfnWNN4p5\niVSdRA9jSKAzvjYYb4khcI5iPhdGtkgY7Aq72mw2nE+BshpcdBawUEkZp6HyBmNrurbFGUNJcsEk\nlnJxi1aVWxfB5RO+VaLUMmcwWkzyWgl/w65j3ZgLTb2q4xrHaQp4J7vQRILV5TiFQCiyU7RWRghL\nKkwpsVGGbrvhs8+fksaZh4eZFfS6CojNmpuFoV/oNpa2dTy761j6hiMLyzjz3fdHzv1EpOB9Q6NF\npRZjodt0fPbZU5RyHI4D4/yaYb78bq5dCwc6p4xFr6MPTVESMTPrgiwOTPPptdPaYIwTtukaXxTE\nqUXhhEVjVs7wP+He5KLQa9FL89GVaURevY5ZlJZYn9aGrmuo2i2NUTg9fCohCYJBYQSWQ15TNqlk\njBGmeS4KpWV8ZpDKuTNaML5GvKmbtuH+wXDuB/p+YokSGzTaUK2v4xIyh2MPviJmKRNV1lE5S0rl\nEw5YoWUstKaRKmexKdM7w7imsY6D3AkZo7nyDq0ld26Qz4f3ljoVklLsNi1Prq/54rPn1F4WsHcf\n3vJ4GugPZ3atw65e0MuUuTOKrduwrQ1p3zCPDf3hkcZ7aquxlURGVZZCjK87nr/4gh///Bd89uoV\nddswTRNWW1Y2AykGoNC2HT/7+U/p2pbPP39FXdcrzTEy9DMP9wcOhyPeO8EUTAsPj0e+/c1rjg8P\nbG/3LMtCiIF/+Nu/5c133/F4/4jOC5WrsUBrK3CWtrbsNhWtNpxvboip4IgypqssYVpEqVcQu1CM\nnE8nfOOp6gpjPHq9w0EblPO03ZamaYVJ1PcM84nTw4HD+UQ/Coe8rVs2uw3Pnl9jjSUugeF0oD9P\nnC8jH+4PqJxZYuISMqWtmGJmfrwwDRMxiGR8miNKOdquXSv5ciJtfMPN7RU3N1e/d039gyzk3hph\nQRRFzhpjCiGJIUWSI4GUZqxSOJXpKkVXW+Zl5ng4kV/sME4TgmBOl5QY+plYIiFJaeL9uwemkMha\nsW87yAW3xgaV0nRdxxhm4jKvlhRkPp8SxSmJvHnNpmsEhjWJQT2ELCcIW3BWFvzFm9XSs5LmgLAk\n4jwynhemeaYfe+bB4RpHUbBtHQbNTObhOJKbBus9IY2sGUiWUEAXfKWkOFA5ijZkDa6u6TYd3abm\n/nTmdLzQz2J8L6rQbjQ5axSKtCScX5jGM6eHDMsZlQameaAfRh6PM2Mq3N227NYUSIgBpTPeZWIK\npJKYUqa/9NRtxWYnMKUCpBJx2kjkykrK5yOTXWn9qcBj9YoI0Csu2EjcU5WCcXLELdmQyoIs3rKQ\nFyWiD7Ne8Mn+fJ2ZI3KN/JFzrjRaZarK8uqza0zQqEURl0wASgxYrci6QCjkIP+XgiAMZBGXk0VK\nWXDHtcFWHSkpUlCw7uRL0VztO968u+fb797ivCMrhTeWrq1QzjCXwt/++lHay5uGpnJU1hJj4thP\n1I37GPLEeU+dExGFp2BCpHWGnBDRs1XMKTOtaZ8SF6YQ6VMGC0pburrCb/fsu46r7oqn11c0m45+\nWvjm/Vsex8DpspCXwHQZUQrOc6bWhdutI7aGSmuaRrSBxhiaxtHta/pesNAhR7bXt3z+wy/5xVe/\nRFn5vLrWrfA4+d7N00RTN/zij/+Yf/Enf8puv2W77bhcLitrX3O8/4BGc3Nzw9NnT/Hec7kMPD6c\n+P71Wy6nA9fPnjBNE8fjI7/++7+jPx+JMfD62w9M/cCLp3d88eozWEA5+Z7cbTo+e/qMu89e0D/c\nM41nYl4Q9arcP3z7/QOH+wcezhe6XUNdN9jKkkaRd0PCmYp2u+fm5gbnHef7e+ZhIsZlVe0pclF8\n8fI5z58/wbeaw+OZ4/nM+7fvmKaFcYr0U2YeRkIpZGeZz4WwRKZhZN/WdG2NqzxeW6q6YrvpOJ4O\nKApN3XB1c8erzz/j6ctnv3dN/cMUggKkUAgBgdZosc5Mc+JwGlkmKR97I6jMZX3qOaMZloVpCIQu\nYH2kJI3wkQzESJgClz5K0QZxZVbeYnQhLxNTjqu70eC1Yo6ZcRQSnpjfCyElWjTGjlyOD2hnWGLm\nOCxykWU0lXcsc6G2FrffsKkdVkOcIyqvJnZlBIYfE+MYePPhwr6r2Daeh3TGGBEAh6IoRhgiaTEs\noTAvkWUJgoFN4HyFs46rrqbdb/nRj77ks5cvWIaF0+OFSz+IGqzI3LRKmtubHaUkXr8+EHMgzYF0\nXBiHnnGeGFLCNy27YvEh0rXQtoq2c6Qw8ub19/yf90feP5w59iOaxH7fsbva0XYtfX8mZXmdcRbl\nHdZbqjWSaJxBO4M1QrMTBvsaF1QrKjiDSops7Dr7zujiPhEanavX3bbCWCUI1Y+tTr3KnE2Fq9z/\nx9yb9Wh2nVeaz57O+I0xZiYzk4NEm5ZdVa5CFQr91xt9VUA30K625LZsSbYlikySOcT8TWfaU1+8\nJ6lCQ/d0AEkQRGREMCK+9+y93rXWgyk03ieyjthSovkpZSlWiojLA434IoRer5Umqww6YXQiKSsV\nuzpjcMIjzVp65gGbMxnBDCqrKcoFTVlwtV2xH3oOx57DoWc89Xhhu6GNkqZGJTuIMYIOAjtxSpoy\ny9pSNgvqWFF1PcddxzgkUtSsl7UUphUOYzVWZfb7iWZZkHVm8JFSO9aLls1mjbIij6Xkef/2OwJw\n6CdOxx2FU6zWLU1hGPuB3aHn8djzcOz5+rt3rNcLms0K7Uq8MkLYSYruwxPGNZTtiuVmy8/+8he8\nfP0p2uo/BePMvMeYYRZXF1fEbRJZwvzpdmatFWixD6zXC1brVrr7F/VcfdFhqwblSpSxVFXF22+/\n5e2bP5K6Ay5JgMa5EgIMp4H9aS8NnMaiy4a7Hz5Q1xW6NPgp4Ufpp8kpCH0oZ1yRaJY1pww3H06M\nfWJz3mNthTHlvKw8Z7VZUzQlel7am8Jx9uKCcKuJhxOl1Rg9cti95/D2wOHg6ftA0gXbbcPzuqCo\nS/7w3Q0PjyfCJJXW2WlqpxmHgf0pUOeaq4sFz55dcnl9wTgIE6GqarbXzzi7fsZqc/ZnZ+pPMsiH\nLuBRJKWxrhAbmNa0aJ5dX3Cx3cpFXcsVZXd/h0+yvNA5o2MgTR5TIEzLIDDjECLTGBgGL1CDwlKU\nDkUkeE+voB97CmcpCsdw6tntjhxOHXVRYhBZpKgd0pkNYzcSVaYbPfePJ6YYcM4IfVtVqLqmLK1o\n7sNI1weiUtiyoG0q1AwRPp6kn6XrPTprBi9kdx8TUf0pUarJjH3FsSqxpwEDmCxYuqoqWS6XbC+v\nOJ/7KvpjTwge5zR24Ui6ZvAi8eQUSCnIyQHDOAy8O3QUVqGckW7zvkNp9WO1afSB07En+EgXMkN/\n4Pb+iaIqubregtLUTYMxht3jRPBB0GtGy4LSSE+NcbL4dIXB6BKlpAxYGyOSi9GYrOYOHQErY6Qh\nJCczD3Lzv4AnZoeLczg7I/2MFmZn6Zh8YH8Y6PqBolK0jZzMBZYMKUDOmowmzMAMhZZOdJ1+TFpq\nLf0lSlQXQKOTJauIyomsEzC7ZbQshk1dUlrLMrV0G0kRH/Y9o/eEFORuoeXGMEWBZqcQxNWRxOET\nSbjSUpkCjcAtxqBZZMN6s2C5qGnKgtF7+lNHd+qoGqkkNlbTlCWLsmRZluBKpHo40vVyau8Gj8mw\naitiaYl+ousUh5AZs+a477l/OlDd7Tm/6Li4uuTq6oqyaogpc3zaUy43XDz/hC/+4i/47Iufs92e\n/2gxhdkxiIS/fPBY4yhLKfL6OO1jyhgTyVmcU3VdYoylKEu0VjiraZqasy08/+QZtzrw7rs3fPP7\nf+Hdd9+QwkAaB0zOQu7KmRgm/Nj/2HUfQ+L97T2QUIVhtdlgjUh0RltSlqxAGAPOWFbrDdNBltT7\n3ZHl1mFKI3UQKpOTJ/iR7BMhjCQVSVoTkwTrDIbHpycUkaHrGQex5yqnOXYjp6HDnqRmu13U+D4S\nw4R2lrZpOB4kuLhcNHzy4pLnLy7Znm8Jk8a4knqxZHv9nMX2TKp5/8zbTzLID0ePLi22kuKlOJ+S\nL1cL/vZvv+Qvv/wcjSVRsD/0/PD1t/j4j4zjgXWhqZVHBU9SFZMXuxRZ6OSjly6TReFE16wc/Thx\n6qUedOhHQiG8zPv7J27vdxz6gVVd4ZTYCJfLhrIsMdaRQuLY9Twcjtw+HqibgrZ2WKUom4qmqVmt\nG95894GnhxP7pyOutGycYbkoKRVYnTj1nZRlpcyhnyhSQTdOHE8jl1dn1IWjLS1tZVBZYv5DP6Fj\npC4tpjQ0TclisZAh7gri6GXhazXrdU32iXrh6KbAaT9yPO1JMVKXhmVrmSbPh7sdz643LFctyjnu\nHk74EEQKyYb+ONGdnmbXjyzUzrRme7bk/HLDYT+SsmKaJqZBHBXOSOcEH12I6k+UJFlCyuI4zoVk\nGoudS4qMmd0nTiSnnOTBjJFrMolZP7YYK13ZzpZghf5uSoepLLs3T3z/x/d0/YlnL5Y0xVI0EjFS\nQ5JBnrCE4GdupQzrjwtUssLKoYuUM17J4JZZH0kEEc5UBdnKAyJ6cVdF6Ui5WLVcn63oJsMYJmKe\nMFq+96djz+PDgaHr8ONIjpEpgM+JKXmqWFIWDoehbRq0qVi0kfPtisWypigtj4878UvPlqDCWarK\nsm1qloXDRumdydqQbUYphcuJqgiUxqB1wofAh9s7hpxJrqAuGtAHhtOJw5goDyPXZ4nPP7nGNQsm\nr9i1Z1Tbcz79+Zf89//tv7NariiKYq5cBdl0i/Y8TaOE0rSi1POOYy5QyynJyThLWtkWlpwM05hJ\n2VOUltWyFU1aeZI/8D/+j/+d3//L7zjuH7g8W1DogkI7nA0z3NnANFA0C5RzeKt5PB3ZP+0JMfLl\nV59zframrAqcc/gQSceeh/d7yrLg4mrBuGjp9gf6rqfdzJxTaxhOB1SOhLEkBk/fnRingaf9kdPx\nxNB1jGge4oDKkaYoiUlK9GIYeXvzwMPTgb6f+MUvvmRzdsZoNaf9jqIoWJ+dsWgjhTFsljWfvLxg\nvV1QFAU6K6p2weL8nMV6K+2HpfuzM/Wn8ZHnSJikb1e7EaXFJH+xqhh3D7z5fcAWC5QRHflq23K5\nXXN6WtAfJ6JWmEKzXBY8HUbGUX6JlJZgSKkMq7WUyu/3PT5E6sagl45n63Pxce7FjL8fBsYQMKOn\ncYZKO8rKsli1lFXJ1I90YUJbIwEVZ8goTn6CwiFlbIb1ZkWYgmDbUuTU9zw9Pc4SSZAraJYTSQye\n0zSRlKJuS9bbBZnEzc092ShyzLR1wXa1YBpGsTQ+9RAdy2Xm7OKcZbtAxQTqRAK6KbK7PZKt2M6y\nLUnThEFxtloxdAOHo2eKmqwrYrb4zlNqzfl2yWK94nyzhZwZ+kF2ECGwP+1YtRWbZUFTaHZEirKg\nLErBzhUVdbsQRiYSyVfGoJ3YQ7OSpkOtMk5bnLG4OVBjnZWQljFSmq8UORXEILo4FpwqMLNrwDo3\nU9At2mpMZdGF4jR0fPvmB/7tt99wftmSYgkpoHKaqUTIlTshFa4aIb/DDLcQMpROkFUkpSQBmTyL\n5R9P9Un00GzCvKSVxZ7RcmvAZOm4TxkdPG5uzHPOsqhK1m3DqmnojieOxxO744E0RcZhZLfveDpN\nlJVj3dZMMVJXJa9fXLA5X4OBh+MeVZbUmxVmUdM2DYu6ZlFWlDnQVI6qrem8lLxpMsoZlm3NZmV4\neJwYhp5pmDAJrjdLXj6raZoNp8OB434nEOMssubTwx3XZc1qsSSj+OKrL/nsy69YLVZYY/mYSVLI\nASUGLxUCKVNVFcZYrLUSt49y4IoxkpKXm5hxuKIkRS39KJF5uQ1aR77/5mv+37/7v/n6n/+J2B9Y\nl5qqFGcZKZCmEYyl7+Hu4cBVVVMaRQxR3scn+qcjt9+9RYeB68stVa0heuLUk3KgOw2oDwOrzYqr\nTU2xbbGNo20tzaKURsoQGHae3eMdMSdpbHx/SxoH6hkPmedMSs7gMdwfBv747ffSx5OgLEqSrqma\nNctty6dffM5ytWS1WdN3nvFwIvYnXNGQcUxB4yPCIC4qTFnM9uh/R4NcG1nC8bF2Uyt0jDw97HFK\nMQ2RlPfELBSVVVVjk+eiLfBFS9NaaptwyRPGkaEPc/RaujyqwlEUBSEE5HfDzn80ZV0TJo/Ww+ww\nUJTW8iMIQUFIcqpXWlPUJdVUUQ8T3ThSzGT5MU4zMScwDANaZ5brllfqBdPYYUiU1nDq5kIkpagL\nK7KGznQTYCx1U7NaLbDOzVxMuV5WhaOt5RQwerG0aWOom4rNpkVNkf3Tnsf7J7TNWFtiioaI2L7K\npqY/KdIk7XrTFEBpFssWZQz94Dkej6AS6+WS58+vub6+ZuxH3r+/ZRh6jseBYfJsVy05Zk6HAe+D\nlAdlKcYy2kiysarFNmgMyhm0FXlEqbk7XJu54MxijZ3TmFJShTJoI6dHqRk2ZESq+fHvaQFqFKXF\nlQbjFN3Y83Cz580f3/Ptv33P0B1ZLTcsaovNiRw8WWCqgBCYUgLpgpmLyhTzIAdiwue5njjNFCb0\n3K+t53pW6TMhB+lJRxw3zB9Hzx9Lk8Qdo2f5x2rUXKxWOkNVFdSrhnH0HA8dY4ZDd2T0iYA4UNar\nJc+eX7DYLMhGYZcVy5X0liur0FnhMBRao6cRrRI+RoZxmgHdimGS9HHrWul+146qkai8tvJ6OFtf\ncjgteHqqOe6PhBlSfn+/o1mes6lXlIsNl9fPuLoSMDdqDjLlDFmky2EYiSngrKUua4wRRqtAn0VK\nCiGIWyd/tAUolFVYNCkbToc9D/e3fPfmDb/6u7/jn371D9x+uGFlM40taVQkJEhZo42S5WEMqHFk\nHHqyNRyDmWWtREiJ42mk3nc0ZSHJ5ymwO3Y8HQ6oFNGUXFxs2G5WVGXFOPUYEipNUn89jvTdyOPD\nLcPk6QbP09MT2XuiDwzjQIhBACra4eolY8g4W/H8+QXLzYaziwu+/OwVV5cXNG3LerumXS4oq5Kh\nHzntD/T7vVhTC4u2BUpZ6UhfLGSvEALDR5D5/+/tp7EfWovSone2bYkl4/uR7765IaeCTM1p/0Q3\njqScWZSOOvac1Zlm25KUAFn94cRp37EfAibDlBXKFJTlfDqcB7FRBdUcpVbaYgvReZu6nheciRQj\n2hnyHEnuu2FmZ1bUZUVbjRwHS/ERtZSBGAn9SBhGtFUsFi2fvv6Ubv/E1J/w00gIiiPS47KqHevW\n0TSWk7ckU+KKiqKpsDOQYAhJMFw64zSCqdMZXVja1YL1dklVKu7vdrz74R13j0+cX2xolw2bc8XQ\nH1AqsVxWWKU4HjLHwxMpQ1UXVIuGrOB06njYHVjVlkVbcbVd8+LZJU+7E3d3B/rTgdPB4wGUZRgi\nfpoIqB95nSElnJITeNnUWCv/D1mLFi4DXBoMP8os1ph52KsfAREKKyVYSskJXVmUcrOvfB7ktsBZ\nQ1FqTAkpB24/3PCbX3/NP/3ya7TKvHq55eWLNeerigLEGhnEHplTnrm9CpRUEyeVkKYUgCQlRVGq\ndrXKM5xZSQOmllO7SkCcUBGMUbIbgPkgoMjyZJCk55xENcqg55O906CqgrIq2DhLP3n2xw7XFNy+\nv2UcRoqiZNU2nJ2vWZ8tqZoSVxWcPTvHj146SArL2I2MvdDZ8QX9Seqej/0gtkatOQ0jiYw2Gh81\nrmhp25Kq0sQgH+tss6SoLOiMjwHtIPjIw+5AsztSbDKbq2uW6zPquv6RYJOYDz1B2jf7fkLrLCR7\nZ39EGcYY8N4zjbJT0WZeKIeMcQKl1lq07vc3P/CPv/wH/s//8X/x/Td/5PBwj0kZC1Qp0cRAlxJe\nFbiyYQyztTcHutOBIXp22TH4iawVti7RZU1IlsfdwP5J9lyJzN3jnsppVk1JVdY0iyVlWRN20qOU\nUsQqzbEbeNwdeHq852F3ZH8ciCkydCP7/YnbxyemANo6VsuGq6uCzXLFX3z+Ga+++IJPPvuMZ69e\nsVwtWbQNbVVSNY00Mc5hqHEc8cOAHyfZGdQNZVlJDxNZKquHEd/3f3am/iSD3NqENYa6NmzWDdum\nIgye3X6iWdS0m3Zm4MkVqlAZP0x0fkDFSMiGISiOo5w4UgQSTDFjy4yzUqFalCVX6xVV1bBetqyX\ntSwuppHCwmG4YvewEzp1ylRNRd1UwjIMQldJKdN3HTF4Nm1N3090/YQfI7vpxF6diAmqpmKzOedv\n/8PPuLv5wP3dHfePj3zaFPSD53CUp+7+KNzMSRdyYotyDa7qgqYqCU9HQj8wTQNddySnRFVWONey\nOb+gWSx4/8MH3n77nvubB1yhmcYDWY1EjOwIvGfsPc+ur1i2S74bpajKOE1ZWum3UFA7y7JtKJ1h\nmI487R4ISbO9WlNUhvPJk01mu2lwWRPHxGGasEUBaIbxHDeTS1wpIGqNVHBqCgwOZ8xMBhKE2iyg\nzzbQ+cSuNOTZ/aDFUoiSpaNWGlMYitrhKoexMA49v/317/n1L/+Ff/vdN8Q48NUvPuWv/9NrLs5W\nossGL1ALFBEt3TmzY0VH9aPNUGtZvKU0u120nQezpABleEtXSQgJHyXRKTNcoQoHyFCKM2BDGJJg\njBWghIEUkb+f0gwNUegpU+LYNAvqa835oiVNgcJamramXVa0jUXrTKGgKSyjNoQoDyRB/lXkZiJG\nReJJdhjJi2feGNp6gbPiz26aWkhLGmIUIL1RmRBGrIFFXRKaErW0+JD48MGDtizXa/7Lf/tPnF+c\nS04hBsiZlIUadTqeUEo6erSRvUeM0osffMAHAUx7H4gxURVyQwOFLRT96cTD/S3ffPNHvv36D7z7\n/gc2y5bVL36ByhHiCMMJhiPTdKSqa+pS6EPqeMQPA9MwQjbUS4NbVKzrGlM1fPbqJV989QVF4dg9\nPOK9QodIsoZyP1A5Q9ssKIsSP/QM+z0aLz5wn1Cu5O5px7vbW+4+3PO4O3EaJpSBYfCEkCnqNc+2\nZzy7vuaTV5/QtA2Vc9Qq8/rLn3P+/Bmubqiqiqr4EwLPD4GcE1ZZbFlDUZITKGMwzopGkCIksFVB\nTIHw56tWfppBXtcl1jjqqqKqSpq6AldydrZmsWypmlpshydFHHt0lG6RiGKKCq3lRGMWlmIY2R96\n7h87TkNEe49Wibop2dSOs03DarmWYI+17HcT0+RRGl5/+pKn5ZKHD7ec9geqwkgzYM6yiOpHhn6g\nHwZ88DhnpZlskl9I0X7lZGm1MDN9v+dxt+Pm8YnHpz2VsYKAiwlX1VSFwlWW3TGipglTSd/HNE2k\nEBiOR3x/IowDwzARs5TbX1894+r6iqquufnhHXf3j3R9x1m1EEuVh2gKyqqWeswYKUthC66XS0Y/\noaymaSr2+wPGGNZrWerGrDh1I/nuEVuUOKspK0dZO6zTFIVGxYzOUCoDOpNyoKlKtLLzEjdKrF3L\nlf9jhF6ISPNA1lr0cyMSg57ZqGj14w1KKY02BdpI02FROGxp0aUiKs/9/RPff/uWX/3P3/Lm6/cM\no+eLn7/gi5+/5Nnzc2nXC4GQIj5DzIo0u1UyaZZX8gzbVrIAnZd0Uv4lwSaIxDzzRM1HrBOzNq7n\nZKm4XlKS3UdKaWaYyumdJDxTVJrh1ZkpCKdVFrhyUi6MwTYVpTPkKKzWqqxxzpFChpmJmqbANIwS\nPFKy/K2qmrrZ0A+BaZiwpaXOlfjqtZVGycpKn01ZYJw4gGIQLqzKmWGYhNg+jKAt2jmsgapd0I+e\nrh9YLhfYws1Zn8xxv6PrOybvKcpKXGBDT1VXaO3kewzz92cOShmLKzSuMIQQ6E89t29ueLy/Y/fw\nwGH3RJomztYrXr18RmELWTyHQTIZ+x33797LUt05VFFjXTH3xkhORCmNSYHGWZqq4tnV6scmz8Eq\nqqqgNNJkWFmNU5nNoqLvOsZDJM8M1GEMdENgyIYPjzs+3D3w8LBnHANZQVVXnF9dsN5uubi45Ori\ngmfXV7x4+QI780HzNHB+fUWzWpKNlaSzlgBYSvI7QcqE7LFzcZzSZjYO5B/zDCkLvEVeI+bPztSf\nJhDkCsxMe8kofMwYFJvtSoa8tdhlK3WSYZL6VlfK1dVEqmpJvWgoNjXheOTtu3s+3D3RD17QazmB\nyWxpWVaa7aKQDfQYOB5Gun7AuMyLT6+pq4Y4BYbTiZzTDEOQj5G853A4cfITUSFx+gTaWAnppIwx\nmrIpWNUVyo988/s/8Jtv3/PhfoefJhpXQoYpZK4uz9hsWurC8P54R/KetnCYnBmOPV034LsT49hL\nMVfMJF3gaseLFy+4uDgnEbi73bE7HKUSVksjHTGSSbSbFU1ZoSZpeUwpsFxUcBKaeFU1HI8drrAU\nRQFZE5Li1EX64UDTTDSNaPNF4agLi55lh5jkc4yjekG2TwAAIABJREFUXAFTVHML3+z8KDTaCgle\nFRnMRwufeIw/BobMx0GO4SPkWn2M6CuHcRWuKCmKgqKwRAL91HE6Hfj9v/6RX//yd/z+Nz+gtePl\nq2f8l//2H3n9+pzFooTg8SniU2bKsqCMaZY8+GiBk/QsCumqTnnWy/9Uo5qyJaYkHvOZ94iKaJNQ\nMQveT+sZqp0ERJ2lCxstCc4chcmaSNLJnuebQJTHijLyofWczjcYaeGMQnYKUyJ46baWF3TmeDji\nY0bZgqpdsFqtOL+4Zn880R0PuMbJdUBZrCmxSlOUGldpwFKULaYoGYYTaehgmhinyOEoxHZTOPHS\nG0W9XNINE0/7A9M0USXpBQLY7/c8PDwwTJ7Xn34qeLv9npQjdV1TFGIrFNh4krSkrMU4nXbs93tu\nP9zyu9/+ht3DIypFrs7OeH55wWLZsLlYYVCkEIlxRJE5HU58szqXjvkUqOuGtq2Z/IQtNKGfCNNE\nyJ6mcCybgtXScdg9CDx88JSlpmwbVts1Z0sne5RpYvfwQBonTBL+bDcG9kNgP2X2/UQ3Arahraw4\n1VYrPv/553z+s8958clz1ouW1WrJZrtBaYv3gdNBsiLaGLAGHf2s47k5wyC3034YSMnMsBDxcOYY\nUXpeoMZM8kF6aOy/o2Xnzf0O4wrqShwZgzoSQ2I/JHTZYE1FCp7u6IkT1EWNKi1VBWfrkmJRoytH\n1orgYXI9QVe0CwE5nK0amrqk0ob+cOCoNLaoiGis1ZSuJMbA7vaW01FOvyFmOu/pYubifElZlMSQ\nGPeJ0UuqMznF2cUFdVtTqsRw6JjGgaQDy7kf/M2be96+feI4TCyakn3vSSGgyEQ/UNqWs7OW1ziU\n1qxqS/Qj97ePdA8PDOPEafJ0PmBCwpRQbBLtdiEpvPsDD/dPnPoeYxP7Do5ZY3RB3SrOzi1lXRJS\nYJhGxnHgOPScphHjFc4mVq2lnyoOh4n1doNWmnGcKErNMEbi2KN0oCoNZVWgiRwmz27f8e7mid1h\nzziNQv22TlBi55cUrpKyJkTaSilBLtBOM++9fjydy1FdhmZOgFbkpMnaSRijrikXFT6MvH97wx/+\n9d9488c3vPnjW27fPVI1DV/94nP+83/9az7/4gVNaSF4Wahlub1JcjiRoidFsQ7KKVE4opBR6ePC\n0sw6eJplA4FXzDtQ+UdM4iU3WiSGkGZZBlRitloK7CKYQIxzy2wSf7PSUBgkfISW+garxOKYMwRF\nnhJh8niTSNbKAAgRH2AcRXcnZqZhoLCCNby4PMdVLYdDR3bvOD6+oy4LztYtdbNEGyUJ6D6wqCq2\nV1e4uuXD2++5e/8W5xTb5YptNgJiIApo23nq9YbN+RnjNBGDx1mDsrBcfzyhK1brFTlr3JSIAfzk\n5YZqhQZljADabm5u+MPXv+dXv/ol7354S388saprnl1ecP38ivOLFWeXZyzWK1LOTFMgqYiralQM\ntKrg5ReO7nBgGjrQE0VpSTHR1CUOwzRNPB2fYMyonNg/nfjh9sA4TtSl5vrlNcbC4+0993d3hLHD\n5pnClCGlhLOWx37idj+wOr/ib/7yFc8+eUGzWFKXFXVZUtcVm+2a1XopXU36TzdMwTZCWc8gbBQx\nMdOwMt6Pc07GoKyiqEpCCOyPR1ACEimMsF0VgDbkhAThij8/sn+SQV65mm7ydMMRnRQ2BazKLFYb\nlo2lqRRhsphlC1RSSN97uXYWioCGMFt/taVZLvjk5TVhCmgyhVPUdc2iKVk2huB7QvJgLCpnrIoY\nlcCPpEk2zyFlcbOoiMktRkvaUrsKPQZyCCjvOVvVbM83+NMR353wURYVKglh4nAcsGXB5aJlu6x5\ne3NPN42YFEnDwNidOPbiUS0LTWkT948n+lNHDkG6ip0jDhP9ccS4kmqxoG5r/DBx2h0oSkdLBSqS\nArOeDF0/cjgcIURC39FPPVMI+JSxZUNVOFypGYKXdNrFis1mg588T94LdFcrVEzkrBgmTzocsCni\nJ/HsloWlKitZVhvDFCIxD1TzKVIpJTH8OXmpsiEnLTclZpsfs29bfyzFshhnsa7EupaybaXKwCZu\n3j3xL7/5hn/8f/6Z92/f0Z96iqLgL7/6jF/8zee8/vSaxaJCz9XGcgKHGKXDPscoN62Z+pOIhBlu\nQc6o9CdKlLTRy/um2ZUTM+SspCc7Co4vK35c+JFlkSr8po9YPCngymhQ0uOikBexznKa/yg7fYzn\nG+VIKqJVRGGkeyN6NBnj5IWcU5I+mgxGiXTzMQzTlJa6FOvmzc0Ti8qxnBdmKE3yE2kaOTzckWPm\n6tVrVqstKWd2uweqpqVwJafdDj/0Qqki07QNy9USYy39qWPse7SRHIGZXWDGGFLKwi1NHj8JCtGH\nA4+Pj7z/8IHHh0e++eZb/vVf/4Vvvv6aHALbxYKr1YK2qWgqgYOnmY2LshRFiSsKlFaM3YmYEov1\nEnJmHCc+fLhBJSidIRUaVWihBOrMYr0kxUzKlqJscGXDsnF4D6fuSLc/cXf7QO00V9uGuigIUWy8\npyni6hUvt895/bMv+OzzT3n24jlVJfKsM3Nrp3PCPZiZwfmjRDeHwArnBEqepI47+AAkTLKURQk5\nESZxlMUYRB4qK5TSpBjpuxPGOWzToK2dWb/pz87Un2SQn69XdDcP7HY9lS4o4kTtFBfXjrY21JWG\n0qF0ibHS9308jpyOHceum1mDhsJqQgiUheX6ekPqZ2dFkHrOorQ0teHhaSBk5AQRBBggsWlwZg6u\nGI3SiZKEy0Fo8U3LhWkpzR3D/gnjBxodqU3k2J04nqQBrZ8mejugUPQh8fzlM843K1pn2B0OTN0J\nqyBNI/vdkV5lXNlicUwh83i/pztNFKU01q1Sptj3vE9HmvWGzdk5lXM8Puw47Q9sNkvCVDJNI8PQ\ngzVkpRj8yNPDI4PZMw4DQ/Aoa6mXKxbrMxZNiTWJft9RFpar8w2Fs+wfd5AjhRVCEUkRombwkcPu\ngJ0XcGXhOD9b0i4axinOp4iOkLJIKLM+7FyBnTVusiJHNdvFtAAlFJLinOtnnatnlFuNqxfYqiGR\nOHQ7vv3De377j9/wu3/6hhhHNtsFn/7sE/72v/4Vrz/9hOWihijyRkqzphgF0xX9RI5RXlzzci7m\nSFTyoiNK/sCaOcykMiHJ++ScCVlemGQ1g6Hzjx9LMevhaQYhACErUhTHCzmiEI96yrOUkuX9lRGd\nGi06shKbD9p8jPPPJPeUoBBALyiIM/BaaTkZkxlOHY83N6w3K1T0+Cny8HCkd5rNcoUtClxhycHj\n+4HH+yfubh+xzrG+vOTs/Ir9scMUFa50hKeA96MElnKmaSpWqyW2cHTHE9MwIjKuVOQWuWTyI9M4\ncdjt6fuTeMlz5ng48ObNt/zud7/jzZsf+O677/jw/j2F1tJNcnnGs+eXbLZLCmchJU6HA113pKgW\nbM9L6rqUBPSowQg311YlPsO7DwcKDYvKEKPD1yU5Bfw0UC4XEhSKgbPzmqoqaeuSb797z9PjjvF4\nYuoCm7MVZ+sLrFYMPhN0YOpHLq8uePXZZ3zx1c+4vLygbduP9iahJGj1IxfBqo8e8ixovfkXwhoJ\nwckAhsnLXkKjoJDb4th1dF0vUfymoaoaFDB1J06PD5R1zbKSIJz3mTBOf3am/iSDvCzF+tSdesx2\nQ8Ly1Hl2f3jH4xB48SJxfX6BVhLDXSxqjrsDu6cd7x8ObNcr2soxhsDD7Y6n/ZHjMLJsWhZty2q5\nput77m73PD5EhlEArk0dqVxB4TTGASbTLmteWketE9MxovNAVTiev3jF88++ZLFa8u2vf8vXv/41\nt+++4f7NGx7ev+f+aWA/TgwhQobRR4wxFGXJp68uWS8XPNzsSBGssyxrAbUeBw8PA6tViQkKT6Qb\nMtpWbDYLnj+/YooRVx7w0XFxdcUn15foHDnuDxwPHdfPzwmx5GmfuHm4JysonBXf+djzNAVuHp6w\nlXRFPLu8ZLNqZFmbI6+351RlSekUjw87Hp8O3N89oPE0tewTnKtoXEVSmm48kWJCO0VpDNlCJlM4\nWLUrrC1JRUNZFFgrUWSlP6KUJcChmEEQH5edhRGd3glooVq0lMslxULQeLvHA7ffPfL1b97y/vsH\n0JqXn77kq7/+nL/5j1/y8sU1TdmANwJOTnF2lUR8ioQYCEmsaSklCQApSYhqowjMC+uYSEbPJ1zm\nbhZ5UcYQ5/2m1NnOBkMgzbsB0S9FM5LnQlTyeex8YlYpyvBWUs1lZr6n1qDNXL5FImb5N6MykYBx\nzNUHjuwFYB1m3dSajM6BbBP9ruPD+J7H4oG73Z4cIvVyIXLYOFEdR5pGDi6HKdGPEaMGdve3hBSw\nTct2c0ZZFwx9x9t3N6Rxkgd3U3Nxecnl1SXBT2QNSSn608hmu8Y6x/F4YJwmvvv2O/7h7/+Bb998\nw+5phw8i7e12Ox4fHun7gRwDpTO8enHJ559+wsuXz9icL1mvapZlgTGRKSemmOl6iO9GDrcG4zS2\nqnFFhS6Ee3kZ4YuQefv1tzw9HYAsNk+ViWOi2kraeDr2xLFnCj3aFzB2FHHEucTl62uqqmTwkWqu\nJm2XNZ/+xZdcXF9zdnHJarMWQImfcMpKpxOa4EU+sVZJpanghchBbiopG7wXEElSiWkcUCScExoa\nIGnfU0d3OFHXNc26pDCGKXr6qWd/2FOOg4S6yPiQGPt/R4M8YGkWa65SwWa1kjDBOKEcTD7Q9xNl\nZWkqQ1Vq2sYSz2uib+jGAFmx2/d0u0fe3z6xO/YMIXJ5AbapWbUVhTH0fce+PzH1AWelKKk0GoVo\nT8M4oZAin+3ZmlB4wnjEY2jqhsvLM87O1hzfrXm3bIh3JaqQDmhXKayPVCpSWkXyEn0egRgmjI4s\nmoIX11vuHuDUneh9oioV67LAKnEL+MljnGO5bNmebfAZkrK0izVXz2pevHzO8+sLVJj7IeLE/vDE\nsRvYHY74KASiQKJnYsgTSikWmxWX1xdcXV1yeXHOsilxhSUoJXWaw8Dd45HH+0cODw/E4QAeXL2i\ndqUM3KJAlyWVseTogUDKYPWITpGpHwBHNop+yBhTYOp2XmSqGXSNOFmsgCJSVoQAecpoHYkmksji\nKbeOpAyHp46HmxO72wmy5ZNXL/jir6757ItrXr6+5vrqnKaoUEnL9TkK2Nj7KN01cR7e/4tDRSAU\n/JgcTGGGHM+3iATz4vLjKVwGr87CGUUhg3sOiwmgO8/JdAnHEGXhSZJT/8cKUgWyXJ37hWSoa5Ev\ndObjAU8ZI59GMS9gFXn+ejOQmcnqKRJ9IioPeUCFhNcjeZpY1Y7XL68JYcJqQ3caCN5jrGIYRwkB\nFSXDOKL6gcrVLNcbwtDRPe1I3kuaWHuKomA8nnj88IFut6NuW4qqoqod4zjw/v07vv7D70Epfvj+\nB37597/izfffsdtJNF6WwCJdWqNZLmouz9f87PNXfPrqJZdXFzRlicrgo5/NBrIHyDkyDF4OSiTa\nzRnLs4pm2WIz+MXA2XrJnbUMMRKDR+slzlpsmdBW9j6PuwNWgbYa4kBrI6aR5GRUiX7yeB/wJrJY\nrji7OOfZi2tW2zMWi5amqslkYkhY86dGT6ull17K8eQm56eJqTtR1DXKGEnXaiXNocNA5fRc4TyT\nnWJkGgZyivhh4PBwR8qjkLlyFMdOCoxDT3Eq5Hvj45+dqT8NWKJecPWs4eIysy4N4zAyTSPWRYaY\nGYYB8kRZ1NSVprCJy/MaZ7aEYHl/1/H4eOL9D7d82B0YY6Ksa7xSJKvRlaMqK4I2pDES8glCxn+k\n0lgBBMRpIuWE0Y6qrUhmzXgyTJO8iC0Rkz1lZag3C8qzcxbbBXVZklwnP4AusnCKgczRR3rvOZ2O\nnK1KtssK9XyLUZmvu5ExBiptWFYFPkdGHxl9Zr1ecH5xznqz5ml/EKDFoublWcGLF5dsN0se39/j\nvceHke/fPfH4dKQfPE1bUtiSBPRRiOBVU/Pqk2tevbpiu9lgUJSlEJay1dy/f8uHtx949+6WsesZ\nTwfi1KNTQeWgrSvGKBJIYTXLs1bSbf0gQZ/kSceJ7ngS2ACe0VjadiH+6rleVistiy47U33EIEIO\n8xJQBZQOOIfouCjiBKddz2k3kAJcPzvn05+d8ezViufPt1SVQ8VMmiAF6c8JORGT6Iwpxlkbl46V\nj14VY+2cvhTbl/yE569NS+ozRNHF8zyAPyrYElb6mGScT+lzKhTmbFjO6Jg/kjVIKHHjaOm7Z35Y\nJKFhQNZSGZAT6Cy3GLRUD1jRSHPI5Cj7BGXF2imVtomUFNlHjPZEzbxAzaybkrK+YPSesZ847XsJ\n6hixQtZNRdu0Ym3LGm0cRVXRPT3Q7Z4k4q4yKQTiNHH/7i3dfgdKc3Z5zvb8guV2y+39jt//2x/4\n5d/9T4q65PHpid//4WvuHx5nF4akNq3RFFZA5BfbBS+uz3j98hnPn1+xXq9F+kqJyQt2LivhsFot\nhxNJ0WaiT6SQxRoaPTqNVAaa0jCV4oKy1uGqmjKJTBqCp+sn2sqiAZczq6airBtOIfF4HFExYpwc\nIOq25eLynOVqIV1LM2vXx0gMYSYMyYA1Sn6+mSQP9xiYxpHD/kCTEq4WC2icQdMhBLBSZhZTlJBP\n8KRpwhpF9AOPH3b4cU+5aNHWYY3sY6KfGE4nqQ4K/44G+V/+1WekkPBTYBoC0zgw9SfGwwN9d2Q/\n9bz5OtKfLdhuFrSLlqZx1E3Fi2vNzd2B/eHEYzfR+cRqu+Krrz5nvSxZtRVVoZkiuMJQ1xWEhCZR\nlJrVuqSwCj9O1HXJ6OUqPX1chtYtpfL0hwdufvgGFa6oa8fnX7ykWddMY8c0TqxShT8WjNlRFTMj\nwRlUVpgo9PhFZfGl4XKzwGrL+4cjKXoOpxP7MVDUDdvLcy7Otqy2ZzTLFc3ZM7yXF8HF9ZamNPi+\n48PNHbcPj9w87rm5u6frByDjQ8OikV4O65yENMJECD0P9/fsHp/ojiNfffUl67Mt3TTx97/8Z777\n4xtOhxN17SR0EANXqSSZmmQtwzgSfYebAnpREydPmCLFoiHGE303sT926GwpS01VV1it5iWfmiES\nEvjJs0tF/xj20fNCR5GSQVmHmasPYggs2xJz3dC2mddffIo2GeMEoJCGIBpjkE6amBIxS8sjMaDi\nJFbMIEKInetzo5oXkFmRlUFZLb3oWgZoCh+XVLNvOyamEMgpYlQmqzxrnVkkD/gx2PMRNK3mU7uI\npCLViOVOz/9ZwkIZ0d/d7HPPSeoZdQbQRKWIIYsTRoNHHghOFdgsghXIbcfMnn6UtCgabSiSwZWa\nRSW096H3TGOkqeVab7Qjk2kXDZvtAvRETAPkwLIxFLphmhLBT3z/5hvGaSSEiMoaV1Y06zVvP9zz\n7uaW25tbxhAYxpG+7/E+kuQpLQlUY4RWtF5wuVlxtmopraIsFFVlGUfRkp3T5DSSssZaiabTKrSx\nNMs1KEsMmZubG3Y33zHsH9AYzlcVlT4jhIg2DmUMRVVh7IhuK/TVOQZoyoJlUzMZcbdUMVG3A4WF\nVVtQtyua5YJmuRCJBtlbhCygjoSi709Yr4UHa61UAySwtiAjQPau60k5UadE3a7AJ3RStHWNRRCS\nJ9+jUsb3AzZ5bGUZgqc7Huh2D6wutmyuLvDjKB0+1nEcdozDKPziP/P2kwzyqR8hSoAiK7DWgLX0\nOLo+cDidCNPE/U3Jsq1pli2vXz/j4vyMs8sFZ2d7qrf3nCbPcrvm5atnfP7ZC6buxDhIvN5nCFMk\njAI7zUSmwfPt9++Y93IUTYs2BQojEsfsI07Rs398wBiFQUAS3dCDgjEkQlIsNluMsYSxx5lMGDz9\n6Gl84NgH3t3usVozBY81iWWt8YuCcZRht2hqVudnXD9/Rts2rM/O2FxccLY5I/oodqnGcXx84P7h\niYf7R/quJ6UZTJ0TReFYLFuWTUNhHVOMbDcbtIG7mwce7nY466is482337PeH7FlxdhN5AzOapF3\nvAywYApU0WLKJVUumMaROE48TVF6x3Mko/H9SNd53t3sqYqCi7OCTVngjJWyGukDFleKkZO2ytKI\nKINSJpxWkvCTJKAnjz1xykz9RA4ThUmSAFR53v7PMgx6DuEk6bjAk+JEjvKzjjEJuIRMmj3amUwK\nSfy5GRQGNTcbMjtCspp9KzEhzwUpegoigcuJXus5ho/8mQe4+Si1KGn70nl2saQIUU75MTHbM6UY\nIMwpzzzX7c7AJFDy8JETvQDBZWkqUotS8gUplaQbiCzSW2IupYp/YpsqTVGWuELRzDCTnBQhJ9Fo\nD0fKVmpmjZOO/RhFJgzTxH6343Q8Mk6evpsICWxds5uLv7qu5+RFnvgoZ6n5e+WMpqkKVsuG1XJB\n2zSUpiJNidPTgRxB24KcIETPOJ5YLJasN0Ke0kZuKFpLt03KERUnka+ynIab5YJ6ucYUFfVSKl77\nY0e/vyONCqcLiqqgXbZstmuiq0E5SJn+dCKFCWOgWSwp6gpljLhL9CBVEzajzUfgu8cPQj2yhfvx\n5uYKQR+qHCmtQWfIIZJ8IEw9PkyEHNk/7MgxyK0yZckLhInxeOTpccf7d/coH/BBbJUQSUn4v9M0\n4b0nxn9HzM7+NIkGSCbPncIKTTbSiXA8eXbHnlpr6tLRrGqUKijLJc8/2XJxsebqas3i3YIXr1/w\n2esXXJ5v+TBM7E4H9sejXHWzwmQ9B1mkp/z97T05CWR3s03U9YLCligihcloEt57hqedcABTJmlD\nSHJ9njwkHNViTd20pOCJcZIF0TCQTx3vH3YM/iTdI9GTgsdPgcoZnK7wWbNoFpxdXnNxcUkInqIs\n2G43vPzkGTlBd+oYhgOPb3se7x45HI5MfhJBYD4BOmtpm5r1ekXhCvpx5Oz/Y+49eqTLrjW9Z7vj\nwmSk+2wVq3gv2SCEhgBBaEA/Qf9aGghoQMPWQK3uFnlZ5nPpwh27nQZrR5K6osZ1A8jJV1mZcU7G\nWXutd73m+orgPf/1v/2FYZxp6or397d8+vUL/Xng9u6OylquNmsmpzmdBpYgcnRdtdh2RdNtMK5G\nc6QfJ86TJxPRWnxp4ryQQubQLyw+sVkvIsUvCiCtStiyVpK7mQrVL1OUjhml86uFLUl40eBJPjEP\nnhTld0pCvMACOhe8R0k3HGIgRk/K8v0xeqIvcntEZi+ccTkIUooQI5dIOrBC6ysq3aQFI49RhDjR\nR2EdKDBZijBKPEQEmHk9rzClS5ZCa4SJkiI5B2HMFEaNyppMFIZMTMW0S9graOFdgxRwlYX1AhfW\nTeaVuSk0+QKRFD+OmAg+SCFXokhNSYlRWS3iKpVkktHWkVJiGkask0W0dhUpG0IUPv4yT/h5Fp/9\naWZ/6BlnL0KoGIhRootyEoonOZf3JiKYbddye73l/s01u/WGTdtR2YYUYexHYky06y3LEun7gWnp\nsbZmhyInJZ5KwbOcTwgkIadhVdXk9YYUI7V1VE1Ht72iahqCD5zMnuV0RsUZqxXd+orN9RWbmy26\nblFZk3yiqTXTNMk9Kz9f+UhMCRsiKQVZUFaNTJZZdktxWXB1JVFwWlSq1mhpEvwiE9eimfKZeTji\n/Uw0mZenR/LiWa9aTAZTULZxeObwvOfYn7BJ0557jvs9lavJRhFCZvGLNAUq/3/qKfxGhfzq9o1w\nt72MdHlBlGprxe72jmGO/OXnX8g5smocdwp+/fSNtqnYbFo2K8sf//k9ZrXi7u1bVt0KUsSYDtKZ\nqRd1nzGW1tXUTQ1J4yeP97l0PYmpP7HMC8ZWrDtLLpQij+HQj0wvA9/OI7e3b7m5vmW9rsiITJ8i\nMloyHPcHlF4Y/Mjz6UTMmhwUXx7PTOdeut6oePvuns16zcpVVE1L13WYbPj0+TMxwt31Pc/fnjHO\n4peZw9evPH39yn5/KBmHSUQSCZY5kOPI8Xjmzf097z68pakdxsDz856qrjmeR4Zx4jyOJAX1NLL0\nR1adJcSGyU/srndcocjasNps6dYrtrs1fT8wjwNZa+pW44Nge9koqtqyWTdcX18xTzPncRbBSEoo\nFFa7UqQvzoAirokxYQrWa6zGagUhMZ8mwiRukwmBV3IJxACxwAUKD1wRleQbhlwmhehJXoRXF+6X\nVhlTPvM5Q/SCm2fKYlEIgYSCU8ccCAqWkAhLIAUp6FFBMppY+N8q64KRys8xKhe8VBKPLtCRPHDi\nvY6hSPezwCIXv5WsybpMAsq+QvICs1hiVnKQpFLAteSMai04OlEXuCgJfq6UMCoXGTOUiRhlsTlj\nCWSVMFpCTKrdBls8941WTFmhtKXurmS3EGf8uGC1TMxJJSKRxS8sQXQYF3WiUZmoZQegtcJaQ1NX\nfPf+jh9/+Mj3v/sOoxw5JulaVy3NuqNtW4yVEBdFx/aq42p7Rd12rHbXxFTiEo8nliXhoxxm7WbF\ndnNdGoaENmAcWAdKWbpVx3a3xZqMD543796y2awlF1drxmHifDiRdERbReUcp1OPGQeaykG2uKoq\nexaDdxlbyWGolCaHhLLFiI1ImDP9PDKde/rnI93Njnq1Aq1ZDntCmMm1oTKQdeb88Iw1Cdc5bNew\nfzlDtnz//Y9iGkfmcB7p6kCzXeG6logjLKJ0/Uev3yZY4nRiGkfGfmDxC11d0TUN221bHvjAeZ6Y\nZ7GTTCnzy5cnYs7UXUVXWVnsrBqJv9IaHzNt23Bze4U2kcfnA8Y6dtc3XG83PH77xqdPD+SccZUk\nsvTzQpwiMNGfZTGjkAzKrCQpqK4b1ps1m92atlJM08g8B87nnq62qORxJPp5ph9nxjkyTlJQstfs\n1h13tzuUa7i+v2G7u2K1WkMEi5HOZprYf3vkp6ohLjPtqiX4hU8/f+LzlwfO88Ttm1vabYetHYde\ngoTrumaz3nBze8Xt7RZS5Hg4MY8Lm/WGxcfiu2FaAAAgAElEQVSyIA1klVmC53m/J2RFVTv+8Mfv\n0QmWJTF72LQthMhwPGK0pqkdvmvISTEugXERS955npmWEVTpKFFYZzFOS9yX0q/eKlobgS1AloCl\no9ZaFe55JONFRBOVFMzLtJZFfSkbg4vfntgCZIqHR8rE8DdOeE6lWy4K0pSFYpiDQDtc8pxThiSB\nz1lFoUsmI4+EAoxwgk3xxtAX3FuJuZemTBxlJyq+3KqwXRChkLq8c14hmMu1KZVKloVgNDmXKNDX\nzlsKv0WRC+/clkPwkqqUi2ApJmHuKBRV5UiqFHhkSZhJZBUw3oAWuwAGwaOVScRlJgTPerPi7v6O\nw8MnnvyR/mXBaU1T1TTRo8xUrHvFcz2R8RTRVLnGyjnWTcXVesWH+1vev73j7v6atABJloRd1+Aq\nizGiW6gqh1YdtpaFY9VWGHOhgibGeUFph2uFTbXarqnbRuiiUUzPcooyRRrwbsLqRFtbNlcb2tWK\nrBTDOFDVtXyuXn2A5D6GUZxWbYpU7YbKaSqnaZoKU1UoBcEvPD8+cnp4ZNVWVG2HripyToynA0vf\nk5aIzh1W14QM03DitD8wes963eCMTIExZ7JXkALZVBKBV1XgBOZdJg9hAWdoKi2QHlmmyn/w+g0L\n+cA0jJJyXVXo2tE0muAdu13Hx/SWZRyIXmT8z4cT4y9fqRrD+7srmrbDUpF8IJqEcY7VpqOpNet1\nRcwKtOXm/pb762vO54nzlFl1Dls7bGNJyeDnwDx5plFGYJRQyNpVxaapqSuLc0q8nr3g037xaByL\nEswuBS+htCFT1y0pT0TvSSGx7sSOtN1sWN9esd3t2Gy2hCGwDDPD6UTjDMu88PzwyHbdEP3IPE18\n+fzAqZ+wTc3d2xtSStR1xbdvj1SVY7Ve8e7tPVebDmcy8zzTn3qmYaFtGrbbNeM0ERexnR0nWcaA\n5u3bG3738Z44LZxOM4eTx5IJ08gQZBGscxS1XtRYCyZncoSQYPKBGAJtbdldrVmvGqpKONpKX5ad\nhWqnEEzz0llTtBUXQyk8sdAEY4yyJC3feTHrJyPda7GJBRHaCDRS+NzpAlsXiCJT8O7LAvaSBlYE\nQVkKclKXw8diDWRnwaWCeYt/vlX5lWcuNV1oaKrg73I5JfX88oYpAD2UQq5QiHoTReGky/dlpMin\nogxVhclijRKPdqPlvfG3MSP/3VfKuUw6lqSEwidIxCKcep+wWRceO0SlcRGUsczTgKs0q3XH9nrH\nfH4W5WlWVFaTlKaloW1GkfDnQAgyzfgCG4HCGE3jHOu24Xrdse0a2rqSmDWbscpS2YqqrkBnFBHn\nNFUJTDBOo50i54UUJLhCKU1WmqqpqVcrbF3TVLaIbRQoI8U8RZSyKBVFv5AD1mpWJRRjmmfm8UwT\nvIgJ60ogqJxlrzItov61MmEQPWnJEDuBoxT4ceL49Mjjr78wNI7N9Q7XdXjvGfd74jzTNBVx6VlG\nmEPmeNhzfDkwzQvkNd2qw1U1GU1U4FMCW73+vcSxU5OyFm3KOKMrRcIRo7DW/tHrNynkmUy7qtls\nG6EYdh3GaPrTkb4fiCFwf3tDU92ikud4PDP4xMv+xH/6zz9x/t1b3r25Y7u6ZhnF7nZ3vSUlT44L\nm2XFtCh8ynSblqqxNJuW7e0t1mi67Zrt7opu1XHaH3l+kGTscZ6Y54nkE6OfWXwkJ48i0h8OxAT9\nHLFVy8d3d4z9ieNhYP80Esl03YrvP+4IIXI+DTw/HTiPCX1ccHVRR1qLigmnJNMvtxVvPtwzz0mi\nzLRmOvfsX545nHvWuytu3tzgrKG2lsYYfvrLlqQ1t3c7fv/9ezSe/bcHxjEwD7MEOqeAa2pyhn44\ncdqf0VZJgpJ1ZL+gFy/QyOHI08OJVZVxaoPrKobDiaXQI6OyRCW5im3VQob9cSbFZz6+v+ZPf/jI\nbrMC61CIGEaBLD5zlmKpCye6NKg6idKRlEsRj8IokXZdBO8pil98KVS5iG2UEobJpWvPRVGZolD/\njJViHhbxTE9klJEgg5SE86FikiUkipRF4GOVkQBplwkqyMK0eKQ7nSAk4iSwTjby70JUKS1pKu+Z\nJAwUbQSj10nGgKQwGIwKKCKxLG6lpS8LWWRq0QWhMVrLfoAgC82ciQUKUwHICV3UnirLdV12KEYr\n0DXjAPMw4Y3HuoRzirwIlm+dwpkKlTJT70lxz9PjwOmUwa5wJkD2TNZyOzW0cWFk5jkVK9wsB5Qz\nEjvXVpbGiVJ6GieOL3sqZ1i1LcqIH5HPQRTbjaKpW7ROJD+TvRRVtEbdXuO6Ld26xQCubqjblso5\n/CyNTrYSFWkrB1rSfMI8EOdFiqESQz4/HQjLRPAzy3Bktd6wvbpmmhJxiRA98zyKuEdV+OnM8DwQ\nlomr2yeq1RpTN1ijSHNPnAaGOeNcIoaew1PPfOrFaG+3Yvl1JKI4j5nTcUQZzc39lma9xtUVWsvh\nhTX4nJmiF0gyW1Q0WGUxjSL7ieAT42lEmYlpmZnm6R/W1N/GxtYoKldhrRLFWLBkVaOpSNGy+Ixi\nZtOJ73BV1xjXst8fOR1eOPSe/HAm5xWtmqnigg+eujZUbYfJDT5AUob17oqr7RW7m/d8/+Mf6VpH\n01RUdS3Wm8PE6dgzDAPTPHM+93z59IXT6UT0M11jmIbI6fjENEd2tzfcXG+5uV1zcpp2teb3f/wT\n89QzDieGfk9XG9arG958/MCq3TANA88Pn1lSYB5G3r55i1GV6B6dZXdzBcqgtWzTv3155Ke//syx\nH4k60axrNpsd3mdSUtzd3qOcpm4dz/sDJksSzuwFE121FSZZzueJmGFdOfb9iSUFTG24entP7Sz9\nqcf7Ce9n4brmyBJm0tkznAfmORKSwdaVmFg1kvZSN467u2v8PLJd1cyj52Hc024d3WZFvLgIKgWB\nMuUAQaTqmoS6WLsqIGticZ00FwwZWawKLl7giCy4cy5cXOlGxR0vEcCU0BKVX/nJRVBNRkZShSz7\nLrU35ywirAQqp9cFJgUq0UpjAZuFbZKNLptP6bVVgXdSKglHRcCDUQWOyYSUpShfaCnZ/E3qn6SL\nT5d9AFDpjDFgS5hFjAEfBEKQzt68dv+icRJTLhAgKvlFrlRbgUKMxdU1JGFBzCHLwlV7oYTWprAl\nE9M0STjL+pqUNH7pIWa6ytFuHFOyvCTDnBXJQG0EPrMlGLu2RpaqRlHVFRrFdB5RMZIqR2MqbKwI\nJIZjYP90ZFoiMWVud1dy6+qa+vodcQokPxLnmcooCIZz3xOCJIFVrXTgWmeB0ZaR5XzgvH9kmRaW\nJXHsn0lhliLuZ4bzmdo9sdu9sNquUDmzjBPKaMbZ039+whTnU5UiYZpYX+2ouxUhLuQ4U68bhsOZ\nw/6MqybZpRihMc+nM9Y3YAyzh3a3pe0a1qsKWxlZ9qeIKotOMRkT7/YUEm3b0bQtrq3xS6I/HTk9\nHZmHCeMcVVv/w5r62yg7/UJlKnQyhLGXpQUGnTQah8KQw4JGiq2rV2w2O97cXvP0rS0ioMzsPWk4\noZzC1Q5Fg81O4rRqsfm8e/eB7XaHdTVKKdrGSrp6CigUIcISIvOyCPwwznz65RMPjy+cT2eMn/n1\n55/59vSJUz+y2m5xlcVWhuvbG7rVlu8+fsf5uOfLp1/4b//l/2Sczpgqs7m94cP33/P8+MSf//xn\nDseDuNYZS9dt0daBNrR1Q1XXKK04Pe05Hk98+/bMsMx4lajXLe/e/44cIuO4sLu5oV7VKAPfvnwl\nzQNETybT1B1VVWNtxdTPzCGiVWZZFvp5RnuL/SjYb38eSWkmpoitJY0+Id7kTy8nUlRUVUvWnsoZ\nTJSlnzUCp+h8h1WZjGGaIy4Ut8ACYVxo1VpdyCaaImQUMOECjRRPEyVYxysVO2fpbgUTB8FOMmTF\naxhEjqQkTAGldXH6i8UXpZhjKOl1JbTCQJClaRKqNxnhYKskxVuGBlXYKQirKkk8mb74suT8mvpD\nORS0vhRyoQiqGCWEIRXmjQaMkezPJDdFUX5vOciskvdbNESidoziRhiRfzc6YbJ+9fTQrzg84u8Y\ng0BQ2pA0YnBWFUvY1/1CIgaP16C1Fewdsdl1dUW326G04XxUhClTK3DNTO0rlrFiFQSGSFZYMa4Y\nSCmFqB2Npq7FCCvHJElG48CgNNv1lpxhnGaO/Ug/zWhr6KoG1zQY01CtdvjxzHg+o8KMd5qcxIZa\nW/l9US0EldAmU9WaZRgYDi88Pz6Qk2VZoJ89KgsDxYdFOuQ0Mp1n7r+7wxqDXwKuafFY5mFExwRY\njDIM5xmre0iJeZkljchpQs74fsIulq6rcesOlTLLsEDVYqsaVWe2t9c0TYWOMoUosjwgRnjqSmWM\nLfmnpeXQGpwzYCryoJlmT38YaTtN/W/J/fDz05ME0dY1eRjI2oJy5FlO+G3XiCRWaxFv6BpnDV1T\nc79bsXl+oh8nGguPj0+czyfIiaXvOCsNPjIqePf9ipvdNevtGlvoVss0Ms1n5nkgoVHKok2Fs5am\nrtltt/z4/XtiEjfB58dH/tf/5X/jL58fGPyR5+OZ9dORenXNH/74ge+//8j97TX9eYPWhud9z//+\nH/8j3x4eWO0+sfmfr8ka5pSZzwPBe3KE9x/es9leUbcrtK7RyqFyIKeZyimqpuKvX78xkbj78J5/\n+sMfWOYZZX/mMI68eXtP0zQsc+bzX/+F/nimaxwxKVqj2G2vOBgIwXMeRvp5YVoCOsK8LMzLgi2e\nJEobNtc1V1drDJqpj5zHme264+3bDaP3mBxJszxwlKi+zXZF19Q0VUteANuWEGWxEJXxvviraGFw\nKJMF4rHF8jNpSXhSiqwyIRU5vIRoFjzcQNKEvHCRw1wKeYqRy/+C4pVOmKOEL8dcpPpaloYoSSxK\nKbzCMrYUXlQmeVmOGkzp6sUtESXlMuu/5XIqcWoXmEVLuMirQIhE9sK+IRXjLhTY9LdO2ipMiY/T\n8aI15ZWfnpS8fygBz0ZJN0dGqViyRCGXIA9VAqyFwy4jgyr4e9SK5BRWGZzW6HKP5iGQRrBFxehq\nR1VZbNPRbTqwhvSsiDOQZ1Attop0rSf7yEIWJow1NLUR5ooy4n5ZWVxTURvLMow87/ec+57f//gd\nTdPiY+LQT6AiN6uG23fXbHZ3rHa3fPjwjsfPvzK8yOF9Oh0B+bys1ht0huH5wDCdQQVW24ZlnNk/\nvfD18yPNagVaZPLWgHUZay2NuxHWSZS/dVAOVa2pNyu6qpbpBZHkz8PI+O2h+PIETN0wn49MY49y\nME3gg2ZtO9bXW0xVE2dPe7XBNbVMTZWVEI3DmboVL6KUsuDi2qAUbG7Fi97phpC84PExYVzL1e6G\n2limzSKRidW/IT/yu+2auq7EBrLeUdU1aCXeCsvE6XRmnM5gMqaqqTtNVVfk4Nkfzjw/HHjaH1nm\nBaU1m82K4XQkL0Fohkvk+uMb2W43sh2/bHxzTkQvi8ZpkhHUWke7XuEqsZDNyeGcZdU6zJs7/sP/\n9D/y5t0bvn39hnOWN2/v+dN/9+/Ybjd0dU1YRsIyUlWK9x/vef/de4EDlOK0f2aeJs6HM4fDiYOB\ncfYchpEP7z/y3cff0baSvTWeTvzlLz/xl7/+wsN+z83djg/ff8cPP/7A7rojxRqtP7DZrllv1lJ8\nQmT/+MDz8zOtdTSrNV3bokNgt+mwytCPE7vrFcdzz8thoD8PHCtDte14eDmB1uyuN2Kxe5759dMz\nrlZUjQOVmaeRJWeiFQzPpIi2Dm0kOi1Ej9VONutKFbpgLsyNgMoWMPy/eHtZ/51dLFz6SgVkFYWT\nfPnA5Et3fYEQ8mtBRyFQAwmtJIg3BFnuxlgW2CALq6yICiIXWb9I762VQpgKdGOM/G6bAjl7mQp8\nICZKgLGYbOlcYKIsYh1ygcm5AMgS/KxIxeJU3oMuB4eJiVj2BCkFecBzxmQtHuZFKRtjLurRXIIo\nNGQl70GLr01WxWs9y3SRLuwelTBZdhIhJ4FslMK4AsUU64DoRT/xOiU4eY+rqzXGaaaho38wTJMi\n1YYcenKcyMEX0Y6W5Jy6YtOt2K23bLuGxhis0oSU6OqWqllRtyuUysQwswwDVWWwShG95Kv6eeHb\np5/w80zTdaRQvS51dUoil18887lnHI6kHAiTw1hHCJFpnOk2G7RWLMtEdgrtDNY6cBU5KUiKqtvQ\nrDc0qw3VpsVWJZmqxA6mFPDv3uDPJ/zYi46j07T1mo1zeAzGVtwUZoytHCmCqUSpbLQmG0nPCrcL\nTdWgJe0FrFgRoBQxB4igogi1rFE01mErS4gzYZ5QxdP+oiv416/fBiMvfMyUQdW1jIApknUW3wmr\naNoabST6ihRYZsRca4nkpFBZXO+ckbFkHEfCHDGmxtQrtrsdTePoz0cyEjOVYiT6meiDMDlm4R4L\nC8hTN2KIhXF0XUPTVDSN48cfPnJ3u2O/P+NDYLVZ8ePvfyCGwNwP7PcHDocT/TDibObmekNYbmRx\nEybCOOCUZDZOoyf4xHmcUbpme3VL03RMy8zT1y/89efPvJx62k3HH/7pB7774fd8/+MP1E4e0N3m\n4jIoqdq3Nxu22zUv6xXdZsNqvaGtLDZOXG06uk6S2lFXnIeRh8ezULuy4jzPPB16mXZax8vTnpfD\nwOPTnvs3a7h4ePtAiJEQoqQ3JfGtcLWToIW0SHeom1fmxUW4ZEQFJF9GU3Tows4oOs2sjRS8CyEj\npVJQ9OsSMKsSdVXGT4V+pfBdumVyFPvaGAnxwqYov7qwAlJKr/h5fmWX5PIzBQe60AQvNMVYOv8c\ncxH0UPzVU4FEgJxFP4B8f/HT5XL5KQsvHVQ57OT9UsK/Yw6yRE1gchKokcKg+Lt9AUYsBjS5dN7S\nBafkC74jVEWZFsq9yknsU2P4232zFlWi6uTeFR+XLCpRVcRHlbOYzRpb16SoiLoitz2LfiGqI2Ya\nqOsGbbXsT6yjdg6tNcMwEmaPM4YwDWRlBKoD2Uf1Pcs0oXOFnwLjMFLVAyTFPB6o6gZnHT5BygkV\nxZDMRxHx+KVnngYR7qiWqsh0tUGu3ifyOIOuUJUVzxsjzoRgqFdbVrtruu0W11aSsaqMLOytxjgF\nN9eMhxP9/oAez5gQQUtkoq6lXnRNTe0cxljxilFirqWN8O9BFutWSyg8OUpB1rpEuxUv8yBPhFWK\nyhi0hpg8IXqckRCPeMHT/tXrNynk/TgRg4zM3TrjlPBLTV1ztVtxc7vmZtfSj55p9KRh5LE/k5Xi\n5vqadr3iu+IP/fz0wjiPzEGiyna3DR9//zs+frhHRc9f/st/5c2H92zWW6yx+OmMnxZyUriqxqdE\nmEaOw0Td1LRdi1utiU4TnSLGGT/NOA0/fP9eHmCt8bMkbR8PJ779/BPfvj4zjCOmghRmrtcVK9ex\n7RwVDd+9vWFePPvjwLJElpeJx/WRm5cnLJnj8zP/8tef+PJ05vbNHX/60z/xH/6HP7G5ukfbjjwt\nzOMgJldLIGhFjJ5lPnKz69DpA912RY7yaHd1Q9RW4KOUkfPSEv9Yce4nHp8e+fT5V85ToKoUpz5y\nPDyz+IBRcDoc2HaW201LrS1+zvRjpGkqWezhaWpHY8CqxDSOxFihaFAuCZfZCHVPoBXxr8hI9FnM\n4tqotGzpYwzCULkcBEoXA6USt8bFCpaC5RYIBxHIpKhElZku/02WfKI2VBjjCCkQitLWKOloIZOi\n5wKYZ63EyW4umZYpkKNYShgE+w0XGChHdJKuP6qISqYoLYv6liKp14qUPDEnsbXVUsyj+AxATHJX\nSkcfcsIk8eF3hRkTAoTFExSgQvHUt6hsUVGT0ojS4FyFLt2gwuBTIKooNgYhoJOYZSkqcjKksiR1\nVY1qHEuUhXpekgh4DGin6NqazQ8fWd7fczzsaX5tOT3V+P74SsE7HQ5UGIZ+4dPXE8HP1E6xWVc0\nVlSQSp8gXjFMC0/7I2ERaGz/MtCfepyyMC+0qwa0JaKJ81RgtICfBrJWhUMf8FGmiGqzkr2XTWyv\nK/Iy43tPHCZstwJVw6UxSDIt1+stzWaLqStQlhiFDaUv2LU2OFehdjfY1YZ1HAQGROOsZV347Cll\nLEnCSYwr6T+abFTRMWTpuItSVAEhilbFGIe25RlRpaENgRgkJN7HSEyK4CWs4x/HSvxGhfzh8Yit\nHG3bkKmZSnccGVl3FatVxTAKJtW5hnAamc8T47IINrtqWNUOpxS13nKaHKdhJBpDu6poG4tVluAj\n8zjz+ZcvjDcLd7e3yCIKlJLusnItuXWcTxMKcRpL/QmVFvwkzBLhDmuOMQsFqmlK0K6YQi0eMX6q\nAlkFTvsz/enEsbKMS2CaF/bnnnffv6c9jnz+9RvWObrVmqaqeHx44vnpmcEHfv9P7/nw4Z7v3m/x\nc8/+RaFtx/Wq4XzoedkfGUMUPFvDeO4Fd0fc3sQHW2wzszYkZSTYIWmqRlN3jl1rqLvMagX3h5Fl\n8sQYOYwT5/NAP4yEFDgPM8fzxPXVDev1mpumwWgtfuWVo60rjIr4eeblNFCtO7pOOsDLklLoGrIg\nzDlddoO88hBzIqrpldctOaBKpjNT/g0x51cXFLlwy3PShfFSJoccBMPW4vkSvBfvcyt7EL3MaB9I\nPpK1IhoNzorIIiX5WQTJ6kyJ5MXMipwKhTKTdSpvW6iMyZelrS72toWCGIivsA6IvFuuQaOydOra\nXFSd+W8r1kIdlKBe4aobq4rznRaZerm/1lSihs2K6BMmJkxWaGuFKYR0/DGIdJ9iFZuVxpJRxoF2\noCAG8RChwGMX3xmVFHgR3mCESto2Hfdv3tBVFecXhzKaeRrxsxNhjrHsNlfkPOPDxKkfOUTBzl3l\nCEEYVtMSudlKuEnVVDJxZIm9Cz6Q+pGsF8IsvicxzJz3L9SVwxlH8qCyxtY13XrL0J8EpsuKcz8y\nnxb8HCF48I4UZSpr1y3X97fs7q7pNhtM6XZlu52L2rXAZ8pgXRKqqapfmw+tZVrRSuCQEBZ0Tigj\nBVo4SJcMWIoWojCbtEEZh85irieKqiiRf1H+vlrl4spYpP/Izsmqf0Phy8M00yrZNHs/i9KpdFla\nGTSGaUrClDAiO0b/zW5UG3AGTFQYDc4YalcRVJCAXxLzItzMppPOfhhm5qtI7SQl3KQoD7iGHDRu\nLqdgFJOrZfKERZOVlc7HSDbgZdkgKeiCzy5B7E9DiizLxDQKpXEPTHNgnhee9ic+XF2z3m64ngM3\ndzvev71l07W8nEYSUHcN79/dsu4c/fHIfB6o2i2r9Y46X7GERCrBCEppYlg47Y8kLwU8eY9rG7RW\nnI+RrHxJJpGutVsnrtsVzhm6VYPKG6zSvLyceXwe2J969sczwzCyLIFTP3EePf/0Y0Oz3mLrmuPh\ngFKKppW4N5UT8xgZveDILnhcbsRnuzAmXnM8U3pFMhSlYKsESHdOwZCFalEgFTKvIQ4X3L1ADfJ3\nEEnzBX4RaKSoLmMSn/OqQtsGC6KkncdXQY105On1IIkIPq+VKr7QZXEosD5J59dczxyRYNz8N346\nIUII+BzL06sKFlroO0gsGFHw62JTzuuOQImtgS0TQ75sP0tYNOWqExe4Spa0ceHViC4lmcoEYinU\nz6wKpTMLfp+DgDeFZZNiRAGmqtAKohYzroIjocjFNA2cdpj1hspoKqfIKTGOVclXUChTk01D8Bo/\nBOYAcUk4p9HAy6lnCanw2I2wW5zFz4FpnKQ4xwrjxYzqQkGd55FhOJOWiqAdOSD3kIroPdO4MA6e\ncUqMSyYoi2lrqnZFu17jbIt2DZvdjrt3N2yur6iqBlmiFkqpBuMsGqF4Aq9mZqp4ketiiKNyFJHO\nsqCWCRU9OYuaWJAThzYWUwLH0RJKcdlDQCpRhKW5KZAepHJdxbfowmZR5jX8+l+/fpNCXtUKaxPE\nmfMxsdps2NxsqWxDbQ0qQxwD4yiBufO80OzWrJ1htVpTW/EmHvvIw/6Aj5G22+BjJizSjT6fz1xf\nb3n/u+94eDygjcOnTGWLD4jRGKUJy8LiAxpYYiSryLquSNGzzJ6ULLZuqGpFU9U4I92SM+41YGCJ\ngX7sOR4PjOdzcdKD/fHMEhLTOPP4dEDpB65vb/j9P//Av//v/8C6ssz7A+7umrp1DGFi09V8/fTI\nLz9/Ybve8vHjRz5859gbS3t1xf3NjeCqy8Tz1yP7hxc0ipWrGfwkwgsMj48ncppZ/MS5n1iiZnMV\naVZb/GyIUVwiz8c9z497fv1y5Mvznn6ciUGWkOOSWIKhXR9p1juW5Pg//tP/RYqe6+stv/vxB6y2\n5AhV1bLEyLkfaNo12mlUGadBqHIhRaHw5UJ1C5fim6ks0hleYBR0OQBS6cPzqzFT/rvCqbVGK7Fl\nBQlqULowQLITXN5abNWQjCbpBGGCJKyW5P2rWjMX31ltNE5LMk1OllB8V5Jw68QitxR+saSVwm2R\nRKAUIiGm19qrTBD7FWvQVSOhzDHjU8YphVGGjEZr6Qt1luACnSXCTpKMAhWBoHWBQ+SAlHi4RDDC\nQg/aoFLG5IQ1mmQ1KZe8xxTL6C74v1IJraPco6wwSVFnCaEulmVy6GiJSfRlGanQZJWpVw3rzTvC\nIrYNm+sdfkmMIdH7yOHbkWHKZNWyaoo4b1Xz9dsz8+KpdGKaBiqjydZyOk0sY6Cuz3TbFauupW0a\nqsowzZ4wzkSfOA8jKg6YtGA3DSyRb58W+pPn3E+cxoCxLc2uZbNecfPmlqvrHavtFdubW5quwzhT\npkRk6lMCjRitMQUaEQtmWS5rXZbPCGHioghdloVpHNBBjPOm88ySFrTRdO0K6yqqpmG17qQhvGDi\nWczGxCuI12ZFvO/Fo16V0GXKgldcRfU/rKm/zbKzbTAkdFY469iuGjZrkdsvQy/Uw6Ylk/Aljqtu\naupGFHbDYSoBr9LtGG1BKeYlYPuJcLKj23YAACAASURBVDzz+XnP/qHj7v6Grrtm1a2pq0Y8rFEo\nLbJYYw1VbSDPJGXwYWLsPdM8MvsFRU2TDRHNuETcslD3I23Xg9KkHHj74Q2bqxWH52ceP30hTjNL\njKiuZVN3HPZnDseBSmmuVh3fvXvDbr1Fp8iUtUTBbVasVMdm1bDsRvy8pXYtsx94eH5ke7MTt7Ts\nmcaZ8bRn6PfcXDX0U2SYA/MS+Pr1QT5k3ss4isajadcbVpsOpROn44H+fOR4OvL49cDLYWCYPVdX\nO96/k4fn5XhkfzgyDBM///oFbQzfff+B7374/hXLfno+sV2vudpu6Nq2LKI9OgVsrrFZ8Pms5EOq\nUijLP41SDgk5Q7qYwqvOpXvMMcE8Fzgiv4Yjv37YdSgwgDA8tLKCp+vw2oU6LQ6HFmEhKaswBNJY\nE6MixUCKoTgm5ldIwZqMtYIlpxiIYRHkxRRXwxzlmkwm+ETIUkSzEpw7Fn+XVKYInWUisih08GWp\npiR+rgicXgVPxQkxpRJ2kSR9JiW5B5pLXJ14YiuAFKl0TSpdv/hna8iybFNGPFuUqgmLF/54CsSY\nMT5jci6dnkBSrqpxxqKMoR9mfAy0OGxtMSkTfZADuXSnrrXUXcU1G/ph5nAaiPsz95sr6vs7Nlcb\n5mXi69MzP33+Rn88C1OndkzLTNvWVKpm8AsRUc3iZ5S3ZG0JCfpx5tAP7I8n4hzRCVqrqCuhTdrs\nSNrRbTs2bxpWVzvWmw3rzZpu1Yqi0khQcsoZokAVlzFHvPKV/D3yxQCt2BpnqVXCTpI82JyS8PKj\ndN4ZwGiabU2j5H5WVYVxFcZWZC0maFmAePkClHFloS2vXP5bLslVOQcSEmwuPsXhH9bU3yYhSGma\nytI4g1aOpjHUlWJaFk77F6Zx4er+RrivWXyNKyvjZg6B/jRwPo/45DHW0TQtVS2czGkcef7yla+H\nI27VMk4T//yHK6qqoq7EVVABukQxKa0wVU2lLFlr1KzBL4SkWEJGq4AJHrwmJl+6I1ETyphk2Fxd\nsdms6eqaNC+kOIt51DSx6joRHBiL05rWWbarBp1Exdd2LetVhQ8LSwjUtaVrKtarBmsbIlZis0KQ\n8I0hcjoMnA5PjKejUM20ImTwIRG8FzP/9YpIwEaHqiqaekXtLOPpzOnlhf1+z/PxxMvLyBIz7arh\n9uaW3dUVXdPw8PyEc5pv356ZxomHhyfq2vHh3VvqWhae0yjUsVVXs1mvsf1I8ElcCGN6ta+VKphR\nUexVgVcMFihMDxnbU1YiGioeranQEGVBePl5seDKyDgqjMTi8i2qzpyymHYpjdUGW2LUiBbnKiAJ\nVOCLDWtMRAqXPENSWWT/KRZjpuJo+He0yIQIV2PZQKVSF7Iu3O2Cixsl1MSYQMUgfi9KQ05CW1SF\nC15gFaV55Yj7lAkFXtKo0sFrtLYCr2RQqRT3C+tG/w0yicVFUmvQEsVUDorltTjoGEkql4g5hVVW\nbG6zZlDifzPPC84ZjNbYyiBCVBEXGVvk+dbhmgXtKhSa0NasVi27my37ceSlH5m9iLGs0UIXjNL1\nmwuDxlpwlpASAYVHM8+BflwYpoUpQAgZpw1t05Fdja462tUOazuqpqPdbFhtN7TrFU3TFPqx+Nej\nKLsMyj0qBmvlngmxlWJuJov5C+SlVLFzKJ/rCzQnS07Zl2mn5dqMxhhbYDVT7nkp4uXQVsguKBXN\nhdbCmLkI3y7+9hlVzOny6wHwr1+/jbJzCax3G26uO/rRo20i5oVlWXh6eOb4chJmgxaZ75u7HYpA\nWjwxwrkf+fb4zMPzC+/e3vDunWbVbjjWmuPLkb98+8bnlyP1ekPWFR+/n0UtZTV+lA+1UZnZDyhj\nsFUtxdxptDMoP+PJLFmhkhcZePDEpMCJ4fswBlKIWFvT7VZ0qzXOGMbzkaaWcffx/95D277i+KKe\nS+SwcD7sWa87bu+v2K0Nx9OJrw8vGC0dbEKjXUtTr2jbljANHIY94zRw2PecTgfJXTSycU+It0xd\nV6zWa+5v7/HLKCKaCvw50B96nl+e6U9n9qczz8czPkVWm4637+549/Y9Xd2SY8aahCnue49Pe6Zz\nz5efPuGAN2/u2O223GwqYTN0FdfrlhbFMMz44LHRY4vs/NWMOyb5UGvISkIqksokFSS5PmVSMlgE\nMb4EUeQLrGtLVy48O+mSEhIQocX7O3qPXzw55mLrW2O1ke4rA0pSa2I0hQqWymQg+LIpdLyIErOt\nsqCS7xVmy4WT7skEjDyIqSyrlOQ4RnNZ7GbB8ZUhKk0O8bXgxstSOCnIFqVF86CsIiwStisc8lwO\nBo1kdxRL3GL6pLMqh4NBGTH+skb2DMlHYopoA1WlZelrZEGfX1WyQn27uH6qlNA5opLCKVhSYjid\nsUbTdA3r3YY4e4KPhAQGi1IOsHTbmmrdsV6v6A9HFBGFhEHUleN6u2GqrPysykJCmjlXY7QVY6ym\nIoYB4yqoGjGdmmYx2KvXGJtEvHd3h7aa1WbDuw8fWW2vqLsVpnbls1NsyS7CsVTUvaUDFsLCZcks\nUB4URkyhscYkuZtaK3K6UGpFzZpVJhYaqbbSNOhKHB2NNqhsCAXOSlDEXKCMgaSKQdqMDwGlhCFj\nrRU6rSrPDIqMee3Q/39o5L9NIf+vf/6ZGN5gzRvQDTlI5Nq3T3uGw8Qyer497Qk5kZXi88NzUUVZ\nwfKU5fbNNfdvr4jes98f+PTtiXM/k2LGoRhmj11D1TZUlSbMPS/TgakfWBbprK2zWOeo6prNlQS3\nGtXg8ejKUSXxMb8UgcooYvDMQN10KA3WOCyBsAhuu7665uHzZ16e9vjhTFh1tE3F99+94+7+ntvb\nHUYp+tOZeZ4YxpqXbwuH/ZGnpyPWwKEfGH1m9+6aD2/f0VWOX/7lz8zjEb9MnE4jf/3lKy+nnqvr\na3bXW1arhtubBo2iqaTTqCqNjoppnOjPE+M8g7UkWxGVjKx11dA4h/Ker58+YbXFGYMyiqtty/bq\ne+5ergnLjCaikufw8sLUD2LWRKJtKt6+uWU6L4Sg2L77iHYVpq5QQaML7av0vAI1ZPEXiaX7FdRE\nuvCI0PNySblJSR6sPPtS4K3sjZQcCDF4SBFCJnmBFCSl3gq1S7acLNPIPJzx8ySKSW3QzlKEpUIN\nVLkESJQONhrxO1eC3OfiyfLazZJKB1xJ0Sr+4EoqvmDTl6E9ZxnbL1a7+aJSlS4s5UDKFoOVcZpY\nuO/CStJoUhAhFWSyLsfaBYsv00lUuuD6XtgqMoIWkyvBZ41U/tcwYHXB+9HMS0QnMY1LwUMuBmUR\n/LRwPp5oXY2zTjjwIbFkTzYJHeVarbLsbnYyPYXAblNT/b7h7Zs7vnx5IPqFysp+4Hp3xXq9Zr8/\n8/K0J0RP6wy22lJ3lnZ7Rdd1UpadpaobVqs119c7MTSra7rVBmslSF3uSXGSLHqBXOAtozXGlGtW\n6vXLGM2yLMzzgrW2/L9RuvACc128d7RS6BREyJM8JM8lQpDgCkwnOoKk8uv06RcJ7PBF0JRDlH2G\nNVRNje5aUjSoAp1pBdYI2SL4UCbNf0M2tssSeXo+U1UNbz9uaVdbdEz4KbHMnmlZmI598bVQnIeF\nu/qWuqrJPpbNuKFrG/pzT5gWxikwzgJhNOuOrQ8CJYwj89hz2ifm/sw4zqQsAqGmvshdFdM4ULcd\n1lVC99EaVzWQHaZ4azsFSyh4FQBZXNXmoXgma1brFZWtqG3Dum4lM9I4rq4dt2+u6ZqGaZx5en4m\nK6jbmlZHwrywTAtjWDgNE1472rUkeB/2Rw6HF+LUs8wj3x4O/PrlkX0/kYwpYQ2ZtnWFMqVwlcb7\nxOI9/TCTc8Y6C0bx9mpDvVnjlSHFBa00wSfIMxiPdharLU3jaLuWyhmmcWTuRw6nSToxN6NSYp4m\n2eInT3+cSMmh11uqpsFVIvzSyMiYkQAEGTNLx1q65Jzzq9OhZHwKM0hoe6HwzEOhbkk3rcrfIKcg\nYoogzoRKlWW2E0xUFc79PI5Mw4D3U5HkF1aNkgWTQBvIoaL+xlxJUb0ad+VSfC+iJ60LTQ8JnZAW\n7cJUCYVvINi3UlLIVRbfFrk3vI70FHaPLHMlL5SSoFQsu6RApTLlFFaxWPtGeQ8xA1a8vEsIgb6I\nq+R2oZSoO5Uu/GXrpDMuXukpIV7FJUtU5YjVGlMOn7h4ojbYylC5CrxMU56EihSfcUvdtfL984Ih\n060Vu12iqSrC4rFGYSvDatVhrGOKmf04cu4naBu0rVlvd7QoKmtwTtwp67qmbhpxTS3FWxv7Kq4i\nCUz0aoHMZSle2FB/J6q5wCMhZLz3hLC8UkVjjFK8S96s0aJAVVmJEjfLF4VWKp/F8hm8TJKXGTJn\nvA+lkBf//Xyxayj7kCj3WumETrZ8viRly2pFTIp/XMZ/o0J+f3fDcB756Zdn7n/8Z67f3tIAf/3P\nfyEpxRgCLJpNW1NZS0iaD2/ecH9/w3Ie+PXrM+d+JnjJKWzaFc3mGv1ypLaG97dXXG9WHIeJhy9f\neH58Rzi39Psz52lhc7Xh9u6alERNNpxHwtdvNOsN6+2WVetwrsbZmqwUbd3QOItJnmEcmL0nxIXk\nPXM/0D+/8PR8oF13/Onf/5Hrqy3L2/cSKaUNAdAu0a1rSImXlyO//PSZxXu6dcfdVct23XJ1teJw\nSLLgyomu1nz+/As///kXuirRKCn4n78+sz+NLEq63KHvISbmqw3rqqKtNW1r6YeF/Xng1C/cbras\nrGaKM7//ww8Mo8fWHZ8/fWKZR0LS7LqapjIYq8g2oVUghYnaKcIEg0+Mk6eqNNX/w9ybdMl1ZVl6\n3+1eZ2beoyPBIBkRGZmrVFVZ0v+faWkkDbSWlJWpUgSjI0EQgMPdzex1t9Xg3OfMkkJjhq/FASMA\nwuFmdt+5++z9bQdaFdYg2v7lOPB4nIhJc3E60g87mqYX3VA7sU4VKFa82Llq6AowytQgjxzaqkoh\nGoFO5eTJyaOyFDmLl1vcL+VZeknEmMmq4IzBNg7rGoy1oEutLJtY5omYQ42362fudikVapjrdbyI\nAyaTiWrT5FV9uMhuBBCbpRKJ5HkhphRYjUoKHWvKEDk4SVUKQZGNxZZagKGllCNTUDGQfRCdvzGV\nbii7AzIV57sd5nIQpRjl1xgDLlI3C2grDfOm3jI2/oqm3jyMfk6Cyp8iQ4yp0oz3AYOSwmEQ65wy\nhBhQTnMYBtIiTp2UN0VZDj1MU1G8BlNkf6FJvHn9Um7W2tANYKwmZpEpplWohbZr2V9fc/f6NShD\nP/S0XSs44vrAR4Ex4vnWUI0RcrtTlVCpaiH1NkmvwT/LZdTX+RmDUB/SKclCOFZHkzYOZx3KbRiK\nKr0UWZKrIg4tCaZtILVEVmHLe4lVte5XGutwQ4vShoT46ynifjK5oEokx/jMpTcGrGvltf570si/\nfvuGZQ5oa9l1LQZxQO0ueoarAxMJnOL+eGZdPW3fc/P4QNs7OuPYX+xxbYcu9Y2u5Gm1O+xoLPSm\nMJ2OrMvCmjPL6Nk3O9phj24L1zcX3NxccDqeUTZhemhMQ8rw+PmJRzL73Y7D5YHd5QHXO5y15CUS\nU5Ey1PFI9p64eJYQ0VYTw8L33/2BZfL4MMsBkjPd0HN3e4E1isfjifv7z+SS2e1abq8Gbq4u6VsL\nKuIaxWHfkZVlevzM46cnpinw6u6G8emRT8cF5Tpeve7ZXx749jdfolOm63q++Pob4jQTlpnjcebj\nxzPnaabtLENnhW+THTlHuq7ht7/9ljev7ljmCb8s+NOZHGMl+8H5ceE0PqIUpFDIEW4udvSdxRnF\nNI6iGyLX1YvdQMpGdhkhPF9NRT6QQ/b5sNzqzpRCGWq4Z1sgZTISUsrVtZQzz5Vv4qMu5BgoOdRl\ncHlOIkqq0wjvwhi5Jsc6OdWJO9dgDQqRX7RFpVpw/GwrlOt1Lgldth2H5AUEZ14XX8ihkXx8birS\nRtxIpVIMJYug2ZqDZHGlkEYhYaioWjVYfJClALAVVavaBapzqbKRYE9LDTNtPuiS6hJZ1+Wblu/D\nOYfWlhADwS9S3rE1HJWKwbESdjFOMLSmKNRqUbqIEaAUSZQq5LAvkMJK0zhU48gxs4ZIypGwZpRR\nsiBFULzGKIamgbYTKSIVop/QxdK2LS/uei6vXpDR9N3A1c0Nh8sLYPNui5ZPnZJthbeB9LfmvFks\n66RrNMbIBK+NHJah8ndKlZhSlCk5hiibF60qdiKicxIZRdWyEyUW1a25aHNcSedr/JkWVBIQyTkI\nPqFs71klSWbjJLSljXzWlK16vpXbZclVoiukmPAho5YqraS/I2nl619/K+K+dRwuB9HdxhFfMtcv\nLhmuenJOsuxBc3t7TesMMXjGkOTFIKO1JkZxO2hlaJuGxlIXlBBTJoRIiFkeGkPDmgpN16EwwuNA\nYRvHxWHPsgTGcZa26hBIPjCfz6TVc1aakgLHh0eOT0+cl5G8BpRStEOP6SyqZE6nkWn2kpAcZ4K2\ndPue3dDy+dMDj58emKYJSsZohXGWfjfQtpYYPa5b6YssOFSOOJ1pnWJdJZyTdMPXv76j73t2+4Gr\n2wtOTycUis4URkT77YaBYb/INa+sxBxpjKPvW5Z5xZjCoba4rMvK+XTipDTrPBGjl0lGWYxyGKMw\nFHBwcegxWhG8JxUl11yliDGLvx5FWGaC93VLvwV5ZHLdapFTFseG0lKyW+qhWMi14rN6BmJma2cv\nRjb4GzucagGL1aUikopA0IwVfbyQyTEQvZeDHpEachZ/9iYuq20JW7X6TTMHjSmuTuNFwim51MlP\nDm1xNGy/d1vGiiYrTyl538sHfnPzKMiRrGyduKurJwnbZssixJikIUgbmT5rrkSbQgwLKURIUbDv\nWmNNtdaVIg+O+r9rK7mJnBQJXVuY/l3YRMshpm0jiztTQFsab6UfVcnBbepSUKyQBVL42XGhC53T\nxCx4aLEpin/+uZovJmynKz5BE0PBuoa2GxjaVmQ952g78WArbaqcJA90qG4PFKl69UvJxBhlcVvD\nYChhlDdVekEpYnWplVSIMcqOJor9NEax9RVdqz5KeebkbP+ec5RaQV3T4UhNXJYFkLzM9SFAkdqQ\n8hxQE3lRa4u1ksiV1iolB7vaAHQS7Iup4pErrrikRImyOP1bX7/MQf67f+Riv2PXtazjme9+/x1/\n+uMPHMeJVy+uuLrY4aeFnDXn2fPtN29oG0MIkc/HE5MXXfei73g6nskZ+n4nT1cjRQC5SDljSpms\nFe3QcHXYcZrlCjpNHr+Ktcw0iv2hoWkMWhWCh9ZZipdF6nOxsDNMD594enjg4TyTQmbYD3z57Rv2\nQ49BsZ4953nk89PE48MJdxi4rCGRjz984PPnJykRyEK+W3PGtA7btiRt0O2KjhKNbq3j6qLD+5nP\n95+YvWZ/fcc//+ffcRh6Ss4cpxMPPjCNZ9oyMQVFf3HD269+S9ft+PTjj/z07i+cF6HA3QyWp4cJ\npVYOB9j1O3TXEn2kHDxKRaZJCgcOFzsOF3uMsfjVE4LncLDM48roEzEr9vs9zhnmeaLPilZZ1mkk\n+rUiZkXLFQklEUuqkCfqhKmrpSs/65loKEnXKjfx7IoFq3qus0yeVFkl1gPaGtn8N42QNZUWP71f\nFuK6kqsH16gtaVoIQfRfVG0xqpq9QI8UJgl+tyhhWm8BnVI2Skn9wFN/P5WiWJvsS+2EJIrmnRTo\nWlWndCQZRdZGtFGfIET5uRUpfg4h4tBYraU5xmopqNCFFGf8GuS/SxHEcE3b6gK2CMSpVFBY0SLH\nqKLQ1IRgtW1KYEkOGqVB64yyGtfK4k9FMFWUSaq2FhVZMMdaz6dNvfUhaec1plrdJz/PlBKT93Sq\n0A4G27bYtpHXrOtw/Q5RgTOm6kg5IXH9Ig3ySotEt7FXVNWXc85VL5ebC2SsFY85CHBv9R5jFDkV\n/OqRrs+tT1bzvLRR8gDWasN5yN+3RE/MGoyhcY7tUrVJX9TD/rm4xDTy3zCmLi0lmamUIdY/V1ee\ni9A3xT8ekzR8Kb0FkxQKL9bc/x/byi9ykL/98o2QBq1l3Q10H+7Btfg8EpJCacf+ouO3v1acx5GU\nAvMpEII4F6zaSn21LBOdkZbsVgD5JSXacRFWBdA1VmiGuwFfPCA/vJvW8vTwkaeHT/zh8QFr5U3l\njGY6H1lmz+QXTCnEEHg4nplOR87nkad5ZddqKAvv/lz4+ptX9K1jPh7JawA0uJYXdy+5OlwQpoRf\nM0tIeCWLWKFYJooOhKxlkh8XwhJQqfDjXz8wrYHJR3aXt/zq7pbr22v6znEen5imkRB8LVhWPJ48\nVy/f8PLtW25f3KBRrN7zNB45jiPTT08cPz6Btgy7HUPXMetJJpdWc/9h5OHxkcXPvHn9Etc4Qoz4\nZSWHmTCu3M+JafUsPtPvOkoGv3hUFNtawUvoal0J60poF9nCK1V13W3ZKcOq0ojuWCP3WltxdlS3\nYK6TvAy34qYxWvjkKSVCTMKYsQZjHa6T6i9V4VfLPLOcJwlpBemvhFqZlsUrnnSdMk09yCmkknGV\nt2GNcE5KNJhUG4i0pHr1tuCqh+/zgi3zPK3lIkGOkpLQHyuSVDkrN5EUZMaMUYBJueZZa++p2Czr\n9T0pQqyl2vMqD2CKFFmnRPAi0yQCsVR8bSqsa0RnAS8pJaGbkiUhaq2p3vdI1otYHVMmjgG/eFLM\nGCtsELaezJwJMZGWiNUOZxuMc0BG2QatLV1jSakQfSQbkW5s61gXIYBaF+i6TpbtKaHTSphXwuIx\nzVmm9k13VuLusK4RNV8Z8W7Ly8VmJS1pc5sUQq57DCWESFVvjtFHkg/bb6x6udwcU6lS2+ZOqZKT\nthJuiykRojT6CAdHSsrrsxtV9x0ocE1DiCL5hJTE2lqomYkiIDmtibE2NWmRBJu2kwV0XYaqAsX8\nzMf/W1+/yEHeNdJQgwLbWLpBGnKWZSUUhWl37IYB46Rw9v7TIzGI33bfd0QKygpfxVpxAshySiaV\nGAPaQddZhuxIfuZ8fEDlFe8Txg4YrdA6o0sgLjOnecHYhq7raRuRH87nkfM4ynU3Ro7jxPF45Hie\nOM2e5q6HANMjfPxRJsLTx5FsWrRtuX2z59Xrl/TOshyPaGvo9z19q4nB43PifJ44nWb2uxbX7miG\nRMoj2XtM29GaBppE27VcXF5wcdizThNPjyceHh9Y10C3u+LV1Utaq7n78gvuXr9it9vhp0A/9Bjr\nsNqQayu8tg6VMvPTkUnLoRFD4fHhyPk84/PK43GUZhMDpQSJjxslD6IoV1xnTQVQwcWuxeYoyNs1\nEJeFdZ5wfSuSgJJItFbiGxRXwcZeqQGIop9DFzLHbwuoqqXXsmPYXAXi5S+VqWKchDDEWoa0kc8r\n6zyTQhRXQg6ynNwAF1lY2SgBxwL1ICsUI04lzRbcEQmBrWjCiByRQiJmkYxyjV5v2n7KVRPfvPRV\nCjBKfMSqtgypmEUXz0WcDkW+F5NBZ7muh1BJkLnU247owan8zFMhUwsmJPCUY5BFaCmovGK0NPi4\npmqyuBrCCmgdUAVCXXSm4IlrgFxwjUgKW8BFkCClOryqpVRJ9F8rjXJOglT1sKSmXUMxiDMvkeNS\n2SLim9TI7iIrTVwCKC/vh3rYmmgoqdSou4RqZM0i3v2ck4SwvJfX01oyMhxsqeEYvPw86m5Ale1B\nLBq5EeA7VMx2qVIgRR7qxhl0ztV1Isx7Ra4gLXFLxWj+nQ6PPJhLqoetrs4qhTGl6vZr/b3mecI3\nRj87WpTS5GTIJqLz3xFrJa3SMl+MfDC71nHY9fh1JYQCrmd/fYexsC4LVo9E7bHOcnU4sISFrAtN\n1zAUy7J4Tseplu4m1nmi6EQ7OA66MB0feP/9ykNnsdrQD9cM+xusCSzjGb/O+HUlL55lXrGux/uV\ncTrz8PmRsKyUekU8ns88nkbGNfHyylCSJfnMX/84EgKEKbO/vePuiwu+/PYLXlxfERfP8SnRHRqa\ng8PtWj7cP4h1clwZj4FhMOyurjC7HdjPLOczN1/cUFJhmhbWVYoH1nnl/DhyfDhzf3/i6bzwn/+n\nX/Ob3/2Otm3YXxwYdj3W1go568gxMbQOt5MAT84aP82cPz0whYlxDUxrIq6y2CsKfvzpXl6Xfceu\nN9jW0mpDmBQtCnKq7gtoG83bq46SIsdx5exn1nVims64fYd1BadEZ9ZG1QVVtSBuYM5SL+5ZnDhJ\nVz92lg9VKZXboiCX8EwopB5iVmucMbWsWB7scfH4ecWvXnjqKUjSkfRc3WaVkXShUmS1/fcrSMto\n6XegPC8H0epZF5fWng0vkEHL5L0dnrHaIZ8PA6qkgxxOmixgr7rcEp1Vga03/FLr5LabQ5LUqQwh\n9boPxFIwMrQ+c8Sx8rPOWfTfFAKqBLHR1oQnRrAEMRt0zGiCHL7KybW+yA1BlSK2xk7KRDBC01TZ\nSoiLLBydHChJY41IOz5I2411Fl05SCEHAa5RSCGxpqW+hgWTCnrocX3DMs2ksFJypFixkOYi+y/T\nitPHVEpHMSJBxCTgu7QsFK2xuYFKj1T1weklCYWxBpI8IHNKxBDrYSpH4jPJUkEKCpP1swXSGE0K\niRDkewxrom0d1kmoiyKL6BRjXXYKzXGT7SSXJKCyWDw5xPrZMBSVcY1ITRpELrKGqJQUZum/o4lc\n25ZCghxQuXB3aIhvbvjw4o6PHx/QzQ/8p//yP6DLHZc3L3HtX7m//0gIK93Qs55F41pr3L7kTKMB\n7wkxsk6erAs5RNLq+fjhkWlcaBrH+Wmk63/i8upA3xuOxyMf7+8ZzwsZg3Mth/7AcZ54Op9Y5pHz\neWZZAlAXR0bT9x2fjpHH06leN6GxDfvugsOh5+ay47IzjEf5s1cfuLy9YZom7u8f2A8Hbi5vGFrH\nr7/+ioziOJ/YHw6ow4FzEcB/d8u1ZAAAIABJREFUTlEYJTHhx4njuvD44ZEwLTTa4Jzj+uaWL9++\npe/ayjmWRdvh8sCw2zOePX0P1snUmhNSfrt6/vjjJx5OZ1IuvLy55LDvaNqOVDQ+Bs7LimsONM7S\ndkowBMkT1pVx9pQc6Iyi7zTnKTOFwJwT0zQRTyf2VxeYoskGsrPEIhpt2TzPicqEqanIWuumc/2Q\nVsaIrUULihoSTUUKRpSldYIUddZgrUaRpWj3eMTPkxysAsOV6TcXShQAVCo8W99SkMNwI+gqp6G2\n39jaGpRyokSZFJNy5M0prAsqiYYsa0ARn/Wzv7jeLlSNzytF8RVileUhoNnShQVBN5nnBCipJl21\nOGGCys+oX6VUtTVKYXOmCHfGQY6aVCSeLkXPslQLKEwDykFS0iZfQpRFt41oa2ubEFAKq19JeCxR\n2uZNpfhlKXguQEwFrROqRJxOtEaxhsTqF4wqGGNonIVQi7CVhgRxXliSJwdPrxK279Els3qPXxf5\nbHUNtpNlqNy4hFgoiGJJSvp1JcUoNzskmyBFzfWmlwTbkEuu+IQkh3mRGjiFMH6C96LHo4SLg0DO\n1pKJdTIvuWCNwfa9WGRjZD5NrIuXh6bSNF0PTnzgzpgqvclD2i++Asi23QPgV7QFQ33Aal0XpHWB\nb4TG+be+fhke+f0DQ+/oW6HwkQJWFTprmM8TH376yMPjZ+5u77h5/QbX7DHfWR4/f0Q5WVxiFHH1\nz4knrTMKkUCCDxJzjpFpmXk8jVjn6NqG8TShFXSthGOmZWacZvkgWEfTtJxbSf4tYeU0TjydZubZ\no1DsdwOHoefico8zltYYOmcZ5xVjHLdXdxz2O5xS+HFiWQIpFYa+oe9byJGj1hyGjt0gXHVLYA2J\n5BfOj5lxWpmXFYcUIXgf0MUQgsevmfM8sywLMSY651jniWk8c3N7LXJDTliryUbjGgE0tZ3FtZqc\nIzHCGiJTiKAsbdOhtIgZ4d9R1oxB6visbNqNNewbxzKOos8uK3trOAwNPgQexpWPp5lPp5W2NHQH\nL6UJSrCpWosHXCGWw42CWPI2qSaZVLeWnlqfRnUhlBQpubof8uZ/keuutdIAo7UEK/y6sCwLi1+I\nMVQPt0xZqkhbUwyBlAM5KyKFoAsGhUMg/7EkYpKrrbVRhvFUIAc0Gq3E9oZBFo2bO8EYdBEiY1ZC\nRPyZLVOeF91E/2xfFOKdQZcaz1aKYjTJZOFcy0daQnK6VGNyrjJv3RJXwViVUoNGgC4ViVBDR0V8\n8CkUiopyHjtVd3XVo52iHGTKUqrMEnOABEQF3mEaKzJWK0lasXfkn22PClzlteQcMIbKH9HV3qFq\nbZkcqsknQjpTNLRZtP60pR+VIi2ekDfujsG62gpVbawpyx6r5IRRur4zSn3wy60vp42TU55thBL4\n2Ra/8rAlFumWNbqy9eu3nCEu4kghy2BkjRKcbYiylK2SmrDVIa25OmlkYneNo20bkqndnZsjJcuv\nt6ZWD9rtBZTXQ5qLNnvu//frFyqWuOfl7SW79kDOgqldl1VSdTlxfnriX//rv/APv/sn3nzxli++\n+RXnp3um8yNLmmk6i7MaXxJj8JKuMlvKTTblBk2KkcV7Ph9nSoHWOVJMhNWLROE9CcF9HvqBfhDb\n1Dgu9H2H0orVZ2JWKONw2tC2LfvdwN2La64vLrnaDRxax/tPT8SsuL25wynxu54fTsQMXddyebGj\nkAiN5mLXMbSG3oIrgc8f3pO1oSjHp88nxkVcMoaOEAMxRoa+ky7KkMjWEIr4mYeh4+n+I+/++mde\nvn5B07iKMkiE5EnZi/vCyVXcL54QFN4H1py5vLzg+vqA1omnpzPjsqCD3Dr2O/m7OqUpdSnYdh0p\nJEoZUSEzDC27vuE0Lnx4nHn/MPP5tHBreiEYFrGJ5ZIwOlGsTEe6iH2LOs1RrYeRiKEeytv/r2Rq\nJNYPZLX5lWcfevffIUJjDKzLKn/H6Ik50OBkEZYKSmdiSvgQiHklJ0VEplynZBJFawkYxSpnWLX1\nYwAFUxKmRHxIKCeVbEbJcg7j0MWQqbeplLazC1WkMi/FRMlrtbbVicwAFV9bGkAjeNWK/n3efCF6\n+rO0RLU/KnHgm/rrBWeA2BCtEfjWRlvMiRIDmCTN7NaQshzywsIulcdtnlOSgjLPZB8YdMG1YFtp\nGioYipbwjLINyljJXmjBMGhTq/N03ZNsad6aAQkxs04jSwh08wxFFtaSyFQQxGYqNEyLKhpnBM8r\nh3iSWLxCbqTw/PcvdRLeOlGBukGkWil1zTVImtWUgtFKpCsJMAhQrJoexFqbJelpZB9Bfdi6ppHS\nkhjxUeL4uRTQK7tdR+cMnbUoJ8vsjMIvKykGVEk4Z0WKMtXjnwPBR1TQPw8Cf+Prl7Effv01u75l\naC2l9JAVu6vIr74NPM6BP/3wnv/lf/7fePf9Pf/hP/wj//w//keexiOfjyfG6cxhv4OUebp/Yg0r\naGjbhuC9/KWVEshOzAy7Azc3d4QQGccFreDpNDKugVQKbdNweRh4cX3JfuihwA8/feLDp8+EnEFp\nbq5vuLw4sBs6SEEsYLbl8vqWy/1AHkecc/LGNxrrHIZCCl5Iu9bQNIbT0xG/TCitWNYok3b0TNNM\nO/TsLi/ou4ama0BD1xliagk+UlJmWVaMMfz6n37D0/1njvcPUBI6Lpw/feC7f/sXbl7coI3m4dM9\nJRd++OuPvH//icfPma7TdF3DMEi5hHEWq6VJJqVSJwADRRGDIayKWQfuTyPnOaAby8V/+Qe+/PoN\n37x9wff/8m+MpzP3n0eSdkxrZlojWWmWXBh9Yg5JlpAqE0sSiURpErleXwts2Kq6+CrVeif9wwWj\nDIpag8W2jJQFnjG2atUGZRU5Jfy6si4LOcYKTMr45CmRuhCTppyt8SbngspgikbbamdL+dmiuAWO\njBFqX6H6u0MkpISODlsUSqd/R9GroCvkUNgWkckLPjbmAkWTS6pFFRpdEtoKv6eqIygllM6iCkYp\nko+VKe4pOcnwU3HM1Y0u7JiiIYvTRClQRm4bpQixUecsnZ+bjGXlJtQYK9KMMmjVYLQRCcvoCn6S\n35tDIKtMbgraSt+l1hrXNLR9i+tbCorlNDGus2AjrMU5Ld+LBWs12mlSgGlZ+OHdJ2Jc6bqGV69f\ncrE/0LetANw6J061pMlLxKeF0rvqbJLbhNYifWal61Su6wNf3jcbtlasroJkkJBPkn1FiVBi7UzV\nKKQ0vFSXjOxIpG8zVhtqivVjQ80naCgYVGPodpqdFdB+iYm0epFfplUW3tbR9L3o8krKpyNZ2EEz\nkjtIwrKR5KkC/o6klf3lHqu1gIhiwjQtFzeXuMay1hLm//qH7/jT7//AfDry+fM9j/ePrPPM0Is9\nMMbAuk6c5xVjLW3TEGORoc1IY/b+6or97TWEwDIvzPNCY+DzY4tzmsI1L+8u+fL1HVeHgc4Z4uq5\n3jf86d09n8eVq7sbvnr7Ja9f3NE6zTpNTMvMkiK7oePi4kCwjtz2pAqhcro8dzP2rXh/T+eJp/MM\nynL38o5mGDgfT3x6/56YFE1dHOqc8N7jUySnVg6uKgnEIP2Lfh4xKTI4od0ZVfDnE5++/ytP9x+Z\nl5V3P/7Ei5c3pJC4uz4wzxMxFjINCakD2+/3lCh8iZQSfdexN5quacTRUHVE1zgORvz28zhxtoou\nRcbzxMNxYkkFux9Ys/h8Ly92fPXNW7786kv2hx0hVHeKeh5pKbke1FrenGU7+upVNlcqoNGqllGU\naukT8NO6RqwxtFZKbyX8A+s8MY9n1vlMCquUXaYkzPCa1Iyx2v0oNcJN1eFFP84kOexKjbJTAzZZ\njsoYkyRXKz/bAHgjIC9rKlY3V2xAqglQkUK0smQlclOurgS9GTvgGfTUZETTRsoFIrLULFkO8Fx+\nrv+SQE59COaNK2IqyVEShQk5zEt1b6hUD4UsyUSllfjTlRHbrrE404irJxoSoVpBq68+Z3KEqAtO\nZ7RFUM2N8G2K1vgl4leJugsNUIkbRydsUmC1aNwKusZxfXvJ49OZ07Tw9Ifv6RvLfmgYdi2Hi4H9\nbkfX9DRabjE5bjZN+b6ljUcY5oJvkBuEqkb551i+KlWOLc/yi6r/O1p2bj9vOrY6PgD9XB0I1Oz9\n5j2X/1IsIuqoXJEBSgBl2ij5udTfIzbJQCjQX+2AQkjS6JVjIXgZSGIM9fa2HeJ/Rwe5qd7DVBIh\nyGJld7lnuOhQVlFU5v2nD3z68JHHT5/46/c/cnVxwd3tNZeHG/oG5rQCckVVKHTJhFoaYTuDdo4X\nL+744tuv+Pz+J5bWcn3Z0xlhmLSN4eJi4Nuv3/DNV69pW4fOgfU8cbtrZTFzP/LqV2/5x9/9li9f\nv6REzzzOfH545Icff8SUmuprWi76Paqm31KcSLHgtGY49MQQeHw4cRwDF1dXvHz9BYfLC96//4lP\nHz/TuYaub2mMoaSVOM/My0qqullJ8mYolQfx9PEnzBoxGcyuo+SMX2ZOD5HxB8+nhyN/ff8Tv/vH\nr7m9ueTVyys+fdaEmDGuRTtH02n6tmd8GllWWai0LtO3jv2up2kHztPC49PI5WFP11q0SUzjEz8+\nPFLGmffv7zmugaANnVGEUuj7npuba/7xd9/w9ldv8ZPn6VEKp9Xm3CjIG1OpmqLcDnKZlKh8v1Tk\nLaqLxtQtkSw6M35N2L6lcT3WSXw+pcQ0npnPR9bpLM6oGMWDDcDP7HGALbonwUq5yvosC9Cgoam8\naq0qLxpQuZBWQS6HFMCA02KNU0hKVW1Wu5gIvl6ti7RQNa4DFcWJEjMkI3LDNjqjCTmL3Jxy9Y8L\nyS+Ra++mIHMFx2ywGoquem9d0Nm6+KVSA3TJ1D2yaLZKV+cOUuRSA1BUTrhzDU3rSCsyLZqeFOXX\nG6UpSh6OKiqMEWulqdyWXDLBB8bjzDzOorkXyJX8iCqUKOzxaixh3zXsvnrNcBj54d0nvvv9nwh+\nxNrC4TBwdbXj+vrA1eUVNxfX7HcHmtxKp6U2KOfQ1EWoc5RYk8L5ZwxxodTpWd4HSpU6iUsADySJ\nWUv70LUejyrZZGTit85ijak8lLhl8KsEJb8wp0wIHmUCxmhaJ8gI21hImayzJDV9oGQvjWR+Ejui\nLyxzYl0mQvDklKQ4Rf2dHeR+XmlauWbpzpKDTJurD7jW8uLlFd9++wXrsjBNK2+/esPbN3fcXOxp\nrJZDe3WYpufVywFDpoSVeVzRvePmeiBMiegnnt69Yz6diNmjbGaKmRAWGpV5edkyNAofFqAIotZ7\nioGLy567el1rnaXvWuYx0bQ9fR9otOXD+3vevfvEcZr46puveXF3S28spyXiw4pScJqkG3HXDiwm\n4ZTDAmE64Uzk9ZsrhrqJB9Hxh8ueUKAoy+konvHT6cz1xYGbyx1OrxzHI8fHM/Hcgmlp+56LzqI7\ny+5y4GW6YR4n3o0z6xpRVkpy47Lw9tevub7ckfzKTz/c49ce2yjGccJ7Dzrz5VfXTGPAWUvf92K5\nSonVex4/nTj+9MDDOXBMmZlEPi/cHnZ88fKKly/v6Bz45QxJV3ud6I25JgtVhgpZIetqeysyEeUs\nPYZUfVTVnAClygq50DaG/aHncLtHm0LKkXWZWaaZZZ5Y1hmCSFKlSCN6zPLv4s2V20EqwjHPSQoP\nUvWUFwUqybSVSsbVQ31D6oaU8CljtSblTMhe3DYxkYtiCVl2CTFTSpSZWCmiiSitaK3FWkcJossq\nnbFGSOyhFHENJYXBiw855/p3iaKj2+p3UIpcROO1WtE4KwdG1+KajjBGcvHPOIKtbakxTlregYTB\nFI3K8nfRVWETV5E8CJ1qZWIHrC4SOCLJZ7HW3GUFYQ3488KyyMMupSg/NzKU9PMitjhy1uRFiJjW\nKWwDr14duLnteHU98ONPn3j/8RMfHh75w5/fE1ZB3377qzf85pu3fPvVW6zpsa7H9h1hO2CyxPON\ndbjGVWZJrLudTSfXdTqmetkLWy+wQaFztfvlOqmravurO4mYqv0V8bBvyeSCIqkkttosvBpTIAeR\nboquB7FRcoNQcPz0ieV8ZBnHOtyI3dZZQ2M2boT49591nP/X1y9ykJ+PTwy7Bt3bWrclT2uKqbYe\nxavba85fvOZ4nqrjo8E5Q/Tiu/RLrPp1jyMzfj5L9WAp5FiYxoX5uDA/TqALS1xZ48rQdexcy/Vd\nL72fU6DrE1qVOiVa+t2BYVjo10K3G2i6trI7HFaJ9fDq8sC8rJSY2F/s2fU9jTLiXZ4WpvmMjytN\nv2Pf77nsduRL6IYOkKBA1zTcXF1iVCKnQsrgXMuuMSir8T7R2Ia+bZnnnsOuZ9c45ikw+czJZ5xT\nwhuZZ4rKEns2At6yxqCVom83e9g2KZ3JfiWsC2iD6zpKkbRdQWNtg19WSox0BkyJWCScdRg6HlA8\nrQH6njfXF5iu4eP9Z756fcOXr24xqkVT8NOEnyLeZ1LR6Fw12cqzEC63TDASlS4yqdYmF52V5E+o\nboKSBaEbYdjv6fY9TSeMGr8uTOOJdZnFvVABQxJ336ZkSdlpJX7hArUBqLoNsqRBS12AsS0hSYSS\nCPU2EcrG95FWm1wyIQZSkg9pBkJEDugqgYBMbKgszTEIPqKg5NqPLNTFSpcpbHa1JG6eLWZfGTNb\n8KcUKYRQWmMUoIW+WESnI+eVlAI5R3SSP0cbcWVIiMWCksWiQKQE6Zt0FmhYAoXBakfZrJEqVw+7\n3Ja0aSnKkrJi9lJ8vqwLMXhKqfCqImlYUyBrRdabGwfIdVJPcott+5ZydyUmhEPHab3l/vOJTx8f\n+PThE3/6/iOn88zpOPLlF6+5ubml15lFJUIMaNfSdr1IIEaRgzhUcpGCCckAiH6eauH3Jlxs4TMo\n5BQpeXuN9WZgfd675Pqg11akqLoPFbREEdlOV/uqZmPAyOSfsqSMc4jc//iR+emRvC7gpCQmZ0hF\n0TSa3eAYdiI9a72ht//7r19mIl9XjA5CwUsRpR0oKwfSspLWld5aXr64ph86CRz4wKQUfp4JFW61\nrCttM9Brw6rFDrb4wPFp4nyaMFlTWnC9ZVkzp7OndXsurnbc7B1/+XBET4lhD21b/clZg2kpSvCh\nFxcHmqahoNDWoVF0bcP19YHmbMlK018fuOwvUbFwOo74aWGZRk7zmSFqhmbPbrejaR3amWpF0zS2\nwQ6KEGYkOiDXr6azMqHoSOtaLi/2hHCJM5oSIuM4kuyAGgz9YZCwS4ws44xNGeMczmiGoZMlbNIs\ny4LHo53h+HTi6SERlpWruxcYa1jnyBoy1jlcM/D54+nnYmIjm0elCqbKD3MpXF4e+PVvv+L29oLf\nf/dXXr285PbqwOlRXEHzuLBMK0VbjBVspzbiblBKtGjxNosNbTvIqdhXATNtFkWhG8ZYiEnTDj1N\n68QJ5D3LNDKfT/hlfm6ElyCN2NtUiTJtVzaAqlyVHP8dYTHp6i+WxWXJwuDWdVGbKSSlZLrWIjFk\nVT+4MROqDCKVdKJOa5WqnVKDrtYyXT+oMcoBVo+RonQ9kBWpGPk+ijDZn+XRjRIZxb9eSn5WeXNR\npIJ0tqZEjAshLqTsBSEru3sJTBlhsyjtxGlSED90dXfEWNAJ0EJtFCjW5pypKVhl0MpiXIO2lqQk\ne7CGRKp4AtGOK8i3VPcHsg8o9f0k35O89iVW0iVwdRi4vOwwQ8N58vz04YHf/99/4d27j7z/POLD\nX4gqkVXiOnpcGLBrh206jFbYxpKSfX6NKZULo5H3YT2PEgpbbyvbQf6c0M2aEjW5aCnloA7IVRoX\n0JjBOodSEhQSLIzc+EwjNYOmaAk3lWqXTJHkV+K8cj6OLMcJFQO6F5en95HzuNIPFq0PDIeCax3W\ndX/zTP1FDvK7Vy+YxyPHpyM6e9pOnjKPnx4p64w/H/nww0+sJUosNivOxyOTVpAzp6eRh+ORj6cn\nrveRnWt4f5y4P50ZV4960NxcXvD6V6/56ldf8fj4yDItvM6Zly8P2DxzPj2hrXiQlRGr2XmaeTqe\nmaeV9x8fWVJh6DqsUqSQERyXuCha18FBuNeXVzcQCqfziYenR4qKZAyUhpwyxmoONwdWXw8T+NnR\nogyaDmc1NIacPdM0kXKm72UJUkr6+QOnCt2w8qtfX6GswRHISRww8n0/8Ph0onEWra2UWNw/oZVi\n13VcXe3pL/dYrVDLgleQiDSd5fr2CmsbtDL88OGBdZpoW8OvXt9gdeH0+MSf/vIj3//0kZOPvNwP\nXFxfcHN7yZvxyDwtvJs8XbPj3fufOI0Tl/sDXdfRdgWMMMIpUkJglLC5ybra6qghn60IwYCy8vFK\nmRDlQ2ecoesdpMD0cGY5zyzjCT+NBD/JQV7DN1sTfZFRSpT4grQJ5SKdnZsGXZJgYrP8zCORpMCo\n+vvroQ4/OyBSkmu0BjLC9JAWq4oiQAlrRmusFftqiBFfbZFyu9dYJfhfk6QKztgG5yzGHojrTA6+\nYm4VJRm5qmNRqqZZzZZeVJhcCMuKnzM+JFKtgCPL0qxkK+/N4hAhIUq7jbYYV73wykjVonMYW33Z\n22Fe3T4y0TtMUwcUC2WeQCX5uza9PDSUglwfzFVZ2GyF2iLhI2sxzpKTSK+P9w/kUrCNoUuB3dDx\n62/f8OVXr/h0P/Hu3T1//u6P/Ovv3/H9Dx/47deveP36S66ubqAU1jNApkHcSCoVSgyUGCTCFVV9\nMMpbTzt5SCUKqlg5uHN1c2WRv6qJVHZh1Yrbtg27vqNpGnKBcZpZFkltGkUtfa5FFHMmrQs+eBTg\nMLT9jpevX7Hs9+R1pd0PFK1YQuTh8UyjFfuhx+kOrWWp/7e+fpGD/OHxnnlaiIvnondMU+B8PPLj\nH78nBXGXfLx/wvYO2zWoDE+PJ2IM0n2JPBGPjwvfv3vEasPHxwWfCkY7+rbl+vKC/b5HO8XF1YGm\nMazzxNBa5hM8PnmOa8L1Ua7dsUZotUPbQtcNWBS9k+Z1VVaMFXNvDJolFulHbFqM0SzLxOonQg4s\nXv7xPmFbCZ6sy4TSTeVCK0qR0ITRShjhpZBKIUSNVWIbs9ZBTa+5rqdpOkFwIhFibcCZUlGumYub\nAsYwn8/sOoMyDfMSaFtHay27oaMfZFrRyEQWZ88aheld0DQZGtfQDT2udTSNEbvc4jmfVh6fRoyx\nvH79gq+/+YK7F7d0ncMpw9MSWJbA2gTmRdKs52kWb3DMXNoW7Tq0kUN2u4JWabxS8jYPgdjCckki\nyZRMjAGUwraQwsKyJsI0MY8z3s/kEKB6xXP9AKYNOVsdgGrzVletU2tNYTvk6iQvOlRdjxWipFCk\neLhiAkoSCU+BXJfrIauSWBlt9cujDEZbCS05A1VTTxWRS3XlKLV1ReY6pac6GUqUnVSwWvghyiqS\nQhAXRrEZ3IUlIinD5wYkZ3C6ZgdXIX/K6enYWNqGIvKrke/PVffHFllXWlfPdZXFbK3b04LX1U6J\n02deycsIa0DO7vLMyylZDm5TteGiDcVYUgITpXrNT7Kj8CGwLl4gacoQlRRSmFbKy1/dXUqW4+6S\nH79/x8Onj/zbd+/5+DDz8u6GN69ecn11RYqRdYk0tWBEGSWAsMq3IRUJ2tS/d1EbMkKRMsSsZMGr\n6/ui1sTZyvPpdx1939E4J21SQSZuXba9hwD8YiqEdcafRsK6kkg0bSs7ESVe/F4pSj+gtOwanLHs\nDgqVMjkpljWQmHA+8Le+fpGD/M9/+QsKS2Na+rZlmSOfP498+PhIWBdCjISisKZBKYdPgafjxLws\n9G3D1X7AWocqlqdTIBfPw3nlYr/jYrfjcjdwud+jteJ8PnHY7ymtJXiJ7QcPS3SkIm+q7XB1tmXo\nLZ3rSdngY6K1BVNW8a+qjNEOjCEoI5toK6GE1U/4uGCsISwrGU2/P7Df72isY50Xmt7Jodo5IbSR\nMUrCEiklvA8i6VRXj0HaSJRR9PsO14iu34U9yS8ShW40MTosmm5ohYC3b7i+dJxHOJ5X0c61omkc\nTeukaipnTCks88I0e3xMKKspPThruLo+iDfZKopfWabAOon74PrqgtuXt3z5xR3Drqv8bCDJUmkt\nBesMbWnwUeBgRVt2oW75k5WCnVyQMnY5aFWVs6S6rLK/S4Bs6sIqyFXViv5evGedpPUn58iWdCxb\nhL+IzlvP8Uq0E4zt5jkzSlPQ6AQqpWosrhJPkeVYVEioqn6ApVo0oVSqMfoienVS1bpWhNBZWxg2\nSUlpTUiZmLNYD7V00KKV+J6VuCzE3SEYgRIh+1oBZqg8cotqjRAilaRHdVHCdSmygNRaAGK6k4dI\nhSOK/a/q/+IQKlKtpwpUjocEeyr1b8PClm2iVtWd4mrzjkgy0c+s45k0jpQQJOijpLw45USOpTpq\nDKZtpE9VmXq4C+WxxELIAiBLKFkwZ0gefPLoJaBbi9v1vLjZ8+aLl9xcX/DdH3r+9V/+L/7y/p7H\n45lxGnnz8gU3Vzfs9leEYaDdDTRDjzG2ouBr0EobtGvqbUfklFQEdhaTDBqmgFICxjLGVNKmoW0b\n2rZBoYhRAmYpBnIMdR9TCy9SJKwL6zjL/2/AuAZlSn0viK1TlAEvkDBj6Pqe4j0lBFnUryIx/62v\nX+Qg/+Mfvufy8pqr62s+Pp7lg9MMXL5+xTJO5Ji561qUtUzLyvHdT6w+471oq6dlRWvF27cv6Dth\nJwwXnuv9QOecxJwzTCdPPHlUKlijad3AuCSS67j58ksa57i9u+b65gqVIvY8YZeVxhpCShzHEash\nJ888RaZ0ZBiucM3Aze0tjU1YJTpsrDCew+GAsXKIf/H1t3StwZRMCYHsGlTX0R12rPOJEhYUGWec\ndAFu4cUsVL95DRQSyhXK0aOUpOhyznSNfAh89ORYpAnFNaSiiBjc/pome3ZYmp1lPE/V7qprKCWg\nVGI8nZmmSFKGw0VP31oEu0jCAAAgAElEQVT2g6MderSr9rvgeIqB2Sm+eHWD6zsOVwdynHm89yQv\nQZhh6AX4MwwyjY8TD48nnHF09XZRYqKYhMrb8g+S3ry3EtcXA4F4yEvKRF3dIjFgTEFlcTil1cuD\n3y9yKCmINQqvKzWPiqcoBayR5ZPckGvNXNXjlRKJJ1WXCwiPJNZlYm8tWkPS4nooqkg0X20fIQnc\nyCYty7LR6GfcQMmZdZWFqxRciL6slOisbWPJKUn4o8BWdydN7ooSixR8RyERuqYTREAurKn6zlW1\nz6na7pNBR3kgUeSmQA1ehbW2NxlNNIrshRGSYsA5R9u19ENH2+9xjSxnbcXqynNAnEIpRyk0H0f8\neCQFeUgVA8XIgRh8Ic1zlQgVunH1hRHYmTEGq+WfUhP/CYe1dT9SJBCTMlJ6HAphSdhd4OayY/iP\nv+b1ly/4b//6HX/981/50//6L7x5cck/fPOWf/6n36F1wljZcWXHs5TWGCnfNs5JWiAlYimE4IXq\nWBCUsbPiAa8NTylV3EQq8nrlTAiBNXhCycQcSUGKVfwqjiinswxwOHxNEcnNLOPngB9n/OJxztL0\nLc4aTANYSfr2h4boC2GOf/NM/UUO8v/jf/83fvO737DfHyhGin2XaUIpQ9N3YlEzFmUth6ZlPxzY\nDzuejieU0wS/4pcV7yOt62ibhvbQcn2xw1lLiZp+15JVYVkDTw/3tREGjHa0uz37qz131wcury7p\nDwNOZ6Z14vHjEe8jh4sdr794gTOa+4d77h+eGJfM7a3n7u4VF1fXkFdSmMlhoWsdrb3AGcef/3Jk\nmWdijgz7C/q2kQmg6Wr1VeZ4HonrKJCjtgMttjNfffHWOYzKJGUpRrgXtl4DkwJVIus08f79BwqK\npm1Z55F19aRieDx5lllYNHJoKfq+48XLOz78CMfjiWX1GNewv+px/cDl1Z7G2WfJgSJMkjDLwvLi\n5o72tqJDdSHGzK6TwIbCYFpHLpGhbzmPM0UF1sWyGwbaZpDXIEaSjhhbt156c8ZWPblUhoauEe4Y\nxRZYI+IxZlmgliwR8+yrBLMFM6QpiDrlUTZqHqAFOmVq7VcpBV1yhdwVVGNqa4zcjpRPNayjBGBW\nqv9Z10lSxtYaAEpC38tBHAsbLAuEN5NUzY9kkRe0yBEy5epnW5lSYJvtpgfZSy/t5qyI9XvWJYo9\nTlxzPzNqjH7mvwvp0NZFZkJiiPKzSUWIeyZrSR1GcQSVKA/MkIS8qDLkEChK9GtKJS/W4EyJXiLm\nfoaw/Gztk7Qf9XknELtUakuQ/NmqIOzulMhKk4xGWQVFyjNU1qQoC2ZdW5JKko1EWapWZg2NVby+\n2dP/p9/w5tUN33//nvPTyPtPE+n//G+8/vIFL1+/5kZrXBlwbYtpOhTyc0vBs2lT8toJ1VJXOU2C\nRSCBLrlplZxZlqVG8HPtBZCHoXUOrTuWeWGZz7IP66xIfwVytfGWumCO6yrFJz6hnNAOjTWEHFmW\nlXU8Ez/KQ/bvqurth7+84/b2hvhNoNkfGMOJcTzTOodtJJ4usVtN1w28urnDKU3ffyKoyDwunFGs\ni8fqhs41NM6w3+9RyjDPEZ8iBSnuPZ3OAq/KiqbpuWo6LppGOj5bS8oRpRI+BuZ1ZTxP3NwcuL46\nMM+J43nl/YcHQjB0bs/1hadxlnWaWecFPx5p2o6m/X+Ye68my67rWvNbbrvj0pZBASRBinIdrXv1\n/39Dd7T66kpXIgmBBMqkP3a75fphrpNQqBn91gFmRCEQARSQtTNz7bnGHOMbDqcVKmX8NDPPIrU0\nS2nZqSqxxvj+RJwF2p+MlqnOWryS1KIGUIqqscJtUNLQ7ko9Vy4c7nGY2D8fyAbqtiKHCUyNtob9\ncZRbQooy2SaFNZbFYoG1e3LuidHQdo6qa2nXa66uBZs7HM5ShQRwhmEWG+NmzaJxTNPEPA4ooKlq\nQRcYh6o10zyIvDJPzNOEIrNYtnRty/Ewk1LABy+VYSDaa5nOshKDl0ZJtZZoGDKNl2BHTIlxjKAi\nOovk8NpwnzKv1gxdFqaSmilTmCIruUpDsZGFWK5BAkkypWmd5CXskoULrUqsOxVLpC4aslI/MdI9\n4knPKZNSsRFmSRHGoEipwMAKLz2VTkjBD4gvWWuwtYGsSV5kiTNTRkhj4u8JMUAURrvRYpFDy+Gt\nCinPll8pZEKUA0TpXCbqVOxyiexl4leFoKhSJntZ9Hoti7qsHNNUIum6xOFTknRr9Kg8Y5Qvry9J\njJIENIbSJKuFmVNAUbI4FrdKKgCwrEphtTI4I1hcQSUAuUKVF2BWEUIgZYVXGlsZ2pXm+pu3fHh3\ny7t3b/juD194uH/k89OOXAkC2amKiyuNrWX4C0k6PH0IJXQsVlhQskQuyN5zVF5nWc6eMcnzNJGn\nkZgz0U+lsSjj2galLdHLDSSmyDAmlPeCRlCaZM4SXpQDujRKaXeW4ZTc9ENkHAKHY4/3IynNf/ZM\n/VkO8tWigRyZ5onFasVp2JN3EZRUnjWtozaK3X4mR4VyNaZyOAs5eN7fLEiXC543C+nkU/ID0q42\nDGPgaX/P3cMdJM+ydaC06IMhQx6FkGZrMjX9cWbs9wyHPRHF5eUF7y/XDH3P7/7tO5rVFf0Exi65\nuFhxc3PDouuYx5799onD9pHTac/11TWqaZjDTNvVrJoFF4sWZ6UAuKpNmWQMql3QrtYorVA5UXVL\n0Tu9p62ExXycexbrCq1rQBZLpEycZ46HQ2mjqri5fcMUBH+52nRo6/ABDocZpzLGaaq2YTvNHA8j\n95+f2b0cCT7TtEvaRlM1NXXXcnX7Bp00R7vj5eUJbaDrGvzQ48NMZKKrKqxxwpxWCldJJL2qLcfZ\n8Lyf+NPvf2D7vMfPkbptePtO/MAA/ZgJyeOTKaY7gRPp4k4p939eReyzFSxEdCN2wxwDtniqpTS9\nOE+KWHLW2E2RWJQyr4tEH71IWcaIQ6IU78ZS3Iz66fA0ViFCt+FckGC1kpeDkpCLjr6ERuJrtyhI\n5RdBvN26/F51npiVEPlSCiQl2rb3FPnP0jUVfT/LzTPMuKxfnSlnUF+MZ5smAusqJEnxiRfSnpHp\nep68hMKS5AFcTlQ2i+YUSow9RwxZXFxQtHBxxBijyTqTRy8gMUqGNGf0f8IFlAuRMNGJ6Jxfl8vW\nicCv4k8WU8gkdS7olsXm65JDSTRelZacHANJQXAOrRJaS4DLYOVmckpkN1NVhturlq77NafDBw7b\nA3d399x9OZGHO7p6wWLphbqqrThQzi/vEv4SJ1KEpIv7SFqXnBEiqBSTAMi/O3rhtlulaLsWq5TU\n4DlFvlqx2yvu719Iw4BTsGhqnDrXv1mmhAx0VoNzJKUIXrDDq3bBuu64eW942R7Yvuz+7Jn6sxzk\n/+3vf8XNV2+5vOik5DUlLNB1Na5xQOZwOBGpWKyWbK4vOeyeGIYOG8HPid32yA+f7rFWU1WWtqmg\nq6iqmus3K748PYqW3HQslx2rtqYxmqfnHbXVaBXl2hOCTOtBk3RGa4EBnXxg3yfqdOI0yDSvjYDl\nFZlhf+C0PXHcSYptbw70x5G+n4lJsbQ1fhh4eXgkxsT1m2us1YTJczoeUU5jakecfWF0yzd3DJH+\nNNIfTsCCulVYWw4pI3Q/VQJFrrLcvHsjS73k8WEiBol+i1dZSmljTFTOUtUVrjZsLtcsguiGKQZx\nIsRAf9iTA/SHA/M8YSuN9oZTP9H3Aykljs8nXG2xtbSTj8NIfzoxTpHdoWfYD1jbsFhkYh3RxhJ8\nFP3PWDRByINqlvJpJS3r4mARm18qbh5tJLE4B1ladlYYH372wrKhsLjL9RdAGQEUpRClrqxowkkB\nlGaXcRRY1llCiUUucAYVRI6pFEQVhIuCQJTODTBai46fyuf7iqvNIrfkrImpNACdp+RzKMTyE/I0\nZ5QzUFCoSYEPkXEY8VMQLTbF4rO25RZT5Ikk6FuZIuWlKlQYBLpUFplhFtyx7HEzpiyEjSqacCy+\neaSAGSOQL3MOsyhhpMTC8I4I3zuVwguKNKULYCqV/YKiMOZFCEEbKUJOyRK9SFAQ0MhBqpQgjjPy\nn00lAJaUQquELS+PlF+ZA/JiVMKqyVkz9CN51oRiEe4WjsqtqBtDGAMuG/opUJ0GWqeJWRjlKQuP\nPKYCQ8tiMFAmY8ozPlNZUhbJKVGKI0LEpFLIjWYYRjEtZLEaKmeoa8vFZslstSTFynBgnKNtK6pF\nXSJjUmWXk5gGjJJCF2sUtTHUnePm7ebPnqk/y0H+7TdvaS83dI1DIX7LylgqZyBGhnHk5WVLu77B\n1ZXA6JFroDGaMQb6YZbDTicJLFhHtJqryw1dU7HsGoiOi/WCy4slm0VNbRTjMAqZcBp4Gk4o46SK\nzDWMw475eCDXmnFWjF4zHk+M4ww5i36sIMwzh92ew+7E4TAxzTO2CthKMwRhnRurmceRYz8zhUTV\nLdisHbGwsrW1mLqS7bgPkGRK8F5QmcF7xtOEVQbbKOYQpZxZ/adiYGtxVYUG5lnTD4M4HYq6cLau\nxTlSVRZFJsSZprWAvDDnSa7cYRp5+PKFFDJ5DkxxxnjFqGB/GBjHmegDD4dHumXD5moNa0XKnslP\nzFPkeBgJU+Bis2azXLxCo5xWpBDQRuyXMctknAuESp1lkDKoJQUFXEFMYt8KJYBCKTNO5TCC4nYx\nBVmqee02lOmxhDhUccfERBxnwcCGSEgRpyxKOwkuGal0sEoz5YwXA3nhj5+LcEsdXTnIirsYW8oW\nYgnVUGRcbcQpIoAneSZhDiWFWSq9dEHEpkT0EyGokkLNr+5Gq+SgTlle+GiZVhMBoyAbCRKJjlyW\naX6W56plGZGL0wWl5XaTxUOu/nNlvD43Ocnzlf6F8iwVaApCIQsfRzSywpopT1yRSUW+UWRseQ7K\nOrzWzD5Lj+W5iFpBUuffW77GSerjUpnOzwhfkavOw42SGzcwjBPhHJAqFsqmsXTNRhaFk/jED31P\nnya2LwfmeUZbw+XlBU3TSTdpcedoo16/x1LOTNMkuGIN2crPTY4RUnxFLgOS8vUeP/VUqsEYy3LZ\nEKwhFmZ55RxN62jamqSLa6W8NIMPzJM8E2NFOtJasSzFMH/u42c5yMngh8B4nLnaZNqmZmxbwuTp\njyf2hyO7Y4+uLghzYP/8wOOXLzx9eaDuFLbqeHO9ZqUCh2Hgbnvih087TsPM7mrHzcWSq0VNVxvW\nK8OySozjkcfTxBQ89TzRPz3z48uRqze3fPP1OxqlePzyR778+B98/eaCZBaoVDH4TIie1tVcrtbo\npDnsTzw+v7A7HDmeek7DyOrmDVc3V9zWjraSqX2aPM8vA/sxkmyL/kbTVlbogspIOi4opmPPNBzw\n0x50S1dpmouWvp8h1DilGaaJ43gEBZeXG1xdE2Pi8fmJNHnS7PFxwmiLtgZtRDeOiOd4fzyx2+8x\nGjbrFbauiWhhjedEfzpx97RFa8dquSKmiWmcGPqZIUTqpsIZwx9+/yeavWWKnjkGtDWlZQd8EgTr\n1eWaqjaQI/MwsWwN1ipOc2BxcYmZ4On+EQhIdZB6bYfXykgisJgtUkzopGQ/EKT93dhKUoIlqEFp\nRELDHKJY7LQFJdObQrRzdf72C9KGk6Jos1HLIaGDwrlaZDAM8TSTZrn2l84ZIDH7kuBE0LJaFzua\nQjzfIZYErwIjnnKR9zLTnMSFgsbo0hiEdGCmUgqSoy96eCn9zRmjstzoiHKoxkAWXi0EudHp4tFG\ngQd0Et3bKrGUGu1QypSIvHo9sLOKRbeW5VQGWTAmyFG8+NOZK6I1eZ6laxSZjLU2BfaqXgNRIm9V\nqBxFK08Kq0HbjK1b0qiZj5GQAokk2N0stwL5Usr/X2XAmNLbKV76jCRy4zyja/laa6059tLQQ8y4\nqqVuanQnrPi6MjRtjTaa3XHgx+8e+b/+z//Bfv9Ct6j5h3/4G377V7/hw1dfoYyE4vQZG6syPs3s\nty8oFHXlqLsGW8kO63SM1E7RdY7Vask4TgxDDyUglqJ8v1SrDqM1xMxy0WC1LJoTSTIOqjwDU1HV\ntQC/rEHXTvDCfsKPw589Un+eiL7MSMQUOPR7Sfm1rdQumQldVSwvK1brjuAH/uf//CO/+93v2L28\nsFx3vH1n6KqKumvYjSNaay7XC7mxZLBKU1WiNyosk1eMY6TvJ4xJ1G2iW2l+tbxhfbHgcuExY4+L\ne+bTkR8+eqI5EWxL1BWXFxfcXl3JNwKKuql59+Edi4uex8dnjj9+wrWVtM6PMy/PA95Lb9g0JFzI\nPN7fUeFZLzsqa7GVKdcxhetahtOB3fPAkAac09QWxsEz+YHtqabpWiJiG3t4fMHW1WsNVfAzwQtw\nbLFckFA8b3ds9yemQayap9OJcZyIMfH115bNhaOqNKbSxGzw2bA7DCh6lAo0jWX2I9vDiYDC1VLT\nNSZJyylg93zA1TVV7bBasaiFGd02Tr6BgbpboGxi8jPb3cDqciUFECUABVkUozMMKKfip4YQwcdA\n0kb0Q2vkqp6LUBxk2jtjRc+HYM6AUhhnZXpKArgSARdAE5WwM3KGGKMAEmbHmCZ8wZz6OQiBUSFa\nLRRpS+yRgk8tYRot9MekFcmagi41YnvT4r6Q5RXS8XkGpWYIqej9qTTLINqwprS5l5ezspo4+8IL\nKbKKkmfmg4cA2sjNUBqBROuOxSGS00/0QtnulX8vRUH0KkNUxUOkpPk9JFHifRaZzCpFVPJQVNlp\nCDtHblBa5cIjAaKgCFTO5FKMoHTEtYaYHX62hJNHPCy8/nnEOlrIokohXPBygOdELlWBGiW+8zCh\n+sDQ98yTh6SZ58Q8e+a5oakNrnJi50sJrQOXFzVff/OO776b+PjxC6dTz49/+syvv/0Fv/rlL7i5\nuZb8iXL0p4HD/kh/ONJ1LdbWVE5hrJhOF8tO9ggZXp52jKcTKXqqxqGsJJRDtnJnyXLLIocycMC5\nvi1RUq5Klx2EyFvGWoxWRCrO9J//+vGzHORTgOwjZprohwGlLVXbQFY0KZOtkTQdid3zI7//3b/z\n6fMXhnFiSpnleqKyFlVVuLpmtVJ0nWYKE01Bmsoy0GBMwxhmDv1UCpoDUWd07bi+WbCoPBwPPD9t\nmaYJ1y6JSeOjIpJwjWGzXnF1tZE3cIpobVguFrSrlkTi45e7okdHVMw8Px+ZY+TiYkXtZAewf3mm\nyp75tGDRtbSrjozUkol2mOkPEzs/0dSa2BqmKbJ97Bl94N1X1zT1Ck3F3E+E04R1jstVK9axEHCN\npe0kKuzvI1Gab4W3MnmSCswxkbRFGSs/5DmSNYIBtZYw9fT9gRArToP0oqI1MXiCzkSVCwZVWtid\nq2nrBpVCAbTJXBaDXJJdUxGy5zQmdrueOT2jtBVHjzayxC2HisgS8fXQETRKImsLxqCtE8tWkAYk\ntDhetHVihSvUxFycEcbq13q2FM/oKqDY9YQDUlyLCVRI+BTwORZSHmVJmYsbo9jEtRwk5+WsHNgG\n7yNBabIRf3TlBCebUMQQS2F0fv0czpprzlHq4DhXUYt5kSwHr7Kl9o1SURcjIGhj+cHOrw03OUd5\nwVtD1roU4WiCKiEmgb0CZ7lJvdoK5cUkV/oQ5Up0bvFJKqO1OE3QWg5qhTC9VVlwvto/c8EKn4UV\nJeG7KK4QaxSVM1SuIqm5SFRlzyFvS9Hdy4tXKVk2x5xQKRClixBUIkVPSp48gR9HYgiAIWYvu4g5\nEpuKqpYXnLIJYw2bZc0vf/GOceh5fnrix493PD0+c/f5jt3zC3/161/y9Tfv6TYbvA/EGLGuoqpk\nYLNa9jdKaeqqEkfVHJiGkWkYC0qjwVnBKFilyLmA3MrPEpUTAmYpGJdiDlsmczmwjdLC5AestYWQ\n+f/++HkO8lExzRM+KBarBU0jtkPlLHXT0A492/2OpweRVB4+fSJMHmvkujqME3Vd0VYVN2+uuU4J\nP0WOp15CCjFJyUOjqbqWw25g1x+5f3rkeBxwVcXNzYH//veZrGYOT0/88/cHqos3XP/i71i3dWmu\n97TrJTc3lywWLYqMz0Em46RpGst62dDYit3zgUoZPry7Rd3taSvHt99+i5omdrsDX55eOFotrpPd\njrW/lDc2GaJ8E4bZk8NIspYQKwbv+eMPD3z8/MhXD/d8++vf8P7t11TacdpJgm1VNwSf8HPATCMG\nL6XMKK5vb6gWAuzabbf0hwN+GHjz9pq6sszjSD+eQBm6VcPbNxfsX+B4PHL/dCBnJXFtlQnDwDQU\nz3KWxc7brz6wubqgsobjwwvzNOCD59SP6CwafkLq8o6D53Qa+XT3SEqw7pYs1xtc3RQYk9jqIhmT\nSu+kzpgIKIt1DcZUxKhIOHIKmCy6ayw6bSpLzxxlopV6OxnExYIp4bGs4qsLRSrKivadRYo4c6zP\nwSByIhstCFKtsSU8lKMmGYM1DldZ5uBJqrwYi+/ZKotXqtgihSyotSyrwxktW6Re0f8ppD551ro4\nOGKWYM00SzjGFP64Ea+quKFiFptksdMZ+xNxLypFRLpGE+edk9g6Y0SQtDpjgZgMEVkaQxL/vTXl\nUAdlZampSGW/8VOiVuAlQo9MSoJRGUNEwFtZiwZtjRzk2UmFYSIX73+ZOZPQEkW6yfJyzQEVEwEr\n1YGKEqo56+lJPOtZkq4qiKtkmGdmozFWUXWOtmtoWsvNpiV++w6N5//4p//F3f0TDw/PfPrhE5//\n9lv+23//W/76737Lan1Fd3stFlsEARZTJs4BUsA1MoRoEqtFg7VaUrbWop2TmsCcSJNmmiP9/kQN\ntLaisrV8vbSlrhup3UOq60KWl7OKcusxVmrg/tzHz+Na+euv2fcT/exRYSCPXjorteZwmjgcB079\nxMPdE/f3zxxOA6vNis3FBavVFXOKvOwHtvHEsqsgR059T1dVGKUZR0/tLH1/YppGXo4n7p+OPLwM\naAyb6zVv3l2R4swPTzs+3Z2I3YZquURp2B0P6CyUQ2cVwU+cDqW84XRidzjyvDtxuVnRNQ23N5dU\njUXpzMPjlu12h2sa+mEiDCMBw+XNG3T2TNPEmGaCSaxWHcu2oe9Hnl6e+fL0gpLhk2gVp+NAVTm+\nen/LLz/csmw6gg9YJxZNbWs212vWl0spG556hjFRO8eHX35Dd3GFqZvXqHEMAT/P7E89btDoIMjR\nkAciB7bbHdvtgePpiLGidb+5vsI5i589h/2Jtxcr2taxXrZ0Xc3lxYq2rVF+JnkBYgUFRIk49wHW\nyxWVNZyOPQ/PL/TDhNOWxWKFLhNpTp6sdJkES1ejWLHRTmMruUGgDK6qZeKPHp8SKpRJsRy8WYkT\nAS/l1LoyhFBQxUomWJWlzNiqc4pUyIQpZMIshbcJREfGELOGqCVAI7YPciXyQgjCJw++2AGzLkxv\nSVkmZSR2HgI5B4SjApwXZEaLiwmFSul1IZYLez3MicRMjMKEBwXGiftBy2SqNOhUWNpKYcjCCI9i\nWXRWkY30uSpthSiaM0EqheR2iIKYyVkoiFEJu8hqjaVE+03ZF+QZUkZlIzLPuUVH/9TxaVSUEmMl\nNj5rKiElGocz0DagQmQOGl+spClniBmTkiysYwBCeRFlplhelsqILHS+vWWR6ExJtp6/D9Dy4gYw\nyZCnxJQ9KUHVWG6u12j7C7YnT4jw6dNHtocTf/iPH1EknIVf/PpXXL0VPrhRVqSbcZAKxiAYZHNO\n8eaM04aqdphWhr+UpHJQG0uzWAo3qe2ou5a6aXCzF148ov0rJbeW2rVALlJacVadJcj/8vHzVL11\nmsln+tHTH2e8Fq9tiLA7TRyHQIyKoR+LnALXbcN6s2S9WvB8ODFMM/PgqZsKBfST5/piQ46J3aEn\nxSQtOzHiM6SssXXLsm65urhks16BhuDW2M2C9+/fUDlLnD3HcZLKtkpwsClGppiYpxk/BcZ+Zvdy\nQGdwN5abqyvGWWxHM7BcLWkWHQnYnUaMdVxerQn9njmM+OiZx4HZKmaVmYaR/eHE9nBk0VVMg1zD\nximyWq9427bcXK7QrsFasQ92sUWpTL2osUYTfIXewzzNKKO4fnfF+uIKlGG3P2KNpnKOdtGKu6PE\ng2NMnPqB3fHIcddz6gcmH2m0o64aNpsNdVMz9iPRw8WyK9VZiqoy1I2hW1Skmw1+mAUXqgU7O8+R\ncBpxVkFdsVkvaZpa2oKM4GBzCsTCyabouj8Vbcl1XxnpF0UbkQZcsWpmqcuKqZAUxVFOKjF9dabW\nlmk/nzVXZchaDkRTZBBTYucpiDwhbg7pbdTSivzqORaHCAQDKZSYdhS9XWslwkUq7TKUCbukGvNZ\n19allUaXvs1KEphaFgPiMyeJlh9Fp45RpmttpNZMG1M8zaXIQIkd84z/1Vk6Q5USDzROKhAVCu+F\njBhiRCvzKhXFnAtPKjOTJE3MT/55SbUa2WednSWIkwWdS8OOOMyUSq98FautFAtXVlwyWRaXrlIk\nq37CxXopT88pgQnoKDkB2WlAjF7CTIX1ghL9X4JMxUevAV1cQoAQfZBFepSwU9ZySLeN483tJb/9\n7a849T3b7QvDqef+aYvKiYtVLd2iRrNYXNK2a6ytUGVXklElzFU450phK421Glc7gvfEIEqgFH4I\n8tdWFcY5CaElIEtCNJ3lNAXu/DdKem4V8Oqz/S8fPw8068c/cug9hzGilAQXdE7M80zvMzEbqmoh\n3uemRk0dOEfWmZBOuCrSJEvKhuVmjUY4Fm/evGHsB378eM+hn8gxY9Gsb1a8fddxfXvJpmpZtg6T\nDbTXfLi95G/WF3y4XXH/6RN/+v4HZtvIVb6qqaz4grPS1IsNbbfh6uKG92/f4xpL1TiquuLxj1um\nKXD9Zs0//O3f0nYLTqeBT5+eMCFz66yA4ZMj64q6suQQOW6P5KzwPjL5mS4q+lPkNBiyW3H75pqr\nqyXjsUcZw+pizU7f1VkAACAASURBVC//6hfEeaY/nZjCWHzoia6y7GaPV1m2+XjCNDDsHwnDgdrA\nxdsblM5M48hhf0BFzek08emHZ/EtW01Vt0SfGfrAaQgk5YjZYlyNqyqOp4GwHXj/S8hpRmXHm7c3\nPD/vOR5P1LXGKEsVZN+x3T8xjgOXqxXvbm5p6wN1azAqSx2bFjiSNrYEZiSQEZOCEhRRqiJph0yj\nGhU9WglAKJe/pjJhZmT5SGFghJQJYZIgi5EDRWlFJsl12wqJ8TRM+Fl6ErNKr95tg8TarTXURsBJ\nofiI52l+PcSzLm33gDOQlRUmyThDyChc2S1kVAnCaFtKsK1FJylyiP/Jejll0XzPOrVSTiazkt4k\nB3xIpBzkYHn9odeSuzERZUyJlldYrSElhn4SeBoJYwXdqrKhFJgWGqdCZ10Ssbr4tilWOVtkoIgx\nsuRU2hO0fa2l06hiGTVlx6EwrlARvSdOI5oJazLJGCKG7DPJR7lpxYQu3BphsslLxhbQlilulqwR\nKeUsiZX+TpU1OSRU9mAzVJYzcFjFSJoTSVW4pua3v/3Aqe+5u3vixx9/4DRN3L/s+d2/fS+S6jhz\ndXnN7dsPbK5upDNAW+ktJUtJSwjoSssQkCe0clLonCI5K0zVUDWdsFuMLNvHeSZMEyqDdaXNKEZS\nCITky8uvEgPA+cbyZz5+loP8h89brGupmxbbOBZtTWU1wzCQt0fmkLm6WdI0htVywdtxYpp6+sNM\nDuIa2SwqVgsn9VfAzfUNrl3js2N1ccNVlUuXZaSPHk2mqx1Na5nnieN+T32MXFwHVBj41y9/ou9H\nQlK8fXsr/YY5oVOmbhva1ZLFZkUcB067PWE6YIwsK7QTRGxdJdaLGqc8Ok9UDn75qw9yzdQIBZCM\nM5rjbscwzISY+fD1W9ZvL3iXv6GzlnEemYLn8mrDYtkIMnPdCCEujmwf7khR/KpJeXThT2+fDriu\nY7FZUNUdfg5MhxP+MBCLtjr1EzYn4jyRp0Clar569xW3b99J4xGlvzFHural7TrGcWaaRubkaVcL\nuosL6qYjhsD+Zc946EnxkZw12lpytrSLBlJkOB6YDidO/UCzXHJ9ueTmYsFys+C4G2Sh6meSE51Y\nF5a3sLUzMWa0k3CPTbL40hkSkpTFaFJJVVLiz6iSOixdoDEHWVgpcb1gKG1PYHQmRkk/zv0kpbxZ\nYXUl2rlWsuzURZc2chCFOTIPc5FLxDp2XoRao6Q3UulysCSsk5SpT5rsrSy4rIRCjHOlRi0LeVCc\ngWIDzKpMf3KTcFrhrBLyZpZJlmSRe4BM5tLxadDZkrEkbYia4m6RSHiYpyLTIPILqTxP9WqFq4pF\nVmWJ4gdtQMk+ICnxJZmy4MxaFXO1FcdFUY2yUgQtcozPkjQN44TvR8I0ULWmuItkYaxsIlnpzM6l\nozIqWcimc68mkHJgLl/vs4VTpu+iV8v7XoJPQXCwcZjRDcLzCZk8gzIBGy2uynz7zVuGf/zfGcee\nx/sH+jnw/f0OVX3B2oqL5UrCSdbQdhu0ki9SVnA8HOkPB/rjkcoZXHSyeNUaYyvqtsXWIvMZYyQf\nEQLRB9k9ACEIjOu8OIkx4/1IPhyx+szk+QvykR9PM8tlTYUqfsuIrxyTDxIHUIo5BrrlgqpuMfsD\n9w8Tp35kmiPv2xXr1Rrtag4vz4SQaNuWerHCtUvej54YD8zTxGQi85hx1rBoWpTShARjyDBO7J6e\nOO33hCi406puuO0aMolpGpimmWaxwFWGGGZ2uy2Pd/fcfb6nXizpViu69VIWNiFy3G8xaSZlxctp\nomo6OZSCR6cRpxKWxHQ4cjgNzEnzJl6zvljRLJdYLIfjgd3pgHUSf9daU9eteJ/nkcNuh7H1q+ND\nUocV2lUslkuWywUGhfeeGALWWLqmYfSBMHtUThDBYHBtw2K9ZH294jQKJyVHz/bhQUqOw8w4jcxB\nioa75ZLVekO3WBCDLGinfmQco5APm4aYMlYD0bPfbjnsDow+0KyWVLVE0N99dcudfsKnxGk/iW1E\nPqnivtCkJHySFARkldKZ2y2WLpRFGdFQhZmVf7LWAeJ+iMQsjfXiTxd0qNNWptwUxAkSojTQF+3c\nKGkykhySQhnxumvnmOeIL3JKGVBFqjYaZwzOWVxVi0UxRYwG5bQMp56SppSloSklycZqQvqJgiUF\n5UZeEpQC4VLnZtUZbUBhhEvAS4wkhSlTGuuVcjI9K10Wm544T6WdqNhykjQZyfMq8DKlcNqis0Cv\nTPGTnpexOUcU8aeKuJRLKMa8QsXOzKCsC+Z18qQxECY5zHMMZNVQa3kGdWXFmZOlkUmVQuz8+tUs\n/aQlIJSQ24o+24l0eenps1cmvzb4UKQtEwOCAxB6YfKJ7AIOuLlc81e/+Ya7uzu0gsfHZ/bDzMe7\nFxrnuF6vWKzWrK+uygte7IRKS0Avxchxd2C57tBG48OIa2q00/L9YE2RJc8hL1XqAnVpIzr7+VPp\nAC1Lz3nGI+4obf+Clp3GaIwW2PqfPn0iq4ythImyadc4V/Onj4988+EDddNxvHugnwLHMZDCwFdf\nf8Nyc4ExluPhwDT2hGGiXa24WC9ZdRV/+P5/MQwnnIbr5YKmbmirlt1uTzQ1zVVLoxXPj1v2h4EP\nv/imTFqjpBqzIk6J/f5Is2yxg+LLdw98/90f+eGHz9w9bFmvV9zc3vDu/TtUjng/MY49a+vYbY/8\n6/cfWW7WtIuWpnW8f3PB9apjrQ2cBowXoNV4mri6uuTm3Q1QczyduH+4549/+CMGWHUdrWuY5hN+\nnBjUzOpCbjRhitRthb0wbG6vqbsGV1niPJLCjLWa9fUli5g5HnseH57BOLTSVFlTX1xw8/6a919d\nMc8Ds585Hvb8/t/+F9vtEVe3wlZxFXVds2o7bq4vWV0sGfuB3XbHOAWSVgx+pJ8HVLIctho/jXz+\n8TP7occ1NdYa+j5iSSw3Lf3YcuxHXp4nopaFnbIZHzMkTcoWla1Ai3zBu5YpOymD0pITIHrOvmaD\nJiktS8ZMObyy6OuvY6K4GVKEVJClJCU2zSDgKFmMykFuREjHuBrtWuZ+z5wSubLY/FP60hhNbR21\nazB1LbCsYlGzVkNOIvMoAUgZbaWT1Ga0U+SpWBRLU7sxCh1zuXWWODqUCHdEOSWfl65JUyxtQyIn\nymRqsVSicyvNnOQmESePKvZOkXlkrwHSiHNerFkji16rNI2tC5FS6szIUhitlCb7wtY3GlUhqVAZ\nx6UizkA/DPR9zziOmOBLgMmgVBDNuM10C0OoHKO29FN4tTFKdxqi0Scry0sdMTYUuUH+f0ZnkXmM\nSDApyV7E2krQuD6DnyVgVdUkhA+fJ4/rNLW13F4t+cd//Huq2vGv//J7Hh8feNkP/PsfPpOHiaqp\nuHq7oVotyDGTfZRDexgLf2lP2zWgDbOPaBzoGmUqCT3FTMoe66pXO+EwjIQkvBtZNkfJE+TyInIV\nfpI8iP1L8pFvTwMJSZvNU2B3GphioK4c+hY2mw1NZVmtO1brFaOfub69JcZASjNfv3/LZrUkkxmP\nKzSaiOZ02PN495l/+5d/ZRx3GA3LpmPVLqkMECc2tyva9ZrVes2qcXz+eMfHT/dc3ayoqhpnKxZV\nQ/Ajs0pYp5jHEaDY0sCgWbUNlbVUleX6coVNgdMJPg8HTjP0QQ5pGxNpGNlPA1ZH0jwQuxZtKq5u\n37J+8xaT4fC05eXzD2hTY9oajGLRVlTOIaOQtNt7YBoHdC+4gApLjjNhUlKuPI1Yq2mqij/9xw8M\nw8jFzYZuscZUhvXNGkNm6Ef6GLm+WuNqw8PdZ/75//43XrYvhOC5//hI8BHXBNquZWEVxjhinDgd\n98RYZAWVqRYNzIGcPDonTLb88PGex6cXIHF7+4aqqbh/eGAaZ1LqeH5+4bg/4KepVKlFUkhFBzav\n2/lULFgpZ7LYEsrBYTG6QSkL2RByX8I7Utd2LgrAI/VmKhYIE6K9lh9+rYwcPNKdINH3JFMdNhcc\nQvXKjlZROjht0WeNQiBOZHKWr0HOM2ShR57Rp+JXl5ajmD1BQc5anC4hkNWM8gWtqyiwqIxTimxV\nmWwFE6CL3JGVcL1zSJhye4kpEw2EczmmKUGh4iShtOOkItkI0CtJcpJYFm0GrZw4zo34m5OWDkwM\nsnfIwloxQIrFpeMMxkoXawzyooox4CdPvz8y9iPeBxRBou5RXgDDoUhj2WCbjrptcK4nh3MzD+Jz\nRzz9RqdCX6zKPyyFIchuRhtZKJKFCaO0LA2t1cQoTJUxeNqqlgo85ZhGT0wePwWulx3/29/8mvVq\nyT/907/w+PDIOE3c7Y78/nc/slxt+Lt6Tdd1BTkL2oN1Wpq1moqqrbGrCuNqKZHAkII8f20VMQf5\n2mWwVU1GEeahyDVKkstRlvO2soLGVcUO+2c+fpaDXBklrpMJnK3ITHifaGvFHAKzn2kXrYCE4kzd\nWG5urmnbGgi0Vq6wymhWXcc8BvbDwHA6sH1+5v7LPZVNtE1FriJt7VBZMQ4TrrU0tWWz6midLZ7S\nWsA5ztK1DTqCnz3TPJJzZBgGhtkz+cB6tUS9izw/veBROGvo2oo6G1ScqLSAeJwzXGxW6JJCqa3B\nWUjJcxqgW1bixyVz9/mRp7tPnHaPrNdLbt5esblc05CpVUbnSIzCW5liQlvxQysS2hQQflDUdUOY\nR4Z+YFI9P/7xM7v9jsv9Urywyw3tcoHRpZMyeKKfOO4mtk/3fPf7P/H5yx3jNGKywVlL5YX1HWPE\nTzNd7SBF5knwwMoa0f6UIc4zs58hG152Ow5Dz+3NhvVmSc6J7ctWfvhV4suXR8I4koKntok5R1JU\niG3cFC6IuFNSFiZKzIXooRW5hEKUNmgbIc3kOFNg0UUrFr5SLL9H1Mf8CihTSkttWSExprJUy1km\nbEyWyT4mQZKqTLQSuQYgZbSzqFw6GZP0fnqyYGGVuFiccYVySGkIKhVoMSLOOAkwnT3UShUnJbwG\ncErCTVp/jHDpjXXiwojFN15uJSkpAqLNk4TOqKWVufyS5a4ml5uHftXW9bmgogR8FPJSTKYI90hx\ngoDmhJWSg+BqKzIqe9H2Z9DalNKVwNSPkpQtf3atEi5n8LncnEBrR4fFlNBNyGK9OwOrUApTnCES\nmBLNnNdHqKX1PhU5rASmlAryYtYKlCsBJCXcdlOhtWWeggS6fKRtLB/e3LBarwDFv//7H/j04ye2\ng+f7H+5oGtmZ3b67YblaUtUVL887dk8H5mEkTGLNdNYVH7ktg0XhjAXEI1+AYxGIZ0bMK4lRBpEz\nillzrrD+CzrI1+uW076nHz0XF5cEZXDjwO3VghgS4xi4vqwYdlv6w5YxKt6/fcfbN7dYEzm+bIkh\nSCioabDqwHQ8MfUVOXoWTUfrxDtrULR1hfeJcfKMLwdqY1loxd4nts87xn6iHwMpy/RhQuJw2HM4\nHEBleu/lBxHD1x/eYt/f8Pvf/YGX44ATrxnGQGUVC2dIBmrbsuwaHh73aKO4vllzceVI3nPaDVTL\nBdv9C58fHvnnf/meuy+PhHnk229uSTFSxUilBCSmY8DPin7wjHNk1TVUjXyza60ZdwMZw+XNDcM+\nMRx6ti977j4/cv/0wOf7RN2sub55wy9++Q2L2uLnmdD3vHz5jJ9nHh+f6fuJ/WHi/uGJi+WSrq1k\nKZMSu5cjZLi5XMCbTF0Hfv/dD1inubhYcbW5YDwdORwPDCkw+ZH1quarD5fUleawPTEej9TWMJ0S\nH3+MdK2mUppFpYhTFgJlVvhCtUOVyHeOxDATfCzpQiHXyVJNJtWkFImiOWZJ4nkvPJiUk3A+Xo8E\nJX41UxZ8ScuBn5OUdpT/Tkhizwt+IvuiJ5sZpbVUyKVUcLgSyDov4gqfUiZ3a17RETHBHBQpymIz\nEhElXKrezkArnWTJeZZThP9tMaWxXjkH1mErIyGynFA6Ya2CZIvGnF6DMZKSjRiryVqJmybNotUW\nb/65nEMlkaZQWoZ3LXnTrOUlJSXYidNxYhpmmeKRKkE3WbIuNrqAvI2C/DonRKWzVL3SIZNKhOwJ\nCTQnjIJm2VHVVkrFgxf3jdJSxK6ltk5lcTbJV0WTo7xscgLmCK6we3TBR6sS6reWXOytxhgB5lnL\neBqY51lsj0HMC5vLS65ubqiblmHwfPn4kY8PL0LpzJFvf/sVbz+8YbFY88fvv/DysGPpapZdy6Jb\nol2LcWLdVAZAkAUxFGtsTiWDEKA8w6ykn+AMHZNblNhilS4Atj/z8bMc5JvNJY1t8ONUeiQ3pLjE\nEDn1E85p3lw1PD7veNqemLJl1T1gyDStwo8e7wPb0wntMsu1o91pvny8I/jActkI7yCrYrpvaTpD\nNhVVpUkh8OMfP3MaPCEpjHVSyUbiuN3x+YfPPG+3jNNI3dR0i47b22v+4a9/Qzwc2N7fUaeRq86C\nhaePn3mYJ2kJCREfIraqZCK3jrZ13F4veLh/4uVlz2EYGKKi6Za4uuU3v/qGD+/fME8DKnv2w8yf\nvrzwzVe3mJTI/Yh1Ee0TLkEaPbFNxBrR3Lwn5pHT/qUkGhU+JlaXl5x84MvjI7dOM/YDH//wPXUn\nnBa0ZZklXGKqlq9/8Y52UbFZS1p0nDzH0XPVdFxedFKmMRy5v78HFIfdkcViQVpJHL5bLIjA/mVL\n21QYBT9+/wWjK1JKLLsOOGurgZRrsnbY2mBDkDqvCCoGWewZi5Q5BKbpRN6/oFYXmKYV/TPJgjKa\nhpS9hIqi0P5EnolY40hGdOAc5IBPKaNzxiZFNgpd/NBzCMxRrvPJaGIMAqhKZ0AsciAX4H/wkWOQ\nRnSSKho8rwtSY5zo4ArR4b0UfZyXl7q8iIzSWC3ujJwSmVBQrkXjLexqaytMJU1MpqkxCkY/kUNZ\nHJ7j9MX4kLQESm2Ql4WUO+TiPf9psvvp7wzJ2hLqkSEoF/ugAmkQApyt0XoipYl58oiqoslV+Rxy\nIicvrq+oMLE4i8rLNudYXtRCOZQbSsL6RDNDEzR124rt1dbE4IsjSGONFWBXkhsppRJP57IMLC4W\njJY0rrEoXZUykCycHy03GpVhCpFwmJjGIAgAI3LoPM5kk6lqzYevbvjNb37Nw9MTh/7ED09bxhDZ\njke+eXnh5uoKP2vW6w3vb29YX11gGinIQSHD0DxjTQVZFRZ9fH3udVW9dqGa0mAlrq3CuwkRp3Rx\nhv4FTeS2amlsjVoGpsmjVCIlz3Evh2HIkeftlqGfxUhPZu5PHPcOH4RM573neDiidGTyE01tGIaE\nNprVcslYO5SCtqupFw1aW6LStI1h6if8FEF5ukXLYrUkZy+px/2Rl5cXQWxaxzwG6iqgU8BFz92X\nB758/CK1XhrIE1OYGYeJmBLOGjQZZzJ1pVllS+VAp0nojoPncJpADRjbsFo7bt9eYK0h+pnDbst+\nd2D2AovKRpwLfpzJPmG1oa0qFl1N21YkH4XPEMH7WTRNZ+nWC27I4CzJGq42HZWG8TBw7I/Yqma5\nvkAZS1UZ2kWmo2JRG27XHc/bIw9Pe/bHgUXbcLFZ0bYVD19mTv0JHz1NU+NcWUZmCYTUbcO75j2G\nwDwOPNztmEapZjMa+lGu3p3StO0C4yo5BHUCJRNfChGlIxgLSpwnyY8wHrDuXAoh/twUsxw0yko5\nRSoVWkoYLKpQCimx6pxKaUGUK710b4qUcH4JS14nCRcjl171fJZTygI1JEIMr5O3li56zgY5raSy\nyzpJpIZXBnmBYsFrulRphbIaXWrpUglCZaT5R2kLxpKtFS07yUshJo+fRyEh5p8OcnHcyK0jvzpY\nxJGiCthKOO5ni5/U4+kyraM0uRx4uRzqxCjPT2msc1RVxVRJYUVM6dUdpLJCMqJSa0bS6BK3F/RA\n8dEbVdxFInPkM+88yi3IKun2tGj5PMS+I3ZTLW8puVnp4rGWAFdS5cVMYbPESCh/blIpjCgyVYqR\nMHviFGQx6yzWOmKWJaiZA84YLtcL3n91S9u2DP2J/TAy+0DAM/Qj0/uZDx++4e3bK66uLmlXHaZ2\nQq4sQDU4y1W8MoLUOVF8rnfTIp395/2QShFjY/mjC173z56p/38d1v+fH9qyXNS0VvP0sCUEYXTs\nDwOn2RPx/NsfPnJ1ec1mvcZqqHRkHnpitDRtJWGMU8/z4YVUPM+rzQKjLYumw1VXpBwIMUiaSmma\nmGhaR9s2LJYr2sOJxWLFcrlk9/LC3d0Dh/0RpRVvbq5p2o7HL890tejfP373Hf/jn7/j4WnH119f\nMYUZZeBq5VA2Y2LG6oC1QhZUOmDyxHyaeNjPBG/JWTNNiaqKWKO52nSsb9Z0rTSL7F+WPNaPoj8b\nuUYrrRh3PWGecHXNZr3g8nJJ09Yc9yeqtsIEOfRCQV9e326o2op21XL9dk1lItOx58kn7l9e0CHR\nri8wtaNuGhKGcMpcrC2LN5d8eXqhdo7Hhz3rRctiUVM3FV3dcjqNpJz56qu3pZo9MPtROMtNx998\n+2uCH9g+vTAOiuPhyDT2DPPE00tPzgqlLFcXFucc0yidjVmJ7SrGQA4aY8TJlEnEOMHcM48VRkhY\n5FhKEkoxsraWeS56o0qYyqGSLJgEdmbRJqOUhySYVE3GWFEfQ4zkIAd2RLzIIEEUGYQy5FiKgPOZ\na8RZqS0NnZI0VGJXtM5I7D6J1CMullL4/MriFv+2LuXTAYRTDmXClAPVa40KAWZPSidinMSHnNLr\nYpWccXKPlx7PorFmpUTTLy6bbM8pWnn5GCUslFiY7/rMV7GGqBT4QEyINdJC1dZ0KcnNbR7xMTD7\nIKKFSoV7IkPNuYYvF81bkpflLMjyZ5RfgZg9c/RkH8BYrJMXZAhy0KvX5QHyeZYnH3RCZy07qZwK\nPra8uGVrIaXIMZGEXiw+7yxyXV1VNKbFURGUxmYt8tCY6CrH9dWSi81ayspPgWGe+XK/I4yROjt+\n/e23vH1zQd1U2MbKzcnJlK2tlkBblIW70UKy1FpCZtbKFK7LQZ5yLvVzGaulcs57X+B2f0HSyu31\nBY2Wyqmrq47tfuI4ZXKz5NtfvuHq8oIweRadoW0UVmfmSQpLx91ImCxzCByGI/vdkXmY2KsdrrPU\nbY3Go4wEUuL/w9ybNVl2XFl6nw/Hzzl3jCEjBwAkCBZZrepuM7XVQz9I//9B1pKVSd1qFllgkQCY\nyCGmO57BRz1svwFaie+oMAOQMIvMiLxxz/bte6/1rXHmw/eR7dUVr169ktNSG+IY8VMiT54x7Unz\niIoBZwzX22sWXUvbWpq3r+lbg0qRD5+eOEwB27e8en3L4TgxzTNTKiwWlsYYSqm57I1s/dN44nAc\n2E8zbSNOB53hdB6Y54lGZ0z05Bl8Eb3y7d0V1zdVleMlRPm8OzGdznRdw6t3NxyeC/cfI9/98T3G\nWdbbJa/utpSkiCERvOdpd2acZrIqzEo0s6brMXakXy64e3OD1ZrsPaQRVTzD4DkdZLHbdY71dsnz\nceRhdxQEZ5LrXtu1XL+6RaXEPJyYhoEYhP72o5bH63Qc2e0OnE8npmlkDBOnYcZozTROghNQhtM5\nMM2pygQvDr6MTgldOSCqZCIBP47oIh1nFpcITlucrZFkBmJKpOBpgoxolEaK2GVRGMXarlXNx0SR\n00yOnoyAm3RRNdWnYHKsvBpRQJSqb1aIeeZiuzcv73CZS8fZV+45hNmTo8zEBRNQqk69VPS4FCsf\nA3OapeDWw6RUQ072XhKlUhSddY1TE+07oOqOTNclsKZ22qI/bmocXFaQhS4l322RpS76JzRCKuBj\nxiQvt4acQBs0MiZQumAbQ9s1KCMBJd7LrUYWydDIjEsWqfkn236pVs2UZHF5UaKYIgaqkCIqTNjS\n4nSDbRu8yQSfJIy7ritEAi9hFFnrmuEq8tFUl7hccm5L1aAX+X6KIB+lo9eKmGCaPbFA46Aoh24a\neuPYLh26dfxv//t/5Z/+6b/z7b98yziemXLh8TTxhx8+of/b/+A8DPyv/+W3bBcNRnXEOVVMQRHV\nVFUwWVvHKLahuYTm1P2KyGVldJdzghrOodHC8En/jgr5drNgPo1i9Y4R7yMxihlntV6x2awJ00xr\nI21TsI0mp8I8zYR5Zo6arJBCs1ritaGEyPE4MPuIvpIwW41cp9I80uiGuV/QOEssmnkIdSWV8XNk\nPI/ElGiahtY4FIUUYbVa0LVG8hOBzc0VTWPoFktKNhilCWUiRFE7NLbK3Yp0UinJgssXg8kSmSVs\nDHFtnQ+SbenqmCJn6tVXUmCiTwzDxMeHHSkENqXj8eGZ3dOR42nkxx8foNGsr5bkHGhNQw6itHna\nDYxzkOsdSuZvtmG9XbHarIUJ4xqCl3zInDKn08hhf8Q6R7tY8OX1K+6S5uH+kafP96L7rQ8qydM2\nDbrv2B8lQSjOgcf0xGa7pmkaFp2jxBatCrZtoMiVtpTMw9MObc74BCXXgtNoKFqCfVN6eRDJhVIC\nUc14bcBKJFZJSezurRWZnjWUIN1WDrmaeXSlMWpejHNapGyFTPK5GqUqgtUIW+MSvFtCte+hq5Lj\nJzWJqhpyoKJ0gSTW9Rx0NQWpipAtchOoqNdcLilGgjeNsUgs28sKr+q2UyKnjMqZOHsZ66nKta7V\nW1dnKEqUN0ZRM2IvLsvqei2iPilKSYeHqgjcUoOBMyj7YsiSMPAkQW4aQMagKPlzW2dfnKiCYwnE\nVI1WWVQuWcnroqh/PqCKRmehMmpEFSkBJQUVI9rPghZuRJeutUaZIrC0Iv+oiwpEiYO0VPZ5LtRU\nIeQwVlX1AlXKWG391bmrlRZ7f8mk5NHeElRhInFOkY2Dq1XPP/7jP+AaRd9a/vz9Dxx2e+bZ83Q8\n88c//whFcAe/+Gbm9vVb3GpL1lYKsK13By2LZ6UUKidSkjekjJcLkH7aMxQxCCmtRK307w2a1baW\n/dPMw9MOMP7nVgAAIABJREFURWIYIyVrlp0jp8A4HCFFVEqUpLC5I1WhfMoz5ylj25a7mzV940g+\nkHzk4Z//RBxnFiuYThNNo+mXDp0V83nk8cMnYgzECOMQaDt5AHxOnMaJmIsUVNcxz4GYM661mFaR\ntKHdLPjq1Za2aVA5sVwsaIzlOMJpmFEqs14KV0HVji4pg3ItfddDimQfQCVaZ4h+5vPHezB7lpsF\nm00PUUM9ia21ZAw5Rp4PJ1zrWCjD/ccd42niPHqihvM5sB8nbIGrRYdVcJ4mjkcvxgrpM2l7x2qr\nub5ZslqtsbrBOUtKvnYAinEuPJ9mlivH1Zsrvv67r3n7xRd8/917/uf/8z857R44HA/yczo80263\ntM5hVEdCEXPkfArcvHKs1wtKSJwWDh8CRSl2T3uGYSAR+Xj/zBwT1rV0TYtrHU41NNpBMdI1FbGR\nkzNgSdrjs8ZmA0mAUsEHoIiByMhsN+dCmgU5oLSSoNukLw0Yus7JUwI/ioVfLNCSV2kaTdJSKHIu\nVcp2yQlKtRBYtK6jm5SIJYlJJEkHprU4RE21fqoKE5OWUh7olIQl4suEQpO1rkx3KbolayIZXbJ0\nuJXwqMulNNWRBXJL0OhaBMyLRl4qYiZrc0lLk3GHEpVELqBzkluARlQTypCLIRVBw6p6CL6oWGoF\ndbYuG41IcV3wzN4zzxL6ELLoyi+3EM0luhlUloAPpeotp4DKGR0iUUhn5AKNUijToK2Sm1HMItvM\nYtoqL5rNSkNUAk7jRXetX75+VV/WQ0eWo6ZQTVEVNZwCacpMfiaqjCLxunf8/a+/YLN0XG9WtP/N\n8cc//pmH+wdCTNzvD8Q/Rk6ngf/wdODXf3/m3a++wXWBtl+xWMrPQ4Q8snBPuRBTllFLRTzkugg2\nWk4cfVHqGIPS+mWc928/fh6L/m5AK8vmaktJE/2ilWvlXDAZog80GgHS5ILRgeBnZj8zec/ne7HU\nD4c1JiuctfRdS991JAVN4yDBctmxebUlzp7kEz5BzJqu7+l7CGGskH5N2wqNrOk63ry5RTcyN9bJ\ns3u4xx8nVquuLpUmkRs2Pe1yiUtXbIOcoNpEnJIZaVSKU8xkY3h7s+V0GmpCi5WwZJ94PpyxzQwN\nmFa6SasNjbGQDUorFq3lF1/egjJ0rqPvW8IUWK46vvjNlxQjgbZlOMsbRCnavuPa9GwyWJVFXk0i\nZU+OhWk6Y46WknuaxvD61TXzFNlut3zz939H03Yslj2b7Yr1tuXXv/mSrjX8y+/+mf65I4eZtjMU\n5Uk50TSy4CsY1kazXnV0raVtNRhLSJCSIac1rXOUEpnmzOl5z8PTPY1pWS0X3FytcetGXIW5oCoP\npGQI2cu8NxnA17i3REGi7lI22LaaP5yDmEkx1NxPjxL0hXSWdXaOkhAMUML6UHIjSjEIiS4XnJX5\nfZ1bSKCLMWImKUVuIknShESDfjmASuVx1wdTS5GNIZFrKpF8fq4jGjEJaWXqAWAqlVG/WN6tyhCE\nFEodK6A0KVfynpIYt0sw8WX9KtK32rGrqkYpyCC9mBfXKNV0ZJSMIV6QsDkTU+VAKgFUUQMxjJJl\npjIV+6AdzhomL0iIFHS13Muy3lb+fEFwwpTKIFdFDpkEMdSrjY7VhKVxWlg+KdcMUZ1fLPzycstB\nVy7mMSWHWCZVDbdsMVS9EZkipiSd69euuIuitRAgNJAN42nm6eMzurG01vB3v3qLsf/Isl/wz7/7\nlh8/fGCMkXQ+M39M7KeJf/3zJ+7uvuXN69d89c0v+fV//C1Ns8KYRg40WzAXXwQitS1VzUK17uec\nRKVTtxkX4uTf+vhZCvnz4zNtv2C13VBSi7HywxxPnlxxnJZCCnK9jmNFhBpJbr+53pAz9G1Hmjzz\nHDidZ0qW3MLpPGBiIrWWEiV1PcWM1g0+FxwFp4XnUopQx1abNafTIGELxyPdCoxrK0sCJh94Oh7J\nOdFYxWbZEcpI0yj6qyucsWK0IVDyTMmJGMHHwOkkPJm2bVhteparBf3SAYKw/fTpkSHsmEJi21fS\nI2ANFJ+JMdN2HcY6Fl3LdrsgpcTpPDKMA+vVkr7RMgdHkbXGOMN6taCkgj+dSCXKqCYEYk4cTp6H\nxyPv3r3i5mrFatGgnbgqTSvRYsYINdAPI71zvH1zw8fvF8zDQKTgnCWEwDxNnEeJrnJtx/X1lmHw\nHPZHxuEMKqGNwnYGpRbMzjKdB9Z9Jyn2VVGhEQxvWqSXh1IezKqFTgGiIvmqXChGZsRWLM0lB0Lk\n0gHIm01dEmokv1NnJHEnivU950uc26VIVTpfkSKjUGj7UzkUb70lFVXT6evrmmuRQP6l1MXEo2uQ\nrxYKoQZKeZntApSiXnCzCnm4NdX4oq04OrXcBXSp+T5K2B5k6cwzYlVP1O5SJZkfZF2v5VZ0yyW/\nMN+puZv6YrTRdb6u8sW1Ioeekh9FqrmdyigxIeWEKrHeIKSwG1Uxu1qBMRI4PGtizSMl57qMvqhR\nLpLNWtyLIH8Fy1sLufEShKwtqpFnOqn08mKry0FQRSGq/s9PGqJcD0nRb8uyWYB4FVkuf++CHFA6\noYuEgrR9S985XOvwY8TYRFPgbrPkt1+/w+TMsmv5/PDI8XRid54Y5sDD7shfPjzw+uYzD/dPnI4H\n3v3ya25e3bFYLVFFbjyqyCjLGCNGuGJf3vraVNlpI7WiXOIG/8bHz1LInx6fuH1jWV5tIFv6hSA5\nrZ2IJVJIqJTwQyaMAT9GStNim5ZeKzZXW3mDZ8WwO/L4uOPz4w5nJdrq+LyntRKRZLRhGEe0tfTr\nhpATPsxAYZ5HlHU0rZhrjscTzw+PTKcjy+WSxXpJt1wKpchaPj/sCTGx6Ku1d5jouszi7pbFsqO1\nipxnhjkRQ6EBYgg8Pj3z9PzAr755y3qzxbolv/rVGxpreH488P37R077E95n1l86shG5GrqV3M45\n065WuLalX3Z0m4526DkME3/5yyfe3my4XrSUeSJoR1EaByw7Sw6Z4yxJ9yEEcizMYeY0zJzGmWVr\nWTnwyspDlgrzoFFNh3YO2/WoVNhereVhB1SSsYQ2DfPoJYHpNKGtY2M7+tWW+w8feX64R+tIYzWu\na+hWlraXuLbT/oSzhpvNiu1mjY8F7wNh9qSciVm6sFyv1ymJbpyIMDIKKCQbs8kFZcVAERKQPKpE\nxDdbzUWIqqMixiiIoSf5hFeKoqVDs8gMW+siqgst81dT9d4GQzGW2SfCODHHWQBYSkBRlyJ+gVwJ\nUEnkZVqbmhpSkQRFgqJLlUgqpbD1axhqqrpu6oy7doza1oR7TY4Gkqh3ElTqtpLI38t8NVuMsVil\niUWcpSlmYZQVIWFprV4OG2nLq9QQBJylJPCjVMSumGcTKoWq5ZbXVxQpl1uNojUCw8qNIgdTAVCJ\nUESlpIyVJd9lwF7RuylXrXtM9e9cqZLaYJ3F61BvInU/UG8e6eKMrYeCrAw06ZIIlUGny6z+p0ZB\nxDg1bLlaL7XSOC1hypurFV3v8KNnPIz4eYI48+XtmnX3K+6urvjdH//Md3/5kd1+zzl4TvPM0/HE\n0/ORh89PfH7/gf/8X0/8+n/5LW+//IoWRWPE/KNrVoBthKTyQv2ss3GjbdWeR5mb/42Pn6WQj1Pg\n6eGJaZpoTMdm22Gd4uH+QLdasd6uWfSOwexJqTBOE/7saxhsZAoRlKJrO5basl51vErXxOjxIcgC\nyTaMMeMfDxINt+yxfQ/ek0nMOTF5jyuZRhd80ez3Rx6fT7x+fUszTqjgCcPE7Zd33L65Znu74dP7\nz5yPZ9m2NxprCmU6MxXPOQT2uz0+B4Y5cDzNnIZJwpYx7B/27J7PJO0I/szbu1sW3YLb2yvatqVr\nLZqESsJ7TiOMQ2amcHt1Rd9aUpj5l9//yDCMoODN2zt60zCcPQ8fdxy8R7cNb97c8Pj5GVLC5kTR\nlpIKw3mqVMQkJo6UOO4Gdo+RnGbJDTQNxQr3oulWHJ8mnh92GFM4Pp9E/aKVYDetZrHqiDHTrTfc\nvL7iemNp8hanE5/vH5imwjjNPO4njBGuxePnA8+7HWi4vl1zfbUm58LhcEZXW3xUCUuskKhYF55Z\nVMoZcjZoNLnRlLbgmoIzloQhV5qhKhFbElZVUqSSeXlR4mSMs3SzFFnAiXobdFbkqrYggXYNjXPY\nppOC6SdKyqhceSXwAv9/6QS1LF/ldiNz0BiSSAFNA0HVw6WglcjyjNKY0sgoxmiSltCMy7z8p8Il\nBbJYKFFRSgRl0MZhZCiILqaOQTI5BhEVZJnPSqCYYG8Vps77rZx3F+u7Li+HjFFKmqwokkVTFNo0\naF2IWkNNsYmVa6IuIKt6TdHOYl0LC0NMkVCT5S8tdEaTL1RCpWrhzXKzBrKO5CaJS7JurHXMdWok\nr/gl6g8VUEY4LKXIzYtcg7YVkkqVLwdBQeVEIxpMUeigcMbSdo7lekGz6MgaxnlgGgbCNBPDhLaa\nzbJh9ZvXbK973r694X/8/o/c3z9wPsmYc4yBx9OR8D4w/h+Jj58+881vvuGX33zDu6++ZLNe0HUG\nVMHHGaU01hja1lZNeWXJFE0IMir8Wx8/T0LQZst6s2C5aJmnLPFng+e82/H0fKB5XPLq7Q29MbjF\nWuRoU4AYsbmg2wxK4axY8hWa9VWLNhBiZJon4YTnQvERpRu6ZffSNWsyqbI2ToczT/4J5RyZyGrd\nUyjMwZNiwaRMd+yJJRJDoO8cjVaYrhFtd85EPzEMJ6ZplkzQxqK0putb1usFm75h3WkedmeeTxNj\nHHm17Rg6h0qZm+sly96hUSwW9RqsLNa0nOdInuWNEzGEWaLaplkOCLkBa7RrWG4XjLtMQUsSjCpo\nC30j4b3zLDyT1XqFthrdGK6urtBFM4wnHp6PaArrrqfpGxa6oWllPjdPMzlFchIYWFGanCLOtXRt\nT+talHXokjjudsyTJ8Yopi7E9NAtWlrn6F2BbDmcR+Z5IvjM8TjSOMN61dG3C3JRzF6ke7lu8WWu\nKulRKQNZ0mZC1MIMV+BaK9rirCqHJEgxx1ar+0+yFXlI1E87MSGgVM6JFHIQNK5zDW3fYRpHnsNP\nygn5VDCV1HdRsFx+WaQTzKrybXwk1SWufhmuiPzw4txT5L8aG5QXPXsponQhZ0HZGnnIi65WfGUA\ni6nLbaVMNfnUgzGKjlrokeqnrhYLyoIytbhWQBXq5WteLOU5Q5wCbaNxTmNaOQRyksPDFzFRKWTH\nKocpde5s0LrBZosrdXxV8cOUIjmhNSACpElPqqBTTW5KwruRrt+QQkDZLEEjLytUgR7Iz0YOWpVT\nddRStfv1x13qz6cICVPzE/WxaRuavke1LadhZhrOpOEoPw9rsHRQM0Jda2m/uGO5XtGte/7w7Z/5\n4Ycfebx/xqdELjM+ReYfIsfTyOPnPR++/8wXv/yCL375BXdvX3N1c8Nqu6GxnexItCQdSdBElFFc\nyf++LPq3r19xe7Nhuep4uH9mOB04H8/Mhz3vH/acM7zev+NXX33Jq+srVl2LG2dSyHLddLLBJSuO\nh2ey92IwWnSUkhnHUZCaKVN8xHuP6yyLTYtJSeaiWQw5u2Hk/v4B3bcsVkte3W2YRsn0C0pml4+P\nO/Jj4XA+s6wSSdu1xEnkYD5FDifhi49jYL1aslr1bLYdhEirI3fXLdO3hedzIIQZVQrTJA6xZd+y\naB0lwnLlUMbU7sTihgkzTYzHPdFoUip1jyAaWj8GWutou4ZNsyYoSUFZrVZY67AV1hVJTGNAa8d6\ns6JftriuoVEd8xiZY2F+eqSEiLMFnVXloDc0riHHTJwFqq9oSEUxzxN931TJaM8weqYp8Pw4EVNi\n9EF6Q2NoFz2vXl2x6DpKgfV2w+50Yr8/4JqO8zCxVi3vXl2z6Bb1z5qkeFRKnDLU6uBr7KUUuZwz\nIchM3NQD7NJNxix8dbGcy9Y/R1VNhbLUUy8FNXNJkgeq7hmMUdhWTB5KK3mwUpS5cFUlipNdv/y+\nXAo6JVneZUtIqTJI6jwfCQ+Wj+oOrYdRKamqBCXoWSN69VAkPUaVRDYygBGZCbJIRVGKwWRdFSsW\n3ajK9BAHZqnMa1l4qmoWEl55UbIPKnXYrKuuu0j2GxlZPaSQJQhYG1QjDUfJRcYY8/yyoKZkmTvX\nsQdKmCPWWLkpKFnAhiSZp7L85eUQSFr4NFYpIWMmyQY1xqJVw5zOdewkBdwi5qqkrSxi6wEks/wq\nR67vJXmteNGdl5xBy76gaQyubzF9j8fwcP/I86dP9CayWHX0iwWtW5BjhBIxRbFYLVldXbG5u8Z1\nLdoYpikwDCNzDPgk0Xqn08znDzu++/YHbu6uePPVa371m1/yd3//a37161+zWl2xWKyg7aQOZJGk\nxphkZm5/civ89cfPUsivNg5rMyl6XN8QZkMJgfP9E+Pjnqdh5i/vPxL+S8D9p//AL3/xhuk8EmOh\n7RcyX9OGRjcsN2spiD7QGEUMnpQ8TWdojMwaU5hE45syj7sdfhowRK5Wa7arFvINn3cn5tnTtJZ2\n0dE2DufEEfq8P3IaRpq2xdi6DcdwdXNDCJHZzzSLBWWc+eH9PW2/Y7NZcHuzRRWFcT3ZWPrliqst\nNO2Mci1jVqQQOY+eRjd0fYdZtvR9T0rw48cniilsr5bEEDmfBmIsuL5ns1rTO0ktUY3lNMkbpF+u\nRcPdOhadE5MSYFIhO41fFeyqp1l0uNaQPbhe86Zbc/vmPxLmRJgSMQf63tEYSEHkiUkFlpuenBvm\neeJ4ODEMZ1yv2V734hKdhWI3+YlFjLz74it88LKBbxSmKfiQmFNgtenZXC346su3zGNksXC8ebti\n93Rm9M+VKS2Uk6wVqshC0pQiREYSMVdZXw16SAUap7E6S5B1bkixEH0gXjpdXbMrtca4BkpNcdeg\nbSOdWUqYIkUya8NhmNFTQGXww0gKuaoiLhbxqhRBWOF5Fot6UZbktCwIkQIaa/V3Ttcdn8jyJOFN\nk0uD0ZIc1DtLjJEYpCiVpEhFbgtOZWydy+dLN6kNFF1zTiXNJ8yeNAkBUJfLSOPi4FRAqgHGWjTd\nVIFOVXlcijpZDEjGKqyT8ONhiFgjHXjKWZbtSkYFuUr8TJb/lmrYyjnLc4FIBa0FbaV5ybVLVnUR\nm4scYFK+RM3hnCO2cD4WtJdwC20alM5iFCsaS7moLmVYViX06nJaXLp+qPI+eb21dTTdgna9xix6\nHu+PvP/uI59/+J6cJzZXPXdvrnn3i3fiwzAOZwvJGHLJOA2//eZL1ssF11e3/O53f+DDh4/MsyeR\nmHPkHD3HOPI4nvjL/QN//PY7/vv/9f/y5Zdv+fqbX/L1N1/zxS++RDVyIICunHhd//////GzFPJP\nH+9ZrpesNhuabsH1XUdvO/J+kABjL6Q7fz5x3O8Yrxb4Ocq8Umt8VljX0W2XdGqFMhbFmcPzI9M4\nUkhkZcnO0RhZIMSYmCcvDtEpUpLH6pFGaRZOs131ZCshtM5ZijbEomidpVssKFqRSmC13rDoelJM\nFKNojMWYAtowDKNEW+UCxrJcb2Rhsuy43naEsqDtjxxOZ7QGaxpWS8d4PGOMwVnHOAQOh4nh7Nmd\nR9qmwRnL4TAwzTOA2NpjEsfneca1LSEEnp+P2H5Lu9ywvbmit5D8xH63o1RJ02bVo1NiPp6YjpnG\ndTTW0BiwRaFbK113Fn1v9CMJ6ShTjD/R9FJBGUsuMIfANDeyuFMwTRPP+z0pZe5e3eCUIkVhZU+T\n7DAaZdisVjTOsrla0VyL6idHmYk759hsN8QpS3JUji8jBnkGxTiRSkYjCzZVZLRWgGwKllQVg5pc\nvLBZSiGphM1grcFYVTnWF9VJ1feGRK7GJxUjeZLyawvEIOOiouXxUVnQuNlXk1mWzEVV5PvIRTgw\nqtrwmywPp7VC6JNFqiQHxQjUOS2l1HSkSE65qrJ0bVvlqp2z3AQuKhCtZYGorUFbLQvdKK+fumjE\nkQNSJsKIX6NKJdNlWcnLLlFez2qkqXOnylXPFGXkllBVFZdUp1LqrUgBRly3WVegV7moXApKX9Ql\ndcx1uQ3ULy6UX4l6I8mYq131NG0nkLQQRLZHefEByF6gTk3I6Ar+0lWOKLHYNfDDVFWPc9i2xXUd\ndr0gNQ1zCBzPo4RizCPDeOI8njmfB6bRc3N1y3q1onOKpneoxqIzLFzHm1c39eaRcK3lu+/eSx5s\nSiREgjrHwGka2R+PPD7t+PHDPT/88IE//el7vvjFF2y2W65urri63tJ1PcY6gX79jY+fpZDff3zE\nzwltO15tb7nabOD6FjXOpOihJPpUcCVxfnri0dUAWDQcjpx8xi2WGKtxpqGxDapt+Xw8czzu0Y2h\npRNNtUnoVIhzYp4qY0M5spIDoeSIzpntqmPCEKqAVHgaCdMYlquOfuE4ng4s12s2yzVxnkgJgveo\nPBNKQiuFcy22tSyWa27vbrHKslr0bLdLjOlZr9ccjyc+Pz7TtQ2312t2MWGUwVnL+Tjx+Ljn+flA\n1JrlYkFrLc9PR5SGxUK65HEOHAePD4mrzQqnxQGYckbbRgJidWY4POHnGYyhcY7etQz7E+NwZvKe\n9e01qXXMRYhv1lr6ZUtnEVnnEFBNR6p6aV2vo6oomrZFGQghczx6jDWkmDnuznz++EiMCec0jRVL\nto+Z8ziSY6E1PX3bYVtLTNUgFT2n454YNI1zXN86xqOH45k4zuiiX6LABLuqyNlQsiSqKyNkuRhl\nmZWpbspapAvSyccsapaixOhjK7e6FCl6MWbCLPNYWfuJcUc6yCq9ruOXi+9E51w55VUymcvLvL2Q\nZD7ciMVa5VqqG8HcWiMKqzLJyE9muRliIUSh56UKxNJGim/JF+ki/DTzr+Lny0w9J4IPRD+RSwQj\nIxfhdmcqIUCMQEXkjxlTmd+iXtQysX/J/BQ5c5IO3xiUc6R6kCkyFCPPagatk4zD6vhHVSepquLv\n8kJ60VWGqOTvXdVFRcsSVF3EJFlm3NY16NbSz1eyc4iBEP2Ly1aVUheoikyU8ZnSskDOGYzMzIVt\nIl247hy2r8lOrePkI+dxZAyeZDI0ijjBeDhz3J847s7c3h65utrS95b1pqdfLjCuQ2lDbwxfvb1G\n62+wjcF7z+PDE+fzQKru3VRfzzkFhtnzfDzz6f6RP3//nutXW17fveLLr97y1S/f8erVDYvlGuv6\nv1lTf5ZC/u76BlwDKdN1Ld2qRxfH+t0rbs5viCaxioHZZ6b9Mw94wErhDImPuwFcw+7pE7/6+hte\n373iZvsKv9tBDDydDlxdb2ldVzsa0cj2CwjRs9gsWK+X9J3j8fMjj/cPLJYGbIMujuGYWK5a+r4h\nBI9utCzq2jdc3Hdf/OY3NCXz+PET//f/+QPPuz1PhxMlZVzT0LbCCjcackqM5xnXW95trvmSK5o/\nGeZZDpbNsiP5SJgnckKSh4zm/vMju/JEow2j97z76jWv393x+m7FOEaWB89+8Ly9u2LpLJ1rGOeJ\n/fMTxv6yUtgUV8NEKgUfAs+nET8OxGkgx5nsHcfhzO75SJhmNtuO1283FAzHY+T5GHDdLOHAShQA\n682KzWpFSIVUChTNMBa0TuQUmfyEnye8jzztjnStQ5XCPAY+fbpnGGdc2/H67R2d7vjw/oHT/ogm\ns1l2NF1H2ztx1aoGHyyHE8LDJlNyrF2vIkQrMjkHjTaiDVaGkgVRysUVWR9mpcTFWGqnGrKoHaqA\njjlWO3ySyLC6N5VxBEIWzLqOJYpAvpQuYIwEKlc9tbpAyGtToFNBWdFYGyO3I6wFo4m6EHJiShLI\naxCgUqn7kKIvzlIrv5bvBJ31i+svGUk1yko62uADMQVi8FIYtaq6bamKqigxEBlVl2uStZkQt6os\nXoXlLbdRxZRGYon4KCoQrYvURCWSTVMRq5Xogsp1p6XF6p+zgqxpakpRUQWNrTp2+RzRj2fRU78Q\nAgFtSBjmUJiOM1OYeHjcV5yxjEos8rnGZtrGoFuDxomD00gu6iWUwpSK1K3dOkpuNT5lTk9n9s8n\nzueR5e0a0zpc39OXwuw959MJXxI+JQ6nM65zmJLpnOH6ZsvVzTXLjezRbtYd//DbL7m5XvBP//R7\n/vzn9zzv9n9l7FF1lCVNWPCJ4Tnw+XjgTz98YP37f+X6asPbt1u++sVXvHnz9m/W1J+lkLuFozQN\n2lly8gyHPdF7TsPMOSbOqXCeA/MUaIxlve7Q2tBYg7Gad24D2tKmjD8dONpMnhrQntW6Rbk1q02P\n0Q1hirSNAoR3XVi9KAKGIXA8e45DRLlA5xZ0bcdm44jRM40DkPFDIM8yYthcb9hsW663Lel0ojeZ\nm6s1z/sz2jS8ef0K2zf0ix5jG2yFOx2OB6wzrFc9m3XH3asNz097zseR1hqiUcwhUbSiXy4pBT4+\nHdgfTgQfUChuvSgwFIVWazqt2AdP9jPFKFpnUK3DdY55lrzO6TTwvDuAKpyGkY+fnzgfD+jsWXaG\nScmDHH1gHAZCGBmnoc72VzSLa7rlAkUgxZlkNHNKTOczz4cDbdfSNT06Kvw4MY3C0JmmgPeB/fOR\n7s0ti8UCaz2L04Jh8tw/PVO0pl/0JGAaRuk0i6LPMM6TGICKFdQxgpillLrEyrKQLZFYxLpNrGMh\nXapyRVfOSSEqWWQprbGlFrwqxSv1Si4KgUpKrIHN6kLm04JTRokipHrBX9QSWusqY5RusjGXVJeq\n9giRrDSmbaB+bvKJzEyqoQ45xGpIqYnwSoskUkEVtPNX4kaoBVLi5UCpiIBeiqQapTriMUKIlE2q\nonrugBq2XG8sui4/5T8KaxohTVKYozgLcy3iKQnKN6UorlNTSEZCnDW6BiLLDFwwt6Kmokhknobq\nPq3hxVxUOXKjMUq9YAgEVwtRF8acmXYDp5Pn+bDnwnXXpZIQdabYRGvETSv4gEZuMlpVy7uiMQrd\nGIya/QK9AAAgAElEQVQTQmXOMAxnjscDh4cT0yBSXLuQ/AKjNYvOcbKWVGD2niMQYsDO0oiZUnh8\n3nPztOf65ort7TWm03RG8cXdmvCffkW/bPn22x/Y74/Mc9W+lsvNTRbdMSUIigHFMM7sDycenh75\n8cMTV5s//82a+rMU8mbhKNZhGkvwI+Nhz2l34vn5wOP+xH6cmbxwVlzb0C0WWNNQMXHcdC2qaKYh\nMh+PPPszQ1sgFoyFddOhDWLP9pFmacTkoRRm1ROCJHoP54nJJ7CSuNL2CzabNX3rJFPyNOEaxTAI\nLjRqzXrb0beKpsyE6YTOnrvXV3zenynOcXO3ZZgmGtsQU6Yxops9nc5Y24iDsR5IJScOhyN9vyAp\nQ7ANbd/SWk2/XvBqmvAG/P6IqZsaP8+iY88NKhUpLgWRO3YtxnYopXm8f2I6NpyPR358/wFtCofT\nwPsPj0yzx1rYrBxzUSxcR1MMKWVmnziPYjm/ft3z7s2GbrnATyfCNJKUYhyEXHg6j5JP2DqyVszT\nxDhM7HcDPgj3OaeMs5blsqPrDdO44nye+PS443A8EUuWLb+VBzEURZMLYRg57vZoIy7XnMSWrorC\nchlnFAyJrGQMlkMCWnFBmnpll7pD1rIYtFoCEwR1Kp1hqgoGub+/DGEo5cIC1BhTi0+55P9cJNBi\nSjJKwhMusjdxYta9eKkhGDFCK8Ut54L3iZhmUgkSIFEuNBeqiqROjWuGqQChLvNkWc6mTH2tSzUN\ngUqlEm0rRVJXvbS6fNNAlfpdUuu0EsStIcvSkZ9cqZJSIwwh0eLL75e0myiALgs08hobKitGV4t/\nlrFVQTAHsSRJRSqWrP6KCFmhV0DlslxEQUYOLQ1TzuwPnsPzwHk6i6JIWQxNXUzLOKkp1JuNwTYJ\nW92mhYrhdQqbDSZnVAjMU+Tp6Yn7T5/Yf95jlWa7XbM696RpgphZNJq+c5waR5pHJj+TSqKp47wc\nMs/HI/vDmd3+xOthol+1tIsG12ne3G1JFMbJA4XDvu5isrwfLpLWF327UsxBIuiOw5nP9zus/nck\nP9xuN4xB0tJDGHn8fM+n95/ZHQfO5xO5ZG62G9p2wXq95ubNNbmGN5xPntN4Ej7xVLBdQ98btr1i\nCkmA7zGhHo+EEPGjZ70Ra3vrGoHia41uLZmWu67htbql6Ttub16z7Jc8fPoIaLp2SY4jp/3I6TQQ\njWa1WbNZLOhyYTiPjCnSLODu9YZrLG9/8Yp//fY7DocTD58j19drKIoxFHqlOBwmnp5PzMOJ3dOe\np6cjWR9YXK25fnfH3a/f4hpDnDzLr6748v6J+89PTPsTK9uQUuHHD890bsliseL1V+94++4N6+WK\n6XTmT99/5P39D+w//CiUyXnk/fv34mAMkRgjr1+9oijF8Xxm3Yl2eIqBUgz9asVivWGYzrSrHmxi\nnAfuP+24/3CP1RKY0XWO26srrl/dsb6+IvhEMprDOHPYfcC5huvbLV98eUvXW2IaKcGT44wxsFku\nubsVP4G1lvNhQGvLcruhbTTDUTEcTpzOZ3wMUArWdhjbko2VzhDJftT8FEggC7RG5sVay1orCzPF\nVB96URVMVFUApVCv6KJquRRP2SmKjsNagS4JrqTUpZl6gWHpekBIokuo1/mqZCkFZYSvoXIiowi5\nkMgVBQCtsVxENRcnqnyGQhdZPqMvynYA/VKgU054LzZ21za1TtfDRsufVHLGxEsVVz8BmJQcVCUL\nsMmUmagtEUuKhawbGbk4i6ansRodJlTFyoZJXnPJAIVsRImTqCqRIpz+v7pHkHJ1WhJRdKIYypCL\nILVAMkeNlrm2bgTDi9JMc2QYJ7mx5SRMEp0RcIlAtExG0L5Kwphb52i7FtvIaMpITgchRp52ex4f\nnrn/9Mhhd2AeR1QprNqOzmriNBPGiTiOLKxlvV4w5czjh1Fu+KqgS6DpOmg10wRHHxjvH3naHaTu\ndA7XWUoD0cCbuzUxTDhnGU+BYZzw3pNyqGYs+THJ+CXV10Re43AJOPk3Hz9LIf/hux+YEgSgW2ge\nPz7yfL/HGEPXNfT9gs16jXM9jXOEJItEbeVNUmJAA/22w7oGowuzD2htJbHGKLpuwfl85nAcWZUa\np6U0fgqVSKpIMeBHj/eBvDuSvWdeLyWlnkJjNXOAaY6czjPZGs7Hid3Tiezlip1ikpHEOFNsYvIX\ny7Z00NMwi1rDRzaLjpwy+/2JH354z/k8oqzm9ssrtl9es367xi8znkRREdUarvsr+lc9eZiJhxm/\n90xpQrUd3XbNzesbvvj6l9ze3KIi3L695/PHDzz8+J5iCucw87A/s2odbd/QGcdq2WCsY7nsWTuZ\n74Uwk41juV5y82rLIjj2x4Hf/+4PqGIoqUgB3nQ0jZgVUvGgMrYRqdtabfB+ZrhZE3MW6WLJPDzu\n8OMIMXD/dGZ/nAkxSkBFRnYJaGyvMToSA3gfZP6upPPzPsI84NpM1/fSPNf3k0YWdilnfI5QGkgO\na60UNK2IsQACHbKGmg4v1L7kg1jdS53zKkV+EbwhGFIutnuZmesCmoS2tjLK5eunXIhSreS6bxSN\nknlvzEb07/UbLz/9QhQpNbZM3kC1M7t0YJJWUfVzdUZeHZUxBskM1fKaaCNgKmsUpViZwmbJitSX\nwq2q/akIvKlADdspKFIdG8n8OGuDj5lQICkt0YC6oE2isVoWjinImKVkktLkai5SRYuCSLaeogTK\n+UWKmTMv2UoGanZp1fIbLXurtkU1LVlbgk8oJZA7p4oofoxFm7YGOQiiQNXXNQONcygDqQhnaD5L\nytXTp0een/ccDkem80gIQcxWVuOMJmYxwJUYKTGiimG1XhJMw/OnZ1L0woJSClNEUWQXPdPxhJ8k\nBi/GQJdaOtUyH2dxtFJQPrKwDe3aslw4QoqSMXtpuCrDJ9el+eVov8gm/+3Hz1LI//D7bynGgmtw\nfcN5NzAPM6tlT991rFcdrWtoOwsahvOAcwajhASoi1DwFusW11pKzsxDprUNSYlZ4PrmFtf1jNNU\nRfSKFAvnwZMQGmCOiWkYOR5kOz2cd1xdLehbMdM4q0nG4rqObpkkLEJrzueR42GitQ0lJg67Hadx\nQHcNZuHIMVfTQuFwOJFzwThJp0kpMU4TT/sTIUeuNxvWb9as3y1pbxqGOBCjSKpc1lhn2LQL3M2C\n0+eBfRnonaNf9PRXHcvrJYvNiuVmQ6Md25sNt7dLfp9Gdqc9PkZOU2DRt9i2EbmdUWJCWixRqRDC\nTCLKzLOGJ2ilOJ3OvP/hE1Ybloue6+2Stu3IZE7TzDB4krVkbXBtj9aK9bLn7kbGS0lrxkFUOMfd\nkRRmnk8zGcVms0RR8HOgFNisl8JyjyPDKXI8nDlPEyllueLbhmmaQXvprKoFHKXF1EFGFWG4+5Sl\nJWyL6G7rsq7EJPI3bV7UE6KGkAfkwggBKdYvQc2I0UZ+D1xGLy/671KEpZ0yKdXQJKQoWuTQIBsJ\nNY5grMjuXo6iIgVN19QYjRR5Qa/qF7l6MZcACY1RTf1eBSyXan5pQWEaoBF3oNJa7PJZ9g+51FCL\nQp2NX2SAl3g5+bgQvIuSeOWQECRtEQkjulSDigUdKEEkviLRruOpagiiUHG69fe/2OO1PBtIHqeu\nC1mUIauCcg3GOYxrybolRE30ojZpuxaMwmqN1hZlmqoAUlgti+sLJlYkwZlSAkOceXza8fHDZz7/\n8IHj8UQIQUZupipblCEV2VtQjURWF4zRLDYr9AJ+7D8xnmW5H1XGpERTDE3r8KMhzIo5RpSHYiEH\nGM8zfvSEEMlK/s6NtSw6S1EtKRdmn5h9ZA5e5NIhEFKUSMPyt4s4/EyF/M//+hfa1YLlds2qrFl0\nHSvXkVKEkJmOE49PR25ut3Rtx3E/slq0rBctV9sevzRiUMmJVjtxYa17yhwZgygp1tc9m21LbxPP\nj/ccT2dhjUQlCSQEtq0YZmznSD7yvJ+ZfOaLNwsaK3xl0y9Z/3qFdkrewNlzPg18+LzDDxPzODOM\nE3P0rDcLumWPTmCyYhoC73/8TNtbvv7mLXOcGaaAz4m7tze0nWV7s6A0mWE6EU4BdCKGSJkzTAYf\n5EHcLjVZFdytY7NYY5FYOV+O3D/+yH63J82FV3drMTttVzw/PDDtz6iUmXyoQcIZYzrWK83aOeYI\nc8hMXnH/uOf5eOJ4OnE6zYRcuLq+YtlawjTx9PjA6XDgNM48HweOp4HN5iO3Nz9wtd3y7s0tq66l\nKJFfJlU4jhPJZ/yc2e8ngs7cvNryn//hGwkWCPK9LRcNKgXG04nD45nPTweeDkcyhevrK+5e3/L8\neHhJT5EA4xqcoGT3r8mYGkgx5wgKnKMuumpGY0qYKAtQHRIX1onSshwzdU6pSyHkKIoM4+SAi5XT\nYSrboxRUnGQMgyFfrOSxSJhFXRRGEjqLMiOrLOlDF4liuUjyLBqDNbLUR1VcQL4sIRVFSwCC0Za2\n7evr4CEHisovI4o4J3IylEagVVZbuTkokR2mLC5KGbFAUaJAUVoT0KisKsYWfExEJaOrUnklMWtS\nkZGKVmC7FusMeI2uip+SMqYYgVTlunPQNcqlyILYZLHji7rLivLHGOHTaE3Tt9i2BW2Zzplx8KRY\njz8DBQNF/slRMafMhAQ/y44DgauUgnWGpjPsDyMf3n/m+z9+R5xnYpK4t5xV3TzIoVfH+RRdaBqF\n6x2L5YLtds1SGbZvb4kfAtPpQEkShKF1oXOWftlRFBwOR1IMzMeEG2a0sxQjWA3vPbkEtPEYDV3b\nsOx7ms0GZS2RwnAe2B1OPO+PDMMkByX/jjry+6cjN7ZhdW1ojKNvhV9SisdVlUfwM2H2dK7haulw\nBhokJFWpixY1cXje0VjDatnVDbDGacN0eMIoaEymbw3TOfL4cODH5zPjPGNU4c3tmuVqges7vtrc\nMp5npmHm6XFP8oHVekXTrbh9e8f2akMuEP3E7mnH4VzYxSwa9L5jHEa6VmBHm+slucDheOZ9yuyf\nDnyvMou2J2Q4z55F39C3Dconnr470D03XL1eo61h3ff0rsNnTzKF0irCQpO7AqngSeSQiaNE3x31\nSKM7VNJkf42ziuN+YJoirev4+hdvWa8dxlhihLs3t1xt1vRdz81myzwHHj/dczqPouF3HXbbyChm\n4YjjzPFoyMUKbwVRcqgCnTNcbTteXa9YLTqJjtOa9bplseq4M5ppvON4GHh62HMcT5gGop8hN5Sk\nUFkznz3TcGb/tON4DtKNTIFsFNNcQ25niaArGhpdcI14CITIKphEMecIo3ye5WG2jfn/mHuvJsmS\nMz3zcXVEyBQlulpggAGGXM4secn//xe4XJsdPd1Ao7uqUoY4yuVefB5RAImr3YueaCtLs6rszBMn\nItw/f6WYYXLNPcziyhT3YkWN69d0DYxC3IWpyKJ1hTSqBrwShznViNSqkCjXTaWmJyrp7ETLxIyW\n56uoJqKLrBGNsg7TNjgr4Wml9mBepuVcF1Ky9GQuS2RZvODQ9blc3JgpZaKS0KisJefa1MleWXHI\nXtBWpapaPCtJaMRSipGoXi/1ZxfpoEz2IusUPtSQtZJF1diqjRb8SIqtJQQKY2oaqeDXl6Jha6TM\nWTsniaJWoJyCZvaKOAZi8pI2GWrXad14tJU0ROcqjl+1/DkJLFIoaKfEx2Ah6MjL0yuvT6/4ealN\n9rna/LkQFNXEJHuEj555nkjnM5lEMaBXK27vNpwPLeNZ3icpJlJIZB9oG0fpWjEIRjGhFaMxxuBa\ni+s6/OuBOAdKFNhYCE+FS0XgYqvpW0tzv2e7XfP0cuR0GuVU+hcev8hCHooWob82NNrSWktjFSlL\nM3pKiRIlqc9ow+1mhVMZcmTxMEc5xhElj2NCcr1RGu1abKcYjwec1Tg0feeY2kbS2aKQJSVn1psO\ntyqsnOHubsNRaebzwuPjKyl4lFb0TU+7WXP37h1KaSFDlON0mCkq084NnbOcXi3Warq+4eZ2g1aG\nxlj2mzX+ceb18xG/ChStWEpi3d+giiIMkfHzSDoZuqBo+xXt/ZbdbsWQFanLpHVh1JlgRaWQ5wyh\noKdMOnuiKiTjMRhOtuCcFSWDcWx3O95+dU/byJtlnDL7mz39qkcpw+Z2RxczfvFs93sMhfv7G2L2\nuNbgGsMpZbqVRbkNhYQbBpxzrLuGu/sd97db7u63dE1D8JGsMsYp+pXDtp1Ege637LcbTucz4zQy\nDwtt19L2PZ1zLNOZ4TxyOAdClAXLaINpLH3fsd2uscayxCR44jTWqTZfsV7J5i5ClRVRBMgRX6zq\nqpYSlzpNykNVAlOO/NK/KROwRpRFOYcr7KCUHOdVVUDUOBUKBSvi6ypLzpW0lBPVJX+lJNkBLhna\ngtxXwYwyFG1Jl6jbIqfLkqSh/pIHDpBZ8D6SfboSpIoLhFrq5JwlFlZLDLCrr4uuNUkXLbOq0saS\nlTT2IHBTIglWmyEbiy76+tuvsbp1sxA6w5K1OJ7luzIXAaFsfrWqTMnGd/kT5UURhVCu90TBOCfG\nIRF8rE5RMMaIgkhdei/lj9IFleXnZV1QUcxfioJzmqAS4zJzeDkwnQZ5DTRXaanIEiVxsGksrnNo\npxmnkeV0IhxP+HkmlUB/s8O5Dm3kM6VKvp4UwxJw1tFZR9/1zONESem6aRqjcbah6ztiTMxTBAqp\n9sLaEHGNXEPXtuKz6XuMNqz7jnn2f3FN/cVCs9quIYeEigmHkFXnk8jWUioQDY8PZ14PE+XrG7ad\nxVlLUoqXg8dPnobI7c6xxMC//fxASoVuteLuzT23akOrZcc3Xcfbt5b1Zsv7bxMPzwcOpzNv3u6k\nhisVFh85TxMvpzOPDyeIgcZC0IZxOpHVG3abG3LwOGe4f7NF95lpOMM44meDaRzrXcdq3dC6hnXb\ncDp9Q+daTscTbasYQ2AcE/OYKEkKmrumJ8yezz+eefO2YVIzjdcUY7G9phTP+fWAtwrbtOz0GlsM\npmRU59i2shimlCnJkzVs3t4REEL35mbFcD7x+nzk+HKm36wpWaFjwbZHfEy8vJ5p1mtu9lu++uqe\n58+fOJ4HHl4Woi80bcebux13b+84vLzw8vjAuhESsRRDzJlxXmSKTpFxHInJE0KSCcNZjLW8+/CW\nafD8+P3PvH37hq+/e8/79/e8PD3zr//0A4+vI2mYcQk2xtJte373u1/x3/72dzKVRhhPM//8f/8D\nL4cTU4jMXnB2VC0RuOqpFdFfNNZOCg+UQalAKhFdx/FS5IMs8rSqfUakjqpkSvG1Fq26i5MVwrAq\nVqrURfBfbdCuQalU7eUFh0A5JRdiDpjiwNgasiUwRMwZHyJZK3xS5HkmhUAqyKRXe06V1mQl5cgK\nrlrrXBdAat4L5GtJcS6SYFgy6FjQXoGzddMx6KYR1UgulCt2UZ9WvpC/BYWVzRM50Sik0xRyJUm1\nWEJNgWxISyDWHldjxAk6GWlJMkgujDJi28+AxWK1vE/oHLO3+KCIvghEZCzGGZoWnFMY6yhIw3wu\nHmMaSXw0Gack0G6ZAiVbpuB5fj0wHs7EGLBOThHmT7BxayxN07BZtay3a5yzvDy+4E8DefKESZRB\nAZjMgh9ncqzstUqoqNE+0NiFpmm4u9nxFAJTCCyxoEYFEZqucLtbY43hY8iUKC1bpKo0ypBCwU8J\n2y40fcPtfs23X9/Stt1fXFN/kYX87/72V5QgL+Z2t2Zzs0brzOF85Hg8cR5myZRWir44jtNCCQsa\nxRgtH371V6y6Hn945fPPP/H4/MzTeWCJhc02YJuOxjiImUBB19S6tmvYd+BWjnt/y3bXE5fAdJ7I\nMbLqer768Ja270l+4XVY2HUD//z3/8SnHz/y5u4eXRLLOPHyfARrMEbTNB05nRhPMx8/aXIs3N/u\nuNl0vL9f0Zg7lrBjnmZCynxwls3tLU3TSgnKLJVzWRv2N9taaCu9JqopjDPMPxwZSqbZrNnfr1hr\nh7Vi8sEWbO/oNo6cCqbt2Ly5p3Et58OpdmyCbTpubqQw12pRBRyfXolJpsfdfsNm26NVYRkXXp9P\nvI4z222PsbLofP70iDGK27sb4nDEapnoUkqCtdpIv20YhoGHp5FxXFh1Lbvtlpu7W1AF22hW647h\ndObH7yMvjy8s88LhcKZ1hu1XN1et/fsP99zd7midoijLTMT0mr/9r/+JYZx5Op75+NNnDscz0+zl\n6F0kMlZl0TFHpaEJNLpFWXslF6Ha8C8TthLteKoGI6sklVBlK/rti4SbiwVfQrpKPZfnLDb6rAxW\naaovU6AGqgW+ql6U1iRExy2RA5HiF0KKQgyGQC7pWpZQamoff2L9z/X31yuqkQK5lhILcW2MuDZ1\n7YCUBh5JYJTwLY1f/qQy7bJBqFpqUCuCcoyEWmpQqntUK41GLPmUSz5LvSCtMU1D1pINL5r9ev0F\nsspST4e68geYLyceYwxm02F7y3xaqoDFoJ2IBkBRoq4ZQAshzJQiTVwl1zYorbFNQ7Ka83nh08+f\nCGnBNQqnHBcjlzGX+Fpp5CkFzueR42kgzDMmZJoCqRSmECjTgjeFGIIQolXjH1NCefBa+LX1ds20\n2RJSER9G1eEXBZ1RNK1hf7dhOJxEOVfUVfufC8JNlCJEeFbgE6n9DwStfP31HX4IRJ9p1z3NuoPa\nlpJTJoZIqBhYUYpYQDlpu3l+PvHhN4bNzZak4Yfv/8Dzy8BpGhiWREiK7XaiaxqIjqjA5AZjXc3g\nVvSrhn5ludmvmM4z2UfmOUCGrml49+ENx+PAMs/klHj6+MDjHx95uX1mt3YYBdNpod/V1h5j2Wx7\nmBQpJOZpYWxGGiME3Hrl6HR3dRb22zXr21tc02AyuFSDnqxlte4pZAklylKczCHBs/Qj2pxxW8V6\n1dKuNXgvvX5a0/QdORW0dSil6LoOPy0sIaGRQoVV36GShFMZZVnGs4R8aYMymhwD81gIXmIFhvPA\nft9jdSHMEx8/vdCvW/b7DlsSjZVauBhTxZILTd9xPA+ch5nTaSQuAas1u92GGESe2fYNflkYx5HH\nh2diKszThFKF/X7NZrei7xvevruVVMtlIuWGrBTNquGb777G+8j24YWSMyEmhnGui1GVaeVCUTXT\nPEjfo0EyzNES+KVLFPOQkQ9ZToqUCjHVRVFVQ0pVqwjsQCUjhXC7qLNzXWBVTUJEyYJVSs010Urs\n/tVUE3IiZlnQlJbXXGVx9UlcVKkt85efZ5BKO3E5XSrMULpK1CqQUarBqeRrzna5atNrLG0WWCjm\nJBCU/pLRomu5gaqmIKVFqy46d1UdokCFJvLl76s6UgqRlYTZKYPSsRqKvigvCnIvTL60/8gJx1hx\nWrZNA+sVLY6SFapEtC4ULTLPmAoqJlL0hOAJoU7HJVIIwr2tV3TbniFGjscTzw8P5DTL9FwVSroi\naZfQr1TlhiEmQoyomOi0AWslSjgXCJEQCjEK5COUSyFWniZo2ficUWx2G2LJzNNZ/j1G0boHjesc\nd3cbkg/ELDENqnIgpSqmSqnvt5jJS2Bx/4FCs3JJ0Bi0bcnaEEJNeVsy29WK9apjLjCnJHGsqzUf\nvntHmBb+/fd/zw/ff88ynXm/3+OsxRpDDJlpXNB2Zl485/MRTYdZ9ZASPinirLCOmmtseHezIRiR\nQOVQeH54ZZg93/7n3/B2syUuC2k+YrMiR0VcImWl6dcN29UN7bbFtRZTFH9z8y0hZZZZbNbTeebj\nT4+oFCWKUxlSKTgLznvitGCzvNmzqm1DrUY7mRBN2xCLwVDIMbBxK1ZWsdnt2NiGdd+z63vu9hvO\ng0z6OotbcZ4Dr8cBqy0pZfpVJ2+WmMhLZJhmrNX0fYM1stCMc+J4nhkax367kiNqbRXqmwadM+Np\n4PXTAz8vE+uN47/93Xds1g2lWI6DZ5gXCor9zYa2WbNae1IROzQaUlpYhkzGgWloVwbjF4ZhZJwj\n0+zxUbR7rTWsWsvr0wGjEq1OpNjT3t6xff+W7c2eMHtCzpzPb3h4fsWnyDVLHIFZKFF6WwdJSdQo\ntHUYZUFRFyjBS401sohnsZ/rcpnYqRZz0EUL6ajEnIMyV4lirlJEstSiXfDorKtQuwZbZaWgZLxf\nCFIYWhvdBRSJpVQttEzXqYgkzjonxp0gENqlTq5cIKE68ZrK3pWaPy4hveYagSoZJl9iB6T0F1BK\nQtEsX+5jko0m1xOOLko2/CLPVSlFKtUKr6Sko2RRwsgYrcA4dLaQRI+tL5uB1pIXoxRWSWyC0QXj\nNE3XYFcromqZjpkYB2JeiCHXILBIDhmSZOOkUsTpq6R8fbvbc/Pulv3bPf/zf/wzj3/8xPjyTNH5\nqtHXNRFRcu3FQKSVroui+pICWUnprC5BXkWigaNk/nDZditZGpPk+GQ/ySm00Tw+PJLE9UQJhegd\nq96w3XbMZ3Gbp3Hm0jVQJHiAi/eBmpEjReH/++MXWcg//vGANpambXFaVVlRYLNrmeeCj4leGcqy\nSMZwmFHFs11rfvfrPakkhpcX/v1wIll49/Ubbt7u+OEPj4QE43lm3RmijywsLGXGo/Dast906CTt\n3j/828zhPPHp4ZVPDy8YDZvdmtPxROMa2QCmQAoJoegNT6eJwQd2W7grLZ026CKZCyFEYsqcDpPs\n5o2FYCDLB/LmdsN2u2a72sg0LhUgZBKL94yvC5OdMAaULoQQUSVyPp54OZzoth37UnBK4cPCsSRM\nKfS7Dbddh7OacRzRs5fSAqWgGLpmL5tJCHg/U4InTCPzeaBYQ1ZSYtEaJ9rusJCspd20bFlj+gbn\nLGsyt2+3uKO0LJ3PHusS/apnf7fibdfSrTr61Zqff28I08jh9UixhkTiPJwlac72aCf6f9Ma9us9\n923HMgWOzye+/eYrrCkMgxDWKcI5ZBqnJEhq8YRx5Ph65uMfP/HHH37CjzP7VU/KicUHlhwrVMvX\nP7UAACAASURBVCLvOZUjfholCnW1pViL1o0QltGjqzSxZAWZWoUmCXWlSFONukStGtF8iE46XbO7\nr9GzRfTLEscg0QOCU4thKSXpn5TpHfmA5gS22trrNUuRXZ2ulYSvaSWxq9k2ku5ZF07FdbSsovMi\nX+s1lVwEu1aKUqRKEKPRhloaXjHyWlpdyqVXVDYsdX3+l4cR6z2FomQxK3VBV7WsQ+Vc4Yu6cEvj\nKyZffkfduKrwXoHE/mbE2akKOUfGYcDPZ3Ja6oaVuVjYlRFopFWarnH0fUu37WlaR9GFTx8/8/nn\nnzm9vlLxqHqPAFWuzVLy+VZfOBPZ7sT9qy7uXTFGTUNgmbIUfRv7RflSe13RojBK00K/C3QGmrYj\nhIVY26F8jPgQSMGx3axYfGYYlysprkuuSZUCP8l9rT2mf+Hxy3R2nheM9qRlhjgRs7DL+77BWsEa\nnUq11R1M9MzHM7SGdW+Yp8Qwj5xiZrdZS561VrhmzTgFjNFsV47GClSQYmSImXMuJN9KKW9MWDvz\n/Drw+fMzP3584t27G25bx/PjS60kc/JCWsn68FGKoOdgadc9PoELcsSb5oU5BEKBafbkIvK4dt3X\nFhrY325ZrVc429Y4BSlU9XHhdBo5vo6gMo0DqzOn40RMgWEceT4c2anMZlzTtRM5K0Lj0CVh2o6+\nMvhWKxojLSeZOh1lIU47pUgqUpaJ8UXjp4VmLeluCsXUTZSS0AZGL8RbLorjYWQ2kLxnWiaJ7k2Z\n54cjYcmsN4GmW3P7xuKMxqhE1wjL3rcdIXmGSVqRskpYB/3GEhdfT2eat7s1q03Pbrvhdr9nOg8M\ng2fV2dpf2dPV72ltQw5ZIKzzxDIvbDYrbm62LNPMy+uRl9OZJeWK54ocMPkZnzJGaVy7kjYhbVE5\nkpFN2Chd7d3V5FOVFPmiSsxQahyr6KHzF6kdl6xWcU6mAuVySKiLaVIZHwvJWJStCpFSqvGJulhK\nwFS+bB2lvldKRlvJC7fWXsOycl105KGun7Pr4o5AGpcJWtfatZLrJlGLhkwpUuGX8xWnTVk2NKmx\nE/epTIh14SsX3U2FAS6uTKghN+LEVKVqH41Gq4uaSFXFCjUETdf3a9XyK4GFUpA4AEoS0tMZjDVS\nvqEvZiJD4zTOGUzTkEpkHEaeXw+cD6+kuIhy6bIX1ROEqfAK1VV76TjVUE8KFmcNTWMl4M0ZppSZ\nl0Gm6HxJa5QvWStiElPPNC60y0zJCuMcPixSqqE1MclzinNis16xxMLT60CMCyVHIcd1vadFy/2u\njti/9PhlOjv7hjgPLC9nPv+84GOWPIJv7zEF2uSxaWbfWbRtyLHw/NMroUS8n2jaDqzFucJmv2Gz\n3mC14t2H7zAoUlhY/JlpPDMNZ0oq+Gnm+TjyOXpQhtVqzd/85j3NuJBDwhrFfrNh26/5x3/6Htda\n7t/c8u3X7yEGxmHkfBglLkD3GN0wJ5EPlmEk+gWfEh6NtTJt+nHh9ldvuNltWWnJnF585HA6yLSY\nIzlGzvOZw8vI4XWi5MC61ThV+PGPz0zes8TI6+lI0hnlDNMQeff+Pbu9IceZxT9yOo28uVtTYkCp\nQttKhrsPhdF7dFG4vmW9WTOPoidfJ8VX337NZrtCqcjz44kYZNr54fc/Mx6f+PzTgcefHonBs8wz\n53FEl0zvLMtw5kEJlmptw937O27f7mjXjlXbsl33vH/zln/98UeGw4i6Mywho01mmwrnw8TxNHKa\nBn73X0Z++7tv+dVvv2Y+jBLiP8x4r9je7Lh7f8+7r+/YbW9wdsV0njB2ZLNe8f7dO9Y3Gzb7Feen\nV37/w8+EDPF8JKdIkQgoMokUIqfjQrva0/ZrmratOdWGFAU7FWldFmKyKFQqxGuPZSKWGqClQOv8\npbUdwFqUdSgHJaX6p+rbq1Qta8G3xaRDDb+SxVFXydxFgpcUCIEnGumIlCE0TjYCW5MOSeUqJ8xF\nBJECGVQXbBazkm2ESMwaQsqEmIkZ2s4ICW61aPh9IJKIRXB1k0EZK4trqVOinBcwWTYy0UvXTHSt\nyZeKtZQqlGUlaVJ/2WxyzlLJWKoGPsvGaQGnLVp1tM2GkuV93a8sXdfSty1d19M6hzGieZ+XgfF0\n5vjzZ0Y/MnnP4D2FTNs3tL3ESitxQXGtWq6bj9AgWQw+ReICGmPp2oZ+1bHdrmDTcfSBp8czS5yJ\naZHcHhRWGbJORKOJSfgPfZpI1oCVpMqURVhQUiYtmTBm9m9XBGVYvQ6Mr/Fa1BFrFg9ZCjyKkpz3\nv/T4ZSbyacGm2m4eA7u1Y7u1lHGWwKE0o/C8ngvR9WxvP7C/3WMbyzBPHA4z5+PMsngoB8Iebndb\ndCts/DgP5LgQfGCeIqdpYUmJxmqWsbDedrx7e8t2tSKuA3c3W2zXcHd/z83tPX/zN1rq4qxGq0K/\naVmvLG3bMswzMRcePx/Y35UaK9AwjzOHw8DTOPLdt28wVnN6ntjPkaVLaCIpVBt8ypLjEGVhmUb5\nsPe9JkaxUKcCum/pmoY2SvZ227Q47VDOYHuLdnB8PjMMkabp0PqNSDezom8SxgmJp6zhfDpRzgP9\nKMFHrWvQNzcoI9i90UbgJCQz4839huTvISd++ulnUsk0XcNNayiXxLu+kw9nlracaQgE/8wSZ9CK\ndtXx5t0Nv/71O2JM+DkSDzPBB6ZpqLBf4ng48z//x7/yh99/5v37H9j3HSrDvCRezwsnn5mQuNVl\nSmzXHooWSZ0urLYt25180GyMvOxWrA8dPgWmaSaEeCUcC4WcImEaINfsEVOzymvtWUYwbaU0tiiU\nEtVFyvV0XmSZ1EZIMhmTqsoIJVnkNYsbrckqytSbxeEpWE0iewmGoupSSknkYlBGYA5yLShGtMaq\nQKll1LGk2gIkWdslSORETlmCsi4QC19s8sY4nG1Q1uJDlCiBYkgJ5llIz7amBLZNI1BTLStJWYqM\nS84UK3EIAtOIOkRdqNZrpdAViKrSRLlHQoTqupYXTMXcvxDHoqpJUe6Naxt2Nx12aEk54ZympMQ0\nTWLUiUGSSX0mBS8pk0rhc+IwDnz8+InxfK5BZqVm7FSOoGayGy2lK6aWfGh9Uc5I6YiEbjXQNYxh\n4XA84v1QMXLBxzKKpOrzVYpUMjGnysHU36M0YNBF4LNc/zMFVk3Lzc2e6Xwi+4yphLgQnrV1rLpj\n/9LjF1nI7+52xEkzZU9JAzlGlmniOJxR0WMJdCbzEqCsDKu3hnbT03UtxVgOpyCxkamQYpDc6pxJ\ncSHnKAFQyTMvntfzwtNxwEdplJmXjG0j07Lw8nom5cLt/Y5b27C7uWO13bJat/hpIAVZzG1jMaZh\nrxvKUXE6T4zDRNs3dI2l9JaQC9McOZxG3i6RVd/Rdj1N22GsI/hAitSFPF2JMuMMTSPEj0mKkjWm\nvng3tkUXhVWKD1/VA6w12HUnmQ4h8vJ84nwU3epm50BZrG0wyoprzBmaVUMugeADOWXWfSP1bs5Q\nciRFjVTXCg7rQ6RtHXf3O1JODNOJl9fM4j1aaVKVUNlVy6rf0HUr1qs1ZfGMpxPTceY0e1w/0a4s\nd/sd61XPbBMUxzDNLMtM1/Ws1z1t2/LycuL1deDp8civvn5D3zT4OXEcRtTriefzwDLMnO7O3Oy2\n7G9uiDlgG8WuXbHZ9nRdQ+5b+nXPZrMm5cKq7/FL4PX1INNxrkYbP8v0pwqla3GuOjOrsiLDdVpT\nSguRXPKlJAcQA42iXHOtMhUOqNh0QTDYPw3HEreoQBclJrIpom3ngktfJsZyhRlQGa0EaLnUqcWS\nMZRrzjZaIeSKDAK1TO260ShEEVJqFnpIolSy2lKqCc/XvBbJUhdiTxeRLYrzMElUAamWa9RFpRh5\nzlr/yXRbsfLLCFnkeQh1o68TsPwI0edf2pdSqbnnRQAm8AQ/scxnvC5SBJ1FVx+9kI5k5JTiDNkZ\nDsOZ5+cXXh6fSDFUeEjulbp8LfIaG61xKWKdxZja2GTMNVhtyRmbImqeGKaJ4+FEWOYr0Uk9QV2C\nyC7qJYo4bAu5KmqqxLPeyxgTIUTCvKBsQ9dK70Lhknmj6r2RDfKSpfaXHr/IQv5//tff8vNPn/nh\n3xNLPvLy+cziJSrSkWm0xrYG71ZsGo3uNDg5kukCjYa+NbT9itvbjt3WYl3EL0vNeMiiZpg9n18H\nPj284kNG24aYM+fnA0+nI9uu5au393z99TvevXtPMY5YoG8b0qSJ00xRhTmDT4q+79DHhRIXUJEU\nIz4sLC4SSRLhqR2nY6Bt1nzz66/56qs3GOMYjyPKtOR5Ik2STe66Dte2bGPhdDpwPj3TOGrQk+XW\nOWwNtH/37h3DIFBEUIZ5Wnh+eObhYSD6mVXX8vr5TLfq2ewd7brl/DqSQ8Fterq1w5gFv4z4JVGi\nrkRcdd8VQwwL8zwzzgGnFW3f8v6bNywpMP9L4uPvD5RcCDHQtoave8eHb+758M3XfPjuWw6PT/z8\nwx8pNrM8Hph94PNPB8Ihcne75/arN2z3N7wez/zw/Y/Cb2y3QrwpMSD5OZBjZgozjw8vnMZZwoeM\n4fx45vZ2zf52xV//9teseke3dvSdFIIopShG49qWzXaDaSyr1ZqwRP7+//oHkh9RSfDyUiCmGZ8C\nufRAh3OWXHStP0uCIShVlSkJXU0zWUkQU06XbBYtAGldHOTjZ2ooVW0LqgRgISMJVJGSRIesrEgj\nLxZzlRVWSUFxSl82g6Iq7FIhCB+RogxjUU46I5VS2Cr1E04wV7MTKKMIOYqCK2W6rqNpWuIyM4ck\nnaFJ4l1R4hC2TuOKJhcttvYUKUWRTb4WcsjxURa/i5JG9rIL5p3rxpjlBKS+iCWvzwfJsCn1ueaU\nSN6T8sjh6ZmHjx8ZDs+Q43UDEM25oW0c/apld7+jtI6XaeLzwwMPP38mVElrQROLiERR8cqdAJU4\nhcoqyCKvLsqeusFzMXWJ9FPnfHXIor/k/lw2MV2hlpSUtD/NHp9jDeIqlAiGwKw1x+MJ3a1Q2WCw\nVdmUriS3qooapfR/LIz8H/7pjyzTREqgXYdnZkrQtStSzhxjZDhG9jeGvW6YJ01JDabt0Cayu7tj\n90azWnVYFasE2BKTZlykzDSGwDRHrHWs1j1qFpfh4pcK4Qmx6sPCp8cnno4nrOtpuxX7fUsYBsbT\niXlZGGahk253a9Z9xzdf311Ie9AKj2J3v+Xm/o6/Vg1Np2laR9u0lCWxhMBynui3Pevdhm7VS9ym\ntdhGNODdpmF3s8VoibOc5yBkSioEK3kf/arBOUPSipRX7HYtzhXOhzONc/zqN9+xu9nKMTBL+M8S\nFoo/0jcNjQJiFnGEFmIveUlvc0bR9S3KNTRLkUakFChZ8fbNG7p+w2//0++gFA4vrxyeXxgOC//P\n4Xv+7V9/5u2b72m0hpgwxvLXf/2Bvm9pjcNPEWMNzUqjTcc8R1QyGA3bXc9mu8JoxfF0wthC11lS\nzOxvdvzqN9/gWikNICtyyixz4NPPn1h1DmcMbTtyObx3fcfubs/qdi+1ZLPn8Hzkw4c7hmPLeZg4\nnEeZksjkFBmGSAieru9oXIszphpkZDrXdaER7XgltgpoJQl7+SIQKZCDF+JMd6gije6XaY2L+Uhe\nAEqSE0CGykrLJH2BHZQqWKOo1ciC39bI21TzYtSllCAXtLZYY2kbgVsykqYXatGEykVMSGhKcYQA\nEHCNoVGW4iEukZSqBT97EkL6aWdxbV+7RIPwDTlz0dEXAKOkXSmJ6oMqRzT1OSkUKlfDFpUnvUjr\nUFdGuWSJ3PXeyyJbPF1rYdOT4gIXOMRa1ps1682afrciO8vD8wv/8vf/xtPDE/M8kcl1EZTNTF8O\nR7UD+LJYXrTx8rfmC2Wcc3X0XiZvIbfzpTT7Mt1fFlsthexd27JZr+m3G86LZx49IQWpKQSyyWgF\nczCElFAh4b2sY9Y1otaD64ZyyZdS6nplf/b4RRby59eRHLyExIfE6BNLUqzWjbjfYiIXD67BNA2N\nbfFL5pw945woxtH3HTe3O4aXR6ZxJucgKWlz5HweeXo6MEwen2AOnpCk2NYZsWJbRO2Vknz/Eo9o\n3dC3K/y8xk8j58OJ0zgxjgHQDDcbvvv2Hdv9Hat1hw9BZGYK1quOvlvRuI0QmRdM04tFOdYpxzqL\nM0beVOZi9Ci4xmL0CqUzxgeU8jjj5UOlDT6XmvFh0CmSa3mu6zrsErHO0a5WrHdbGucYT4tgvErh\ndMGUKNNUSoSUKFb6J0uCqBRea1AWox19awk5EqqGdbvbsr29QVsJVxoO97w+Hnh4eOb1eGKeZ54/\nv7BuW/q+lTz5fU/TWpYxCvtu5eistaLvGu5vb2isVIl1Xcf97Y6+s2gdmZYZaxtu9jfc3m5YbXqa\nzhE9nA4Dh8OReZxJy1KxxBEfMspo3n/zDtetiMDxNBK9R5H4+ut7ltsNx+OIeXjhdBoYlwVKEk1y\nEht86gq57cAZUYmATEVaoYpCC68ojyJ4tbpCBtU1GSLGiWRVAWQttn+l0CpXMlDWjsuEVkdXAMl4\nUaIAMVBb6euvzFBSuWLBSpfqZBWzjM5FeBFj0MaSFYSSa0GyPJmiJG0xZcHqjZH3lTGS1FiKKMdA\nSpmT1hhF7ffU8rORzSxjvuSr51Sr2iqZq3SNRKg3sVxv24VWuMIzss9VJF1BUUUkvEj64HbTs+qr\nIUpL96mzjqbtRHPeWc5+4Xg88fjpgWUaoWQZmIypsIrcW1Wq1PJyDQg0VerV2bogXyKNL6u6XLd8\nl2SzCIZ+lSjW17V1DZv1iu1+T2kdaZaoglJJ6AxXbXoRpIgcI9O0iF5fV4XPlztTX/8vhPb/+vhF\nFnLrHOPiOU+Bl/PIsERAoRpD31lWSmP6hG1bdGvZ7dZM48yLTwQAo0nacJMKj49nji9Hclbsbnak\nHAjzwr//20+8nkds3+Crca11hpv1XuzApFqeKzfUj56wTJzVCT+tiT4wDBOHYcTL6MKwyFS9ud2y\nbrb0SpNjIgJNK4llEveJ7OQlYZKEHqELpcSrgoEqK8pRswSRGykj1l6tDV3fY/umqgoKsxemqyyB\nOAzS5TdIacQ0TfRd4vA64poVbatZhsQyyfFv3fVMx5H5PAnhGCYap7CbHq2dQBnngRI1pulwqx5r\n6tSixECjG4N1CkfhbvOO7776wDR5KZ1+fuHl8wuoQtNaNuuOQuT15cjHn55Zbbfsb7fMS4Li6VvL\nX//mA8Nwxk8RH2aaVk5IlIVp8aw2K779+gMpeFZdy+39Ddv1jqeHA3/4/icmPxLDzBQCfo4sIWO7\njv3bxLCceXh85R//8V/Yr1u+fn/Lt9/cY41hGBeaP6z4/fc/4x8jsRRRTcTAHAKxqjgwa2p431Xp\noFUlIlPhYlIslUBVRTTepWRUSqC8ZNJrQ461MeeCl1fNueSCGBQZFb04YzMiDZRVR4bFXCf7SoLL\nSJclHCpLiQQlSqdmKgSEUFTakbImJMFqZdqX6FptLj9GSk+slTRCbTOaVKv1vtStxSDuWWPAWk1r\npB+AoiuvIM5jhShRCglnG9nE1cU1Kot5+ZNF80LeiXhHslqKRbpBSsQkWHWOVSefL9s4srng94rJ\nBxbvmY8nXk5HDs/PRD+jkFOmq1LFS6jYFYP+U/VHJYYva7pRl3AuUyv76tVWeehl+rZa5L5S6Kyh\nXn/bCbS3fXPP8+HItHh5X1wJaLkOa0TaWLRhDoHj+YSP0nykFDVGourH4aqf/4tr6v+P9fj/82O9\nWrHbrXn/1R0fPuz5+PGJ55cTyoB1DShYDgcyiWmY+fzwxLuv3vP2uzv6zZqPnz4xTyNPT8+cpkjU\njm7d0m/WpFnTRA0xsyyesRKLzokeeQmLvNlKppwVTaswJqGLxlb36+Lle5rWsdU9pXRoDY013Kwc\nLZnD51eczpSUWJbIfGppmhZnWqyT46b3kbQIwYhRGJUIjbkSL1aJ03DOmVQipUT8kolR8Nbddi16\n8ZjI45nWNVg08xLwYcGazFfvb3h+Aq01m92GbrtitVqzv7ll2KyIfsI2CaUDRgUanVDGoVRhSZnG\nSBJlKZKMl03Ch1FItSp/Oj4f0UbRdY62aTAqYZVmvW6IyRFjj3FSBNK0mpI84zhigmO7WbPd9Gz6\nFudEvtbYQtc7rO44nMTYY1cCa6ik+fbDBmUM3ic0QjQ3tiXFQtv33H94x6fPD/iz1GNlrWn6hs1+\nw/uv3nE+njg8Jza9pWkMyxL54ftP7G739Os133z3DZvtDZ8/P/P97//IdB4J3lN0IfnAnM/EEFit\n17StqxN4VbgomdJTVSRofSGkNPmKY6oKAWSsdlfYR0osRENddwCMrvi1NrLQk2v2DehENRblCidY\nlJXNNSlp41FXDbtM8EUbaA3KGdCGUmRI4pJSWK/2Oh1Wh2apv0NbK5G4qqCrvwMKIQUoCh0K1mQi\nRbJJnBOI0DqMdtc0wUsp8jXjsRZa/Bk0oAqpXpFGpIG2xt4qrfCpfr6UJnhPnhPKjPiY8T4SZw8F\nbGvpblY8v555enpl8UvVzIulXvlYF3JBr+XlFDLjskhn/vy65HnUSb5CGrqGpGkjcReNsxRXe+NM\njeW1loLieBp5PgwcTidRjBUvA5EWYrhzjnVN9YzKMMwT59P5T8xOABqlagZ53QC+VH/8+eOXWcj3\nclzuO0debrh/c8vT04mQhWBJKWAaiXlsm0YWFCXCsBA8OQb8OPHwfOQ0erpVx927O1Zty5QSJC3B\nR5XppYgFt+s7/uqvvsJqI/nWPl74ZtCGrhX1gtjcPZP3zN7jauax0Yp5nHj89MQyJaQQXZGSYnuz\ngY3CNAZsqYRGZJ4mcs5Y55jOI8pqEhnnGlpjcArGZWFcpLdPq0Y8JUYRo6hzUpTaudJJiewSAomC\ntgrXOPb7LbaxrDYtTeuwjagRbGsJvnA+DoQYQBcaJw7VXCNKLaK6yFkmNe8X/CIVVtpqcc4p0dUS\nCliH0hlKYpkD59ORaRrZ7Pas1i1aZQ7PA+fzwHiepPBYxjSCTwzTiKGwXzeMU2CZFuZpYd1YnGvp\n2hVtvyZRmBdP1zVstxs2m54UNUuFUJZFGlTCEjhPEde0dKtAGEfm85H5dCCGheQcteqXtttxc3OD\n1obN3rPebXCt4/HnR15fXjmNY5W+eZYskINWBd00qDoey1R1ydvO12Ow6HzNdbKTNDuZ4sShJwta\nTgX5B1ncSv6ipECZ67RqLwFKIZF1lfgpOdIXZdDKcXFvlmrSUVpyv7NWhFIgVHepEvIx1wwPkVDG\n+mmU92oq/IkrU04fWUntWy65Qi2ymMT45eeAFmgAi9MGe3VBahTmSrRywamrmgUAVapOvWq6jSWj\nmJdC8CO5LEIWBnFi5xjBVNVXlEyUpu8pVuNPA8/Pr5wOJ0r6ItPLVS8qC7nIMb+Yo75oTmoDa31k\nsqqv/YXArfJBZUDXHlelcp2WMyYnTJZgLTKkKG5tPy9oYL3uMbbFWie8XScuVNd3PL4eOZ1Hgl9E\n/VMJTumGFchOJnP+7Cr/9PGLLOSruy3b7ZbtdkWrbrh//4Z5WshFsi7maeL9uzseng6EGFnv1sx+\nYfzpI8s8Y4rCjwuH5wO5tWzvt3z1zRvSHJiPAx5LrqoQ2zhyTPR9y93dnv/+3/+WtWt5/PTK73/6\nxHGUHX6J0O9W7DYrwhIY5weej2dO54HNZs12syIYzc+fn7EF8iQus6ZtaFdr+psVphU9qnbCbjdG\nM1asUxktBauzRJa264JpDZbM+Hrg4eXEeQ68vX/DeisL4svDE9McUFje3N7iSySaSKoOP62k+mq/\n37LerWhaUVdEv7CkmXE8cT68cnh5oG0dzmisLURVZVExknMQ8s1YYkqczyOHlyMpBJrOst727HY9\nuog93mpFYxU5Bh4fXvnjj5+YFs/f3G6xKuPnmcPDK58+PjJNM3frNWGRQC6VFT/99IRfFu5uOkoq\npCjH+zTP6MbQ7zas19LJ2VrDZr/i5m7Nbt8zTXAeF8bzyHiUotwYA4+PL7Rthy7w07//wPH4ysPn\nB15ezijbcdOueP/2Hd9+84H9fsuwzDRpYrVpeff2lh/++fd8/+8/svz0EdICUez6y3iCEtF6KxOX\nsmhlQFcosJJcXBdhS8aIRjgXfEjkDG1bF5Wqerm6IWv6oMpVhXHRNyuqkiiRKtciRRQyNwr52IKS\nU0Ciui0rbBJzIS8SBQDVGaukZjDXlihK5KJ5pi4U8iNEJqeLhmJqfgyAkkRKBcQv3xdjJoaMDpm2\ndzitpHLNaRoj/49yFl2hGF0UthIERRd0zHUjUEDDsqQKaR7xPpGC8A4IxYRqCs4qmkaKF/rdmkDh\n86dPvDy+MA3jNWvmWhhBJVrrIlgqxKMqqVy4SECFiIV0xfe1qdk46oscVaNATKuEUog+oAhUZhen\nJD9Ga8Oqb1G6F4lj1fG7pmW1dtAYpsx1aldchIfqcpV1U5X312Uz/0uPX2Qhv11vcdqQ54VjHFnm\nRSbgObLZbrFtR8mKMEcmv3AazzgTsNrRGC362c6QdmtK52jblmWJxGUh60J/v+E3v/sVv1aF3W7F\ndJplV9w0LOMA1qMobLYd7bohAq+HmZwLp+MkwTaxYNE4DIeXE6+vZ/q+47/8H1/zqw93tNHU+jRw\njeN239I1mWE6cn6SWianNbvdmq5fo02HIkni3zBRcmTxiZQLw3nBT4ESI3EeOM5nYko0fc/9/oZu\ntWa731yxPgqkuBBDkFJcHzi8nnh5ObLd9jjnWJaMUWK4cX2LojBNM6fDmckHyInWFEpMNOsVqpGs\nk3GYCD6y2TRQCsPrmeEwoQBrDOt9pLEGYiYuica2aGVxJRPGmfE4kAbP6TBwmmc2q45d69juN2xv\n97yeBia/MPnIyln6tcY2MjUOy8jj78/81Xdfs99t2KwcJgXGlyPzeSKpBts4/uo333KzpH061wAA\nIABJREFU7Xj6/JFPnz5yHGbAkFJiOA98/vzKH3585mmY+e63v+U//93v+O7Dd5hciN5X6zdSIrBp\n+PDrr2jXLXdvbvnjz594fH7hfBayLPqF4aRYrdeySRtbXYtO9OhZIIqCQpWmfhTTVfqXSiE7c5Xk\nab6oTC7SQEkIlNjbUi4LZ9WkNzUDXBViVa5YpeWeN1JITIZYROGUk3gVxH4v1npjKoTjJLcm5iIN\n8MjvkcYddSXsSilkJZi+UgZTap2esVVBYdE51NgA0c0rlEzqSkosUiqgIskaVOV9jBFXamlbrGsp\n2rDM4xceaJkIcxTPRZL7qm1BG0CLLNMYTbdq6Hct623P8TTw8PmZP/7hJ8bzSSZtY64xM+qCa1/g\nnopvay3KFyqMpJS5TsHlcmKCesKqm9xFYENNukyxihiEvFSVFI9G1ejgjNESaYzW4rLXiZA9L8eJ\nJUTGeSHNC52z0FpMfS+gFe6K0+uqfdc1jvh/f/wy6Ydx4njy+MWjHMQYmKaF55czISX6riXEakKI\nWcLhnUK5gjOGYZhYlkAKhbZ3pBB4fnyVCbMUNvd7vjIQU8A5xaZr0WSsKYzHM2NWhADaaMgFPwfi\nIrVauRRaZyklY5WicY6mkQhcZQ3rvmHdtxivCEUUBNoahvPMeJ4Yh8jrMBOiNIy7ztL0nWhorZZM\nbG2qoSDjc2YOBYHFFcXHKya63W1ZbbZ0/Yp209eFRJNDInrp0VRI23zwkXn2qBhw1jCnTNc10gVf\n+01jiJJ5XI+FKEWYvZAqLjANkirXGmgbydzIqdR6N0VQhSXMQIPV0nW6vdlQcoUYsqJxLbd3N9yc\nBkKBJQmhJZVcDdvdhpwLnTOsG40hEf1cixUKIUpXZtGi8InDyDIkorKobkW3WgvM5Zy06RRN6zrB\nkrNM0rbt6DdbynkBNF3b8e6rd/hh4nw8kXxhGgeWZcFaiyriZLzZbbCtY3+749PnJ87HE4sPpGVh\n0YpcMq7p5MNlzdX6zuUIXJzAgLkupDnJaxO0xChXF6dSF+OOfB7KVcpXFy8uZ/4i0MwFjlDSMJ+1\nJhmDMQ0JTchZGulrmXIRqfOVhLyoUJSRU4Cuemc5OdRmoJKkT/TPVsB6jRdYoV6DOGEv5Fu+blK5\n2s+VkgLqJUd0TFhrsbbULkotRS5LIETPeJLPSs6ZJQQRAxQlfQL2ohMpYpnXGtM12F6idV+PJ54e\nnnh+eGIez0g0RcWh9QWK+BO1ibpoQOS5XUyol1hieTEKmerYLBdG4X9R3JQ/m+0lrbRi6FImWDth\ncxbeo8jCH2NABbn33ie89yzLQo6xjgKaS8ywQpzLF1euyiKBLuU/0EJ+eH3g5eHI+TRx+/YWKAzD\nwOPHJ2LybPdbCTdyliZbVJDQ/6QlYfDx+YVxWGisY98aJqVYTjPOOla7Ndu7PbkEXp5feH45c3u7\nwTmNjonz68I8B3wurG42HA4Tj49HUhDbs7IFvemvMqC+b3n39ob9rmeYPdvWkaaF00kkk8oadKP4\n9OmEnxZyiJxjwkdxnvXrjpyha75Um612W+JJ/7/MvdeSJNuVpvdt7SJUiqo6AkBjKMaseUGj8f1f\ngUbyjkZOi8EBDk6JFKFcbcWL5ZFZ3YO5RruViqyQHhFrr/2vX7AskbEkirYoa1kdoLHO4fuWh0+P\n2NCA0mjvMK0XXwkWeeuUQxnFMskW3lpHjZkYI1FlrF8/buNCzomKou17fNECGQBlLizXhVwmxjGK\ny+HWY3WRfELjsGhSlW1krpmiC7rxeDy+9aJSNAqLo/EdDw87ZkA7x2mYxPckF8YxiqVBcLTeYXVh\nOl8YXk4sWYH1bPtOfJ+rCMOWZWYaIwsGj6PkgUrl+fnI8+vIdYIQGlwWCXZVlbvHO3TbcjwPzMPM\n8fUirBgtvGE9Ol6eXrkcB5SuTJeBeZioOfEPf/yZn+tP7P70F/70z7/w/PQqborjVcLBa8U0Hdpa\n0CLeqEpa/FqAHKlVcYu9KVW+sK5q7BoqfCMvCDMhUmqSc8g6DFRCkcvrl9qsg3Gl7FshT8aC0qSo\nGOeK8QLJKC289xtVrZRIiUJ6U7pgjcMai9WaXJAgpaQpOVJqlK7VSAetVrM3GVCqN+aHgPVWhpdk\nlF4fL69DubUDnVOUgGUEZgFNKZppqUzLyHCVXN68uiEqVXHW4p3DGr/S/2R5M1phg8FsA0teOL6+\n8Of/8guX04m4TFiLQF9GC4yzDikrEu+Y65qdWdcGMd9EU3WFm777v7pGy60F+x2C4nbp3cfcgDUS\nbn0rpzdcvtRCVgWVEmpRK6RV1+ckC1+pac1iFf/72+ItUYPr4qD1G07+tiX4d8ffpZBfnp6Zx5my\nGhOpUqgxMQ8TL19fiDGx2Wz53e8faLRiGRJfjzIQKFWy7UIT6DYtuRTGYZLtZq/QtuIczOPM9Thw\nPQ303tJsAloZlmVgXCJDKhIWcRw4nwZaZ+QNUJWcE9fLRIyZhw9bPn3a8HjYsiyVMkcuLwvnMXL/\nwwcefvjA48c9v/7LXzh+exU7Xi2MleE88O3zkfESeTzsoMqg9+HjHU1n0K6Sa2K37fDeQM1sO0to\nPKHraLqGaiypVOZp4bc/f2Y4X9i0Hs0agGsl5teHlp9/+sRwPHM5nlguE32naIKHLQzDSFoWljSv\nXHpHKQrbwC2Ewfkg2z9TKek9rCBsHDoW4rBwvcxEN7E0F+m0XcD5gMGTqRSVKKkQ2sBuv2UphTTB\n5SVS5oHzcEWpQnvQpFKo2uK3B5oQQBtyrDx9ORGnjP/xA67pmJcr42kidJI+Pk0T1ml2hz3WB7qm\n0vhMWkb++Z+/cl3OjEtm0wWuxxN/+dOfuY4Xtpsdd6FlX2COkZgiry9fcQ6aQ4O2Hb5RmFr59NMe\n6oIPht9+fabkKAEGZwkGb5oO37aymK7GYe8Gf4Zqq9gflwxFy9C65FuNQykwQsRe7WDhjSe8NsVC\nyRbqobitJBmoFtA5SeBvNuS4ktKN2Opqbd465IIYV1FEJh6zhDEbtw7QAG1Ed1mzkd3XjXZpBP8X\naCEjQRv6zccbFEWtK5gSHxNhxkhHadeEIeUsubEkFDmtuoqSwVR8Z1fmjnC3rXNY79DGrrRPwc/n\neeY8Dhz/9JmXp2dOL0eB8VIUJpAqb532bVdwu5zXQnk7p+8UvhsO/T2VdO241XsRNTffFavXRU4W\nuLxaFsisQ3ZgtYoBWll90m9SfRno3hYsvT5eEfdPZN5ltH57nkoJxfLNwVKvQ2v+A3XkzsgEu2Qk\n3WWScIE4TStnW7PtW+GuGk3bOcJsidVhtAhqUqrUohiniZorThsSmcjC8Xrk5esr0zCia2EZJoZV\ncjwuiSUlYsx8ez7z9HphHBcOm4bdpmXTd4RNQ9+31FrZbD1dczOrglQlpzLVRYQ1qtC0nhACPgRq\ncDgDOSUarbhMkg1ZcuFyHYm14DoHbUBXobR1rSN4ccKzpmKdfFCG44W5KOYifN4vv37m9emZu0OP\n1VVoUN6zPdzR9y2HQ08aBmqSQWZNieLErWJKEigxxxkvnyxSVvR9g/cWbWV7GFNmGRNRZRFQWMUw\nJozWBO+IOpGmmXmM5KrQ1hOalu1mh2801gvf2RhF4y193wiVLC6YAdI8oWwlZkucI8ucmRM4L5+F\nFBPDdcQouGw7as1c54UxZe68wRlNXjnK2nq0MSzTUSiZU+T59cLpKlCN0Yplnnh+euLXv/zKfjfR\nNj2b3Q6spWjNNM6iEG0CoW/EqniJ5JTZ7/u1a1J8fX7leh1JcRHopyRiiXjXYKxg58KXrjIENRZW\nb2mlVwVnvhm11DcGiroFa65f3n8LgUpRLOvWvuYVjb/Z0JIEGtFCdy1F3VCe9dZyf6sPosBkpUCV\n7xhq9RO/kQCVedspSBda1+4SZPVYn1PV3y0873CQUYqMwHF55U1XpcgarpcLyxxX/HsVw6yfkxtu\nDYhfi9ZvxVgokjBNM+MwcDpfuJwuTMMkLJZbpfzehETxbwr5m4hGIelN6jYPWCmFb7d7oyXJAqfX\nzvsNo77d3/v1Ffo72GUdVaoby+gdkpH7XGcNSnYntd4CovUbbv/9IXP0dUExesXx/wMV8qZtsGNG\nzaBLZRpnLpcrlUheCnGc0Tny/DSgNfz0wz2h01jf0XvL+TpxPM8cjzPDPFJKxhvHlCbiU+I6Tdiq\n6YNl13vSvHDOGe0s47iQksjgT8cTl/NASoXSWrZ94Mcf7gl9JwZDZKEPJsVwzRStCMHRWI2bEuM0\n8fryyrYPLPMib6x1eAPaGYKzNHMExIgnl8I4ife4zgVvRArchPCG6938YmJOXF+fOc+ZKUPbWo4v\nr7y+vFLLjDUKawyhbTncP9B3DU5XdEqQJCIuLjNKVXKpDHNkGGem8cp1SRLoW8B8epQtv9XS/WVI\ncyUTURZMNYxLpe9bui7QxcLpdWa4RGJBMhDtjPpo2RqN9je2QMUZxW7TSJRZLZQ0o6qE+85xZhoW\npqkQk8bULAO9WIjLwjgqXl9PjGkWnxwtU34XPMporHErDXHkT789E+eRFCPPryOXQST4m7YBUzmf\nzvy//88/sd18Zbfb8+mnn3g9nbiMo7CCtMF4hcUwjaPMO64jm23g8eMB13jSWojHYaDkyDRG6jLR\nNb0YozkH2onyVgkPGmegWiC/qTEFQxfc1KxDwlsKkVkLB/VmZFtBSZi0cP0NN291ZbR0+8quiltW\nqECLHwiAkq5aG+kFdYWyhkWIEfg62lPpjTdtlYSL3Mg4UvyFovomalkL+Due+518vK7ujFl87atR\nkODLlycuZzGbEnx+VTjeEIuKWA/k8gY1SNcqPxPn0LQmNd0KZObG0Zfetb6hD99L2mtVCDd8hSvW\n7le/4SPr6dK329zc3etK95QCXUC67CIL122AKjdeH0shw9bvHv/NKpeyQjL63y2Gche3R31fhFjD\njNTqY/MdDeffHX+XQv6XL18xpuFwv2XTNwzXC84bPv60F78B7cg54r1HacXluoaclsJ8SSuXX7Zp\nXRvwXtM4y+dvR748n3g5X9lvWnbbe3748Y7Ty8DpOnIargwXwYKHKXI+DzTesr/v+LjfsAlBuoYy\nklJinhfO14lNF9huWkLY4Juerm14OFiWErm+XPi/fz1irMY4+W27QNM4mr4hvlyZrjPLMHLY9oS+\nIQSL0ZZcHVU59ocdOc2M1wtNI3g+unB+PYvfcYkwXnEqE7xg63MWLN1uHMVW5nTl+fNAnAe0SUSS\nvL5Y2Rw69n1DoHI1hss4Y5pM6zXbh462aySSLBf6XcDoDcfXkeNl5DJFPn7a44JnjhKgUYqibTu2\nvef19SJ0sdMTl+sR13j2D1u0NWx3G5o5U5R0aGlJqKnKAHDShG5H0xtSruQ4CNyhYFpmcoyQK0Nc\nsN6z2wbmy8j4emE4DzR9Q6EwDmdenl9IOUvYgDeEGshZTKCstYzjyP/5f/xfPD4+cjjs+Zd/+Scu\n1yspRlrveXp+4fPnL2gjHthdCDxse5w3FAOhbdBYWu/55Ze/EuPMkhM5RoZ0Yh4GtLXY0GJdEJHM\nTQewLKvYxkjRNeoNlhCoRDBlobQJC8Ssoc8SQ2ZYFTpSkJCtf01gnXqDaRQyfM23Ln713L0NopXS\nGGslkLpkVDHrYlHW2xZKjqvB13ddq9Hrc16NoZRC67qmGClUETOwUsvKVJGOMZcqw9e4kJbC8fXE\n8fXIPI9rFfh33Sc3Fs2tKH/XzH4HOb3R/wBWlaVg1rfBLCuP/T267W3BWG0WBPeX85SLDGZLKZDe\nn8NNBWuMqEm9c1i3qjfrSkxAxFppVQTnnN5k9zfF7w1nZ4Wc5L5vA2WkUq/ukbf33FjxkWmsIQSH\nd57gnHDa/yPZ2B5fL2w2iiYExmnGWsNm2zEvE77ROOcI3oAyGCu+KqTMdL7y7a9PVOdZqoxB+r6h\n6xwWyDEzjwtpSXhvaFpxb8u1MM4Lx+PA+TyKx4TW3N1t2W0b7vYtvXFopSgxMs6JcYyknGm6wP5u\ny6ZviZOSzgBwVkO11FqJZLo2EFoHWrPEyBJHlFWUKKno1lq8Mzgtg6yUIsoaTAgcHh+IcVzxZbGH\nbVvBCLttyzROPP/2BasqbePxXjipvmnp9j3WKtISyZN0C0JZsqRYSTqiS8FqRXCO2sAUZajW71v6\n3Z6m9WhgmmeWZWYcZHcRGo+u6wfoZrnbd6Qiryu0ji4FUs7iW1IW/JJx3gm1s7VYpUlUlhhlgOnl\n/rxz+K5Ha02KCzlW8jkzHC/YYAjG4C1o77Ah4J3h62/fGK8jyzSxu+vxwZJjFI9qVala07SBJYtF\nqG8CKMU8SchzWiKvLy/r8KtijIRdB6NRtbJcIh8fP7LZ7thunFilagjeYj45SqkM08zL8wt5HMlZ\nQgByyrAsqDmK4MNZjDOkJRLnSCXLAFNbWfCNE+qbBpR5Y7GUdXNe1PpVV2snebO2VStcUsEUoQ0K\nayS9GW3d8iiVVu+WuEq9da5vwhwjpbLCm1fLjd9xAxtKuXXmsvu7wRFKV0qVrhq9UimLUA/NiusW\nJfj8OE4iDrteicssA2N5ItJD1++wIOpbYf4elXiHPuBGEHyDVNafv7NPVsx7XUje4KEVyvruJm9U\nzxsHX2tRlRoj8K01N48EwahjzlKsc5E0oLWQlzUp6DY0XV8JotBcYRr1Dp/dHktrhbEKoxzOutVv\nSc61c4Y+eLrgaUIg+LB64vwHKuQ1ZkgLOY7MuRCcZbfZ8NvniPaGEDyNd9SqsN6x225hWogvV779\n+gxdi24DNmhcMFirqTGT16iuXdew7QJaK87XgfMwcLoMHE8jl2Gi7QJ39x37fsNhH+hbS7yKfapg\n7xJxZVzgx9994IcPB7xxfPvrkbxElrygjazSTRs47Lf0XcBYy1IqT19euFxGYo1svKdvPW3rqOkm\nutCSx6kiRktupXIeN3lOrwO2GDrrxNfFapa54fL0jbCmwux6R9d1hLZFh4CrkMYFEwE01jZ0XhOR\nJG+zhk0jlGO6paCdZ7Pf03Y93hsZIk+J03nmfDzRt70MlJ2lLFnUqN4T+g3jLJbBIWecczRtw+v5\ngq4GkyvzdaHvHCZYilXUtHp55yIdRtvQti0mdLIQqkIyHnXVzHNivw9sgqO3BtVoqnIsc+SXXz5z\nPV/RqlLqTL9p0Uaz3bYMU2RKGe+cNDnAdrdhnGaWq0TYDacTl9OJ03XAeumc69fKH3//A9u+J0bF\n3YdPPD7u8WVmug6UWrHaYbeemAvDvLDMMzFFxFFElIYSbL2sRVJyNXNKYpZ0gwCUOF46H3DOY5xw\nspVafUvesGn9PuRCfD+0ucEbK8dbFUBSprSuksepb+yUdeqqq/wfEktX680aVb8V8hW9ee+wgdsJ\nLAmUkSbAGI3RIpqpKqOqEO1KFYplWTn1q2MBRYl//fl05vnpWaBHhIGzTgXkeXF7XAXkN0hDVFHr\nG7liz7dqXViL761QKgk/pr4X/7cLK4wjXbj8+M0+YC3uxoCx0kA67/HOr8wZTSqJmMXBdBxnSU6K\naZ1XrBDW6okiv1aHy1vDfevqVw64MQarhVVjnSF4Q/AtTdPQtH51VASnNV0TpJA7L0lWRv+7Gcr7\n8Xcp5P/4+y0FR1KO2Xc4oyhEQmglDikqYqosc8ZMlc4NlCkyjwuUymWcaBvLHx7veX458jTJF3WK\nkcPdhofDlufXV37501f+6jTX68jlMsnQzmo+fNzyxz9+wuqGtrE4U3mdrrStoe1afrQ70B7bOA4f\nAsyZ8TQLjl0TRldwsL3bst1u6IJmGTPjnJhiYnvY49uecY44U7FeYZ0hW4tvWtpty+n5xHSdGca/\ncnl+woeAtobL64Wnvy78qit3dwe2dy3ewcPDFhs0Q4xoI1L1JU50nSKdE0YZmtbRbjyhC/imxbUB\nbaCkAYVnnhPL6cTPf9jR9i2+a0hLYbjOnE8DL68nUspY2zPNhVIWfJAtc50SVQ2oWrmcr1zOV8ZB\nClcuhZQ1TXDY4CSBJ8r5uJynG9qL8Z5EQReBQUpaiFGofZfzSJwVD4+fyNOZeSroYLi+nrmsBmG/\nfX6m5EzfWZqNItWI1hZtLIpIHiau1wlKYdM3fPiw5eVFsSxCC/VWrBtKqRJ2Pc1M48LdoaftA5tD\nx6c/fOLhsOf67RsmZVSeoURqtbRN4Icf7rm8nGRoVwfxz0EhniaroKfUN157vXmZrArJkjMpRuYb\nvc/Y1aNDumhhSLh3+p8W+buu+V19qDRFyxDUIpHGudxsA0RReMOK11EaGkXRea2NahXBgKor1bDo\nlf1x6/RXZvPazcdYKAZkUShoXd9EN+M8Mo2zpPAoRa2FlBPXYWAcJFP1pioVBslaCL4bREp3voqr\nbl36G9XuVr2+68LfLq8rx9uf6z/WBeB7BEeCoMXPxTmLcxbvpWgbKzTSXCrLEplmSRtKa0JSqeug\nuCDB2bqieMfCxRVSwjvMWqhlPmGkw9ZmFX5WDGtakzOEYNjtDrT9Bt8ESo4YClavC4tSOCXUVRcc\n9mYI9e+Ov9Owc8M0VWpS+E2g33RCNfKeVIT61Dt4/nZiuEx8jonGWkzw/PjHH1mCpdtv+PnTB9qu\n5+nplaeXIz/9fKANAW8MT88njqeZXDIxR0qu+OD48Lhl07VMYyY0BV8F55ui4rpEpmr5+Cnw+PGR\nvm+ZhjPPz2dOzxci4my3AHVJNL1Yn5ZF8fpy4TpHVAg0bctm59HWUcvCMg6M5yvGK3AWbTxLqgzj\nzJJnxrP4aRvrpEsoCWdA20SqDUYrhuOJl9OF8zhh0ISmoe97tFeUCKlkYgW1KHQu5PiOly7ziLGF\nGDPXKaHUxLJE9OsZEzp80/Hx5wO266UDNYbxMlDijKoZo4U6l1KixCS5qt6B9QTvoSpiuuCtxweP\n1nUVqlSK0Uj2mHQwyxKpRGLKzJN40UzDhVgVTddwt91y+qaYrlfOl4k1PhNyoQ0O7xs2m8BlXEhF\n0TXSNY3jxDTPOG9wTtM0jr4x5K2jpIZpNlgXyAW60YuIw1jcYce261mmxNPnv7K/+yeWn39k3wYS\nsMQCSwIr8IEzmq5v6LqGeZ5JAnHKdl/Vt+DiW1iCwAW3gZZ0kSKyunXpkffkGtmtGX1zIrwl1Uix\nN1pgGK0NqhoqK2d77QTrWnyNLm+2rFq7FR8ub0PMN+OldZsvneOqPOT9uQvXWpp9ZW/e3fKaKpll\nXjhfBo6vJ8ZxkqxJwSzIRfjzKaWVhlfffq9n4ha19H4Z3iGe79ge3JxQ/k2llr/fWSC8M10Ub/j4\n2+K4UgjNamOt1qGjNusg8ztK4g2rBoup5m3hEfXubU5Rv3tPhHpILRi9PvYahu5Wh0NnrJATjKFx\nVkR+baDpvJjFab0qfoUAYW4w1u1xtVmbFvc3a+rfx8Z284BKI6SMs46m6wjBUpRCG4s3hkBiuCyc\nXq88XUfu7rZsNx0/3G9RrcE3DZt2KwG6bc+cDX/4h0+0wXN9vdB3zxxPI8MUscHTdo7NpuGPPz+w\nLJnnbwPttpJSwSnD6RoZl0iIirufFM2moW0DT79+4/XLifPphN040lLJEao2hHYkaIMyDZfzyJQy\n7bot2x22bO921BR5/vzE69cTrZeBS6nCMx+nmXEZhBM7TORS6LYNrTd0XqNfJ64XB1lxuY48vQjL\nRlXF4+Mdxhna2r5P1VNhzuLUVJJ0NbmIU5wPUWhcs/CtVc6QE5uHRz5uD3z43Y+4vqNUcYoczwPT\n5cIyjGKmNY3MV3EFLEZTvac4y2bTE1yD1mLY5RtDIsnCMiey0pBXeCUlcixoXUgpM88L4zAzXGZ0\nG2iDZb8LqKWjxEXMuFq/ijs0jbfisNhY/ulPX8jVEIJkwI7TLJz8zQavLcEajKp0XlO3zWrWb4mx\nEKyjawO7bc/hsEG5hqfXM3/6lz8TY2S8nPnf/tf/haVkxiWR5xnXriFeKdIES9M4nJEZSaGuw0wE\nM68I/PDWLN40e+qtUAkwIkU/33CB9biJcqwx4izo7CrkkcvaOLT2EoCsQK3JQW/1r9zAYk02FnTB\ncFOOsuLoes0elcg51gJe1l1FTkm83KvGWkdo6ipoElinpMjlfOHz52+cjhfJz+X71/FdQf4e1lXf\nX+2/xXv1urjU+l6gb+fknZJ4K6Y3Tv5NoKO4BWHfumLB94XPbp3AG5W6zjYKS0xUkuxaVvhDbH71\nmwL2lvGptAX0Wsw1wQeCC2iryWmmpgVdxINGOPEGbwzeWBE6BU/XNmy7nn67odl02NaTl4V5GJnH\nEWX8++vM6zumNcZ4jHZY/R+okP/0n/+R09cXjt9emSsMLxeOOfJ8PHP34Z7u8UDftGz3V4YxYmLE\nbTponIT1Ph2Z4zOFwI+fHmjbjh9/+sTHTx/ousDycAdGExrPf/3lN3746Z77xy27Xc+u83z9/Mrr\n88T5OHJ6GqixMsdK2Df0hw2H+y3TOHL++sLL8wvKFrqtI+XIeBkZx4xynq7zbNuOu8eWf9j/TK5Z\nFgPnsFRqnNjuetLYEayhCx6ntGCpKYvJ1zCijcI7zTxFXr69cDWKNmienyrBOZwTK9Q4zaR54Tos\nxHHh8jrw9HSmaVq8bwiNp2ktmsoyzmwOO6x3xATa2TX81UlQg1XompiWzOn8SvmL4vRywgXH4X7H\n/r5jf9exzCJXPj09keOM0wJhna8j1/EVPsDv/3Dgf//Hf8QGxRQHnp5e+PN/+a+8fn3B+oZlWsTT\nxSi2Dzu6bYvxmq5IyHLKmcu0sHw7kpaZxsJ+7whhL/BEhrZpuFwuXMaRb18vLFPGmMqcMiihZ/aN\nog2OYD1GG8ahMK+zE28sZMUyJ4Zx5vF+x/1hg1nj0UKFRitOT698/e0rxz9eKCVRy8L1cmHjWhlM\nkfBOwg60VWiMwLlZEUAUsAaW1YNF3UDNcuvQ5VBKAIP6fcDBWw0Uj5acEyzLmzet0PrNAAAgAElE\nQVS2W8OWnfOE0IFKbxg71d4a7BUall6u5LiKVFZl48pEcYg/yzRPDK/HVfm7puHkQlqdO7XSOOdl\nKBxEWYyqXK8j13WImWLinUx3e4HrH+rfFmTWTvh25VthvV1+r/Pv3bb6bjiodF19bKS7vwmJNIJF\nr/XvtvmhlMKUlrf7lxlkWUNDboi8LGy3ODWUeqNAai1Ehds5t85jbUApT9N37PYb9vstzipUidRp\nIOeMBry1ArdojddisOfbFr/ZyAxQK5ZSSWWmKvFsslpgNm2AcltsoTEeb6Wr/1vH36WQT0NhieIV\nPF4GjLfYJnD34ZEffnrk/n4LS8Q2AR0cqiSyqiLyyIXraWRJif7OUuuCVoq2cRxPF1LJ7Hc9h7st\nP3y8I8ZJCpwPbLsOQ8UbJ26GWhJ0dK1cr4mwbdg0gXQZ+Ta8cDmdicskjm+mMI2JOSVSLXhdEbvL\nTA3rB65qfNCUPDOMC+NsGYcr19MoNDNjKKqQc6TZBn53+AFrf+Db5288f3vm9SWxLGL3WqN0FcmB\nMYWlFqZRzMVyKczjRJkjn19O3D8+8OHDHaHRaOsEtx4q18tAKYppKGxypts07PY9oQ0YrSBqLpcj\n5+vIt6cTTWPodcc0Cn6ntUjCq1H4vmVzf2A6vlL1jDaG+8MOZx3juBCXiWlJnC9nvn155XoaReHZ\nO8hZ0oac0KdqTFyejjJzMIrdoae8CMdZ5SRqwlRRSZEyWO9pNg2hb3DHo3TAxtJvOva7ljJN5MVI\nEPeay1iUQllLWRTzUqkxctjt2fQbsoJNF/BW0QZLUYbYBz4+HpiXSF1mXl6eKDlzOZ759vWJ/hIw\nRlFK4jLMzHPEWSePpzRaZdLKutBaYWohJyRgBIF76zp8u1Wsd7jg33euqwv4WuFTEhl3TmIbsdjE\nsqR1OCdDd2PCCsnAe4akETFRZoV9RE6vlaIoxzyOXC5nrsdX0s3vY91GlLLCYBWMmZnnUeidq5hv\nWdIa5p1Rqwjqe45zVatVLIiY5vaabgX/u3Ohbpdr/Q5tqavC8vZv5PKb/PK9nigElhKTMrGD+B49\nEoWsMHxuu6LbAPT9ivpdmHQT86hbHNy7CMgYjfMiTETBsg5BTR/o245mt32DRG6pT+IYanHBoVdI\nMlXxkSoxUWKhpEpNsKhCKhptwVlpFqzRWOuxVnYWf+v4+9APv56Y4kysCmvlxIS+Jex2fPj4yLZv\nOD0dxbBdC30w5SRshVhIi4gN9ltHShPLMjMvladfr/Tbjj/+4QeWacJ7zYf7DUtBhgco0hSxWrM/\nbKnWEILFW800JKz3hMYzvV44ns6cLydhBRgxFhrHhLKaLjjapiE0GlRhXEZ5I0pF6cI0T8Qlk6MM\nhkqqa1yX+Klfh5Fa4OPjHT/+cIerihojaZmEYz1HSGKtWQvEAssatlvQYle7RMZx4Ms1op3jcNfh\nXY+1lVwUqcB0vjJPies1k1KHNpXNvqXUSE1VbBGmmdfjlesU+en3B5yDy0l239o6YRlbjbIK3zec\nT5qiFE2w3B86YtIM14HPv/6FuCxig3seIGe2m5b9vmd0MEzyGlJKzNdCnCPGG3wb6PqW1HhySlhV\nUWJ3TpVYHZSx2LbBd14KUi30udD1gW0foDEsg2YcFOdJzM9qLnirUMZgjYeS2d9v6Tc9yipSHElx\nxjaeYsQZ8+ffPzKcBmwwDJcjy1J4eTnx5ekF/yrxZrkWCYNWBmec5HXmsvKVxSjJKr0qKHlnWMB7\n0X4n0a0DR7UmB62lRbHaqb7Xq1KkS4cq+Y5TFC8iZ8Wi2MYVgrnJyB3GWJRKAvtUqDWhzLqw5Mw0\nDEyXK8s8rYuFFDezeq0E77hVzVozyxxRCjEaQ+GdEdHT9+W33NSjq+pz7ar1yk8Xb3PeRFHWqHcU\n5gZTIYthXu/r5oFyMyl7dzF8V2gqvqNBZsHUbywRKuJP/rYDUG9D3xvEcoN01uVVdgDmnd/NbVdT\nMtSEUhCXTEriqZ+WDlW3hIc7QiMMEwlqThjAG4v2BowW98klUWNCpSL1fg13SWvKE0nRNBm/4vyZ\nQqR8P1b4N8ffpZCP00yxhv7DA3/4+QPDZeD4ema5ToznAVMK1+OVuhQMRjyroxg2zUuk2XSEYGi0\n4a+fX/j2fOZ0mfn2dKJtG16+PDGdL1hV2W4aPny4Z7sNtKZwHhLWG7q2x6xdgnWGf/jxA00TSDHz\n9ZdveOdpQsef//kvvJ6uJFU5PG7440+PfHjYoV3AWUvJmb/+62ecteRVhj8vkRwzKlWGZaFpPR8e\n71Bx5nqd+PMvX3l+vfLDDw+k//w7pmvG2Z7tvtJ0wkDRwDicGYeJlDN3XUsukZwXlC6cXq/MpdJk\nRfAKZwsuQJwnhiFzOs3oUBnLxJeXF+bSE9VMUpFcVoqTqUxLIadInkeGoyVNEaWu1A8SqJApbFpP\nKZHrcOHldCKR8I1mzhcUhpIMn/90oiaxDThsNdsf7gihoSiL0pl5nrg8vZJCoO86+k3PkoRpQk7Y\nFUUeh8h219D0Ht8ItzqrQlquxFXZ1zY96TSTBpiV8MiTMixFzL2mKTKnBNeJh/2OTz8faDrP5v4g\nLpPPhsvrRImSieqbhnbT8If/6ZH5NJNSRblCnCIqZ0zV1FSYUmZcFsZpITSB3c6LYZIqokjMgv9n\nCtUUMb5SSFdexBSpvFHqgFpvVuCIE0ddU4Tevyv/lk994z1nMpmcM3FeGAYw5iLUNmvWTj3g3UpZ\nuxlZcRsGVlIeRUVMxXkZ/ubVhVApJZ/ZDweCd5ibKnmU5J22ade5AKC0RBmWgqqyw47TQkkJYySJ\nK9eCcaLErSiy0sRYSLnSN0F2vOvOJRdAa5q2YRhHrsNAWg2ubrsWu/K9rZEhoOREZ7lsZbG1ykhW\nQNsiNM0IJdJ1DcY4qrIU7bheJ86nK85JTOOyiLnc6iNJqVn0GCWyLIlljIx2kEXTeYxxoBTj9cz5\ndOZ4vnB3v2N/2LLd7NDVUVNmGmeYxftfW0NZxChNAcpb2QH7vLpCChw4jIVlqlgFimkd2v7tmvp3\nKeS7x0ds6+n2PYePB4w7EpNinibKUlmIVAx3j4+ErqVtHTEu5BTRtRJ6j3cGA9SsAYPxgR9/9xOb\nvmW/bbExUZaFshTymHDbls0mcHwauFwnriWT54Q28qHxOpA3In4IQTjhRike7u8lhcQVHj426Fx4\n+XpB2ZnD/Z62DXSdXj3AI+U84UJDE8CXQr1KZFzTOLzV0AY+PtyzP+z5+OnApx/vWA6F4brlOoyk\nJNu+UjPT0PPtyzOn40C/2dJtLM4DMfPZvRBCz+8bR98HrFL88q9fsdaSC1wukXRNXIeJ4+lMLqu8\nuVSWUQZaxhZMFXFK3zjmKYpqs3OQI2mKDMvCdKzMi4hqTpcr87wQl5l5vNCFhl2/oWs8KUdxYVQ9\ntVQZdqaZOE1oVbm72+CtJTSOptOoWQMV6yrGVWwxuGrZ7TuoyCxgWhjGkXEaaBpP07ZsD1tC24pz\nXlxYtHjgxFI5DzMU2DQdd49bdpuOrm1wTcN5WPjt2yv/5V//wnS5ylB516JiQo+R86uhRumWprP4\n40tqSxWhhgs0fcu+SqevjCFHsUQoNaG17NyqEly0GoGmZJp587i+CXR4M7O6sUTeiS31HaZYmSiA\nhHu89WTqnQVSxD4g6USMmnlZsNO80hhXqMcaWh/wTn5GjlASqgr322glASNFE4KT3dSmYdO38v3o\nPAYtQzvfoL0MBJW2a3qwdMQvn594/fbC5XjCGkhxkd1xuwpenEM3gdMQOV0iXdfyeH/g8WFP0zSA\nJebKFCd++dNf+Pz5qxhToUg5cx1G6ayBJjju9lv6psHVQtO1lFI5nq80PnB4OPDp5w88fXnh6ctX\nXp6eMMC2b9jt98TqmMeFuNvQtB60kANyrsQUiTmRgOE0cD2PJElJpsZCLGKfrZUCo5kGzfVy5nw6\ncnzp2O427Hdb+k1H1zQyt7EyTyEv0rasyUsCvSmKMlSzWjBk4favprjC889FYLK/cfzdCnnTi3uh\nCwHfJrptxlqPopIS4intHe2mx1K5XM+M48iyLPRNgzWGJSZ2uz3KNrQxs3+8Y7/p6K3mRWtOL0em\naWG+zJRDTwiSqjJNCy/nK+N1IHjPbr+j9T0KQ9d59oct8zijSuX+/sBObzGh0PeVL3868vrtjLKO\n0LVsDxuxffWGy2XCPF+wjaf1ls5oVBCVX79paZpA31l2uwOu8+z2LftdyzxltruOZc7krFhiZFpG\nrhfDNCViUvi2YX+/YbcVXrvWDdv9xG7vKTlzPF7465+fBHbRiuu4MMTIMM2MF8HVV6if6SKqVW3h\nbrfj7rBhu2s5XmeU0TQb6cBjTEzDyHAeuFwGhmFgyZlhmRmGieF85X7X45ThsPWkaWGaI25w5KTR\nOqFLJscFZxVd10vnpiolz+/yci3MC+ctjQ2EYNegkYHreeJ0PHO9njnc7zDO4xtoNw7ILBPEKROX\nTMyFecm0PrDf9Pz48X7lucOyFJ6ezvz5z1/5l19+w9TCw74jpcxCJCW4DInWGWouDONCygkFbDYi\nXApNoN9sMN4zzpnTZSSy5kPm/FZ8hT2h32lkK8Z6E7G8geF1ZRuVcvPSAlXfjZ3WjMi8Try0UmtS\n2bs/x61fL7VCFl8SIiwqotT0JlAK3rIJhq4JeOu4jgVVMrpIwlBC5Dhaw6ZrOOx69n3L4bCl3/bY\nNrBtA20IKCe7JeuM2Bxrh6qKnAtP+x3Phx2vzy9oCuPlwuXllaYxeC+Yvu0CGxfZ6Eiz6fnd7z/x\n+3/4ib7rsK4lZ/j2/A2VI+TIkpL46iT53BIz3hj6JnC37bnfdXROE7oNBcPuMrLpOz788MDP/+kT\n//X/+5WyRC6vR7SyBB/Y7zagHGwKpuxoGov1YoObcmWJiTlGlpJ4/vLCqzkyJ9kx5QpTEh8baxTa\nWaYlkdLEfF1YpivHlxe+BrHf2B927Hd7vPNSyEuUWDytVzMsJzsbWVElhUqBKWvcnCqrAAt0/dvg\nyt+lkOvQoIwRYcaYqMoSug3WN8S0QMk01jBNkWnMFN3Qbg22aRmuAx4LKKor/A//80dyTnz+coQQ\n2O97Ph561JoyEsuZlKLIg1Om6xpC8NTTiZgW2SJZQ9d7dtue/aZnuw98/fWZ0/OVWDNd5whOMT5d\nuJ4WrtOMajLFFUxvCE3AephSJUZRdGrVse137K3Be8tm19O3HW3f0GxEgp/myOll4DpHfPD0hx6n\nLPO0cHytvHx5IfiWhw9ePsBFY/D4reHHZsM0R8blKsZeegKtOV0mhnHi9TwyLXE17QfjpOO+cmIe\nIhWF7wL3Dzs+ftzTtIZkwG8bto8dly8X5mlhiZGX1wsvX8Q6NCslKe1a0bYb2qbBGo1RMI6Rl9eB\n86TY7hObbUvfBVoXxHI1Fc6vF+ZppmqFbz3eW7wV+1IXKspqLmfxEP/y2ytLgst1YBhGlHPMqXA8\nnmlaQ8mKJRauw0hJYtDfupbNpqHpPPOSuF5mLpeZmApDyWIVkJLQMufEMi4Uk6lqJmKwdzuhUVaF\nmif6NrB9eOT1+UhoHB8+3YNxvL5cmaZMmiWUWLjYawEvRQZmN96xYlXkKenokBmEBbLRZCXYr5Rz\n9UZdc87ivGOcIrlUrLUsy0yM6S1BR2aE9b/5jomm5h1P9trw4W7Lxw8PhKbh65cXhvNAdJGkCpdh\nZhwXqJWub7m/2/F4t+Xjpw843/Dl6cIljkx+Bufx54yzCuMC2/0eYz0xZpptz6eu5cMffybOM98+\nf2PRVkIWUKSkGZ4jnVZ82naE/YY+OMoceb68sD1kur6l85aff3gkWM3rywsqGMacKUWRhwmvFNtu\nI7bSxzOl9bxeIk274+PHH9nttnQbx3gd0EbRdqtDZ9fgQsuywP3O0e0ki1dVyeb1oUXjqcoQS+E6\nndhozV0TyFoCxHOpPH07sdu37PY9zlu+vZw4XQaoldfzzPE88vz8wpe/PgkM5CWgxjtH4x27bcf9\n/Y7HxwPbLuCcg7IOO+NqBKwFYtWrItaoglX/gQp5CHb1LlZr1zeL+X6wBBtW6SwEbdFr9ibIwLPd\njpRFMLOgLbv7njTPXM+Fqcp+RClF6Dv2Dw+EzZZcJA/yeFyIKDaHnp+C4vVbIM2FeVh4fj5itBT1\nqoRGWAxYL/afc6mMFdpDj920VGU4H2f+8q/fuL/r6Lcd8RpRKbPb9nRdAOBw2BKCx3pL0/eE1uOM\nlqFtAmUM3imohmkuRFtlYdvs+f3/2CLimZnT63E17rcY37LZWDaqkGLD85dXdIH73YbrOPP0fOaX\nX7/y/HJkHGfQ4C2iSNWaftuw2fQ8PD6wO2wwXlN1IqbE8bdnvv72TB4zoQu0u4Z+F0hLB2SUNygr\n74u3gdZVmk7jWyeGYBFCCFyuE6fLILJjU0VijqKaKpFjc2a+JkpW2F0jrz3OxJWSOV4nVFkI3pOS\nZZoMl/Mggc7W0G48VE1cxOI05YRzhp9/91H83Z1mzpmqjETkacU8ZXSpBGugKHKtvJwH7rcb+r5h\n1zT0fUdoPObOsFyv4jNdC/PqQ2ONwjQN4xRXCGR1DdQGayxKZarSZFYYpELWdWVM3EZpIrfXKIyW\n1PVbsMGtkDsrHWwbAt4n5uWWYMXbdf97RVyOFZ5R0Daeh/sdP376wOPjI13X8+OPP/Hy9YWXpxfG\nNKGfTyilabxj00nGZM4S+MI4cbkOnI4LKWfGKE6W1mi6puP+4wGU4rTGJPabjru7g4iEamF/vxXq\nelVYrECBOcIkjpXT6cxSMk/nhcMw8Pi4IzjLYd+Sc8/59cxwmhiXBV80Dz995H6/ofENl+NReP4V\nur7DNa0sdFWxRJhfRqxR3O07zA+P3H16pNvtcKEhXs4CMVEpEYyzND6gjDhZenl7aX+34eNPlWEU\nqK3kxIfHB9reE1qDUpWHjzvJwc3wdJz47duRv/zlM8sUqblgNfR9QCnDPC28lsgwDHz9+sru0HN3\nv+fh4Y627ei2vShxM2/isVISVhXxsP8bx99HEGQ0OYsbntaSOC1KKY21Fq0kespri/UBlxuZ2udE\naDtiFFqUM0JLi35ie0jYZcIHTTWOZrtdvTxgSQPzdeBymShaVFUmOGy2DJeZZcmMl4lLO+CDZ7yO\nTPNMqkKxGgeR6UZVadpAYwxpgdPryHCcUHFhuQrf2nvHftfT9h1ZKTa7nqaR0ITQdVhroWTGKVJU\nxTYB32hirCypklPBGEuzbXnYNFAXpuGM1YXraaIUgVnEKyNjtcei6Vzg8ZMM855ezljn6BrP6Xwh\nl8y2D7SNx1rPdtPweH/g44cPxJqZlkiZZq7ngdfXgWmYMNqxe9igO70GADj62uM6v0rijWCwRJQt\nYBShC2yyFKD5eOZyFQaL0QVrK86KItUbh7eOrCzWBmzTksaFkiLzMq1y/Qi1Yi2ExtIvjWytYyYt\niZRlp5ETIlRRGuu8GJw1gVoqc14wrtAoqCVRjWZOiQ8Pe6jgjEFbS2hbdvsN221PRlwC2y5gKFyv\nM+fjmcvpTC0ihPFdR6oSsqxWZoSqFlPLKnUHQ6Ss3iZK3QIFBFd+N6hau3hE3v3GmzYap7U8v1Xp\nqZQoa3O+Jd28U/n+1vE9/7ptPIddz3bb0Xcdm92Ow8OevuvQxvByeuJ8HVliYrPpaILg6LkWLpcr\nqRTOw8w8zEzjzDgm5jRjlGbTdjLbKZnnbye0UuwPO4ZPE/O8YHWla8R2INhAFxo+ftiTlonT8wvn\nrydSiuTLhS/fzlwuF5brhcfHPTpIyIr3geGyoBfFvu14OBx4eNzReIeqmTho9sGy+/EjRQcJJsmZ\nOlfm65VUF/Ky0AbP3f2W/f0dxjW8pMgyCrOkJFFyWuepqw2tLmC1o+kajPf468g4XKk1s9tsQa+x\ncCR2q0shGPy3iyzm84wEuEmhvf9wT62Kl+ezKLqnhdNpIOaFSsF5hzKWzpg1zlCER7VCWcVG+r/z\nnv9dCnnMhcvxwnSd2B162i7gw0Zkqqm+iRNutploSMtCTlmGk30n/hRKjJls0/CxbSFmyUlUhV24\nhQIUlsvEkVem6QUL4l09jPz/zL3XkmRJkp75GT3EWbDMrOrqbvQMBuz9X2SxewWRBTBoWpUkiJND\njOJCzT1ydntwWxMiKZUZFeHs2FFT+/UnDs/T4w5jDafjGYMWFsAlkqrQ+778+TOneSEphd9uudv1\neGuYp5VwDnTWUubKt9MrprMcPtzRH3b0WxG9uLHDdgPODRjbU6sixyi8XKfZ7Af6sadEiVyb5hU/\naIa9RxuYXgLnrxPr60oKCdM7NruO08uZ129HlnXl9LcjpMJms+XwcKD/ccBV+HAYeXl74+00cThs\n0Eozz5H7D1uGbc+SAyEmptPM8eXC5XhBabjbDqRqWWPm8y/PhGmWLEUtyyVdZsKU0F2P7yBXxWYN\nYq0wGtCGp4eRzsNfPx+Z32bKGjEK7Og53O/57acP9NstfhgwncWMK+t84XRKuGEgZC3dt044o3l6\n2OK6jmkOvL6JMGhZAkrBpx8+MnTCo17OM8vxgkau19B7UoZpTnz48YEPPz1xdz9ILBiWWgrdYNiO\nnsOu5/MvJ86XhXgJzClyOp55+fLCZZ6w9hpZZim2R2mLtolaNQqDVk4oh1mgEq25ueGBYNzOOgnQ\nSJmYMyWKP7ux4rZnTbOFLZVliRxPC2vMrDG1BqZwzZ/8P9RxQIq5c0IjNFZzvkz0/UQ39oS0ojuH\n2wxcfm6BLkqi6ZSRlC3nDaUo1pCZLyvTvFBSZvCGYRhliIphuUTWZSWcJ4wxPIfM8+sZoxTbwXJ3\n6Dhs92wetnx62rM/eFIWy2Fle3JOzGFhmSdevrzw5S+feXzY8vTbHxjvDjx8fGLoRsmT7T2ny8Tn\nz688PI0oq7l7uOP3n+65+8PvOV0SX/7yilaRVCrfjmf+9M9/JC0rd9stjJ45rHS+w1XN0HfU4lii\nkkGst8ICzYmaE3kJhCWItYbVbA4bsIaQMpeLUJ+NFrZV5yO+H/ny5ZXXr290RvH7P/yOh/s7TIVP\nv/mAc5bLaWIOCy+vR3755Y1ShHb48nzk29cjQ9ez327ZHjbsDnu22w2GgRIiOcS/e61/pfBl8Yke\nN6KUUsqQM8QQuPqgqatnr1YYLE47SinM88KwHSWGynBTg9mWYViLQdUiUtbmAhdtwPUbNg+PYoSz\nrsRlJWdxiqu54PtnrkF8pRQu55nTMRCiRiuPtwZvPbvtnv22p8REihnvLI+PW8KSSKVSqiZmhcsK\nkw01QlKFlCOVilEaQyUpIw58/UaeM0dyhr73OGdRuRCXxDoHcs0Mu44eS6Hw+vkrJWnGcctmv+fD\n4xPOKcaDOBHmlLG2MIxgbSWsiaEf0GjKCmVWXGKglkCqCapiOw4MfYfrDX5wLG1TmZaAim0AVyrr\n2wSImxslYqrGaCf0u1rEKW6RpPquc/zudx/4+U9feF4Cl3VlMIoxZaKG3lRqDYRpwhnpbq3vMWlt\nbAtL53sRvCjDEgPbhy0ff//EX/74ldfnIykGqkJgHd/z+jrx9u2NGCIff1vZ7Qa8c9RYcVXWmVFG\nBpSm0HcW6z1FaU5zJJRCSJF5DYScWEO42pmgUVhlW5aiQTuHMZWkFdFoarakVIhF4rskKUYS2q0R\nI6S+s5RSiSHLcxRxUGxjUpTSknZVqgyW10VS5nN5L+L/h6+ritJojXeGw34jxeOy8lm9yvNeJr5+\n/YqynvO08PXlxNvbhZAS0xKIKVFzxSqJXAux8HpeOZ/OqCqnu20/Mg4dgxPpuFZb6m/uxFv+6obY\npP+pFN7OF0KMvJ6OPOw6McrLhbRmlCp4Mj89bVh3A6V9hr/88pX69Y0Ui7CQDnuefvzAx6qIKRDX\nM71Z2HjPuL+nJCgpszt0nF5eWJeJ9XSiUxXjLbFWnj+/kdfM/jCy3chp2VkvHuFacT5dOL6d0TU3\nSuBA1/co65jnC/NxEjLCUvj87YXjWXQHZQ3sxoH/+I+/Z993bH76SOcNH3/4yG6/xyjL5rBBW8Ow\n2THPZ/resR09KIUyHnRHCBmrFUPfsTkcKFXqYkXU2dr8/ZL9qxRyFGKu1IutJ1pk2jFEOUq2IyXN\nc0C3LL+SKyGkW6cuZjXt2NrwxdqOqtcQVnGX8/hxZNssR0uW/MJairjRrYFh3AjdKBW8HVCuR5ke\n0w3k3Dg/znD/+MjTwx5vNTFEoND3Bl3FsfESE9pYYiiUNRDXgusLthexkFGiJkUb0BbxQlMoUzBN\nnKRUIa+B9RKJ80LOAWrGdRqq4uXtzLA7sLm7w/Ud49jRdQpYoCrCshJ2nrT2rJeB02Zgv9viXMd+\n3OO6jlIr67rwdjqKGZQ3+KHHdBbtFH2q5BCIRXy+S3lvArURbFepwmAVXouIKYQooR1zpO88m00v\n4q6x49RZprCSSyWmzBQDXXZUEmFe6TphDBhnKSyNBiYJ8MpYtDHksKKdYdgN2N4zbkdU7bGuR9se\n7TuqWphDYrosjJcJYzRj12GMx5oO1eCPZVlYqdB78b5JmpgiyySBwClmGRSnjLFabBe0k+KG5Dbi\npZArJfQxTKbWRKLc1qe6KgaNwZmKd3Jsd1aw8au51dB7SZKpsmGUImyNEN+j0dTfu5euNxTcoBmt\nFJ2zbIeOh7sNWhtCzDy/noghsc4Lzgv8GCusayLl0lSTirBmpvNKpxfc0ImX/2nifLqgakbpgu8d\nIx5rFL03dL3D9YbjSdTHKca2sSemNVHyLAPaWnna9OwHR98ZdGnZoEbhFLjRQoUlBKZ1YZ0XUlFU\n78VZ0BruH+4ptfLzn/+CqgXnJGbvfLxwOs9kMi9fn5nOR0pc0UoCGox31FzJa6KsiewjtbNSI7xl\nWRYurxe+fXkRTHs3snvy5BRJa+Lt5ZV1mQjryrQUvr2eOE4zGM10vHA3DmNY4S0AACAASURBVPzm\n8YH94cAwiNmdtxqrCrvdAFYTSmFuVridM3RPW/FC6nds948sa6SkhNWwezgwz4G3l0StWUI+/L+h\nQu69/RcL/Wr1aeo1QkqBM++KX1WxnROp9maEq7n6lX9bK6o2Gn+VAkDDcRVVzHNaOK513EJMteZW\nzO+fnm5hqrkUapIs0ZfXFy6nC9N5Yr7MPHy84/HTPXd3Wy4vR86vR+bpwu5hy3438NF53p5PHJ9P\nPL8cSaqyOWz44YcP9F2PrpocItYYEQq8zfinHcPBM9JT1pVwnomXmXBaKPFCXc58+3piu9+wO2zY\nbXfsf3xg9+EARTo4XRNpSqQE67RyPk/kNTA6w08fH9k93LN7uOfw8MBmuyHnzNvLK//Pf/1v/PK3\nX/h2eaEbR0pVxFR42DqMBuuFHZJTFvzzaSe+7Uuicz1DVzEqczleJMj6shIzPNyNOFVYLguWymE3\nEJMUuCUEXs8nnFf01hPWQiTivcY7TUiR8zRzOp2JwEFVDoeB7c5xOV/4/PWV529HdrsdH54+4Yw4\nMM5zZbvbEZ9Evp5WeP5y4dJH7j7e8XB3h0bx/MsLz6c3ztOFV2vY7Qa0NUwhsi4BVTKdNaRVsGhl\nFbthh1EO8GhlsFZhnGJVDl0qqrQtWUlkndGiSlRknGnrVYvM3HtP1ymUMnRZ+NVPT3esU2A6L5yn\nmRgSMQg75d19719+XeX033uaaKXwRjz5n+42PN1vSFVxPK+8HS/yfoxh3zlcs2Xd9iOd1jir2e0P\nxHkhhoWX45EujcwhcjydmaZFQigUgKKERBpXNtsRly11hr/+5YXX5zPLvOK0Bpkry5AviODmdex5\nuhu423lxlkT8xM8xM/aWh0PHjw8btO1JxbImRyyK5XziT//vxB/+s2LYbYixQMiQI+YosYgvbxc+\nf35menljnSdSFuXzfr/lcT8Kt7vr8cpQ18KqVlGbroq3lxNfvn7m/Ham6wbQjtovvLw98+XrG2Ga\n8V7CIJY1Yr3n7rDlcplxWcFaOR0D20dLMpqv396of/0r9/uBf/oP/46YPN+OM3/+4xc6XTnseg73\nW7788kY3ZtywZVpXwrygc8Z0Gq09m6EnLGeyzlT397fzXydYohXf2mS6IopohvjNN0FM1KWY51Ju\nvNxylRhfbTGb6qu2NBOaNPf757kqwiR15WqOI9Ji8UBp368JXQsOha6KMoqnd3gIt46zHz392KGt\nw/bgRsWaNCFZTLBsuoFleuPl24XnX96YU2DcTZSlst1OOO/RVjFstuyGDr/phD+KhB8XVahloq4r\n+Xzm/PqN8+WM0p5lXkgl43yHPZ9ZYuT4ZeLuYctmdOTlQuc7aoYwZWosWGPZ3XkOj3s2d3vcuKHf\nb8XhrTf8If4D1Wv+13//Ixg5DkvCkXCeS0FSkXJGWY1VGtNbcBpdMzmsrGtgiZnabBTE9FnhRs92\ns2O6LBSt6ZfAEiLH88zzeeb565HtZmDsesZNh7MKcuLt7UIlcbiTtJ/zZSbnSE6JaY2c10gMmXEL\nxSiUKlh7TU8xfPzxA08fP5BTYZ1mfO/4h3/6R/aHPTkE5t/+wFIi9RuUmIlrJJ4nXo4T3on7Zk2K\nPDXfm1roDx3OW0oBnZX8QXjEycq/S2me4qbFsyUJfqA2L+5cKTkwNw+TFFMzfdIscxQ3yHVhXmaW\nRjP8Xgj6r34p8NYw9p79pmdwHYf9gfvHA34QP35nMp8ed/TjQD9u8M4yzyvTZSGVgDHSWJ2niTCv\nUDObfqCqQszv9N1aKufzSopJcPPNiD8tWCte6efzwrImYi5i7dBk+ZoqTBxr6ccOnGGqcsKuIUHJ\n5KpYimVyCnU/YlRrvvIqHHon/jEmXVBRs+kN0yIWxqFG5hUul4U0B8KaUFpzt99gnGfoB4w24pPi\nrRhtVUCVJvryDLuOD+6Bw25HyYBSXF4upFWUx1MuEAoWjXJGgt8L3A0jH37ccH934B/+6fcMdzum\naeHl25Hp7YXPP1d+eT5yWRPTHMUDfzuSPj1gnBcSQ1LMxyNvp1kiHi8LOaz04watPc5UwrIwva1/\ndwn8OoW81Oa5cJUuv0/0r/tNjBFr680d7dacX02H2kH/3dymwSrqGmrboBkQ0u61Y6Gll2tunY5G\nU02FarnmRZkWwGqspYwyfCql3oKFqeB7KNWA7SQN2xq06bHdSL/ZMe4zrIuIl9bCrBa5ea1mDSIu\nMFaTciF7hzeadVpY3xbW00JeAzkkSsroEQoiVChFkb68kqvi9CrBB2nbsZ7O3D8exKRIWTAeZSq+\n63Cdb/iaIVWpM7bz7O43dGMnLoHTRE6ZuBZmq8QkqkLNYkGbqqLmLEIQZUjzQphm8QLP4qOiqBJ1\n5kUwdXi6w3YLuSqmZaWeK9Nx4pdvJ15ej4xjz2G34bAbsVqTY6TqQuc03jlI4tM8XQI5JqZVCqFC\nsywrx+ORaAxjL0Zf85zoxg39OEIqeK8ZtxuePn7Eas0lRpSBza4jl5E0JcKyErPg/YPp8cqiQsXm\nCjmTU6IzkhyTspgbpaVQTKQYaSZKC06o9arYyy0KLmEQD5CYMqGWllkvakqnHCUVpsvCvC5MyyKp\nRt934/86piLr3Ugo+P3dhk+PeyyOh6ePPP34iWk+sywJoxSHXU839CjnKLmwLoFpWqg1UxEZ/hpm\nKAXvDL5zJF0b5JhalFmRgPSUyKmgqqKLRRg2RYq29w7fe4yikTAFshGvdfHuCaWyrollDtiS8S1X\nNMXCfAkczyubnZY1WwTO0VWJi+VyJqEgRS6XicvlDJ0hZ0Nc5QS+JlHT7rQT+2NnZM1r3eioGnJu\namexdRpGTz9ocg/LHOQ6rBlvDYfdiOlkLkQtrAXyJUAu7O977nd7Hh7v2e7GFrOXQYsYbZpXjuEr\nyxKhQt958VVp77VkxPPo2zdej0KxrSHx8lXTDytdP/DwsMMqjf23xFq5poWUhm8b0zBtLUewlDKn\ntxO2CSJkot9wyXp1aBNYxGjBm4u+ekmom0PblWNbytWhjaaUKCKnrtc/VzmsaYyB0hSHqh2XQRcF\nVUt0lsqUmjF2xG9GdkBOSU4VSvHD73/H029+IIWVZVmISyAukVKEBpUuK7+8vvLt8zPHD3fsxi27\ncaB3huX1RDieycuC6RX93R3mbsMUL1jn0coxva28fD2Ta2H7sCHnlbfnhedfXtDOcbjbsd9uSd5S\nSkIZWJdCqZGRxFs5YywYlTm+vPL67ZWXbyfWNKOAznqscgyDw1o5qoclE5ZMWtaGmVfWV5HOX8LM\nFDI1F7S1+H4j0VWbDf1+h3EDShliiFitmObANAWOU0a9nPmbfuGwHcWEScFvf/eAc45lLtztN+Si\nuEyx+WxkrJLB8tvLG+fjK+PguduNdM7x178e8ZuBw8OOu82G+8d7Do93VKWZTwsvPz/zl//1z7hR\n8fg4oEbF6/MFrzvud090pqMslcvLRN87VIckDm0HrNfElDieE2tYqcuK6jUxJ0IQkVNOkZQCcVka\n5zhinUPVQgmBJQgN0nWSReub6OMyT2JFMMvPlPx9jmZb7/8fzrhWciJwzjKOnvvHDZ9+c8flGLn7\ncOCnP/yWP/3zn1H1GyoHjJb1kKaJdU3EkDEaijEyN8pCr9ztejbbAe8tKQRSjm1TKdzOB1XdTKo6\nZ+itx2TItuA2Pf12y+XlTE0CLa2lkIvMpZY1kuZCzIW4LNztOnb7EZU0aclMp8yf//bGJwV3dxuw\nwiYjJEx1pNOJOGVeT5G//vzM2+mI7yX30vuefjcw/1KZLzMqR54eZQPQfcUoJUQI45iXc2P2NK93\nXUR34IXXnwE9SAHQ1vLTfiQvgfPrmb9+fqPTAaMr49Bx93THuNvw/O0Z62Rm8vG3j2x7y3SZmHPi\n8bFjHDp2ux7nHApNWAL92LGGlb/89ReW84Vu7Ng9bbmsopQeh8DhYc/ucODu4f7v1tRfpyOvjZfS\nBpr/4nta45xmu9si/mTqtmhyyd8t5jbgaUfqKx/9+w1LIBa5EUoWs/xrpLZqA1TxRtbvj3jbCFq3\nc/VBllFUU+gZOVE0yXVFUYwR5zUqxVisdSTjcP0g3Vou0lmUgiqFp1XsWr13WJTgiQrsMMpNbDS6\nN9hBoWvg9a+i1qwsbLqeD795xPeOYiSstaTC7rGgvZMQ4k3H27oSk6LvOwyefujYP4xUrVmXmePz\nG1//8kw4z9xvB46nRMzC7d8dthz2G5SufP7rFxKGYmGOCWJCocRLPlbOc+Z0CRgFzitivdANPa47\nE0JBa8N0nvn27Y2aMrt+4B9++xv63QAK1mlmu+lQwLJGctLUohg3vikxZRP+4TcHjDfMKfH1y4nj\n65l5mpmS+OYoNM9vZ8rxyOdv3+id5+Hhnp9+N2PcjjQtPH954fnPz+zutuiNxUSFCQ5fLMa1gaOt\njNueaVqISSLcfHaU4iRV0ilUghQzawjEHIgpUDWEHFnjervmMRVSXNBUvDf4XrxESkUMyowUx3WN\nLCGKc2PzLr9i0dev7329tVKiinUW6xxWG8KUOX6b6WxHmhe+ff6ZlFcymSlE8rdT8xHyMowvV8aX\nQplr+HBHKQJRHN9mlpyZzuFdrNReh7USP6YNOKexTpFDQRvN0Pc8PBzolcFqxWbTgzViSjWvXM4T\np8vC6bKw1EC1FrcZ6GxHniIqFu6ftljnOZ8Lr89HrI50ppJDJEZF1RPLAr3V1M2GWisfPzzw8YcP\nPP7wAdv3fP7rZ9Q6CU1UGQbvMRpqjZBkML3GyHm58BoyY+cZ+541RJaYWLP4E/WdaB9UTKxrZFoS\nIWQ2m5GHw8i/+8NPbHdbvO9k7mcR5tIc6R8td4c7ii6ARPhZq+i9RleIsXDMF6rSWNdxuJOAbopB\n5SynyccHvO+JUQwH/97XrwStvBv/XOmG8k99O34p71oy9dVInpsvhXTeMrQsVRSDWr13LaWWm1/F\n1T2uXhVxrdNRWjB4Y5sQoxXkGw2M91tIoqHECAkQxV7Rt/RxEfgZCrpNl6+hsBr3vRKrypzWGsWu\n2W7UWqkptwStinYe3XlMGKhWYzyovOKHwCWcCDkxuo5+v2O3H0nUG87rNhWMpyqN67RwgFcxU9pu\nB1xncF704jEqYY+cJ3KIbEaHKh1rMihv2e4Hxr1w8VXj12oUIWbUmjDaEIoiJCXqyiCno0LGETm+\nnAmx0PkzfbOozTHR955xt+P+h55hJ+Ku5y9f6Z18tiFVUs4oxFQ/hUTOFWMN47bD9JYyrWJElUSp\nqaoiLsI4SjGxxEg6FYwyrGtEYRj7vXjZv54gGXTqUKsnL5m6KmEzlESx0mDY3hLPkTWtaK+ZQkCX\nItaqFKoG0OQg+aQpJUrNhBylqNdrRqc0IJ1RGNdc7lIhRjHtEKMxcb1LKd9i0b7vSK4NBq2RuMaW\neStKZGs0VstcpyaF7wxxXfj6+TNLyEzzwrIEYoQQMs5GYpJTaK2QkNmGM4q+N6xrZV2zBJErRS3S\nFF058RLCI6HGIWVCyehqKLrizftrGsYOZzT90IkhVdLYqui8px8j3TjjOs9mtBjbkdEUpTFOY7qe\njCGsK+clospKZypj59Be8O8YZa7mnKXUSt95UY1bxX4/sE4b4inTWUno0cbcHA2pcs3WNbLGSL4s\nqHGk055UxLGxfDeHy2ukhkiYAzkldmPHfjvw9CheKl0nbqjGGtCKNSbmUHAbhzMG21vCKjF/UBg7\ng9aVFAvVKNRkmacVlQVWC1PEKRHXbQ+yqV3mmdPp8ndr6q8GrXzPWrni16pBI/Du7HbzGboeL1Fo\nZW4+xLVKbBNatfDv2mhroqlSrSuXfERDVdI1K6UpVRb/DXf/zgNaNYz8tim0+KdS5GbLLdLp+mul\nqPcLL3rkhvlfO5n2fFqhzbWzEQlw0/gJ1Y5CLTtyToRUSHHFhMDjjyNmc+I8XVC6EnRP1AOb0bNO\nMyFNkkaPoyiHNlk81C+R89vEH/5xgzaVuJ5RXYcyhW5wbZMqWF94uutJQLSGcedRTpHWgh8dVfeU\nFMVaYE1Cm0salQ1kg76qdVOl9/DyfCR9O7HrezajY+gdd2PH+Lhn+3DP9v6BXBSvz6/MxxdUTljn\n2O43pDWxziun10XYIUphKoSSWd5WfvnbK5///FlyPMeObhwoKRFqpHaeWoVRARIxd3p+4b/9X/+V\n3bBl9D1Pn35k2+3RWXNZX8lrIawLSwx0uwE/dBinWXNkLRnvHJclkuJKjJF+Z7Fjh+57rK4kJBc2\npUCOkZJjM1ept4ZDta63ojDKoUyFUpqXfuNuV9CV5skN11X/fq9IF+6cFCah3Iq81RvLdhBVse8M\nMa5c3k6clsDb65F1jXS9Zl7FVyW2axVTYQkiU3eN565a5Jm1RhwJr0Km5sqplNgbLCGTUsF0gVgU\nzio6J/Oi+TShrRW63fHEep6oqeB9x8effuDug+NjziKsmxfmy8y31zdKyvTe4KdZ8mAB03e8fZs5\npsinT56nvUjxX5Yza0ikIoZrl2km/Oln/sc//42YExCx3rD1HZ23BFWw7USstWJeEmsotxO/NFoa\nP3aQDGpNFKSZCNMZ1Tauzhh++t0j+/2BYRjF1KxcEYYC1aAK2CIDXz84drsdp+OZFBJWO8bBYy1A\nYf904Pnlwl/++JnXl1fejkfmEPnwcABVsE7yAJY18PJ6+rs19ddRdsaE9bJzX7tcxTtmDe/G8zIE\nFTOiWz1vASD61m4LNCMsFW4sFpCLxvX3QFxEW79dciHWilKNlYFuqTXNPLIqStFtQ8nUq4ekokEy\nTaDRsEOFnAZqG+5Ak1E3gYRsPIpc2mZFpaYiG1ObEcDVSrM0r2tF0RbnBtxmw33OsqlohWsZjm4c\nGM0W00es0VSjWEmYbWZDT18r42YriT8JQpqZl8g8rXjroVpeXwJatVxKFEq90I0DWmtyzFAUFcOS\nC8VVTK8Zxj3dtqM/d9iXV85LZI2Fb+eFfhh43G95etgxePmsT6eAbyciXeH52yuvX16IcxJKpodi\nEyFIUayIyrNWWELifBQZeVrXxniqpJRRMeCcYbPrGJLYKIQiwp/Bd4zdyHa749CN9NZJMPC0kEKm\nuiw3r+8wxZIQab8yBjorYc5jfxOugUJJjCprKqxlZY4X5nVGpxbxpS0pZxy6sZSM7PY5t3zOFjpR\nJSUrN38gqxRFVaRHaAP6Bvs5b9hsOrabsdF35d7IWU4h2miO88zy82e8NbdueV0TyxpENxAFlw4h\n3wIMSjthXIMxCgWDiOKWJct9qBR9J8HPIbUussoKpsLlMhNixGjF+TzTuxO995gWdGEUxCVABesc\n5zUyjBI8PIwj437LuNuyezqQlkiJ4i2+zivTNHM6n4ipAoa/Pa98vfwN4yxVWZbm312V4c0vDJ2l\n6yxxSTKY15VFRWzxdMYSGo/cqIp2YLUhF03nd2SleVsmdLIysE6JdUnENVJzoh8tm97R9R3D6Kg1\nEKNis9minUUZQ+80ymrcYNGjIidFTXA8TszLKgZ9+wGTC7Vmis0or9GdxY+OJ//A/cc7UgZVM65z\nMjgPC0oXxs2/oczOZQ10GrQzN6WazCDFhlMpWeTAzS/ivfxKXFqrprxX91ZcVaVxh240Ra5El9vX\nd0W2SOkS0U9F16a+VBXQlIbr5CI3otZt6HpNXblSKAX4kWm1ArgOXBvc07qAHAspZ2yLZAOoWl/L\nuoTxJgnktY0qqZ1Fe40f2vM09Sm1Sqai9ijTY7vcOosiEMdWs+23KBRuEOlxTJUlBZa5EFZw/YZu\n3KPUhZBXciyQMxe3oK1n3HiMsqwpMq+RyxyIpWC85f7DgdRZqIlD2mB85m1a+fLtBes93hse7zeo\nJEKhqmWxa63QNVPCSphn5mkRb1BlcK3Qy8ddmVYRTyxzYI0BRSWGiHOGkkWoNE8BtenoRxnQ9VVT\ntWXseywWrz2bzRYnOWCgM2tYWZaVqqNcOQWJwhwCRYNRHtVZrDaYzoExEkGHYs2RZV2Z55VlnVjX\nhZQiXhu65gG+rIEkwBcGOcnlZkF7PQHmIpqFXEvr3BVKbGskN16pRgvUOGew9rrZXwVCSjyAUpZY\ntrI0DyJJYq+1itKynSBVhtACh6/D1Ob7BYpGg5UepJTCGiIx5xY+/H26/PvgNRfBbUOMN/jRmUVY\nLEb8y53R5PQdseE8M44d+/3IoRS6fsBaL3g/Soob3IRZISSyhqIU8xJJ5xmlFf1GZPshZVKGi57Z\nDh2P9yO9E5phrTKAr1qTC6yLwF5alTbDqJJpqzULBadg3GxwncN0hrIkjDO4wTHsfbs+un0Oco2s\n8xjvMd6JyV6tYsZVIa6JZYrMUwAyu/2A7yzz20SMC9kkTNakFKGREoyGYXCkrJiXlW+fX8QagILr\n/g1lds7LKtJ7a1HfvQKtjDA/rm02qqk49Y0qeD2q1jYEvdZzDTcYpQgt+wZ1ALybuNcb5qhvwqIr\nC6YNVIkoZaUbLbmltlRKSZLCYpxkI5bankPdGDU1iQJL6fcb9pacnivrunKZZoZhwHuPbUfWXErj\nFkcZjFbIlFvwrtbmth9VVbEGQN08UJQpbZeX15pSot91wtYRrSCxZGpJrEkREqRa8dt7to+Fu6ly\nPr2xnM6kGKBa+n7D3f0dZYW3t4Xn54kQVpbJ4rRl9+96zjmRgc1ug98qcBM///yVZV5JMTB0hnma\nyUvGb0Tu7K2BEumdwhqYlhlvPB6FLbSs0MIaA8fLhWmeWKYZrxTD4Bg3HZvtQEmwzonpMmG0Z9t3\ndMOW0Vp873l8uMckUBGcdbx9+cblcqRsNEtJTHFhmk5Y5ynoliwUwRp6Ba7vMM6BNsxRvLBTzpwu\nJ6bLhXVaZUhIk8T3nsE5nNIoY5jnWZSJQShrKMlhFbos5JqasVYD11r2pc7XBkbhnLrxscMaWVpa\nvdwX0pELnp0AyeM0bc6kFdQWO3fVYpQqfHZ5TnmMkgo07L0qoZzGLJCLUkkeq8GKt5OCeoc9YxIV\nLEj8WylK6InXz8VYiuJGNTbGEKKoP+d5EXqs84ze4azBeSvhMVG6XxssqWZSKZQWslAzTEukJqGH\nrqkwZ4GrHvcDH3+7p/Oe89si94+xhFA4vkykuKJ1Iq+FdSksq4BZnVfsth47DPhhxPYenTLbznDY\nj5hNx9uXI9NpoY9iJNd1I8Z12L7HdE5Ow5eV+RQ5Xy5cTotYKV8WdqNj24tt7vmycD6dKSXgxih+\n8Dnxp798xZB4fBjohpHL28zX5YV//59+Qg+e+q9U7F+lkA+dx2ktF6E0TBkwWorXVbFp9FWqzw1H\nN/pdnn91itMKVFUNnpDhZQypFcfmp1KlM4kpimtdFdN/Kt8t6pYPmCtLWoVudXtOkcfnVCg5YnTB\naCsFVrKqUKpinbttQxIdFRq22Um35GAcJVDV3NJb5D3WCjR7AoVqHaCknet8pX3JZ6O1dAXXE0fr\nD+QUYIQvq1SWTU5becMyfcN0hW4obPaS2bm5e+Lpx98S4yo5jpcJrTXd6PDeULLlbYqo1zMqV/Z3\ne374zScOD3fkVDF2ouTAGiNTClxSosyV4+uJ58/PxKVSrefuac+4GVFYpimicOz2d/zm97pRQxWl\nQDWFfu8Z7npOxxn9oikxY2oBLEYPfPrxJ3o3UCPCLGlp79vdjq4XHNl3nXDyzxPz8cJ0PrKEmaI9\n8yUyz4E1JUKRLNRUoTqLdpqqKzGtrHEhxkJYonS1qtD3Fj/2RGWpumCM2M523kOtsvZSJEcRMaUs\n1EmtjTjm5UTMmZCum3ZthV2yJq/8fenaoSbhO6drFw1cj5kyn3k/wVaqBHwX4ambxs82pukVGnFA\nVKCNCaPkZBxz4nQRuKSUSmpK3KQUWjdG1v9PodSyNL9rjK4/cy36tcqpgdqIA0azxkQ9zcxLwNgJ\n6wwb54UGaAx2cKgq8XP52v1qEQSlKmlLvTXY3r3ndirFtu853B0oxfB2Wvn67cQ4djx+fOLDj594\nfvtvvB6PlBQxypOrJpZKWQMpQdUJfTqz1krXSw5BLoWXlzPx+cI6LVil8N7R9x3ey/OL5mMlKGEj\n1ZTYeEv/uGF/N7IslXHwbPcjWM/u8YD1nvW8YHwhlMxqDZ1zcoJ2jnEcScuZKc4yjEZLoPff+fqV\nJPpdo/Q16KHJ5GNKkvJtkNBlJQ6I1wWiFGSlb2o4rQVD5nrke59XCsWwTRN1K4hyzOXW8crPXV/V\ne8tfq3gB51KpNVGaWk8r0+CaQq03J6VWJBtKrq58l3pjLlwfXboRjcOJH7W+qkzfESJJ8X5/bVdY\nRqZg9XbTKypF6fcHb09wsy9V33FwrpsfQLVYoHq5KbthYNhu2d+LlWYMEs2VgigSK5muP6Bcz7jb\nE8PC4bDlw8c7xv2WeVaMu8w6nwnLkXmtwiW3HotjviTWqDCDYu8MtSpSFLteqsF3A7sDnOeL5JMu\nCWPFxsF7J0fkw559c4j01rPd7Xl8/IA3nhIqNSdhfCDDwM45YTJIlKQkvswyqCwlk1JmjdJ9Z6XI\nufl8I1JxkiLMsa3LQkml2clKsvnQG4xylN6Ta8ZYcRkETQiRmCU/tWLkxFUMMQnMUUoh1SqsiPJu\nglVa8ML7sV02bFGDSmFPTW0I4lJ4W7ltPnT7rVpvw39d6411VXNtYjgp4u/U35ZSlOX5rmtKpiJt\nNV8hwu8ICKrNir7nt5da2jylbU7UW6ZprRVV2uxJZZJS2GwwRmOiIZl4Ix9Uq+UkgiLk0O7FK0lB\nbpHaWG0igDMSLxgjl3mSOUjInKaVFDOH+8xuu6HvekrVXObMbmPY7jb4vmM9XchpRRux+1jnmWWe\n0Fa43mlNWOvonWW/HcQbKkV0XBuDRzWefWmUZRpJQqN0gSpDy5wLl9NEBVznoSiUWqHCZuz59PGB\ndV1JOfN2uhDSiu/lM16WleMU/m5N/VUKuXM96AJKVFUlV9ISuRxne3cybgAAIABJREFUrJcpr+k8\nhYxSErTaaiW1Jq6p3NZm6WjbLv6+zltRb8935eNqpXHWUbTg0DcnOdW6B654um5QiWYJgUTBGc04\nCLUPZaWwWwVKcG2B22WYZIxpR1/p0EFESbph+FpXjLHSKdPStm9FWMvIqdbbQO99k6kNepICJd32\nVaLaoKgrNf+6KVTINYvRk/qexVPRqoofeKNNKaVgI4PdsIhlZskZ99Txw0+/FbFLjtI9I53neOe4\nS5bTywscE7VcuD888GEcedyMoByxFlLWhLVQY8AoI6ct0dSitObl5cTb2wlSYdf3FGtIeqHvBx6e\n7tnfb4lLwduecdhgOyf4YxBr1ZKDWBZPGZU8xThiFtZNaf45V6pQohJKJNYM3pDWQMyJQhU2xypF\ntqSCrcJV3h62DBuJoet6JxxqhMKpjEI7zbIkUpWlPYyWIWtU6rHKcLkE3s4Ll2UWDpMygvk0hDCX\niiqArjf9Qyky+NTX1VlFM1CRe+Z7ttUNdqu35X9rXuTQptBUTON/q+scop1Ur/Tca6dudLPdNRqN\nItUqTo2F7wq3QIrvDDOxdBBWWFNbAzXJjKk0AZHWhaREkdobEedQFFNOoiIumVjzbaBbqOQkEGHf\ndVgrzK8YAst6VWIL1VSryvFo2I53GOPJpXI+LizHGRMT97sDp93CvMC42/LT7z7y6YcPHL+9cXp9\nYZpPDL1niYnjeeLr25m345kSEz88HvjxwwPKjEzzImHw60pvZ2hxbZrEZjegrSUulRzkVL4sE6vv\n0EaG5uNmwDiL7jQ5yIa4GR3j7z/x/HrhLz9/5fPPv7DpDb95uiPlxHGe+PJ2/rs19deBVjaegngy\nhzUTl8R8PPHtL58xTjMcRrZPD9iuEzm4Vi0pA6CljZdEKVmOjCld4XIpDg1rr40bblrwgJztVEsr\neU9aKaXK1Ea9D5iuAbgdniJRHUznCWWEuK97CTkG6fBruUI3Ce8F5qmt+7lRDa8AiBIIQY6a8p6o\nlVry7ZRyvTmvd3rNRbps1V53sz7V9WpFIF7W12JfC8J1Vm3sq1qH9E7hF1vbKoXUOffdhqDRg6N4\n8Xe/MnSollKH2+zBdQXrB7aHe5bLxMff/QPTPJPigqO5DOcieYa1YFwhrwmKCEes1qxh4vjtxOnr\nmRIjjw8b/vF3P7LbjFAV/XZE95ZqDZ0yeG0wyhByxhiFVo5TiIQ1EtYFqyMTMyiNagPlkiJLXpnC\nzHmZeHvNxFIkJLkaphhYQ0SpStc5nJfcRqxm8I7DdsN2t6HrvBSfTYezGl1lcBxSJcbrYFH8yGOC\nGgsqV6yvKK/Y7DzGybqIuZBPInuvGVD6vfiqd9dEYbS1zrOte5D1Ueo1jKJKslUVOORa0IVxct3w\nVcsPFV40tBPk9eeuzBmrsc0qxiow9X2+ZJCB43dL6LsiLo/4XXOOUu0dXeE/JfOdWlteM5W6JFIW\nu2VjZMvKpRDiOyxqnSWVDDlJQ+cteCdNyfW9OYWtVrryqki14CyM1pNU5jJN/PmPf+Lf/6d/zx/+\nwz/wy89HUpy4fzrw9MMjw7ih23a8HTtOl1XyBzrPZjO0ximzud9TjGZeF/a7nvNxQQH3d3v6YSfh\n0mhUC2hWCskeOM8cX84cHgx+dGiruHvcE1Lir3/6mfPbmXmeyCXy+Hhg93DHf376A/H/Drx++cof\n//QL3XaL7Tz397u/W1N/JdMsbi2DqnL01068OdBVLF65LmZRXgr9r1Kr/B1EKCRGRXIsplY04qlQ\nyTdoQ+d33jkNclBKC6f8us4aridd0ZXKWEFJp1qUHGdryKS0UooW8x0jzAmKdCOtbN7e6HX4CG2j\nABk+KlGkXtkK75z5715TK/LX0N7aPGMq8phViZe1eG4JvCRFtjTxhpwKpCtTrQOTm1crJSeV9phG\nv7dxlcZ51ppaGs+fqxjqOyZOrfiuZ9hsyLs99znLQKwKe6bmTIqpQQqJnAJxDZSUUEoS5G1/ZgqZ\nsELJifu7no8//sBmGMmx0o0erKaoSmc0uhZKjKzrigJcB34wxGTJ1YrRUoFMbqcORdaJVUWWHFmi\nFN5QMqkWaoDLNMkxWSkqGec01NLsZ8WedbPrGYcOpzS6c1KUYmoU1cZ4Mpq+d1inmKMhoalk9HVD\nvdr0FlhDZEydcOS1MC9ykSKcrwG7V+z3uqquu/8VWrgJ1SRRvgC6GW39i0V4tYZGvFBq8xMSmi43\n3P07tOV2k7534FeR27UpEWGQVnLvldbhy8v+XpvR1tht3cjjyn8U5EJFuOBXdlqtlZgFUzffvY1c\nKmuIpFKwKYtvvxJ6sk7iL6SNYN6XdaFQ2fSdxMgdj4T/ETh8fOLjxx/4h3/6Se4VBSEXcoVqNNUa\n1lJvPjJD36HbUFlbS6hiQ3tZZtIaMSjSZiDaVd6XLtTUTipaE+NKykGuV5bZCUqxLivzGjgdL/z8\n8xfCujB0ml2vqBvH4C2Ph5Fw7pmOZ16ejwy9519Jevt1CnkKqS2i5orWWbTd48aBkqW7dt4Lq0WZ\nhgG+43SysFqxqrX5ZGphlgBFCS5Vq2DvuuabiCg3eqBuu/l1TGiuv19rGwJdu3Xp8ysW5bT4gzef\ncT9IFieNiaC0lkTxa7UFUQzmfNt8jDYCZTQankAtum1Q9Sb9rxVR6l0Xfqlkmvd187AWrwuR1Osr\nj56rGq1+B9kIxbJWceirVVEQ+Eib0jxu1Pu8oF6PxpWipFO6fk7XwRZt87kxgzovf0c+02tByKXR\n1xBYLCWxSig5EZaFzelMv7vj048zKQaMEoGENZYwN/zZgDYVlLgtpjUQ5kUKo3cMW0c1IzY4Omeb\ng2NiSVFoZrGQdSaSKQo671jnyLwsLGskhEUGmVpOcp1T2MbVD1axxBVtK0Nv6a0nK0OM4hK5TIlc\nE8aA7zRmMCgsbkkEayTRpYo2oNSC7wwhREpRbIceb22TfUdCirJWeC+KurmA6lLRReiJt+ukTfPq\nV/RDJ2cpI3CaNDmyOSplUNrirKzF3AK563dr7dqA5NadC9r7HYwis/7bWlO1tk1ICXOU9gvQHCDf\nKYeo61qt7/DNFbcHCc1Izcpai6FVubqZKi1Yv1ZkpcTCIKbbY5hGcEApNjsJ0aAU1vXCsiykOIjf\nfEj8/OUZ2/f8l/8S+Q//8Z+4//QbXl4v/PF//pnlfOJ0mThPq3iCLwFTCrZz4B0xJUlpolJSQr9U\nnNKMzpNCptSJ1Sw4rdDIcNk4xxJmMol+66gqEdJMLZnwty+EEFmmhZfXVzSFw3igzDPz56/k08Tj\ntqc83fNLrLx9eWWiYv8tZXZ2ThZZLnJxatboIgOum6BGAUUmxpTvJvVVYARaUSfLQK5cubhib9hu\nCFlUUqnaSiQ37DHJ/2sdT32fXIoEu4jHhla2DZza+KZlipZcWM6TDISsEaqS7xonV4uE/3oCaDde\nrVp2/lLQDft493tsxfT6Pmm4aTs6og215lsO5PVnUi6oBv+WutwsDExT512Lrr6GcbTuXGnT3BBL\nYz00muL7i5XPT8lnd/3+9TRxvRHlR7+DqGr7GIuwdqTja5tCUWhjMdahFXjf47uRzf5BfHCQwZyw\nPyBHYYmUUsgxEpYzNQu85X3X9AQCStvOYMcNT58OHF9e+frzV5awcn/YcNhK0O7ZCAMj1Yz3lp3p\n6Z0hrHJNjPXia19Bp0LIidO6sM6FsBZ++HTPj58ecP1A1ZKE460RiqqK1ALzLPOFeY2tKVBYpaGJ\nvELIzdYVeif+PMkKzbDve5RW5FyZl0hMBY1iM3YYo4k5k0IU/B4p1s5ZhtGjlGJdI2FNeOdutr61\nCuRSEFqu9QbnDSlViIkSJZn+fQ+X616qrIkrjKLb/EVwcYVqRnS62Yhqo7FWk+u7rTQ0CnB+Lz5G\nK6wzMmPQmhhlcy+lvrOwrmExSloorVtGALXBTkpgplqxbR3GnDkdL8J4sYZaMosSy9jNfhCVtVb8\nz//+v5l7019JsiS773c3d4/tbZlVWWv3dE83RyIEUBABARL/Cn3Rny2BgDYS5JAz3V1dVbm8LRZ3\nv5s+mF33yGER0AcBNdHo6urM9yI8rl+3e+zYsWN/4eXxzA8/fOS//x//Fbe3d3zz9QNPT47X04kP\nPz/JsJWU8YBxnqwF8pTk2oIznDYdQwjsho45zhxu9gzbDdHLwBWbDO4yc54vlFrofUcXNoyniQ/v\nf6brB7re4zv43W/eMJ5HzscL8TUx3UQegmcfdjzsO/JNz/PLhZyq1Oh+4fXrDF/2jlrBK1Lx2ZG9\npHm5tno3iiwquWaWVnejAVcLeUVIxaUgBNAcDGtVhMLyFyx8dNUqk1IRErREr01tNIlM9VHxC4Lc\nPThHSVlGWuUEKZIvBRMLrsv44NWtURJDaQxS9YyC9UKVQapmTWdbERfdpLIGEiSbdr4dO6Wu1rqS\nXbT/X5aqV60swbwYKCUS55GcIYSOzW638JhV0/VWJC21PUzNVKwdelpJZfV9B6MIqiwUUEX4e7d0\nyQrt1Rq8nLWYTobyDpuVCzBGgr1ZKAtRjqSU6aaBvJvIU2SYo9jEFhmQHVOmmIrtesImMxwS5wg+\nDDgnI9p22x1u2GE6T4oT8zQxXkbGi4daRdGgfi1xjtQkXPY4Zj59PGGNI3jP4VbmbM7TTIliNDaV\nyBiz2A7P0tDi1dXTIPfBW0ONWceKAaUSndYglLbwztJ3ni7I+DwL9EMH1hDnxFjFyrgFNucsfd+J\nd7lmqMaIPbJzTibKZwmUpULwluAdvjPgHS5k7fAUrjzn9Jklb2tMunJE0sfI6D4GnKptnIO09kSI\nw6g+RxgZimUNoRNxAgZKFqmnYCSV+uqIRotkkynrqDv9vt4JjZjzqtQxGLX+kH4U6f2SQd14aaaq\nqTJdIjEmaS7zlrdfvmUzbJhi5OV04nIZOR3P0hVqGl0pmYu1ooyZC5xVQvl6ufDx+ZWHhxtu7w4M\nm15MuhQMjHGiUmR2aozkVEl5po6Vkh19tULbbXsum8j4emaMlQ8fjlwmkdbOc+Q8zmJ77f4ZBXLr\nwsK1oel5zlIsSlkE/85aKJIKziDwo64IsQWTnI3SFqLOWFQrkhdKkS9XqqtXbnLK9WGVT4aKUAxS\n41SZYZGNJK5wIjGyaEHRO3JwlBTJ88w8ReqcCTlTsqeEoN2bOiKlWpUiSRAXtFOwuAUFSQbhZDiD\nIu/m2V7VfRGjg0qrZBYYq7+Ddo9e00/6fasUemNMnI4Xcq70Q6UbNur3oL9j0M9ohSwN2u1/aeG2\nLgXZlpLLuhkJ4qqCMEadGSvYUimqdjGl1T+cuFcqndoqZc5rIasCaD2kGqrZqCSwKpJLYrN6mYiz\n6Ngv84gfbrl7u6Gagc4DaabvD7zZ3uE2A93thvPLC6fnZ07Hk/hZ18p+tyPPhXGcOB5P2OgYY2Kc\nK9OYefx0whoY5wvBO8pcqKkypsQxRk5jxJbMxhsZBh2kozDVpIHMEBRNUit5TtK5qwqPlORw3/Ve\nWryt/GwGcirYAtkmoskLrWiMwVvPnCPUKtpxJ4oQ5yzzXNUDp2CkzkxFOkW7zmH6gLZuSMYwzSKh\nRDh7fVo+UzvVRvEhwMtZq/0caixXIZu6/Hst0nDknSF4i++EiiylEpxSJ6YQgsg4vXNU40CnfY1z\nVlmkofOOvnM4a5ijaN9rLeJYWiXQd51nVuo2l8r5NIETw7HBdcw58vj4xL/93/8vdoct+5st/XZg\nmmZikgEyJWYS4JReNN5w2MpYwFwgWcN5mgUInC58cb7w9nLh5rCV+FYNtsg+LTVTbWW7OTP0HaH3\nMmx9SqQ50+08h5sDt/d3PD2eePz4wodPrzw+XTBOQNhZ/an+KwOCfqVip/LPBtlwHi8KhJJxSZBD\n09JSHX3fglfjyfV9KuRshfcrGbIg+JIlGC/ypSxccnWmxZ7GCLIUcWQOl3iXO5bOTNEKCCKxlpWi\nsCIzLN5RgsOHQJoTaRbu1Ton/h2h04YcoY8a2ogpk60hubw8KNeWulRzhYq12cK0a5Q+bmPVp0OD\ndzucpICp/KE+cdYZNrYj+HtqlYEZIcgAjqI1h1YQbd4xTU5m26Gr1TB5T7tog4uiLzlQnFoF6/3C\nYgooGSBSeBq3LkysXczNWpHb6L1u66LUEX6hz4z1+FAp3UD0I6FkBio3Vb9HLnzx7ddUCnmeuX/3\nnSBECzFnnvwHhrDh3ReGjx8+Mk4Xhk1PiZXhNBFq4PX0Qi0Xok9SoIwzP71PfHw5MgTPJsgDG1Ph\nPM8cp4ngDXXwYBwdBuMK0ywueylnQhfEiU/TPGlpdwza4Rucw2EZfCdURc6cp0SOFV9g04Vl74sf\nuSXlLJYAKRIsBCccv3Nwe7fjdBx5fb5Qa2GeMtM0C8XhnKDz4Akh0PUdoQ/0MZNivqIUtHO01qW+\ntLg7qtyQWvAOAjKP1LiV604xSjdysITOa/ZcwVZcEPdCg1FELhl3avffGPpq8MZBlXqA06ek7y0m\nOnKWzu+SMzkVxnFWebHYgORcKWJewnY30HXSZ2CDZ0qJ+PRMeXpWzvoik7ii0ILOGHIt4t+vNZmM\n5fxy5HIeiVOEVHg5T5ggaNoZkXCKtXYlRSn63+yjZFpFei0MFUtiDoXj8UyoHt979jeB/e0DVCO2\nBd7x5ZQZk3QW/9Lr13E/jI3PNiIHbHyuIpDGlzVfiVYI1Bgs/9RgLkG8iNVTo2IypBRVQXFlZKUv\np8jAGCnIJO0wRQPKwscvlLVVsy3dtEgwa4WW6li6NK01xFmohJgiBXC+4lzQBKEh2yrZRFabKpWc\nGWtlOpFpTSJFA6l0/YlELCi1UrTjTusF1WuThNAR0vnazMXkz1PK+NDhQyCEIAZNqkmsVaWZ7bur\nVLPRNHrhFGugyeGqFPFKMdgqDVzkll8or1mX6hyrOKaIk17jPbk6LNqdNiwj/kCKbEvZ3qHKF/n/\n3nuZaq/UVM6FvN0p5VS4uX+QgjYylfzm5o44jjhrePP0zOVyltpIhnieOT+98OHDT4SnJ8x5FIqo\nVGJKhMFzf3/g3ds7nIHX45n3nx45/jgDBhc6pZPAYelCh/dipHW5REqMGMQ/v9bK4AO7YUMuFe8s\nN7uB25stwXvGmPjhxyfimAgW9rstd04m4CwoOibxhPEdnTPUIvsKK4Xb0nti50hFMtHgHfvdBorU\nWApV6ZWkqhYBHH0I9H23fO+SRNaKUoJFDb+GvmO/6bnZDrKftbZzc3fA94FSC8fThdP5zOUykrNO\nktJO12bLC0g9rKCmEvJdrF6PWBY4HQBjwVVCULfLIgHcWNjte6ZZDqOUmq2ADsDuA/1uEGOtpLGh\nGo7HM5fLhXmcJINRUzFp9ikycNxdGLYV47wcbln2fgiGUhKXcSTGzBCkXlCtJY2JmisOyzQlkacC\nvTYSplxIH1547UY2oRNfJZ2B4Lxlt+nZbQd8MHSIqO+XXr9KIC+xYEUWIGm/il2tdTKVnIoxVVC6\nFYlhVu7X2ua/0vhtq5l/axwSpDiOIzHOlCIFwrbpSoauM/S9FWXEnBnHiEky7gpN6Vr0aCZHzQCr\ncS5VDxqrSFIk7hbrA9YLgklqTG+1iWcRhhgNnEX1tMr/NVdDnKhamqytGIMxopl3zkuhT3XrYsak\ngds2eaHoiaVzFHBysKSUGMeJwThCJ0GS9mBqwDasihM5WO3qkV01myrNIZFlfakVk8Uhz1S1O6B5\na688uxQ9E3GeKSUJn+sCIXQ4T2sRQjIlu8rhSqUVGCqlnapyLVmK0t4KshQ1lBwS1om/dVN/mAo1\nZd68faseJJkvp5lpnDhfLhgj7dbj85HDX+/Yvf/I9vHI0HtyzkzjzHAY+PqbN3z//Tu8yTw+PvEP\nf/qB57MMbt4MGynCWela7IKn2wRKKfz1z4/M0yT3tlaGoWe323JzuyNGcbY8bHvu77aE4DlNmcdP\nZ+bjhcFZ3jwc2Oy3GOuIc+H59cSHjy+YjezH4AzPLyM5ZrEPMNAHy2bTkXOhD4Gb/ZavvnpDipnj\n8czL6cLpMjGOM3OaRX3lPc4GmT7vvahZYsUbx2bTYazRTCByu9/y9v7AFw93pFhIWjv45jfv2N5u\nqbby/ucn/vyXn/jLDz9xulyW+lWtCR8sXXDEWbyOSi4Y5xF7Wemydg68t8KvVw9V5MN+GHDOCyiw\nFusqt3cbxkvhdJpI81n2kpXRgb4T1OuGwOX5hDEWZ4IM9rgoRYrEilxWeabJwHEiV8swGLyVbIhq\nCV5qdGWOjGSccVTjicmRx4mAZbvbgbNkjQHOVqo1pGJ5/XSm9xOH/ZYpSVHc1kroLYfdwO1hS9j2\nUohvSqB/8vp1WvR7J0HCtYKZpNlWPSFs62BUemUJIqDFPaUR7NWg5SI0gbGG4DyYgA9iGCQxv2rw\nk6KccwVrPaETzl1kcZqyWu2eK3IyL2n+Iv1RvXZhoWVqNWAKxmZcDyYYXNFiJxZskWKqs6s+XItB\npZl3NcrJyPtKh6hRPTMMm4HNdsPQ9RhrSSlzOo5yaKm7okJpjGnKAEEr1lh86NhsRa2Sc+FynvQg\nbeutEkjNEq4LT8KZS9NSvaJ8UF1yyhHnxBComQO0wqY47QkySiny+vzCz3/5QbIF7/Bdz/39PbvD\nXmZK6nxH0/yKayvGgaiWqxYHrUx52kmThNHvKg+fVUCgB4hh2UetqGysxeFwzhP6nu3hsAAEvsm8\n/f4dvzufOV2Etpguo5h3DYGuD/jgcBTefrVje/uG4wWePn7Ekbi/u1sCvy1gqtBvX765l0BeC93Q\n8eW7tzy8vWe73fD6+srp9ch0uVCSuDFaC0NvyZvArgu8fbjh5uEW7zrGY2RjekKymA7CtsN1nn/3\n//yJ0+ksncymA1foewnyN/s9bx/e8JvfvMMFy+Uy8vPPH/nxp098+PhCGQWhp5yYXkZ2uw193wOw\nC1v+5rff8z/9m3+NcZ7T64mffviRzlfu7nZ89dVbzGYgT5Hp+cR2t6XUwnm8iJGXL4RQ+M//8DPn\ncRJAozWvUqRYKYmxxTkBNAXDPEcCBm8dIXQYbYevtTKNE9hE6Czey3P5/HSm77cC1HLWmAElJS6X\nSZqLXiFeolAwitCCd3g3iO1vaQILJYJqFdVKNQSVfUaXiBGZiRoMYXAMG0fOiN1ySgQqvhelULcb\nyLkyHs+MZaZaR8SJN8+cqKmIEmrT020Hpjjz8enEy+vI7f2OTecJC7L5/PWrBPJr2d/aPCA8qnDR\nTa+sBTPvpGNN8/uWenw2fsquzQogQU3UMa3Kqwl9O2FpBwE4V5fOzJYWVkT+l1Nei39a5GtITqhl\nea9mXNSuCXOlWkGLtLapE1QMrHTRGn/lXxYe3rglaIEG/SxSLMu6RqKnFZ9zb71+b7dw3CUVLuOF\nSiX0TSJZ1XOmLNIxMJScmWNehl/Umpeip7Aemo6qHlgoG01fa+NLM59TU3V58HLOzOPE66ejDslA\nBtamhKFIcLTCmVakKaMpd+Tj6/LgtbtqVBnSCt2LWNWatszUKFRPy4rkf6/oLO9X+khvh+sC25sD\ntzEJCEhSAxH1q/DCRgt5m5T5l/9d5eXxkTxPdH3P5Xzm/HrC5ES3CYQ+YA5IvYZCtZbNdou3AzmC\nsx3WdoyXI2XKhN7hNoG3X90JEncd3/7mK24e7vB+IM+F48uZp4/PjHkkUUi18M0XZ+rbB7b7LdM4\nc7pc6HxgOwSGYcNmM7A/bOmHjmE7MOeZMWWmXLm8TxgvtMx8KfSDpwuWyynR33a8/eqBv/2732JN\nx+n1zN1+jyHTBcd2O2CHDrO1mJsHck5cTmfMecKFjpvbA6Umnl5n8qdnxknksnMtJApx1m5l2yY2\nyeALqdPIfFJnWeaLplyYY6YQiVEy8lpl3oEtM7UUht4zTYlW7UoxElMUS4ZUoUiBeLsb2GwGfHC8\nvpxJUbpuY5bmrZgku45JVEpD8BgjwCanTPVe4kMpeC/mX96JxHQ79Gz3A9UHcpnJamksUldpGHPK\nKPTBs9lv6Lc95SVxGWfmy0zXeUiZ9Msutr9WZ+eSPC/IGtDW4SUa0wpfkoI1NL0OVy5FChLtV8zC\nr65NB4CickPzVG7Sw4aMgYWTXo2MtFstt6ALtUoVPGeZCNNa8xf6fRmMoXIttQUw+gFVXeakZlRX\nbls/X7S6njYfFFjUIdWI/KxWSFHQfa0sk+utk9LJWmtwaombKSnz+vhCqYXDm1s2fjXrylnHZXXa\n3lyqNFFZpwZIQl81mqNt1qIHWC1ZAm4rShrpgJVis1Jgy/2VlXHGEULPfHkh50hnLePxyLTbkA8H\ncR9sb2bsErLbfxbOvnUMolYIRu4rNHqO9d4VORjQPoNlb1mnxd4r+wM9kJwLyAzZTrxxdA1ijEvd\npeSs8rjMH/9uR5wm4iRNJafjK5fXV+o8E3pF8Visg0LmPEamS2QeIyXOuN4RwoBzPZDJxVBS5fbN\nDUPXsbEd33z/DTcPD7hui8Ewn0eOn1748OkTr0eRz/3NN19xuD1w/+YNf/rze56en4nzhaF3YCzd\n0NMNnm7oqdYzbDfc3BembHh5nQhDIXSVsXfstwMWR7wUtvsN+7sNfnB4G3DugHci18068CNPFd97\n/G5gfHliipkUJUMK/cDN3S0Pby5cpiSNN7VSU1nuaXCiWsml8ddtypIqSHIixkqMhRhFzZJrpUyV\n7TCIUiZXyjzjvFATlAs5yyjCmsVy9zLPUvR3Fuc6+q5jf9jQDZ2KJmQw9VwNr8cLr8ezIOdapDFP\nR0RafXadCHHISQ6Pvh/AWoauY+gD/eAZY13tNawwD74UghfKNHSefujpuyAiECsoJM6J8TJRc+S/\noj78lRB5C7gqL7ItmFVoDSrXTmeoa5yg9cabFm1+gYUwRbyOjTVLIUkeTkubAH4ty7vOBoxpSFp8\nUJrul+ufr1ZP00xFOEdBB1mplkIp+ucq6Vr8pqu0jheFgyuKabpUAAAgAElEQVTnLsUUoxQwOcum\nUJuANgDAaVU+xcjIRNGZi86LP4bzFu9EFZJilg5ZPYhyjFzOZ2KawSPSs+CFStHvbpDmDescfS+w\nVR6krBmEXYpKi9rEGTJymDl1pGwZgrWyOZ1z5JyW9bbGcvfFA5v9lq9/8xXjeCYVaajY7vdCgZS6\nDA8x+qRIcTgtB4hzXmkTfTUKBjlYqqlLN69ph5tZXflaELfWSqdpyWrjYBcaTjoXvdQujF+dA61m\nO5qddJollM2gHYzaTFOTWBPEpIqgqp8VSfNMf5IO1TROECObw4DvLb//w2+JU+Tjxyf+/u//kct8\nZn9IbB4Cw23H4e0eN9wwjZFqDbscGeOAM4V912PePPDw7h1vvvmG7/8Yef70iacPPzO+fgQKYejZ\n7w+4rse4TGDgfu8IpmN+nfFDwXeZaT5DBJMcu4c7vry/wZTKf/x3/8Dt3Z79Yc/uzZ6+Gygpc3k9\nkqYsKp7ThU8fHknThAuOLveUsZAulsNhx83thfP5wjwLpee9KHiGYaALHXESm99pjhzPFpOT+MWP\nUYJ4ElBlnZUWfVPJccJ7z27w7LYDzjtSLZQkWaaxVu5Frpgi5nTSASsZdozSVT7OE5u+4/Z2z/bm\nwOPTiZ9//sSnjy9st1tu7/ZseidDWEplMJkueJxOG/JOZm36vkfIN8N5LuQUl5pACPJzxVrKKIj/\nZczk1yPOi4snxjDmzFgz5Xgk2AUT/RevXyWQO+dBkWlLldegahZOe0HqtS5/B4ZmdiUxdpVTNIUK\nWR4kGvVihDduvHtDy43SELpE3/Pq/Rqgs1a4alMNplRskSAnX0AoEGHVpUBTSllollK0HXqhewu0\nkXFVT2e9Oa0rc/nO7du1AFRZ5jQaa3BtrSjaBWrXDKGKX4ixDt8Hbh9uSTnRbbulIaspX4zR4N8o\nC/VnKerZ0oqmjeoyrUFIs5QmQTStcErVQu16f2uVAI0REyTntvjg2M4bUpnp+x7fdctwA10eMYa6\nOoBtOwjtOq1mlStWyK0JZW0DFxpNgzcqdDFri0vbWVUp2yb1bCoka3ROrDZXObtaKWT1P5Ht6flM\nc6+KnpbBZLVrriWTc2Z7m0mTukymSDfIaDnjKqfjiRo2XBJgI6YmLpfMX3985hwNm/0F5gJjpJwn\nbDF45yFkXD9wuL/jq++/xdqO8/HEp59/4j//3/8n4+VIGAL721tyNkyXE6Fa9jd7vnx7x5u7HbZ3\nZCKfnn5mfJnIp4qJjkO3wcyFTz995NOPH+j6ntvbO3a3ezabnt45sUYYRy6XM+PLkRiTeGvvB4zZ\nkObM7U3m6flVMxytZaCBvO8Yup7XeMbUIh2kOVO0sQkkM89qIyBqW9mfLdly3mK9EwVIrYS+I5VZ\nRuIZ8KGp0KRpynnPNCfi05EKTOeZsq1shoG9sWyGjpuDZEDGwnSZsVkaloZerG2nuXCZEgZHnzJd\nyTidb2owZCPgxNhK3wmNF5PQyXGWpp8ck6jpfKAYK5lHyiLeiJlqoPvnxJF7768QrCo2dPMvbeWw\nBlnlSZveujXJLDI5WIKwqChWhUNr6NEEQAp37QE3jdpoh0BdPlfedL3mVni1n9EEqvpWhUJTebTA\nVaiqa2/IGlXQKN+tvfXCRTejq0prUjJX6F3+ThCjU/7fWiNa7lYUVErJWckeCgVjRSF0193LIWKF\n2miBXHj3Kmb9C14twqG31n3R0dF83U2TKZq6FIAl22g0UdGHLl8ZIZmlUG2bUVcI2ODo6AVZGVG9\nXC/9chAUaYlqJ8rVFlG3SrR/QIfgtr2kP2TMSrXY5f1Vy65GahrfJXhjdSiD0EENjbdDwy4KmvX3\nXCuSV9TGQVQXznsqBS+LLp9sxBOoJqXqkliwWiucf7Ydt8bTbfbUMnM+nnh6/5Gnx8jp8ol+c2TA\n0WWDTaJ+ygmmmHEmUbFsdjsON7fkt/f0254f/vQPXOYRnGXYbRlPkZph03Xc7HfcPOz57ts3EAKX\neWL7U+C8v5DPhZB7ur6Dajk/n/j4/pGSKjeHA7u7Hfdvbnj79o7zmGSi0+mF6XXC2kDoevpNJw6b\nBXyGp8dXtsMGY6STtqZK1T4N6ywxRuZpJo0zdZZJQFUWVux1vcoT5eGRLmKlNEuFqJYIGbN40piS\nCb2nU5GBA/HXMY7jODGfxUbXYJlc5Hga2V5kwIyYoXnOxzPzZYSIquwc2VTOc2IaM0PHors30eKC\nfKeMyJFJmc7o/cqSLdRSZSB0kgHkTUw2R+m69cbIujnHxv9yyP51Oju1hbIolSIccL0q8l35HCMp\ncguyi8rFiFStzem8VrnIqS18++IsqHIi6UIzVz97/dLDRD9f94gG4rwE/lrRIqwHp5x/U3cYoXVy\nKfKwW6seeCo5hIVHX9znEKSWS/rMja7q4VNLVv9ph3UO41vjjsy1bMOprVGvaWO1E0602rkkivVL\n1rGoW6p4cQgaFUhdqnqBGNHqtn4+FI07Y8SHXRGvzU51+GuNoaGmRo+tyywppUxUEnReiyFXuyBv\na8oyp9Igha2m5lkU5aoNRwGAnIeKlp1TDzP5no2ass29sX5+XUtm1QK4tn/LvpKbUEoW1VFph6o6\nVOr7oYdiRpB2yYXQdUqxFFC6zxij9QPdPxL9RRXdsrJaKbES3IbDwXM43FNLIsWZL77+mhQnXl9e\n+PjpI7kfKD7QBc/pPHI8Jo4vJ4KPHO4eeXz/ge1mAD0ci7eYTvZQSRJEvLO8+fKBLgzYHHA1Sw0m\nW+6399x0N+y2e77/5nc8fnjix7/+zF9++JHxeGGeZnKKvDx94vn9wKeHGx6PF06nC3Gc2PUdv/n9\nb/j+b39LmifyPOEMbPCkWWaIPr5+4sPPL7w8XqhWDLjmWng5TeTzCDFCkYHQVq9fpghZjHeMl4k4\nZ2k6q5WkxmipSHqVk3gneQObw4ALVr1eLDbBFAunUVpee2fpNx1d76nVEqMMd0DvefCW3cYzuMA8\nSw1jjoXzOJKmiDfS3CXhrRBLwuEgF8Yp8vp4hDlx6ETL3uyfbu82WAbiaebx5cx0PovswzmGYWCz\n6/E1cXfYcXvY/2JM/XWKnSWRUxPri57UCG8AVTr9rs3qm9JAgmpTr5glBadqQbNRNChSLVeUzdKR\nqdTK8iAqUm9vxGrYX/XU/Oxgqe070GLhEqiage3ahWkWS1WjwX7p3mzvg6ENp8glqEOcDkIAzVSM\ntum3Q641+Shqr0h2Y2SKjNE6A6Y5QFZQS1tQfaxy94s9bePzDRicrO3VoVWKBCrlemjeLtD8bMpV\ngUrSiWYd3AZkLKP0NNtYmry0Tf3zAu9KT7VGKCmAVijiVCMJSxEe19S17mBaURSwVtG20b3T1rUo\nvXJN0VWVPrZFbf4j7QC0Ur/Q6zSoJYHSLKZdlXFiU6DvUa8oMxCHxZYtyo83KwPJfiQr6KF2anwl\n9sC7Q6KkzO5wx/7mQQtiDm8cuzhzM16YLyPBee7fPlCr4fh6AuNIMbM73DBPE3GeeHociZeZNEZ8\n77AVhr7nzdf3Ops04frK8eWVrhv47o+/4e7dl4TdgdfXiXTJzJezKEmc0YanKB5EMZNjYvvuht3d\nhtAZ5nMEoN8G0uuF/Tbw/W/e8nAaePfwhtfnkefXI2OceXm8MM0JV6Fzns4p+vUW1zuMUpW5FFxp\nt3kdx5iiOBUWoBZD6MRCIBbDPBVsLDLpSYepOC+FxeA8u77DBBmsbjDUaaJgSaVyVndO18KOkcNj\nmgXJe6+eM9qOYhzMRTp7n59eidNEZy3JdsRJePHpMvF8tvTe0VuL845tF7DeyzVYj3Gw7TvuHra8\nfXPzizH112kI0gJcimkp99pmG6vo/FpiBtoKXFb6wxgpclSNxuLYqhy4+rSIlFCinSj/PMupgAZx\n/e811bLw07UhfbdwtMvv/ZPvJIi20saqOU3v8xX/3/hW07IEGu9sqdXhNUsRXl0CjjVtUMYaMNpF\nSHB0n62VWJBqANFuzpyb5YHRwN4CWlWq24ivjaKY1Wis6XdkLUpuJ4cuQltvUCUGkjPWdbyYnjca\nzLW4RGvFvqYt1gyoZWJyqOnPWKf3Uqgk01ptDSSyUjbS1VmXk7ksElDxyJADsxoJ2ItHfQvkdv1s\ndF80Y7IWeKXLmGW9F0qm0VqKyFozlyxVobZOEMSWWb/YchhbXcdqDa5ND9d9Zoy4VKKDtPcHeHiT\nydqIZXV0Wi1iD+ysI/hOtN6nCYwhpcz+cEuKmdPrkTg7UjTUYinFYaxj2A28/eYryShzpN97Pv70\nnloN3W7D2/0tuJ6XT2cO2wPj8YU6TxhbKbYQbWEzyFxbUxLdEMhFiq1pivSbnjD0zD/NkDO7bUfn\nDry5vSN/a/j5pyf++tMn4vzIzc2OrhZ6wBXx33Gdk3FpU1lklU4trp0S5LlCiZm5iCYbDM55knEy\n8CMK4Ase2AQx+kKajXrv6HygGhURWAEoSYHiNI54L81L6wi8qveyah2mZa/y7I5z5PU48vJ8xttK\n2ASyrZynmfN54nI6U3Jm6Dx3uw2H/cBuP9BtBtKUmKLc52qszB+ovzy081cK5M1/20hXni2iBV5i\nVCXpBS9xo8iDnXLGOod18jC0gpe1dikqUYo0p3gJNq1QKDROhuY21zoPDVI8qzr9pK4lT6fa1Ov5\nmw2ht+k/wtmvE+xbE4+xBlzB4IQPre1hbwXRVbcuEVWLis5Ih2tD3Q3ra4u6UCeScawOcw3latBV\neqm0AMq6trUVaJ3+bGkKjBbAxaFPuGKzfOdGCSz8emmukS2A6WG82KJWUmpTjwopTjKzNHis7ZZA\nJY9EufoOLXCKARR6LbWhZq7P47q4LbbgL79cF9Smv6HUj1oeI1YIztmFWhGVVBWetB187fKM8PxV\nG1fa4bnUnkzT/0tnqrVX61ratCrNINTcWzxqYP0IPVicrFejaRp15qwUXXEG764VUYhfO0mCud5f\n9Fqk96Cy24rCJL8pXM4z4+mV+XyGCuGwIexvqKanksgFzufKPHvinPj5zz/z8OWXPHzxwL/6n/8H\nHn/4mdOnR+bjKy/Pj5zPJxk0vg+arc28/+ETn358ZrfZ8v3vv2J78w2+P3B8gdeXC8WIt/zd2wP3\n7+65vf89b999yadPT0zlAjlS50g6XfChw4VAxZBmsaz98a8/EWMk5aSDqxu+qALkFKWlLKqwVCrz\nLCMXDYHzWYqPVesbUgOSDLALjs0QsEFcFudY6IYljSZPSVQrWf38EWCZaqTWHorBzJXT85HLacRT\n6L3FmUqKE3EuxCioPKVC0mdpvwt4D12vYKBk0gSfHs+8PF0I7sMvxtRfJ5AbpHsrOEFHxoh9qHqE\nGw1OS9dmLdTl4WkqglXNsCLSqgF6RdOYRpXIwsRaVm+HpWgmPOg1ddIQ8aKf1mDeHraWfS/DaK/S\nbaEC2tQd1ZLbqqqIKw+ZYvXfFVqadqJf5W56CBkA65YE3WpTj0jVZZ3E9lq+gDeO4rP4spRmCSAt\n0Dlqbmoa6pfDw2ijSzVlCdrWtO5YsxaNkQMSU4WbLNL+/0+zlkZTye8ZjOm0Vnk1sLfRJ61QqsRF\n853WZVE0XK447StJo9Zcqipllg7cugbkUg21JKhqXcCq+GnIOMZIM7Ly3i97qf2cHGCfC3lzLotF\nQdXssi7o/UpJJXmLeNtU9fK2akdgjLRut/uuEantK0Hw6h+jqHzZh3a9RtHsO5nqo3RSew9jHd0w\nEHS9u83I9hDI8VYQdx8I255prlCdBPRScH5PrYmSPfNY8TvL7cMDh/2ONH1NnM+8fnzi57/8lb/8\np39kfnoiTgmL4zJNpDhxPl4gVIr3vPvGc/PFLdZVxtMrDBs2my296em3HUN/y81Nz4fHZ3764WdO\nTyO3/cCmH9gcNuzu96RsePzwzPl4ZDrLQJIkqZ4+J7KLXJFnyGSlyCpsgmc/DNzutnKPQJG7+Nw4\n75a1H+ck3jtzZp4SMUWxGQ6O7aaj85WgevB5TjhTCYrYvZPnZjN4jOmJk+45xLG1FBmisdvumJMM\n+k6l8HrSxr3zKGZrc2aaCmlOsoMW5PD569cb9aZa45alliycuXVW51AiyBGzPgxVgsASgNdcnDbf\nb9nQtdKkYDLFRFUyKcsIsyr+yWuQb4hbcV6RgGVto0YaBbM+NI2daAFFE+EVWWmwEKRq1FKmPXxi\nWVpbGm3Xh3/NQq7WTJF5O3iane5CjWA0OMj1WGuxVZC9/H7RgOtwRnTmRYNydQ0JG81fMtdNScsF\n6PKYq2OrGkE/MhgCLbrqWlQ+CzjOh1W18fluAFY3lqtFbh9Jm3JklmypoehmAyBoe7Up0H3RKBhE\nUglVnena3pKieKliKGaMBR3mfQW2V7qHvL6f0i5NW9++iSBt066CNhWnZTO1ZKpplsPqpF8r4gTW\n1uSqRlLNUjuhKYWMWVQ1GLN8plXXz5btXIsEjO8WzOA66POgz5hd7tsU25Qe8RwK/R7npfs3zpXZ\nZzY7y/b2ButuyDWxvbmlGsfT05FwmvAuQ++YI+R8FtfIHx8xvseHDTeHA8FZLl0gu0wwljpVXC+t\n9s52nM4DJltKrGzvNuy2G/aHAw9fv2GaKmWu7LuBS9+TY2LMiWosqYrMzzpB2K5KYC0GbC3c9IE3\nhx1v7g5Y3w47QyGRgZgr43kkpsQYC5lCTpUcC3HO4AsBsL6j87J2WMtoZ6yp7DY9XefxzpAReaJk\n+y2myPPqHRr0A1OcGceRaRw5nifmKeKcIxXRy0+zKHvaffyl169U7GyJ8Dqf0BjRf8pGq4sM0aAF\nBBMUEcl/TRUT/oXrLSuakd8VMZKg1orRaTU5K7LJRV0JvShZlF8tqr4wKHq+Nm5q+mka6lo7F9tB\n0H50fYhaYL5G8xp4FY3ZRdUgro1rcBPO2hhBZO06rieX618tKbzV91l5dh3VpsHLe9nUxco8xutg\n24JKNWtan3XIQFFeP7RGIlXbtGYMjKeFWGvNgrRTyYokhB7JVdzmXCtoI5mEUz0xbe2NAWNlkhPN\nU0e+h7hF2pXjLkbVPVWD2oruRSW4Bv129rffb06RTcXhvKTJtQol1gLrkrlVKfgWlZXKQSLyQqoO\nRqlrkXjJqJZTQbcRCHJUgNAa3uQHJGCD1g5qK/BLXwCIGqYkbZoyMgjEGDFysprJXB8i1ogbnxwC\nFVv7xVrY6AEgw0uygivxQAl9YDnocuV0moixyEBzJ8qmFMFvb/n6d3+AsOPx4yOn05lhe+Tl+MrL\ny5HL8cyHH44E3tP9oefm9sDuZs/79++lkSgd8abTGZqVwXi++fKed3dbHh429GFLv92z39+Rz0+Y\nS6TPcBh2GAJjjORaOM0zpyni+oE+9GxCx2HfU21ljDP7znG373m427Db76QBqQvYUHidEh8eL/z4\njz8yjjMxJ1JJdN3A0A9cXidcjZQp8zpdcF3ABunG3PSB4B3b3QaqSEm7fpDRkKnq2qvqy8F2u6Hr\nxJRsiomnxxfm88glJmazTj5KGVKqxNyA7BW6u3r9SoH889R9CcaqxljUHYoqqG0Dio2jQR7clApG\n5YvC2VZMkcBq1ZCrFfmoTTKmcKWh3lokFS1rEFon+6zp7qo3RzjgBeUB+apw2VCzXhNFUFytrfBW\nl4BnzNVhoA/zytfKGjS0jUN5+CIPWW1HihZRWa9Bvoe+N0an9DR9s5QKizHYuqLOWlsaLiyhNZZi\nhXKSkW0VsNLqvlBQmgE5I+3Taie8SEmrtFW3wLccFkV4yxZE1Gp6Cf61VD2oZT9UINWimnndB2XN\nJOR9JADTuBha4fiqDgLLWtdS1S9MDgzrDB5z5c8ik6lYDmFWOq1U1QoXgncyVk+7kG1tap5G+bX1\nlWtqh3TF0Kb2SBFflU1G9nprWq01s1JsguzUW3gBBLW9fxWZa10CuVn2STVS/LMSn9XwzansUe9R\n84wvqvW3bR/qfVBpbNLpWDbL1ByqIWwGbr98ixt6vvj2K/H2nkeOxxPPz6+cX444a9nttvT9gRQN\naZ6xMTD4LcZFnj+OXKYLxVZuv/qC+y/uIWeCg+mcKEw8dJ6Huxs2f2N5d3/gpw+P/PjTJ3748QM1\nR3ZxZjP0/M2//ANf//Z7Hu6/4PH9J37+8a/89Ne/MnQyOq8ftgTX4a2MHvQ9bK3jPgHfvqV7fOHT\n4ysvR5E29i6wve8INlFy5Pk1c4mZmjOd9wydGuIZKajWkqkB0hzJUXTlwQgwqLngQk/fdwy7juOH\niXmO655VMNA7I0K+Wkm1Kga4ypKvXr9ai76YFYGpVf3s2ki1hihUZFlbuNREfwmuVSV5LYVefZBl\n9xZtc2/okIUeWOgNRWi04ppd1SVrZm+WB3PtLmW5rkpDxtdBRP++BRE0hWgfVa8c/OQHF0QNq38D\njfttx4+iN8x1V2NbGbMGiwV9tgzA6vlQqbYuwf/6cJJr07FWehhKB6PD2aTF1Xb9LElDI1msdeLj\nHMW+N4QgHuF25cNbHbIdBuY6uOp3a4jWqh2vBHK1FdULsFaQdrNysCYv61JX5Ttt8pTUStbPcsZR\nG92lWZGxja4qes+vPez1YNKEUbKdNg7NLJ+93ImFIrvaLzQ1TVs4HYR9pcYyzXveGjEL+6w/QmkA\n3eMryNB9wGotUC2L7/1C5yxAAUyRrKW5W9b2Xetyg9Q6Wag20za0rkgqGVO1ucsKOLDOM+wd3abX\nw1gktONl4nS6MJ5PlCXwQ5xmZnOhv+uwrpJL5OmvH5lPlUzCukF9TwpR+eKYIq9PZ26Hgfvvv2Dz\nd99x/5cP9H//F+ZccHUm58Q4Jv74++/57o9/4OHdd3z8+T03d3ux8p1mgqkE76Urc9Phhx4bwDjp\nzAyDpxtkAAhKbTkMuz5wuNmAqUz5yHS8iP9REdWM9yLznKakRXVpDqrKh8vQ64I1omsPXoL/OM5M\nc9T413orZG95KzOO57bP/is9+r9OZ2fwV0hXuKtWyGzWtLUhjyr+1cvfG+GCG1JoGt8Vxa6bW6R4\nrZotG7Eh1dZ8JKeoXYcr66tN6BaFSCbnzxH6gvSWB7YsD8w19UGjAZSPb9SNVYq7DVNuHKttB0LV\ns0wfCvS7hRAWzax8L1WmlOtDakXjkrsbloPIyBg9kZ0VKlkLfyqXzFZQXa1KeTjxUS5t+roGwOp1\nqEddUvocJ07PZ54enznc7jncHRi2gwSZUmUwgXRyrTp4dW40Rgb3Lk1bRrIGoVJg7cxE94EcHDnJ\nBHv0wGrZlMgl0aYc2UsybMNighObBUVAVteolKzmY+j3zBrc7FLfwCi9QpUBx6ZKI1fWxrV2sFu5\nxpaFlEXvDKYoTYRIyooBVNaYK5hql4Nf7lvbY6L0MqbirB6iCn5M0SIdmqWiVY4rmsWijXil0X5C\n3dUm09X1kKHKGapbgn/bW3JFRa9JFGdWu42tM6v6zDo659hsdtzeFVKKmik4sSlQNIu2rs9TZHf3\nke6H9xxfXqlsiAlynDkfZ4rpKKny7//tn/jjf/OON+++5qvvvqR0PWOqHI/P9J3o8OdThlj46c8/\n83IsfPObNzx8+Xf89m+/4U//8Ude3j/CdOb+fsf+dovvB2IqzHEmhJGQJva7LV883LE/7Pjw8wuX\n1wu5Zg7ffsX+bs/p/IOY0Z0Kc8qMk6GWSIlF5scCyWRSzdjOsRk2PL1/Ik4zoZNRe8EaYkyM00jK\nM04594yMk5tS5bCx3AyO9JoZ04JF/8uY+v8p8v7//LKmcY/QuOPWwt3mCy6omBZ4m+ytgBpmre6H\n9ip4NlWIW1Gw/tMYloAnm7uh4KKpZnNVlJ+XQlj7LG1yQXJT4dQFYS3vU+WhSkkGJgj6aIXb1tgi\ngV5oa0FZ+Urxcc2jG4xKzkQWd51JYNY8pdFOn2UEemXms4fwquhmzaI4MZiFezWayaxnWkOuwqtL\nH/y6nmrtJZV/U3DeELwjpUSMMzfdHhRJtqG+BnTAMnqDBfU56+hC9xmaLZpplTYHtJVEmya8aCDU\nLt/GJYteXv8cHUyia5MaMrJWvNkLEgSrpbkfllJlQDCqaNLlpdE4KjVcUbn5zHfFYNWyoPm3y/fJ\nOj3JtJqG1nC8sTo8paxqLYDadDyavel3nFPG1Ew7EKwpTVVLm8hU1AZYktEGZCTA26o1qIree1mz\nVstoeGJ5WK5ftXn/tCcriwKrrkO7G6XZ6hgybNlirQfnIVwfHpW+zwTfcXi4ZZ4mjDNk7WiNly+I\nsTBdIufHV1y/5zR6fv7pxOmU8WHD/RfvmI4nTuczr6fE+fjI+I8fiek/8PVvHnj37RvefvmW7/7w\nHenbL5menxnczLDrCLstcY7YS6JceuL5iDMzbmv54s0tve9JMfNmv2V3u8cEx/ffwaHf8fx05GUa\nBWAZiOcLMes+iQZipdhEdDNd5xi6Lf2uw3jPnDLTJCqyFFsGL1lp1iY6Xyudhf2hg0vhPP4zGvW2\ncMXX1UGgPTSCFtxqkIRRSREiBa9qWlQSMkBANm9KCZAHUPw3Gg3SuIC6BGRB/426QFFr+3HVN2gW\n0NC3sYJ3jP5529B66fLzKvFrXHtr/sm56HiyVQ3SukxzSyJqC+R2oXjkespndQWj67J88LKILVvR\nwF3b+rUmlvXVFC5tqPNSoBTIuPLgVZBgC1ymld81u1ksBqrQR84Zui5oClgXy+FaKnjxOwfNPOp1\nwq4Hd5CDsPUNGKM/tK6aBs4rSqjon7ej0TQKaA2CLPSXasmL7EOZBbkeoo2uKUUsThfqqwVShLYw\nVqwQSl1+XfXpsq9TTHJbmumWk0M2F/R99KCxrSfOtNKj3EP9PoX2WcsXlZRdtdGgVJyr6t2uB2Bt\njVOa1ZSqk5T4rHbU7quyi2sW1/Z/XTPnda+ttJzcTymQV/zSkSzSWwEMWGkClC2mIwtto6qq+vY4\n/G1ge9jK85bFmySlKNazc2a6zIy3Z4aNpxjL6zmTCKWh/DgAACAASURBVHT7Gx7ewbN7ZC4v2HQk\nH48cX458+vDI89NHPn184nd/m/nuN9+y3205bHpcPsl+No5kJJ7EqRLPRbtxC53ruD04nHG8e3NL\nLpYxJR7ubzn0A28fbnmeRzCWkgrj64nH44lpigTnKOlCKmKU1gXP0Pfsb/cUbe+PUxLb3Apzkkwu\nV0PSTHIuhmIch32gUpjnf0bUysqbFkU1DbUIQmlouOC0uFNEmdAeYnlCRC2wbLTCNI3UWun6Tj1H\n2s+qBlm7F2utZFPouk7QNdAGxTa3Pwnw+mAsxaaVx16DQysgCQeQc9LU2wnKd3I4zXNU1z/RAQsn\nKkW2lQ5qCgKBQy3wNESsX5Sl4chAThq1loeyqlZbDxljcdar3rk1Lq065qX4V9f6gqmsgzOWQNWo\ni8ZNZ5w31IzOkZAAYKzFdR4fHH3Xtcdeis/OAk7uQ6oyVxJxwxTUiB6S0IZXtIPAWada8Lrw11Xv\nWztwAXHMM0JrVP0+8udWMyz5jFoFyTeaQP5i7bi1rdXaWApBkbHQCe2wtdbJQG/9j9VbkVPi9fGE\ntcIZh75r1WeRwFY5HGoR7r2W1qCmAKdooNOMx7mmKqo68LplsYJ8nW2dy6icVfsFasJ1spdKreJp\nrT7bXd8RfMDhl3qJAKRMUZ16s1UATcQWILEquVq/RjVS56rq819RJVWWUXwlt5mz6gho7VUtyrTH\naQEPznlx7gwdtWb6bWF3WzHv7pcaS6kRWys+JrrdHd3NPdvjK3fHVx4/PtH/8J6c4PHxhfPLz7z8\nZebjdx/5mz98y+/++D039w/MpzNP758458Tz0wufPjwzHSdKTVQndKe3MhrS1sI4JuYp028cb759\nQ7/rGW3lfImkKeGo/Kf/9BOfPr5gqiGbZ+p0wVsxv9puNtzf3vH0fGEaR0rUvpZmSKcWDnlB545i\nA4dtoKTK5fzLkyV+HdWK8sLNpXDVQSt9ojRFbR2GbvUDoVr1HFeOsa4pXtdJocUaq9x5XhGsBk4Z\ngnzNt8rLGJU/ghZRWekF2/CgFtJaAeqKyWiFLB9kOs+CqBUhtU2LIp5atWWcvBwgi7+MKRpkS4vR\nNIvaqijI2n9KgawgvRVnrb2qBVgrg3Gv1mtpR9e1rTpsliVwVg08qpOu+bOh1mInKjabAlyrZvp1\nyXqSTuaBgnWrNJFcKSmqP4tQHOZKIyudom4J5A29t+DQCqfQ9hG0wnbLloxpDUJmoblE9VMorCZo\na/PXmoUJOi9XyFH3QBUf66XJKlfmeWYeJ5lO3wVC3xGGHucMLigNVrLYArDMkBe7VXH4ksLsAmbs\n0jdRqaRs1n2MyB0dhmoFdYvaRE3O9AAvtTKNieP7E5fjhfkyQUn0247d7R7XBfHbt3J9S1bSqDvW\nQSEoJVdp/kWtWH/9XGhxWu99rahxnaiY0G9tVCIq67C6U66xQda/NXfJvXD6v9qYpoZulU5AQUgE\n39Hteg4Pt6Q08+V54rvfn/jD4zPPT6/kuRB8x82h583bW4bdDa7z9G7D3vQc//wekzv2uxse3vak\nlDifLjx9fAQDvu8IfU9vKrnO5GkihI7d/kCZMu/f/8TLhye6YHmzPfD12y/Z3ez5y5/fc3x5wbso\n39c6jPXcHRwPN1tCJwDy8eXED++fOJ4uzPMMJTN4z/3DlvuHLS5O3N90/M3vBn7p9SsF8qugtfg3\nr6mePipQ68LzycssCLh1xTU/bJCqcZO5XX/O0sZeVVBvVv5d+YwWX+VPDGvjSdusuuPEd0OKROsX\nWpUSBtYhC/qdZBapWz+PttkFYQm18XmBVA4M5Vs+WzuWVN/S0LReKKwa/doC04qaVi5DH/bSVDes\ngZgrxFWbXlqGaaSUlnmT6AM+RzFAa2xPqYKS5fA1y4BoKNgs126oKtOTiUe1aEOKEBMsQz5qEd8O\nYxcOHwPGW3xd90vLlqTAqQM8al3WR4LfGshFNdTqFTIib/GwYQ2albZuLFnTdWZUs9ZPdApTiVkO\nJCMueqb1MJiyrHuz6cXIOrVLrNf/VJpqObyS0mW2dXXqWpnWPyAo2pr19xrSzamS5kKeM961ifVO\nab+GrOuyv40egi1DslbzX4seukLhGK5UOcbo3teh3O251oPItD2mZmamGh11tnwsclis1yDFf3O1\n9itax7UhJnIINaDiascgG5lyL01qcZ45Hy8kna4VvGUYeobtoOMNK7XbsjsVbLeh1kzY9ZSYOR8v\n+LDBlsymd7hhg0kjxhQZwxcGrO8ZSmXbbSibyHbjuXm4Y3d7IAwdfeiYpgdCnzm9zhxfR44vI34I\n7PcDb768I/Qdx8vMl++f+dOff+L0/IrNia+/vuPuzZ7Ntmd6PbI/7Ll5uOOXXr9aIF/MiLjidI3R\nkVqOlOPyEF2rNARp6k1XDfDy4JOX97se87bMr6wFpx7CztoFWcprnerTLEybRLD5WVwjB0OTP7YT\nQGiQFAshCF5oG9CqgiHlBDXTDKWqFtacszjTDpu6BtUV7nPtKFiLAim0MaTB9nKtlGmySQngq+/K\nyi1LCl7WB0RPhVobWhVVUFITpRgjl8tF11f8zs/niXmaCd6Kzah1eN/jfcCodW6bt+qdYxpnao70\nnTQ9eCu2vJ061OVSSAliErP9aUqgo+GMtRhvsMHSWZ1ApB4ZKArNsazqGhoNpEHfgkXnuGoHpPeG\nSF5cLqUorRzvcthmWt2iohTRcsgVnLNsdgPd0GOc02YZC1VkaFJzEJsAC4uLY0Uv0IAoQFRnX1tR\nWu6H+PIo2HAVa1XFRLtlVbKPWlRdIxN3tvsO5265f7iBWuk6kf9Z67Eu6B6SIu9iG9xoi+YPYyvW\nSSHaaGaVc+tdkM/HarCmCt+rz4Q05YExqiAygC2qnmnjAhvyr4s9hzFNsy4UmlPVU86aLfuCdRVj\ndZ6sFipsVfmpcTgPXegYNht2u8PSfeuDl67PRSABZkh8/S82YhaWMuN5BApvTOWr331PPE/Ey8g4\nz1w+/UzMM+++/RrbOVKEw75j999+jzOWw7YnW8f5MvP08RNfvN0zHO7Z3nf847/7kTx+5BQv2FDZ\n32z59rff4XfSWPT7VPk//rd/z0//+CPMF/71v/kXbG+2TJOM0bu/v+PtF29/Mab+SoEcDQYaHzXD\na50hxQqyaEZV1x1yckPsEhyNaV1w0Lo5a6mqopDPa8ZRuSZyybhScN7L4Fy9HvlXi8EujRHypmqy\nY1sTTqOCkPdvLIKm9kZRkqllcbRr/J9Tp7V2KAhqr59lAy34L8i9fZByPQrI1R+iLA896OfqB7Y1\nbuu2ZgJaNahaGW+HUdVDQU8zcZbUqTZNIqkIeJ4nckmIbFNUKNM8YZNQBcbKMGYZwxXoNKCXUrhc\nxMO6Wsd+6GXYsgFbJ8iqpJkKNEP9EEADT9srporDXi2ZYts6yo2UDkeUV27ce8tuaDdKaxSylmJK\nJXuvHaaVrMOp6xJoMMJJiyueEcqgsnitSHDRIG4MIDwvRrT5Nbeic1Pe/FPtf3s+zFVH5toUJZmi\n1IuEwnJY5wk2UBEfmRb8Ktq275o2Hoz1LEZaJKk71fXwkitpckO510IjSVbRlCoy59VS164lpYIa\n8JJgPM0jxoiKyXkZqC1eNY2KYdmPy3qwPk+t0CpDSuSAKgiaxxScFRpVOqtbCtrWdH1EvXOgVGGz\num0Uo0HqIV3XQ5Bnpe+HBRCVUih3WvwslYcv3nI+n3Cdp84RWwvO9fR9EDBGZrwkXl8mHj+8ymc4\nsUSI5wuWzP6mZ//wBXdv7zDGM18K6XhinC5s+sBu6DmeTvz01xPzn1/5+PGFeJk47Dfc3uz4X/5X\n/ovXr2Oa1QjOxgED1ayVdJkEI8WtljaDhjFzRQe0xgsNUtYY6iIJ0w2hT0eOmWmaGC8R3wc2hw2d\nnsyghwssKWVLdQ1QnURio2m31ULNclJU2aC2VjF7YqVFhGduiobPntbl86ioeRhwReOsPH7j2xtn\nbpY1kP+rvGZD5rSPKAsaXZH61Wfqe5kliOcFuZSKSkFlqEWpRTlPWZucZDZmeyAv50luqbUY79lU\nmUzU5YDXxhNpT7akYsnFgPP4LhAclPlCmjMxQ5oB43Gdx3jhFI1r/sz6FdUtrpSKqXm9N8auliVX\nAKDqfWovW1uTlDQ+1drey2kwzOt+KNIxaa0VW4j/l7k325Ikx5FEBSRVbXP32HOtzFp6ps/pM///\nQz3Tc7sq1whfzExVScwDICAtKu9zlHVHRYa7ubkqlQQEAgFAVy7wPhpW2k7ULolUm8RniMtWe4td\n+PPkARge3RCdaeQNGC2pB1/Jbbk1gDMEu9l+g6lvqtdGhHMHG0L5vQkdSgM5cYj12QF6noAXR8EA\nVT22n72KUQkqbO9LEqzrYuuBOaq1tYGozY1orwmBnxX2xOlOrtdA2KW5PWADM3c88cjjTPiPOLUq\nDkbi7GiNBnw59b5LJZfhPYGIkMUmKy3LBVutqNcVUht2By9+g0K3K7a0YL8p7h5e43xe8fz4gk//\n9yOyrKh1xbI1vJ4PmPd3aDLh6fEZz0+fcH76hOW8IVVFRsGn3xdcriuefrsaEFrOuD5d8UevL2TI\nLXGmQ/8Re5Ef83+lvqFJv/T3K1TXGwMFYcUiDyOLPRTbdcPLry/4+R+fsHvY410GyvGEVLoaw/ha\n/zvAMKvpjM9IriopZQq977ausHrvgTJxB7RtHqa25r/HnUBz3O/SOUYopJESM2ywr0OsEhANkJzi\nvttA1QAIA00ETBmdlaLTOWiUcbO7IdsIcODEtq1YrhuWZaBkYOF/ThmtTFiWxVssKF6eF6yrI/FZ\n0FJDnjPkpWA3TZh94Ozxbo+yFJOt5YK0mzHPgsvlguW84rw0tDwj7zLKtLOJK8X/aDdqRIa19qgk\ne3IUjkkjiQk6SlIIXhrviiQVk4dFZbAYUs05RbXqWq2RUdpnL2TpdI34hglHrAkqNh2794dXoMHK\nPZxWaSB6MAvVfAJRzk47NjFFi3EwYIGSDmckJUXK1oOlNXPK25act9+g2PyeGZ00NLWv2b5Tz2FY\nFJGzdyBFgnhbaIVdR89HsdbCDLElu1tELariY2nNGNbWINvqvzNDkN14wkf8Ef36n0DjjIIa2Gcn\nFZap+57miEI6QukRQThzcSPOGhICxFatgjUlp3sQjs/IUVdPEQCIYHfY43B3QE6mi2d0azTthowV\nu7Xi7u0bfPj6a3z6/Yz/+58/4e//dcG6WWOs83XBqw8btpawyg6/f/oVv/33Rzz9+jv0ukBUsd8d\nUS8Ns0z49u1bzIcDWltR1/Mf2tQvRK2wP7NvcJf+Ae2z9yEMUIT/jQ/JDxEHGbtRQjaDQZmhOfWG\nMmfs7mY8bCfIZKOu6rpZIrLYxpQAzNRs23T6LtGzrL2Vh1s1owRZTS59mL3pljhJghSHkkz4gIU4\no3Py0DLkhr2QRJJl+hs0yrQBM162WIwm1JtdjU6yU0iswrGKUcVSK6ii2Fr14cDWt3lbe4+YrVaj\nMzJ6K1mFr49poR8fz1iWFfu7CeenBFTgUlbs5hm7OWOaPZEKQcmC5XzB7+dnfFyv2NaKqoKaZ+z2\ne8z7A+bdzke35VgfellLYieUou4kTc1QSu9nY0M1LBkJ8USfI6+qPSdi+8ebf7FxmKMxhSAVxc4b\nm3HtBOh1CEqKwh6EQJGKUxpJrSGYWh9xm77kfW8S9fpG/SVN0TytZFIGEgg0Qazq0wEPHQKjP+Ot\nTW/c6YUEgUU17AeDaoojVozm0iMVScWxMtB0c2PV8zkm+00RobFtRFQUu1KrVQF8iiZpEzgqb6oQ\nV12ZKsloreq94lmkZolR5qEQ0bA2BLjIHn2xnbSI5Tcq818sEBwNuxvrPJVA5APBA6rTTAqbojin\ntepyURsfF86cxl8SVIs30wLmvSId7zC9usfr7z9guTxjvVyxXhe8eveAPE24LisO8xHn/T3O0wrI\n3mxATrh7OOLV3R73xx1yMXDa6r/QYAllL+sIh3poBTb9se8gYs7oHQHQO8MXGtIXciyYiWINTSjz\nhP3pAEgysRbldWxCFbEywza70s4fimvZeUho5Czcl5ztkGk11Q0RgF9+V0L0EJWbPyJIv10Nw6ux\nPoYStfPgjFpEhkPLn5fh5xWtje/R+CxDtBaOG5VSIwEc6Kj5YAMzGVjXDRyabQfRei8fDjMuLwlo\nwG4qKEjWJ6Mt1r2vZqyLoaVpKjjs95DqPPemQJmR84wy7bA/HDDNM0opVg+QaLjccHrEY8oX7wsC\nhLa+2+axgraGbt6AQC98En9vyaSgJGg9MzjjzwlaYy90K7FXolBtN/SNXbdL50Cn6hOxFN7jpIWk\nUtAHkiTpjsH2UAKSl9MHG2NJwboZrZhSjy5TNjWOJxH8HtUVYBkUBgQAEqJcUlF2L3ReljsZQEeU\nUzi9Bl+DluLffQZv8hNkz6lqBbsfKNh/JXmtA2GFgyEF2iC/zJ4A5juMG6cz9MSpIowvwLYDDqpS\nP9ekVZuffYd9hE4eJft5Ja3lv5gUkECApNEfyvVQFq1nwXHeYXc64uHNK9R1RV02aysxWYuL88sF\n+90ed3cPePP+vY3K2+z3nU473J9m3B0s+s85+bzbf359MUQeCUT0oo+bUDjMJxN33ahRXUAk1oc3\n+EHWCjKUVBqUMiGVjLKbrOdH42ZwyiBUMTbdpVaX520Nxbl0cspwVLxxKG9WzPPeEI8NzQz5YpxF\nIRol9eFUCiQ2bwIPTg8xaZgU1EAbsqSHIOKJtRKqdjQqGIN1CY9hBnCrNQz6uq3OgXdNNcQ1/Uz0\nJeByWdHaZga5OPUhgodXJ6S24XqZsTseME87SLLy9yQKbavRTLWi7SYcDzMmySjTAfn+AWmeIWVC\nkuKVjHZvWXo+QnL2iMipCY8maLkVpjDpK29Uio0/TOEI2XBMYWF/gg5FGRp8qnVEVJRZ0XFwMuqi\naaw79/TYb6cBQaOxF709I4OQCfBkpxWaVBGfF0rtP0A6JdpH5AkqYQGhagh7Wy1qyk79eUUYWHxl\na+lFO2romFW69pxTOBybfmT7QLysHgPa5QZOLvuUAD4uKRyoUjrOaDcMA0KcSbuqIqUNOXlrZKjh\nstC2E90zegUEzZQvYmeqqRUcqTJPJNgI4IbzR/VWSh0k2XQyz2kkun+NBLMplYX4kpjMloB0owNI\n+PPjWgEwBZfvoUkaZN4BJ08Muzb+zTuNQr3WKrZ1xXJesJ43B4ANkhqmnLE7ztZI7A9eX6j7oTc2\ncokdN4mL9nyTdu9oSUwgvHQYG0MRt4bKQzCVvvNco520QooAxQ6ChZfcfIPumwAFXlod16I9vIZi\nWxsuzxc8PT8CtWK7LDg/Wp/i4/0Jr9+9xrw/YJqsuTx12qWYtzYnrshE0WoGQYnKlBydGwi2CqDt\nuumoSCrA105HeWdyvpxct32/B4aWMNyWBeu6omnFNJXgHas3LWvVkV+ZUKaC0+mE3TwjJcF8mnE8\nHW2SiWuUoUBbN7TVKgqRC/JuwjTPyJLRJKPlCdO8RyomC8ve45rdMVManm/dhkhBQU0484G2h3pl\nLGV0t+PuxA4HrGIvzZN18hOTQjJRrhAr34YaV6xcS5Ow+QPwHe1JZEYyHnFZzsN16kPBl/+EgxRL\nHFrbFIb/Xl0MUwE9Pj5h2zbMhxn7/cEqYZvTBuqqoqaoarNfkwgyZiArmqzomm8DRCkbNRj2HgrV\n2wlPUAmdvF1V7qAgKjJTfGZEiXRCYi0ImCviOql/tiB533sMQ0nsggyINN+dCSWxr9FgVP1oa7Pf\nWbJNX2I+qkfpGvsXAqQ8G3hCL8ITVSBsAdA8HwZSXUmQJxYldfbAlFNACZaAlG/P4w34Hr3HvO9x\n/w5gLaNVJ+zmPY5HDUcR/Zy0yzP/6PVFDDngtpFFD6qOTqQbJG9URF4sGkNJ/DB6eb55wWzxoyGi\n6AeSA9HZQx8XorcqHfcwqQwz6p1P7mGoNSRKjuISEtZ1wboYqtUtmfa69fBVRKJCtBcL6WgL7FrC\nsfi1wNn0G8Mh/H9fsxZ0Q0cgfs9hzJpzkBXNaTaqIWu1cK9uG7Z1xVZ53X3yvHVwTNjtdoBIJCAl\nM2lm5dTJJW7TNGEuBZM0PP76G14en7CuC8rpiGmeMM87SLZe0FKKl2wncCxcd1Kt7wnth4/ywZwF\nfWMwQuEe07j/iNCcykr+LE2XTwURP9tXnoffG4zx2XCARYpnlQKQpGZSw5Y0AIFIQpWuzeZzFUmQ\n5jhfugEwkGz3k4tingtyFkxzwbwryLmAYhLLhwzAJzmSFTpByxlQSZWg6P1yYrOArXm9pVacIwAd\ndfYY03caqaPaaQghCh72durRoFFZ2SNuOlxzRim+Bqgj5yTq5f/+YU3oscEjdPsPDSPu2Cj2D7l+\n61BpBUehhR/60tieEd+GnU4ajqpFhE6JASY9JUVlkbbfb+t7sa+JU5Vj9GKxhk198n0QSXK1WcVs\nqvVHry9GrdAXmREStOR7y3lrDhGIGx1CHQCd/0Y/6Cn3RE3l4AIZmldJ8oIFe5nTNLpCvSoNyp4g\nAN8p8WbcFHSWKSMlqxC7nHdYj0fom4aGZImUQhmT8fB0AsKwEd3YjHw4keWoxlDYhubFd8lhPyRD\nSIIk2WkT9Xaz1fpH6IbVeosF77etFctivZytNWzDmryQpdkotGnaYZ5n1yybC9yqO1sVXC9X6+II\nRZ4y9vs9jncHPJwm1MszXn6vOD89oRx2kHnC7nhELrMrk9rAp0rkF6IVQkQb4y7W4OiJ3Oi4bpDv\n8N8pktOu93Zj1Q24Bt0EVy0kpysiqQ04Rw5ILsHLByRNgmQF9OjtljMk2f2YsZQwjMatJy9jxxBJ\n2U4uJeHhzb0DAa8QphaaVbe1NyMDnG4wFOTr4kVH7jRUmKD1wyCclFSRszrwSagthY0UAeXog1FS\npy79Pex7Q3phXJvP9N38Wk4p+syHbVDbX2yyVbUbMItWcz8fjGz82iRRjuznq8lNgpi931kciMG+\nMFXAlg9QsuBDwzq2WHaAwDqL3Oy5pCRonqug0KBHPXQK9rkpJetCCul5J7XzhJQtBnGv0bY23NU/\nv76IId+2DTmnKBO2q+uFDIFUx0hP1duSUlEAC9G4yTykM1RnxtKGBrvZcSVILl7a3zSGC8CRWmXJ\ntYfaVhTTr0NEwkHYK0FyQZkF+5Qx7fp4tegJ4VwY74yPIgIDlWj9CcBDaiEgDooB8ApL5gWAKCsP\n6sHDegCeFOnRxrZWtLZBsn2/tor1YpK7bduwrCugwFYrrssV6wbsdgW7/QStCVkyEhJKyaFaWNbN\nStNrxXa9YrtcIVpRDgVP1wtePhV8Osy4PF6Qd0d8/ae3mO/vsDseIblEEpMcI5y/RdyXxN8dEdqr\nOcqM9raiUbTF8XTcN1zX7FWX0aPGkb+6vrup0Q46JKLjOQkjRSa2ugExQzYorkStMtSNDXMhxoum\n7nSorHKj2Jy+YlJNRSGMFiSBuM2i64xtYwGXI3hVqCcxaYy3zUGDKqJhFa2zerGSWuQqyH4uxREn\nqQVnGjyCttF2dq3LejXjWQV17c42oh/xa3LduyRuWDpGz1KpUTF06EYlpH4e7K2ea4Lz5QPQAm0B\nP5sRiqCGfl87HaR0/IizlCDWrVFTjz2iHYVfQiVF585KvfK3iHdchY/g84lgbp9sy6nbLMsHVKfE\ncmZvJqCiQRqMznP7YLYgjZfxT68vNiEI8Iwzw43xxETIOoTJnuQCeM57q9euVAFMB90NANG9DAgr\nZFI5mTrBD1IS4+1Ajtr52R7aN5BvTJkDDAwxp5zRpj7l3YqALPS0BBNQpUsCbx6KV9fZ9fdELmDX\nKYFmegjZm195mMYD4QU9NtGnoVWrzry8nLHVBU7ID8hVsCx9qsnmrUNzEmCXMBXBBitln6aMMplT\namvD+eWMrW4Q+MSTbIZn0oaXy4rqAWaZ9tgfZ+xPR5R5Z9GKI+IbpgudCqJTNnUTD3csGFgcdfP+\n2DsIY80eNqRtuPIxNLnVQI0KfzaZXLU4qu4RFMNhFrjEHvbnFwiRURIwIHM+P3NabXBUluxWaOp6\nbHNyGVHyVqsbmxYH39ZMfKIQ7B68nQP3u3rVcjjC+EuBxsimACaM8bU2nTeS3z+viajUDiVSssHM\nAuPdicY1zrb9Uc/uF1eZ0Y5b3gmQyuSpR9AApql4/ySjKmPwdbTkgP8+ve10yVyD/waro3DDwajB\nz7sMC0JpZnTDhNtx0d5Ww88Mxt8XRYUae8u9qzvQYfkpAfX7bm64wc/259KHjPOADPK2P3h9EUOe\nczbP1ay9pd8fOOaNYeTIeCq6caP3Td6ciVxkDApuiEXn9Bxxb9zQ1SEpZ0hUMvqGpqqAB1+YcDQV\niPU6LyilgE2nRASpSX+feguN6oerKZoYfRMGKgyz35/ZJlitkMkCIYKsXhTir5RYXtyLM5i8NJTQ\nsG1bDE+wvt7A+eUZ1+UK5oCtIrAAKt7recW2LVDdXHI3Gf+fM6RtNgtgzkgZWDdD7U+Pj1iWBSUD\n79+eDO1WG4uVtMLUQnscT3fY7w8oszdrQjdqMhxM0inBybshD/PYz25I8DwV5IbdueZs6K9VHdaN\nPLY7t2rVqbWu/qypV8eAWrnXhghMEM9RkhlXPoc0GGqbRqQeTbUeartT/rzvTSTjRMCIXxw1h4Nu\n1flia388Fat+rlV9jzCBncgMAAk+OBtu0GkgWkhNcyq9fQSq37ufq2SJQ1IlLHxLCdZbRyZDovDz\n3Oze6SjhRtCu3Q66JBZt2HPkNC463uyNx6Z5wjRl1FWg7YqtVvRcmUI0oU8P6wY2KZPFvhpJw7GL\nK5N6dALw+PCZ9NIMW6vEVXNKC/HJGCLvOMn+x505ow6PAI0OctrNr7eGXaOjQZznbiLMTnYbePv6\nYv3IbfMh0DPci0e1GxqS+GDbbBtL9famicRsSAco1QAAIABJREFUMX0qOob+1ArbeO7lU069n0jj\nUdXPrk3iQNG4CJOamvygedk4WhTQBMriZHUAEE6Edy+LvnEisiQucQMWczuTN5Bi4QYQNJSthg8i\nULmZvMOy+uuyGGftFaVbtT4z6u+xqMI6Gm5LxbZ48jZPKJPgsN9jvz8gpR2aXrA1wVIrSjMt+bZc\ngeWK+vICLQCwt4pTCK6bYj6dMO0P2N8/YO/KneSac48pgkLweNtPjKC1jnAEnCNKugDBw0a/DKFx\n7AaTlFv2viddWuhTPRN6gU4PpB1xuxSRFI8nqVtraFvFtlwjOjufz5CcMO33KGXG2OhKkim2++dS\nvcKooE+fqpUgwYqa2MXSDETPh9S6+fpkzDkZzaLWlpeDNLiHjZ5g9CWoa/Iqzi4ksEtjI7rU0TSq\n72lGcO5AhUnyTuuoEm76QBVJ0ATvq2I/04SoVyE+u9PUTQ05A8mTspReqlqLZGshI5DMIqnhHAHx\n35KIdFkAhBunGc44IlG1EyS3a5X5+3mt4o6GiFwQKLsrWBit8TnTpjCp4JESv+qtARSwRl/0CrD8\nimtT+88DIUWWyN/dvr5QslOGMMGONc9SEyf8kyVpzDmlvqHRkysQOKoQaPTA5ss9vtCQdlH/6PGY\nyOqtcv0a+5V5CGZIiOiEzYmI8njQ7P76IeShEozfxxA++9UKPPHXN4lFLjpsvp44oXFT7c2uWm1Y\n1xXLukTy0hKJYv23o5LOtMfX5QoRq1CdjhMgNodyt8s4HPbIpZiRWTa0dUNdlohgtFUcDxPamrEs\nV3z65RNOd3fYH48oux2m3QHzbo9pt8c0Tch5it9tGfscz8LWOVYbgMYaRjrL14pJJtJPlGX5pxIL\nxdMz40YVky0+MT51zjEshAAg+qv2vSRxwM1p1m0FWkXdNpQ0o7hmnPuTiS6T17EXe3ZHb4exNYbm\nHRFKashePWkIDBH1lalg2wStAutiAxytp7l0Y+rIORB9sjW0dTOHZmvA4c8tZG12y5Z4FSA4357f\nSXEWAAc7vme53xnNaFL0omsJaaGdyYCqoBVjEjD1A+vGvJ9TpIQYysFHJAmQBo0eMeifTcmii8AZ\npSOeD+IahD82ULrJz3fqOk2LBELuak7jRg2niLWk8+t7SSK6MqeZbJ1uNpvGvbOFSezN4do+f30Z\n+WGEJwkiQ1jBsxyIWKFaUeuQYJL+4FPy5KPTJ7kUR61ehQZxtYB9joXaPTyKEN4bGpmBVDBdLHQO\nRIye2SKqjbAp0Jy9NQyDX/OIMm4UKkB8nUagsdOb9zSxJG+NyTDKCC96qXQ1xLasuC5mxNdltWQK\nqkUOWpFyxjRPyEmsQOfSsDtYb+Z5N2PZFiQB5jnbxPFasbxcsF0u7hhW6FIxTYL9Ycbp7gSte+hW\n8fLxit18h+n1CYeHV5jmGVMpkdAmUqOCIg2I1yIShHPVNNbOWySS/GSoVxhqa7EmWbLvj+E8adfR\nayT7/DnE4xFIylBY5MIh1wrmSvzamnpBpkSyjgcy54J5mjFNNm1K4X5ArLS7tWqVl41FWuT8zRpE\n0Qy3mHuj5LLKGjkAM+SQjFUrluuKphtmFMy7GZzrOpbnC8SduBvm4qfO0W+rKahN8OhJNsmfahSr\nsXoyaTfkQgoAfZqUgQ87R7Wqn0MAIE1mf+hyhXw6VSXixoqIVOjE1PIWkhATlqAAetuEqj6zFNnP\nd+1I3dtqiC+wVc6yZkBu7JD6uXUr4wV2Es5W6OjpzrjvApX1s/xHZx0OyKAhUAQBqv2r3UQN/P3c\nV58hjHh9MWpFpKGJOkfWO4/1Qg97WOQyp2lCKcN0oAgLJRIrTDTdJh+4QLHmsRYtDDpAJGj+26rn\nWlOkbD0OgDSI8RVAHx1XN0vrUV2RWKWmVn2IpCh0Mv77UuJ1DchcNcKuJBGUh+6clWNwhGYb0/tQ\nt4atGs+9bos1vdo2p1RWZJFo9FWXBSUJDm/v8fDqAce7I8pc8Pz0hPPzM5aXM9AuqOuGy/OC5bLg\n119/w+8//4r2tOB42uHh3QPWr95jnvd489UH7E/3uHt4wP50Qi7FBxj0XEJrNkm9lGycYjwfDBOg\nbPOWgDz9IGhs4gbkXhzS1Gm13HMato/s/WaEmofMRMKuv5SewGLSkoocaY6sPJAKY5YTpt3sBSLO\ny6ds0RoBvYMN9s0vxZQqBiY3sGlc8iSjzbAdk300khwj6KoGSUhJUYoAmm18nvce6bUHKaK/oJI8\nEtPIl3nrBaghav8/RinagN5gqjs0aswt0sxxjazZiJDz5uxZtECHpf49tp82etWcrUW57rRBOtFH\nF4Ln3QBggD01Ckcx9epbPya8f3rIhuqUjuVEmJM0CnRUlvHgaf8s5TXxjAv6mzVkiaRduGcZJYzi\ngqk4wEvWElml16oQXNjerbfXwLzDH7y+kGqlF/P0pCL5NM/fh8HSgFBEAMkNJrGwOrc6RGWBkkPZ\nEQeM608emyGTxINIaobazyPsVLTw0PSYgCslcu6ORFxpQerF0Qs7OWrjFQxhkta4XkqR+nr4hmE1\nozcWqrVi26yk18atVazrgk0tVJ6mjGXbcL2ueH5+wTwX7GbvD9MUp9MBbz68wuF4QkoZtVYUUeBy\nxfnn33Et9nmX84Kn8xX/+Mcv+PXvv2KnCdoesD8dAcnYne5wvLvH/njCvN8jT4b4hYaWoMwPFZuZ\nBcIRhmGIzUxoLY7SO/4hxWGO0dQInlATCUfLs2tKA39W0veApjQgV05oEttDPJCxd+x5aThLo6tM\n1cTCHO8fHvSEG9bB6AkSrBNlC6QazpzrARof9P0a0SmvxDdlgBLfzcn6yjCq4CI0v9bskJ+BTxJF\nk2b9atxYM/nX26jZ4er4VOgJELSYWBFLo0baLsZkjKJRuMSFkdjTROYuAPBIyNTCA30KWGvqIer1\n5iiQzNoPWOJTvcwo0SQP1y1DtSc3SaBl6XmQwRAjdmZffZA64qr4/6TBkMe7wwF1+snygL4kCUiT\n9cppPsDFBs+YyMCiWEYoJk3UentFfH0xQ85DaW0siYwQmmm+TLfbK+KIzDonrX0TCuxh+YLxWckI\nw2/QORcZNxs50Af3An93/HznueiIlHpex/SQ5JWBPdFatxrFBlYkYrRODQsvhrZ8Q/iX4rfWVlHX\nFa0ZF76uqyHuWrHVinVZoR6mT1NBuqyoq+Ll+Wra1tYg0jBLtsTOLKiouJyvuDy/ILcVy/MTzr/8\njrWesdYNS93w+HTGx7//ik8/f8Kr+6PJyPZHHO4ecPfqFQ6nO0PhbEUXJ1cdVSD+tNoGJR+HObv2\npFnbBFOH2IGy71Fm2vcPu+YpNDrCUcZH/pTtfhmO0zix/4lnYFzGN6hpiJA8MqTIyJynqSTMUKWo\nthPxAhNHduyqR17Z7gHo+R6NnAirDBnFKRvKCY2971/tjgKBH3VwWuIFJu4UmikjKLe1LoP20y0Z\nVWJrw9yFF4m16gWUhsEdUvlR4NkaE37WmTMMnfhg6iGZK1S+RDTp65DRo9hm98T3KQBUQYu7tslA\nWv3fyRF9s83FpKZhA3GFliNt2hh4LsKjbtoNVnCbqdAw1mGKaCNoM5pFM6DNoJ+R4WcGhxBzD1ze\nzPGHTY112FZreV2bRWrTVDBNk9kREQMrvUT2n15fiFrxTYUCUmdQNmgC3dxNqDoWdozyMGp/MThD\nhlfc5JEwBL/v71UzGraDXQEDE/gnHiJVsKCCB5Q/z9mP7KkB/5oZam/4730zcs5efWfVYEbl2wOy\n1qrOW7JSFQA10k2bd3O7NSjVpW+SBLoqnh+vaLAE2HE/QcT6upQEFFHTeqcEtA0///Qz/uu//45S\ndhaZ1IrjUVBfzljbC37+6Rekfcbh1RGHRXBIghcVpFxw//4dvvnbn/H+u29wOJwwuyKFYWRrxsdb\nRSrQm8M4ZaLohxuk06rLAgU3eRPfL3zObivBfjvwA5dYVdcapOO3iJ6sstX3jEmaw0iaQWJkaJQB\nS6KNQusbx8rjTVppHLjvwjSACTjacp1yGxLpKRkyH2fNGupObhQY76uvE0BlTvL8T5IW128gqKPL\nRI03zCFsGznXDlIYGaVkrRa0Vt+7joyz9hwNT5mUjirVnpftT5637kT70UrW5dHRe/OCu5SMeksp\nGW2UzJBbpapGboGGtLFlhAMD9SihrkBtrBMY1CpwABV2oQYAbDYvDoDtT6H9GW2Do2buC0qYIQL1\nDK4NSjHgYi0gXDqZKEWUGzELHKSKg5RWK5bzhu3xCm2bgb1p9jwfr7t5Wo5OnQWD//z6Qjpyb44V\nL/p8boKOi0WMbhgnnZu3pnxNA1F3Yy/9U+Ow+CHzM9K8P4lxdU5jJAl+TuEFPS2CKPvMNoSd9DRE\n/f7gh4g8UAwrEHkPdpisHWqSroWnFh20fX5wWu29wkna+LGyLn3ZKi9fns+QpDYhLQG7ueCwt37g\n+/2M3X5Gu17w/PEZ//1fP+OyrACAaco4vbLvvfz6EZdLRX0W6McXlNqQ5wO++9tbvP/hG3zz1x/w\n9qsPOBxPmMsUMxDDqHqC2WaUEg32jYxhHaA6yLySr58GOu3rXi2h1b8UPajjwyT570CM8SNKDDmp\n8hmaf06ftQUlX05JpyGh/p6xylRvfq5HFhS5m/QxeTUg+W/xSIKfYXtIxBAsn2yKzTP8ErFIzroy\n9sZidl0p1rmjx664YDGrAZLmCU1etw473OWDvpd7d8N+rgz52vXbvrVohg3D+OzMuPufaoq01irY\nkjX7po8ckJ06N1o5opJxTJ9q7m1iQDCUrOcOqzmlK4PMudDMuZTVvmGwaWjxTJqEa1ib6c21MXHu\n8YkA0ixxb8xvi3PO+3YvwODanDELiTzavjwv+PTz7wCu2N/vcffuNWYvlmM7Dqt7cIpsoA8/f30Z\n1UqQUL5i6sdiCEu48fuP9F2t4NQONjiCoxcPx+HGdwh3wtD6w+zl0YAkT1rBeh8kRjA6nIghMvDC\nOcAdzZiISd7nHGN46IhQW08oGbpwdJNs2kkYcr8faytgh6NumzkDNt8f/hSxCrhpytbPWDe0Zi1m\nd3PB6bjHNAnmudiosiJIdUN9fMKn3z5i2TZMu4KnTztczy94+v0Tyv4Ol1VxXRrevX3A99++xw8/\n/ohv//Y97t+8xv54xJQnsFoylsufW/NhzwJA1GoBcsqel+jPnkkgthO1Stgeichg8NjcqjfUUt/g\nORQQpGWSeM+WQPWjg9VAjxj2iT3z1hUsHmqbTUgYL1375op7t/YNzsX6vjO+tluelPOw34lWbYM1\nMPeiVhAnRtMR8QaNYRutgxrfp7bnByuXcCOrHQuujD5q0dcGgi4RjB0ddseMVWbExfavbDYQwu2g\nGBGO2ROZQg09VTrp5pmoO0CBMxaeV2KPdT6f5teiBADu0HimCAhJo1SnQO0DTAUkTcFWBqZSs3u2\nYjKe817TEUM1lHUrAJlu82ekc+C0noMK5st8r9KOi9utbal4eTyjrs9YtxVpnoGDYt7tkKap7w2F\nDTD//0l0Al/IkK/bdrMx7eFlQDQawkdhB1g44Q9JWHLcsygRdidxL9vAsu7s3Q/t4A7d5xLVLgDA\n9/VDS54tpUE9AkMpyF0fDvjDc3RXihc7OSUTMxr9uu1gOgfnv4PGhOhMXQ2z1eaTbDaT/lU7KOt6\nxfW6WHm8b3YAmHeC3aGgtoScJpuukxKOOCBjA+qG5dMFZVbcv97jx//5AXd/z3h5esK2XLFezzh/\numD5uODp4ydI2eH+1Sv8+3/8B/78tx/x4ev32B8PmHezD3zIN6gDQ+gNWEQgcFlcg83WpvHGoAAI\nowr0YoqOEYngarOByNV5V/pLEXMaObGiz39eDeEpmtdW9IQ61CfTN09YQ1w2aEamFLjR6XI1RgtR\nyKMtJuTY7Td+kht4u9fs04WYpGflI/cOeXJ6lN7H2xE917U53+/Id2TMrVBIXMnSc062Dw0l1wqs\nqzVGy3xf0EsyLJtZJAM5fu4SwC6bNFjs0c0IjO0h+vPr/dmNSvE15bcB/yyN39mGSIpnOAAUz5qD\nq5uCpgxLBCqj6R45qz9Xq6Ng5aY163LRV0e6irg/y1E5EwCj3Qzt+x6s4u0zSOuoRybm0BkxRf4B\nQ/5GgN39jNffv8bvPyk+/n7GT3//P9jtCh7e3uH1h9c47maU3QzkjO264fx0wfXlX2hmJwDCNwAI\njsyQGashZVhUZpLlZsMBXV+p4+e5e1TAk239YJgEyzWyNQ19pgNE9zYBUQRCA0XnMyob4Jvef1/i\nqe6cZBu+z/mMoGcX4wXjl0OjuGfbKtZtxbqahhtqQyAuL2dcLpcw5GUq5ghbw+l+D8BL/X1N5nmC\nrg3n8xUff/odKgvqdsX1fMbH337Hcr5AUXF5sRa396fXOL5+hYcP7/D+u6/x/b/9iHcf3uHu/oRS\nJi/Wchyu6I40Iqg2BlvWz0P6c+EpJvjEYJCC2iC9xG2glGaZ4YcC45G3X0OD7d9vPlBa6djtvTYO\nLjgJX/8WSJMnjxI87seuJ3bn2aim6Eia+2HbNpRcXP8scb3JjYvIMI6sb2hQb39jWGM9FGwnYQar\ng6E4I0rAQOqEhrc7V0ZO3HJ8NkSi/iTCAEEEVHSoo1jdKmrdrEVDmVxFVIbf48VWtWHdNrTUnBMf\nDObw3OP3yPCsBcO+Mdyfingfkh6NJ0koOaOh9cptRkyxQ6QjZ37VShK8NqAN+4hgz2pOgi0AnY7n\nPwIzeA4A8KlVXD97ThbV9eZ4dPaSM/anA+5bw3w4YF2qRyMZz7+e8bI+Ync3Y/fqCGg2qfN4W8Pr\ny6hWPv83N5HAB+w6MtXezY/v6393b2wbcjgQEXJa6IjWNxaAm+IiuUERHgYCIOdoz1CHze9Owjci\nEYeFqr1EnwnZEWl09MXqMLvmyn4zsINUvVdKbQ3bsmK5XrFuKwBLxJ6fL3h5ecF1uaKposwF87zD\nYbfD3d0B01SwLhs21+UWmXBdLrg8X/Drf/+M8+UJy3rBtm04//6EZV28jXDG3ek13r/7Gt/8+Xt8\n9cO3ePPNB8ynI/a7HeZ5QpIpkE7YGsEQApPttPeM5dF9kAhpJcTz4EEbK1b5in45wj4ZbtB1eA6+\nB5iMgg4Vr17dCrimOiVHmK431961UrVr0jE8PyUEBf/2favkv/3X8hlviurj5boTVwDch0Shre9F\n+rm+G0EqkPsH3IF8P282YO6wJ+lolajUokYW89w4VwaGdF6py3PHX2NrZknHZVnw8vKC3W4H1Z1r\nyzWeJUFMrZbIzjlFdBKA3J/f7dlG5/vBPeZFZaRQtBtycVoEOVmr3gBfvl6et7Lf1WK/2CPV7tP9\nflXhxb0pFDpE0s64oUzJo5UWgDP2C/R2/f2z42u+LgJBmSbcvXrA6aH52lYsLyuun65YXq4mEd0X\n5HmHNCUU/WOT/WVK9Fs3dr38vVcwwT1ek3r7c595e6Abk3ECC0Nae2/38rX1/iw2NDi5BFy68fBV\nZ3LCEIQVMFkXRXtfbZ3+MaTBIgEdNKWIB8udYx0GNzAz3WCThjo1pLiuC5brYk2t3EjU1UY/KYBU\nCuqmeP50wcvlGYfTEQ+vEu6OJ5Rpwv6wx8N9xvPFHECSDedPGy5Pj3j85Rd8/PgR1+sVEEFSwdN5\nxS8vL/jw3Tf44c/f49//13/gmx9/wN39Pco0QxTIxRpeWV91QzEc6hBrQKwhToM4DbCuRn3UbIaQ\nZfZs1qQpgcoWo6V4EK33hg1Q3iyOCupFY92DO/ev28ZAPExVwVar9fQglUC1kk+1ZySUXW1jstjs\niH6D1s2NgTtdj0CCgxdWhJr5VXCMXu3RJTx/4wY0sxBI+kE3hRIpM8blGveTmOSk4SV6BIJma0ME\nRMPLNTWnm/rZoEOrQKv2bKbi/V5o/Ogwfewc+6WXMuF4PHqxXnEpKSJZzPERpUwxELy1hlKKn2eE\nYSb9waIuqmAsSuIYuxzXzLPfmkWp1oXTnNSUZkAoRZRwMKyaprOruYX6izJoCKJAhwBCm0U5tQVZ\n4wbf9fdeXcr9ZMNK5GYAOh2k2RqYSi6Zwmyeip8La/c7TQWHhz3Q7qOzqgLIc8N8+Bcy5EBHpvzv\nMObkHACIZDcWf/wiF8j/ZmLQNhvf1Y1N6NcpFSMM8aPHJFhzNYsqD45/EkPQMAK3oW0lahPYmLY2\n9sZ2g+5GMBKEPHQwdLZuG67XBeeXBXU9Y7fLmOaEMmdD2WtF9epAUZsiPk08eM0HQ1SsSbCtG5bl\niloXKBpyERRRXF4ueLlcbFLPtMOrt2/x1V//gh/+57/hT3/+E7757hs8vHmDedrZPaqFxUm6Ttw2\nOpNIipaYiIQ7zhbyvHUzbhuaMU0F7Ptj6JDd6TCgGi44KycTkhRwIDILcjq91amNnKUbOncqqPCJ\nToOKgLtD4KP3bL4lC7I672B/kdMednAcah56/2dcDw3qtlEv3iVqRPwdyfdCqZHGSUmg2RQSrdLY\n0cj3SKcbwQTV2hU92o0ZB2IAPSK0ysoUa54D9QoYeTDK4EAGRo8pZZQC76XDHAIg0kJKGB4HPZJm\ntDXeiwircHnGhiiYzkqYs+pgTSDOv1svGRYGkh6xKMCTtCn1fu8gmCsxM5h/mqoNu6A+zOsORL2m\noDXvUGnUi0UyLQqSAJhyLOoEuGI9nmOfdzpW89cCeDK61Ya2KvKcjM4UCUv1R68vWNnZN3w/N+KO\nraNtJpjGn+XfvVjCF1WA5H2eU2JjJV/EAT3Dy377pvIH5GFyGzZPxFT8nTIaEH7dh1Iwq13ti4wS\n7E3oxgE8GPx4OzRsX7tt1SoyP11wuptwn2fklLDC9dcJmOaC/WGHSYHj3RGH4w6pmFrkuqxY64br\n9Yrr5YLrcoEuZ2hdbb6gAoKMebfHw9u3+PDtN/j2Lz/i+7/9Fa/evsZuv8M87wFXkDAJaOs4rs1g\nROMQ8vk2D0MlwlNKqFiSnwYjzvNuAq/uyNlnx2gVfq7EM4EG2cWdEAfSELj9ni0iJ9I4CGNgBzkh\ns8dvPNxuQFQ0pKdsXtZVVXY8O2XEfc19QsOqKChDu1vuwe6IgKGSczB4o2qLC23yPQx0v+3x2qqj\naPK5tua9Tz/AAdwsU2fnxFtKoztnntOUrbUyw0PJySOrrlyxe24Yz00kVUHglaLFQI7K7rGxna+J\noOvDZeifExGbfz8l75TYHU9fY+4L+wzLOdi+MACUhvcI0KyCkg7fkqmCIhkte/GfNIyOqWJDcodq\na6URHY2Oy8G8rbX3czJA76o533ttVWxLDcFCSZkI8A9fX8iQp+G8eFEBO6LZCblBWwAibDRUSGUv\nwxE7SOati3tnT3Sh9qoq6LDhukftNtsTXoHGNLylURwmj7ON2RU25LaM+3bDlZiYQ7xng0kIt9Uq\nMeHe2JoTsT809dgNy3VBrVesW8HhYHKkXDIOB2sLezztobphPh4w73eW4NwaluvFq0it3/ZyvuDp\nl1/w/NOvqNcVp90Rx9OE+/fv8Jf/9e/4/q8/4qtvv8LheMI0TwOy85A7nlMNA8YCHIDhrfUvsbOX\nohTf2rJ6P5AEUDqaPKanLr5P7VGAmnQNr9MLVDR5V8cgNcxgK+VgRFeASInqyZRMs88ojOvd2wbb\n/rOJ7v4e3wuKDAXbIKyodQtQUEr2Xt7FKm23LSZgdYRqLRySGEK0EYEp9kyPRHyXejWrONILxO/O\nh/QgUvEClA52FExo0uF05UTy6T8iwFZXNDUqi5WxppLJvl4OsLxBi6BhLgWqGTVv9nPk0yMqJo8N\nEy0ERVEHp2cRbS62L8Lxwq6xbRXrukVew2S1xSKTpli3JZxKLsknYcH7wo/VmHyGjCzc4NYWNR3W\nd8V+t4ktZIi8wsOBDmOaCjCl3vPEb6k1xPUBBqZYLJh9ShBkyDVYt/w4L4Gyhfu/AakhTxK90RvU\n8jGfB4b++iKGvOnmnl4g0bGZ8xcRhwSAbypH29Rmwpe5dZH8mGBEHGSinCFUduUJZKz8su81Zanx\nEDj797r8qKPx2JrCZkOsoruljehUWFhQq7U/DfST7KDXZka+1hWCimm26zek3mIDnV/OUK3QXNG2\nDefHR1wfn33yDkxrvl5QlysuL1c8fXpB2iru9ifsvpnw+k977F6/wqtvPuDDt1/jzds3ON3dRwOn\nURuO1Fxi1akB/uHkFXMwNExOH7QUVFmiQUtdRx3GCO7YY2/0Z2Wcbt+5t2HqsPkBhH48D4oPDCGv\npPgZdaOKJGDlpDmEHH2iG9EgQUdT0/sXMypGLaSb30fuN6qPIzIQiBQ3cv3+aawjSnDUPQ5pjr32\nWWtdVfjwEAX12DwLSbKVvjvCC0N508BJIJJRikBKSFk+O0vZxLK+FnQ6PJt2XCWMoTrKzVkGHlzN\n+HtdAR09r1+Gc7hVow0VnVsGbHAG+1WM9BOgMUDFSt6N/rOBKUx2qzctG2cZwH+WDlksVSEpksE5\nFbQs2GK4cgp6UTKiUZjC20rQ4QnlhwOog2J8kUa2s9Nu9mVL3bmZTSwdnKRRGXb7+jLJTmb9g3+W\nm43fH6K//EDxfeqeMo609BJ5ce+Xhx7mgfqi93FCjKtCp3ZY5EmejLIvC087lWI/Njwe34xtoFMq\n+6Rr9Sy/XbMls2wYcoIlG5s6QqwVdVlQ1xWqG6ZJfFCENa/SrWFbTY2Six3ubV2xPl+dT5swzQlJ\nNuD6jMvjCy5PF5yfNhyOOxyOJ7x6/xUOb97i9O4N7t69xfFwxG6erTOi+BzVlPyw9VCR9xWOM3Et\nbY3zZygwFV/diLbAmHKgHtJgOPr6BjId1CFj3mJMlg+PICK54DqpuW5t0JejO3I1JM4JQTQ+jVQR\n8bs/35yzUxRlAAxmUAg4csphiLlDhD/LIp+mvi4dhCTJcY1VttCq88RwReCHPwBG3K+jYSXqtqEN\nnR/w/yQ10XhuElgrwfMA8ffxzCUgsZHJMItPAAAgAElEQVSV/84spCudf1YrVgMG3js+0daGyU71\nHi/VnTlH3lVHsvD3C8zh1a2aeuPGyGkg7Or9hpJkoCQU6cCDz0ahdn2kJ1R9ipOtlQbl4fmDlMyG\npBrPkFGonQ67hup8triRZyM02x4JMaWLe2EwagR54xlLarmcXBLgnSxtnyCc/h+9viC1MuplyTXd\noq/mJcvJi3DM4I6Ilz+L8IYENvbdhJKTzcqMuhzf9H7Qu1qEVVy2WKkB1R+4qlpHOIZjMiIq8cw/\nOUeNhIoVr2xutHqfZ9tcmxn6Jl7g4oqW9YptXezaClDXBcvlGbpdcH28YL2skF3GvLNBDXVpuF6u\nWFc7RLtZMWGBvDzh8acnXJ83QDPa23vMrx7w9i8/4uHDe+xPJ5Q0YSpT0E02waf0eaTNEkgMtYP/\nbQ1VFZs3xCL1tK6rJWmyWrva3I0tKwg7f2k0g21MVup2ox/5heQIR40yMMdq3CErCsOIkw5JPWqK\n2ZzaE4I93E1uvDtNogqnhYYIQBskZRRGhvH5twg6oshmA8atXwgpCjbXyn5NTneQsssCuLySZ2Gs\nLmQkpw3oJesIdFpKgaoZjlw4T7YbCqMZuP9a/H6oGc+cxSs3xQxnUwgyymSKEThHa/t6A2jOPBKV\ncDDWkbJWDefFcy5itRHaNM5Wl1X6IQZzJ+zN0h1xFIb58CKJPi+mKjP6zYqiFAmZNgEDQmbkIYwg\nDH3TABO1k7IiFdVZAo1IUxVoG3A9r5jmgjT1ilXWWrQqVlvi9xefowSLLNbyEYdJIMoIvz/j5vTQ\nZ+A+Xl/EkNfqCynqI6CaB/Ic5zVs1CSWNa4ckotAyjZ1m6hmLCKQ8GQg7RGNmwB66ZEm0eFv8d+b\n/XNqZXFJL2+W/k5HBbcojLKoZVkBMane1ppragU5T3av7rVbq44sjGNd1w3barrv3/7+M0TP2F4u\nWK8LWhIcX93hcDpAteD55YLz5YK6Npz2BQdsSE+f8PRpRZr2eP3dV/jqbz/g3fff4tX799gdjih5\nckNok0rsXLEpUUO03UXf9BiaM0G7UR4TjSn3kXpaOxJNSiWBOLVQCaNh9BrlZhWUhTLZGvI7hY/c\nyoFi7Fo7IJCa4lnwsnprYAFgA7cdOgTCUW1YV/u8batYljWSo8mraOwzFSg5DiyRoWq9MbojAuvJ\nOwBIRiFsJnVs4TDE0Z8M1IqDHd/fjGVvIkPpFaPw30WjQA4+hRHiuRLnp+k4XXW1ebK/muOk9Nbu\nyVU/MGcUKFONe7fBExKGmWj9pobAz3clLaHU8ffoxGgo+7cmb00rcnPP6vvPUHjyM54jYrJjPdQj\nSE9O98/SWC8rJHPqwiOq6iMWUy6255IgJoE5UtRmzcumkmxWQmENQon9CSdSzGYAKhhaTyBsUE4J\naWKkq7hpqgYr0d+2hjUklLevL2TIrXqziYC9CABAUG9DZklOPXQvGsa3me5VJfkUanKqEhuXh2B8\ntWEhbpKu0NhsDeM13PApvQ0t7HCRYyUaZwhba8W2blg3S7IpBI0DkVVRptyvjT/fqrW5RDMU2BrW\nlysef/6E8/OvWM7P2NYVTTLun19wenWHPB1wXRZczhdcXhZcS8EhAfttg+wOOH34gA//9hd889cf\n8fDuLaZ5hyyld9sbuGNSP1BA2qAeCYTIzS+xHkSNPHChffbnNZaLswGZOYeOLlR6RMaIRYbPCAMk\nbB1MjXMd3u90kDRfPnfWoeigMUuorP4EQ/p2gwxbJMQUmVNohuZR/HMLjzrFwt7loxLFjF6z6sNK\nTlejj3atLfh230a+8p6MSwJrtdsrB2NSjki/kpvt3n83nSgNd8o9L6GOpmlcGdmmLIE8GYnx2Qay\nDZRpe0l186I4Bdv/5WgnjNtnDE9ou5Mr5KFJTyTAFNQEOxq2oN+bExCpOzMCLtKjlPtybSMqHKix\nptbWlyuu0h0Pc3QR9UO8O6K1U97tCiRna22cRpbB/goK2QEg8Uzi3ndKN56LcJ36c7Y9ulo9yR+8\nvogh37xKEQAExTeCZ7pBb2fSNNWEtrHfNKzHh3NHLMBhJr+qZ7PRNbXwsF/EQhb2k+6b7zZMVhoF\nAXBTPm+fye6EhiZsw1QvqW9xAhXbavI/9p9e1wryuwZk3Hw2hVYaQyBPgsn1sJr2uL874ffdjP/6\nz094fPyIWjfM+x3WVnG5XjHdH7GXjF2tWK5nPH1suJYJ797f40//46/47m9/xoc//4D98YRpmn29\nvdEQ+21wl/qhFTEEwIhDldPLvQhmBOZe/FEZwnvC0KYDJZQyctWklDyEppXVrswwOqJCmkQrYUNN\nLqNL7hRbC9UQ9wYlYikZXUV6w77f7y14RyEC3zzkhw+JLphT6i0QPMHZ6T7v9LeZMbYEXwYbUhl7\nYW1wGxDOTdU09UzYRe+SJtigyK1XlIpPUaKhtqX1Xh9eqLIuCxTmbNSNQOQ5YLK+Hh10RyQeBZMb\nt8IVhCHkf6chVwK1vj8YHJnZQKsPgAqSFEBrtFcmxd+FC82Tk9Xv0aQFlZFu6ZQrk+Hikc+2WQ/v\n6glS8TVPzHeJVVVvrQFCQGi+JKUcsmGjO43eSbmEkocRdEPDNDmlkvoeYYQndKKVXHbBNBWPXv8Z\n7Se3QaRgR4dg/kyxqRWbSeoFW5bj8QZ/mwOLpuhV6LevL2LIl2VF75SxhhcWekAfumC9jbqhppfL\nQ5tK0xfDhzPQSPocQdgCZedqBcAYttqYsI7+B5zpn6ORbYd29QyACLNbaz7Uwf5WbD1s9QxpgoQx\nr9Xnr8iK7bLg5bcn/PLT76ipYTpNmPc2aT6JoCbF/lXBVz88oG1f45d/ZDw9PUGToK1XPP12BZ4e\n8fbuDqfdDqd5xldfv8Xbr7/C13/6Gm++/oCHt29wvLtDmSbkNEEkx/VIZlhujmzsIWNOtMWBInrh\nczGDZqElExhEveIN8GutLi/3ggogHKE9PnLjvepPgWh0xnyGKIbuhs4rsm/FkDDl0xNxjXXOUBZ7\n8LpgjZMg7hgkA1NCkuqGXyFakZLROFDBulYvTOtFPmYb3XBbdszbLRvHvLxcrK1CEuyOB6RsUsis\nAk0Z0Ox0HmlCViL6JHkag9bQQurZo5i4d2hPwglg3Vz9GpMgC3ldhANhlNO7dBo9EoUzpAkbW2SY\nY8nBKnS+vVM5/awEn6/mXMoQreXcjZwdQ9NSC88LjIKLAr9BwcNcWWjN3YeEw/P7tGt0wytMdnJ/\nZrBtArgW/v5ITKpJRDOk/7x6fOp7LZfuHBznxXVI/0dEMD38BCzCGNAQHMjmFC2h7fIak0uQpChT\nQsoz/uj1ZRB5XW0juFxv1LdaOa5NW1Efd2QifkNCtSrgaJtIkuiYa8bmPr1PQi8eGqJdsFm8JRg0\nFl3doDBh2bzKIBJRbkz4Xo5dW2tFawtUXQaow0P1kNs48BXb2vDy2yf89r9/wn/95z+wpIbp1Q6H\nuz3u7/Y47CZsraGtZ0xzxeu7Aj3vMMuGNCecn684nxdsq2LKgtP9CbvDHd7/6Xu8//47vPvmKxzu\nTqYvzyVUEcmljl0x4YdImASmuoNUQ5eCBcfoBlwhUMmOnKhEYgir1o2uaSC/Ecl3rrLLr/j5RJYR\nLfn/iHRKg0k8YZVkhMjeCQk9OeVWohstt2bJ0U9MZRLfR/AiE6945P5CUCedIlCGyrx7GXhtz++M\n7Vh7eN8RPveGqk/w8Ta8gCmhRrYk9q90uW5w1zT0rMmAnR2BxNrRkJPSaNB4P3+UBnzszmn0UlxF\nOAOuTfNzYOuboBlBNfjSmCMj514VzROUvFeCKhr1XtYO0NhBBKg02dwdna7gPuLN9PXyZz+ol1jY\nNb64R5vTHSnsiwYtklLyqtDBuQqvO4HdJkXQqVj5PC/XD4MQsYtgfNrk7+06rWqZxXSfv76Qjrxa\nUcxSvdxV/CIzUmpISZFTRZksPE8xoUqhrWJTO8BZJpfq2UpGsjMMfIvQsrK82dETUVX0CE5uomPx\neLW+E8S05NvmyNuH55pRqVDntbWp9Q43+GmTz2GbPSdgbRXX5xc0XfHpHz/hl//83/j4f37Gx2XB\ndU7YnWa8fX3Em7s96lqRyga0C5ZPH5Hbgjd3E16/O+LpccLj04oVe7x+/xYfvvsGX/3wI15/+xVO\nr15hLjvMs00cgYjzdOYwlYoJT+KR5+xTcrh+6SZROEr64KG7qkJzj3SCRx+WL3IPRCGu2VVliG1R\nCJ2LeuiZUup92FXDcH2uQmHZdq0W8QjI13bknhLnMUpMYRnzMSklzN4DGnAnrLe0TDfiLRQVxmnS\nSXtoXDKOD/eoPos1hiSA4b16wyffb07DdEks5WziiTO4w6DzsGuapsmutQ0IWtwJ8ay1rUe5Xj2p\nRLwiEPWiINKDjkoBhaQKYfteiLdRtvcyiQ045eFrn1LCtJuwS9YzxJxGp3dE3NC7jCxnAYvgbpxg\nUD00hN0p2bqNtGinAYmSOd0ret0I4KEdogiQz7Wx1D8HndedQbcBjDxSUlr52BsCi/pKztHGWmEJ\n5H6fTv1mq2PoVMwQEdhdgHNgGX32yOBfiFp5fnpG3RrqaqWwkoEy2QSblBMkGRpozUY5QZLPtdtw\nvSxozZo4HU479HSQuGTIvSRLptWy6ezmNpoZ0i0AN1s/bFAmfgB4I6CqiykOvH8KS6Rb28wDp2Yl\n5t4fu9WGTe1htHVFU8Xycsb10ycslyertnz6iKfLJzw+veClVuwPO5TrHeblhEkKlm3Fdj0D16tV\nNArw868vABLmwwn702t8/be/4psf/4SHN2+xPx0xldmNXt9khkAt1G7UYg5I0uwKHZgNJ463qBnu\nIV4EYHwnEW804Ve4gQZiAji6ow3kXKn+6UlOCbqjh8BSBCmxmMRD7NTRevPnQeilgLdf4PPrySPe\ncKB5seETzHWoV6iyKRTD3TDkTcAZnYaIR6rNqyhDslaA5uXyttnApFeXugG5WD6hTQmi5JK55J0v\ntpxA9eipV6/aggja5lJFARLzFYwEG9CkQqQNBrUbBG2IPiEp5yFB3BPXHDtm7SOumOfJpZuuGslO\nhzpAyJ7847Pl806em+nRLbliiedkA4aJUFOcWa6LNqfqUor7gYMRAgdrfCVQzYF+W9PBofl7XZrI\nqMC+NebQehQkcf2kVYCu5DLgsG0t6MMeuTgwGJR1QaoM/1a1CBZJIzKFFBMeDE78j15fRrUSCUfX\nIjeX5HgoCmhsdt0SWjPkuK2rFbg8b8hThuSGkicv9wY0a6AE69tgi1MbN5dt7jGr3FrPVHPjejSE\n4MrHULr5pA5HYICi6WatZ6slY2wqjCf3YJnm9XK1z1muyNsVeH7C9vyIy/kZT+dHPL4847pWFD2h\nHgrqccI8A7qs2F4WL0E2Z3NV4PTqHg/v3uHuq2/wzZ9/xLtvvsJuf4jufdSxsjTegczNiw27dJAV\nkrMGgK7Y6VK/UKk4DwoAkmg0JdaLkVEPXd04+tozeaTotAUjAck5Lpa8JnvR8Gtd0tevfURk/Q/i\nMEb4za/BeVZy3cBwACX2gl2e9H1DgBc3dxsO+0V2hOkGiffdYi09J8SRcLatAnH3zyV9wOvqTkvg\nCeDceWsqj/wy/HHS8PDr/dn0RlLiNQQ03mbomNBu2pz77ueB18Vl6J/b+W0iWaJWtr3gJE7bMzIY\nRb9e8Bl0Ix5JcyByAbye5DJVITAheIDfB9cGY46Nv67vFz5f258jddbfNyDA2DvizmjsM3/bjgS+\nj28FA/ZxTtPxjULQYhFrlyL+sSn/Ioa8h1w2/WbbbIJ0O1+swnE3YSoFuWTzbouX2bYKLBtefjlD\npozD6wlpb9kOtoy0F0tgreze5gRWaEvQQeI0NtQyuSJDfh4UvdnkNArGSIiHpBWqG64vz7heLrhc\nF+x2xUrWM6CbYr2suL5cIALsRHGcAOiGvC1Y1jMeL894Wl4ACHbTCbspoUwJ097kl7oIXiogmiEy\nQ7DH6d33+Op//BXf/uUH3L++w36/Q/EkMUS8mIBGE35YPi//pvG2zZijUrtvPvsUQU9gtRuECKgp\nTKi2AHMdEiEyD6LEQbcPrz7guFaKiRGqAMB5yQiVu06ahry3Y+3IL8rjMTTyD2qCNEt3Op0qsq9N\n82RnVMQTsLY3p4n5g4Hi8GsZjXqLUNj+TRUJhjWsdYtCEKMuHL06ACD6oxHkuhEhgvei3TCmVOK5\n8J54fU3HKkYWrJjh1GYDmulUKM+NJKz3mNmu1VssJKPshq6kjFBFgKkUKBJq27ANKDr6sOSEnCe0\nai2RWaln7xvK1T13oopY87GWg+ebeuxO3/RIK3nUxBoSyh+bqz9IG8ae8VwG9wlVR31HDmtv7LkD\nxRZoO9oue1SUiwNEJdVLvp2OvY+PY+I0RAZhc9y7BBL559eXSXa+vKDBoog+UNiN45qxSbGKN3Rt\nbd0UioTDqyPelwmSBIfdDvNkE2syEyMs607kvDKaTjDNcfXy+C08bsrWm0EbsHmCz8JAXm03dtT/\n2sixiq2q9amuCx7/v3/g8R8/4/z4hLybMB132J92wOYJoJyxO00o0lC3K1re0KTa9JRaMZeM3X6H\n48Me+9OEKQukKu4OB9zv9/j0eIbmHXav3+D9n/+EV19/hVfv3uLu4d5Gr00FxasdVW0S0gglxO+B\nnCHDOSYn2QOkOv8vgiiGIZqxv21tjKpyuiBUIz1ZI4MemN/r3QN1+L10Nu4AcjdWIrgxSqFukm68\n+yEYiGG10ukuF6TxJjq3U03jwWhivB5AUIrJGE2/3uFTGDkWuYjELFJDnab37hDYWgqv6+pVvNam\nbzQcjSXzDJ/MmyAXRKLfDEWH1aODHg2SrQ1RuaDGWeI6iRsWc55j8yqrnGyOvhvqtuL8+IJf/+/v\nmPcZp1dH3L97bVSKSyR7Ob4ZbhuU0qOnJFYxXCYr2ol7ySn2hPiZBSkPpdMRR7U19gdljaQQWbHZ\n18Pvkx/HiC8JsmSnbNsQcXbkzBoAS1J64j0iXO7HimWpCKfehnxN7uDCnDeGYqg05C8knE/Uu4hF\nGVTlRLdQAdTnio4Aa3x9EUOek1ihD+CjsJovLDeouucaQg414zAfd5gPs3nbufQDnCTkYwrT3M4p\nmUdUoFZ3BpSueYIkcwMEZ+YeMKLTHj6a1tiQ6LZuoYuWuuHl0yM+/eMXvPz2G8qcsTtMaKc9chKU\necJ0mAHZYZOGdbliWS9Y2oq1mdqlNkUqCXev97h72GFXCvQqkGnCfr9HuXuNcv8apw8f8P6Hb3F6\nuMd+f7CpPd58vmQrN+fA1kAWIw3B+5MhAHUjFkUU6kUWA01C28JQOCIZ/ix8DTGE/v7moDhy6knR\nCG99cwfq7BFCa8MBBblxhslGncWcTVpp+244HPdgYEm0fY41WKJB5PV1RUPwD6BunXmTUalgdlB9\nbqfEj4oKJFMHLugRTK/gba0il4zsHC6jPjrDkdOPB2GbsxeSWVXKcM09HGdVrKoggxTOQJn49wTW\nRRDC5KrPWK1w3faGbVmxXRckKdh8wAkLs6hycmLqJiqOtY3orA9cbr62bJJGB08uXlVNHjsofmgk\nre84e43TyDrSduqlz9Q1g+1L15OpzfYpoynxfdIRe3d03aFIrFsgaRBFEyAMCHrcS+hRFb/mgiV3\nQDq8k+etA6RYm38lauV4vLOwFsDWGlYvTW8Yus35Prak4QaW4OZSMM89Y75V6++BZoZ82QwpT1MB\nRJEngc0x3LyYAJF5B2wRzWlYKJOS9TFRRRTqGJeq0YOiebGJIUtDa2utOHP01aVCXoD0WLA/HVBO\neyhmXK8FqyrObUOrKy7rilWBy1axbBv2dcXpoeD+1Q5ZZ7xcK9Y6YTfd4933H/Dqu29w9+4dyjxj\nKjOmqWAqVJVkJCk3hrdvgFtKhdQDk3gWosMUPMLsehqMhKNZEz3YS8dCD7n5vSLSqYNkjiWljMLO\nh+hFMWz1anIu++htq964auucarLWp1SM2HANIKx1cnlacict7qizwGSEQN2cGko9YWqI0g95utVH\nD2M9/d4sCmEy1J49IrqBH3JD6JYQa8qmSdTYV6yr7R9J8NEFffSXQE0KS8NG40hD4b/ZLpxr6HSC\nq08snBcwAdeROKMYBfuyAAjUmVxKWm/olYY0Ce5eHyFFUHaT52FK9CHvTkdCLoxBWiByY6LsnInG\n3HFCaTbI6pN1XPHjCUZSQ63mXpjn66XuWfu19EQjIxRGXilZD6Zercsz4vZgAD0WwdrgiqD4BDAA\n4hTeTWFaws05Y/RLsAiJrqHwKLc1BViB6vsyh7zaY1w1ifNW/4UqO/d3d/Hf1Y1o9SG5dthMTw5f\nhFLmaCNZt4qreic04YIIoA3Xy4LHTxc8fbpCSsLxfodXb4847XfIklCmEr2N4Qjb+hMPvBkU2ro8\nDaAutMvYWPzBHtySM+ZX99DjHr88vyDVBYeS8Pp4wKqCBYI5JUhWnM8bHp+umO6yVXtuK7Qa39k2\nwa8/X7CXO7y+22G+K3j48AHvvvsaD+/f4vBwj93xiJyLN/phlaZtmkbj6GsbjJpwrBi9vt1rrZS8\nCbQLP8JQ0AHQyHEjs3WogBbMw2KRqE6LHMXWon/EBngyz3twEAlHwQtRijmGSIw6wWl9WLpUUkIV\nY3iwIUErC1IUTaurYLrO3G5fvdzcroHrpC5dtF/nST70/AGUSdrO2ddaLRHts0KTSV2w4XYdmLSC\nIOi963VBzhOmQr6f8CxF4zKTJnYEvdWK1JpLdXtSV32PKtiQSwIxMjoirVTdGNDgsCeLRvtPn0oD\nRSmC3W7C/f0dkFyxkRhZrWhqSp3gzIVGjM6yd2M0uat9L0a0baya9AhBvGdKktChN4UrWYCUO53R\ntPcWb9p8j0s8F95Obx/gCNudIyPukVZTj97DOLthr21DSsU/v585EYtejQ3gAO8u47Xfo7HH+vwD\nA08ZEpFnh+fCgwgmfK3eoURDtM9fX8SQl90u/juNqgFlMkgj1HNTCmbrw3OSWxsQScz/rEBtG9aL\nYDlnTJKsq59koJjXlCwosEozJiaqN+biRLMkgKRsnN9mpoINsratBRe4AUj7GafXd3j9/jWef/uI\n67ri03WFTBn1vOC8CaRkrFvDulakllD2Ba/fHvHu6R7LtWI377BeBBV77F+/x5v7N3j11Vu8+vAW\nx7sHTPMcszPFG145BI6/MAZfHk/mlPr3tG/QSCwpkUk35pFUGhBcDFeWbsg6C3GbjIvwMvnPg4lh\nNgCNoCEMjDqdFl0So2uc3ZUMBSI6RAagE/PWwVQ2tNagSaxMOzh0Wx+lLNAu3p91zxVEJAZHs6QA\nWr8/UgOUJUI1enCYXe+0YOz3ZAcYqrherjZOb28RUDS5AowTHRwZmZWodFYNg0fEzj918+RboiIr\noQdYbXje9ve2WSUrMsBB2MLvi1GDJZUITboD97/TSAf16GakJPiMuWnUP7/FKMTOMZPGAsT19p1q\n0s9QswED0g7SnxV6lNST9xJRI+mQMfnev58RjX2bUb9WKJyM1mGZvnPv/H1c05tEuBvjymtN5rDG\n0JZ0DhgEMhnPfc+B8KlX/H7++iKGPOXedN5KjIl8FdM0oXm4ksSm5+D/tXdtS3LkNvaAZFZVX3Sz\ntLOyveOn/f9v2peN8MOGd8aaUVdlksQ+AAdkKeTYR01HEI5xKLqrKzOZJHBwO2B8iIuE0VE2lLwl\nC5+qQFtGbQe2AqTWUW8VPY/DWtQmBSVJgdD3XHG7HfadmehILIG4N2gDoB21HthvB47DY57SoXsH\nsuD9n97g6T9/xn//V8Gvv/yKAw16SmgK3L7s0JKQTwmXp4JUBI/nC07nD+hVcP16ACgo5zc4v/mI\nt3/9D/zlbz/j6c0DttOGrTwMt068KoUbBunusMwHhpn7+Xf8z7yKNn4WhwJAG2suYkmblBRJygip\nhPaY3UhDhyOJOcIE7Lq0A6TQLD60Ykpq9hkpwp+XaGUq25pi0snRFjk87nIBjtbUDYy917l2fBih\nXLIrpMFgaGWrxcEyE2Tj+3Ogs9EVquohE1ZZ+I2G9+Cezn7dUR+OQPnk0ugCm8+J5BNiFBwmHErs\nsDmobK0f1RtMNjK5VoxZD6Y89Bs9YMpUgXLfCauqNsUKCpQMeM18VILEuDfLIZCgaiSr6dExxNHB\npjQaMhHzmtqkyNlo1Nphyb4+hzMQzxj6I7yziQFzMtp8Fn7BfDa+Df/wdzlbbX/O1gugHqpLOUFa\nAqqi9+pd3y08tPvz1L1ypkSAhCBUnP6C58LCSXbtIhlZZLrvsWe+iVDdyQ+c2WmLy0PAEIDAR5/x\nRPi6s6vPlEe2Rp+pAgOi2Dbg+W3G5fGCfd8jjt0VkN6BlB3xmWXs2j3ZklFrx/XlwHFUoACnbbNy\nPlh3XSn2PU0V+37g628vuN4OdG3IZ0XqFa0DN1U8vH2Dtx/f4eOf3+LdB+Nr/vJrg7QKQQW04uWL\n4pdfv+Kf/7sD/YT3n97jw08f8f6ztdh/+vzveHh+RjmdbErItFkDgUzJTCaAYqO6N9NhG+U+NDRQ\nyNxco66srKzSR6ORxyPRExit5SNYMR8OAODEmtmwWAxY43P+PVBIk0DQNgB5asJxfBh8HDLi+jww\nrbY79rskVkpqITvnBWfTlmB0JWoyIiiBx+JzKHGWJHYoxMMsGq6zDKSZOeqNdA5c/hQDE8isyL3I\nCoQIEbSGnnwKvGRA5m7aEcPP2YYHt9bRJmVmc01H2zxzIPFS4eVyXeJVhVelsCpAyXFPFs4ELtgm\n1DoAAz0SJqJZtdRndHnnLfOaNr5N3CCmlHA6+TUA6zRNZuRj2IWDL3LSi1cQsWnMumQZvhrzP4m8\neW1SCFhfxVxRNcqJ+Y7EixgMJE3r6PuLA76N8lbucgrjLHnsvtuemDtMOSqQ66Ouv2y/axgwfp/l\nB73E9o+EyHnc6eJDPBPv7r7ISNHXbmoAAA6lSURBVCopi/+neFMnsJL770yexT6dBNsp4ziq8T4n\nxmFLNGgk9wB67ajacX3ZcbtWHLUhvTSgC1DMgnLOn5WITW3sHgaQZp7E6ekJGzrOD8/YzgVvPj0C\n6QUvX77iy8sLslYkVAAN+1VxvDRoy3j78T0+/PkTfvr5M97/22c8v3OiK09k0tKFi010S64YZbhg\nuPGMAYoqoBOX+7QP7pB71HzbZJnei39WJs73FPwX4Y7qvLXG9XnIhwcwDhX/NpxHP8nGeWO/GQpB\nzHVXHvLhG9v30xsZJVwE3ikJpBu6rdqmu7SF6DRIIuhiinisIxNpAmnTz8JV914EcE1tgDd0Mlz+\nTNkn0Ni6kIvaEqH7seO236A+pix5vFmIdqd3RNPM0j2Cn9kLAaa6+slj4ruwdz2PtHOPQTu0J8BL\n+SA+rk3H/qMhHRVCsPhjkm/eO70whidT7D2jamaIQAdQkLjAN8pf3AAzfIK4F9DAe222eStGqjcw\n+Pzs0z325oNNUjyPds/HmFXx6hcNvWRlhvweht58n/hNxd4O71Tvr991Cp1MhjWxmW06GUTkOgDC\nv5IfhsjhFssSMx7vZaIEuGNC42bSiJFrEGN1X/csai4kUVnasBWz2Gz04e5I3vqsjqL2w8Iq1Wva\nj1tHRoVWKwus1d3GZC5lThmXy9k6UltG2RSXhw1beYK8e8Z+q6i9Yk8VX/7nC375+2/4x9//gVw6\n8mZoJ18FTRMe377Fh5//ik9/+4yPf/kJl/MzSrlAA3E2DzGUmJ1p1Lq+VskglUAnNjvODRwZc86j\ntEKFEaay+OkUo/TStZnoiof+22x8KItw+3iaMVgO6X35Lc8JOtvLVrNMdMgPEqEDI4MfRj5JPKd9\n5ygSF8zKxMtccwJw+J5xFNtbJBK5Z+rUJt672rYL1ABHhDL2qwu9I9NFencAAfUElXi1FBAMfGLD\nhK/Xq4MMtSR25noRTceyxvoXD/fwjLBunArBkL/GGgXajDJDiS5NzrsEYJS48Z7dCwtXn4RiKZTW\nTCsMiDfQcck8Z6BUXB5q8VAR4EAo+UCIRMUtjlEc6WuHYJQnc09zLRIDy77m3UOETIzPn5XMfdt9\naESOzygNUoAmY+cMvOh/R8814vsqgINFrovEXrQ3NxLSQNIRmiL5Hom41I0GLV8gdGtPHwDqG/lx\nitxRXkmCDkG1nYecbDIPuJDQueQ3lE+OTLkn4JI6OPCX39g2SwuYAqmIW35+9uxx0OOwFvtcENUO\nW8noG5OwHa2ai/vwdMbpkuNF2KAIGPmR7MCxo9UbRB7w/PAOT5821OMrUmooWwaeL0jPb7B9eI+H\nd2/w+PyIJAlHbWhtR0rdulnFlF/J2zBuHoIQiDdZWJVN7zXoCppn9QXG4c7JO9GUIIwtf+8N6XRo\n5O5HbL4gARWVayAMIBJU48A5mobzl6QpHjtVAKgaDWvvalVGpYBdkjnnO0U9MP24roZ3oBFGIZJN\nktC1BTcL50WWUpw22BpcFEPJi5Ifm346r2nxeMbRR2zVkbpYtyR/b+EAutLWJXrBCU9Pj1ZWmbON\nmesW0tr30cxDNz5nr6PWYUA4WCIBfr0OtOR17R5ucG7tuwEu/jzW2Zigmv19DSVhgKFD/X1hMtQW\n57XPtkbNZ40/4iWWM4la683n5aojZlYt0bB22PwVDcppMzCz8U7hoVBJ81kY6nMtajTLYUz5uYlf\n3a1yTiOEV2sNvpnYuOJ7diIIY27KGuIKmLcYwIQL6GMfadSU1Tk0vC3CNiXnGPocydzOwRhGYZLp\nef+RFHm4R1RMtaO6pbaF857BNDYXX5iArh472Gh96f77wXXyZI7Iit9T8WC4igLL8KcsaM0OIhMz\nOWdvAhIctSLnE3rP2LbRJqyOhGiCJd+gKtj3ilIuKI9ATgXXr4J9v2E/OlI5Y9seIadHNE243jpq\n21GPA5JKDGaweKBG+VHKxmVccnaqgw2ska31MCKvQGEDCRgKtOGuOZSv79c+wiYaHYwDRd3F5QbM\nCJdy5gQf3zHQEzDCM8ld2Rglx3c6dsZwNyc3M5Jm/n6H7zYIn/indO1tHTRQlkzfZYcxe7J7IH77\n3gTZNvc0nNt8as+X6XtDkSvQ0af9yn6IHp2Zdu0GuGI/nc/D68gZSLirjSfiTdmqrnLJgdQt7NRj\nDbIOZMmwH2QKOwmgPqtT3QOKyptofrNrh5Ekq+MAw/Y9XQcdjwjEibN4b3YPKWhpgWFYVGF1/EKv\nykGBdrALz1D4KNPLpBQAy1M1DEvOg6s9wg8eQ5/DSbEO/j9EVY+DGbHYvYLDIIYB4P1zz3O1kqTZ\nrtrn2dDmm1HAElYunhsdJY/8xOUvlhu0x0tI0n0dnG73+6gLwI9S5H4goQA8U69NeVbiAM3Z53CP\nkiVtxJVDU+f7EDKSpaGgJSEltpWzIWNs1ZGEw1DmIj5hiKEGv14HkBRQc2mNutbuV13hiaPAnDLQ\nFXU/sD0mYDtDHi7QU8L+z9/w9fcrCjZoS8C1YT86cukQyXj5WiEpo2w+K1Cs6QhQnM4F5bQBXfD0\ndMGTd45aKWSzAQjRVs9pMYLeE0pWaM6wkA03/3DrqCR5QIxXeVbYQKBsqnbOvhROyDHvx8OK9hce\n0gqlNIVWTKHaNWPU2nT4+M4ZYiKqspuYkckwPoHOdMSKObnJ7D+VmzUo5VwcY4/DmnNGEePoMUAx\nhhG03gYSCcPjLnDvw1hFF2IPZa3qSS9foJILdh/ObcOkXflMSjh58xKrUwwp27OQ9NZcmQw2NIkY\ncNc+apmpsIEWidz0jdFXIJKFfjhjmg6AiCXbiMNRN88xe5Q4e26IVYGu1ZRS+EzDu+KeU1Woc8uo\nEqT5GfBErRFd+kZxgMMmGpaAkuOHSzM3f8X9paHYUxJkZHQ3XHP3ZRjt7kXpHOTsG4oNjH1ao+hy\nTV7JFAZCjJWRIZkEJMxc/W503PuTlI370Q0dz9z35IcocoDK1CzjVoCc2VmZfEKMIc9WybI3xQpt\nfhPA8IpML0pN7XAyvCXDGBcwc8cN1J0rmGVq6opFirf95gRkgTQgQZFR3LWCM9b5107x3SRA3jIu\nj2e8ff/WxjT1Bu0HjusL3v32gi9fXtA1AbkgZSM7qrWj3hr0pqj9wA173I+xQx5IGSinjO18wuHd\nj03hlRlWZZITnw9GboQNCQmHKDLUif0VjMHPRPt5SwMpN7aU92njs3ba86w6XG0fhGkKJhJxiFig\njDcern2gS52Iq1iiJnNFjSfO2OqNQWjlsGd6vYp2VLTeUTzk5JtmoOutwIx/Agd5i8B4eaaOVPGD\nOtfMm2HnszpSTyPBlzw00JqFV44aHH+Tp0ElXSFavXJlcHzbWWXIyVg/j+Mwzv5EPh1fTB28KPRC\n5mvxHxGegEBk4qHR4e3y43z21nqQmnE4i6RBo2DvfgziCKUuw4jZ9ZMZzmhmYapT4x51Cv2MUrvh\nZ42k4QCmsQ/Uzok2trCPkBTtvumCEf6IEtpQQ9xAwxMAgIMMn8wt5LHPgsNlWr95ni1k0AtY7sJM\ngBFrNSDuixVbnrtjklucakCNq6e1f530/DF15ADooZjHYVUkc5KoNSrxUfHAd8tDC/Aw2b8tJmxo\ni4ZeIGNT69g+cxbbnDqJqoksGfQWBQpNAtEEzysCkIgziwhSSVGehq7Y8oYtb8DJq168DG57eMTp\nqeLpT9XwDuksu01Vbz6b76gVu3NctN0naDeBagVE0WvD7fcbviiwXzsAaz0HhzaLIOcNt5Mi5d06\nHHNGKRtOJ0sCJw+5kAEOALbtZN1jzl8RScMOMKvM0kAiEhtE0CG9RRL5vr2fIYgAXkgeL6WTGgfX\nDwF5rVnJpG4kR5JUYlxdHH+hRzSMTY0hE+5F9GEQBpJ0lOgK7G6izV0Xqe3Ljh4xaChrtfm8k9ud\nLDcB7ltH8L2Z267ag01xdARaGaNVlVY07cHvA3jCOnePRU/IzL3Y0O3TL7pXWvTvaAAaLf7BbLSs\nXK+6Mfdzo/luFjlDPMlROs/m3PNBwzH3Hoz4NcLb4x5U99C4vwhKuI8gU8cvQ0wMIU6GgZVFsR7K\nHSc+BQnQ1BHT1FSDp8Xe67zGA6HDvYreuG/tWswJpNi7w4AYIOBNWE6Qa8G9QB0XRUIpIQZpKCt3\n2nffI/DDFLmMFz3tDPtZt4agBq8WcSTmB9Iedvx7lPh45j4OXbw23wiT9cRUWeD/dbFBsIY6HMUT\nzUDCrWL4JnGhE2wwAJqj44bMrtQE9CRW+VATtGRcToLn4q3HHaitI+kY0ACxKprr9Yb96xW3a8N+\na9iPglZ341u4Am2veGmK/ffuzom1TNdaIZJxvjwjb4ouFXu9opSC0+mE8+WCy6k4B4kG70Pvxk9z\nPl9wuVxsis7kescQX2EFjK1MUx0c7M66mPy9jLW2jWst0BKJ2oFQCYsA8n7PCJtJb6rdqFyJyiaA\nrZ4i4vTHsJ4AuvAwKgYBPKSSBvpp9iyzd2J7s4exHnYpdoyDkBT0EfM4OBGrVmGTEZ+FA6FbG97Q\n3NkMpYI1Ppbry24ljJ4PSmzMYomiKwrQJOnAsXwOcqrgm5+zMoMkU0IajGYGxDhv6NL7/8nkJbkn\nIVlcHY/k76CVpjIflU/jbGKANHFSM+6F8OGAAQaGpwSF00rodA0+3f26QOdac/geBATk1e8esp2U\nORKKh22oA4Z36BTJOq57N1s0D33FPgibsOhAAubJzQZvLhYgoBB2Nqvdh+YeYa5vRWZkumTJkiVL\nXp+k//8jS5YsWbLkjyxLkS9ZsmTJK5elyJcsWbLklctS5EuWLFnyymUp8iVLlix55bIU+ZIlS5a8\nclmKfMmSJUteuSxFvmTJkiWvXJYiX7JkyZJXLkuRL1myZMkrl6XIlyxZsuSVy1LkS5YsWfLKZSny\nJUuWLHnlshT5kiVLlrxyWYp8yZIlS165LEW+ZMmSJa9cliJfsmTJklcuS5EvWbJkySuXpciXLFmy\n5JXLUuRLlixZ8srl/wBoXs5YfiswVQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n77ryEsbvRQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nXDEErE5QeabrOg77HWKcdo3zzBx1wZazErxL1lCVUgSphRasQ86ilz803ru+Lta1CWLZyxSlnUoT\nDCyvy2JdsUB7OkDVtROO7SKOMa9waC2CN+CcQmuh961bz5RkHmAOqQojLYwYFpxb07YqbdGIwnga\nnN7eP2sas22BrFi78nX6WhesCreYZumwiIoWVkxFX59qoDTqbLGV43xEPEgAlwqbXc/2sGV7ccD3\ne6zbIATNEDWVMp+4u73hdH5LyhN28ozO0htDPI3EKZOLYILTZef/z9y79UiWXXd+v7Vv50REZl2a\nEiXNyJrBwOPv/yUGGBieebEB681DSZRMkeyuqsy4nLMvyw//faLEcb83E0g2QLKyKyPi7L3W/1oC\nbburaHur9DDIW2bUjdAqLCdyiIx9JwynhEMd8adfvxBG7jNvYlqsTatULlpvWpf2dUy1iruz3Su3\nt03SnoccNXVvkzg03APWB21v7DFweV05nV85nV8ZDLbm7DdXUM8M3nELnF9fKCVj0fjNP/2G//Hb\n37Bezrx++EBKgTUHrHXev7zzz+1/8Pvf/QPX9//EX/zqVR2bKZNT5m//w9/yh7e/4/df/5nH7UHb\nd96u3/jH3/6G83KakkjH48ToIvjsB1XXog52KwbV9X0cRB1yUah9nqobe8DedjxsvL//EbfOh88f\nCSOQyWwj0rdBDbAHo6wLo3cebzuPdx2acyzh0FXj6ju8jwZ247S88PLDB+6PGyklllJotXM67+xt\nU1ZMm9j/VDiErp8V0IHsFrAlEosummUpMh+NIfkcA5pxvz0Y1hnBSSXhydh9EOpOaQn3FeudOAZx\nDOGwrVJbI5cz+HlOgxW3LszY+yTQhghIAuZxWrsP/iA+E+W8asL1LllbSYFzKVyWQoyD2gePttG2\nxt6mlKw7hK6p9t/wBWZGCgpcK3lh4NwfN8ZoWBjToFWxIBlmHZ37due+PUSsDiO6YKkco0qog1P7\nzq1ufL298e32xn270+o+FTOylR/xs0rTlECjd+Vcfz/vJqk4jTr9mf2NDsDZSG+z37N3bb1S9uuz\nouTIyPW+05vglGVhbmQDCTx1KOaUp6TxoCUE4Tzny3Fkzsyfrb63yVFqazhcsDanbzsOcv8uJpA/\n6zA96NuiDuze58biQAhyVs6+0xGNYTIpkqO05hboriKLNjS0fPRPpLVQfCqrIgyXhNW88nh85X5/\n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\nQkIdRMpROQs4o2ktLwKkWV/P2bfzXkrKklQHjYksPM/t8Bqp/H49/gcd5N/f3iAVLEp+FJMIZPFP\nwJWxfvDx6wlBy8P9Lrt7yYnbrRD3yDUbvZ389P4P3L/9xLc/f+df/t9/VSX+/zP3bj2SZdt13jfX\nbe+IzKo+N0sURR5BkKgbYRj2g/37/TMMw4Ys0hTJ07eqzIjYe92mH8aKbMlsAn6w0CeBc/qlK6sz\ncu+15mWMbzRt8nPKXMuVtEwzbdSl+U5SvvhTY64KWTl9k9GaKuwh9GoMkZeXq9yUjGUtPvV94orz\nWkaEH394Y8uZ7bJzeb1Q0qrCTURFVR9BPXVwLSbRMmQrBhO2y0ZrnbCixszBmubQI8ADLd5yLuzb\nroWS1gFiOU+HqCCCiJGRi3RdU1gOMIUPDQRV5a4upp2dSOf6+Uow6P3k6/s7j6Mzu7IbwxYhCw4W\n4pOQGLkfVSyVOfn0WW7JrWzk7ULKBaPzfp/02Yi5QIjKqjwPbm932inFycunizjqMYiTM6RqqT44\n2sH5eFDapGwwt8i271SGiJHu7KGw71IRPCWcOUV8RKFxx1hvhHCwtd44jjutHlyvF66XC2A86sHR\nKhqwT87qMAdxBobp+8whlnS0vCibRuiRjY2QFZhwyS+KkgPq8UZvp3jyQYEFqeyknvj97/6C3+R/\nxl//73/Hp3/7W/7iz/895VL4X99/5P/6m/+N98edc8ib4CtS7RkCsl+kEIohrp1wwCY83m7c32/0\nVrmUjW0r7C8X4Va3nW3b8GgagZ0PNaRBkse4JcJYh3hyznpS652zPRjZuexXXl5fxL8PzsWEZnWM\nF5dE8v128vXLO3PJz9TpNNJRV/WaFgo2cT8q9VRntl+va7xmhKKuJwQj5bQ8KAYM4S5K/Hi/xnxG\nHK7Ze5BseUztproLX9D65PpcVp+DUU/hJs4qVPMeSBeNSkNUkVDPkzYPZtEOIhZV5q02em3U1lSl\n52fghJgIAu+di/EUmBYIeV2ordN6ZY6NUpL0FqMzRvs4W2JIAu19MJn+4dcvM1oZqzGxSF7289EH\nly3yu9++kIJYy63LNBBD4vXzxvW1cLkWXn61YaFz+3rnqJWcdBBeXxKjG8YkumnT7wk/tW3uvVMu\nQtGCtNq2APBnVcagBbk5azuptTJ8sO075WlvX4uHLW9qofo6/FeOYS6Zy36lbGXd4isUev2Mw7QM\n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\nROkMnut9BfMAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAGJCAYAAACXcbjTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvV2obduW3/VrvY8x51prr332Oeeec++t8papGEMiaKlQ\nGDR+YeIHCYGAiCIBRRCNKIKR6IPBD5CggvokeTLkQTEaRAkEtEJEgvl4MRHJQylYpsqbqrpV997z\nsfdaa845em8+tNZ672POudbe555z7z7n1mybuddaY46PPvrHv/176621LqrKRS5ykYtc5Ksr6W0X\n4CIXuchFLvL55ALkF7nIRS7yFZcLkF/kIhe5yFdcLkB+kYtc5CJfcbkA+UUucpGLfMXlAuQXuchF\nLvIVlwuQX+QiF7nIV1wuQH6R37AiIv+wiFQR+URE/rEf8bP/nIjci8if/1E+9yI/nnIB8ot8JURE\n/hkR+csi8lJEflVE/pKI/EER+Zv92Kf+qUd//87X3PrbqvqOqv7P/px/XkT++A+h/D8tIr8Qf6vq\nPwL8y1/0cy7yG1MuQH6RL72IyB8C/nPgPwK+oarfwEDwdwK/rKq3qvpcVZ/7JT8Tf6vq//aWit1E\nRKbHvvqRFuQiP7ZyAfKLfKlFRF4A/z7wB1X1v1fVVwCq+ldV9Q+o6uELfqT6J57/94vIXxCR74vI\nL4rIP+fHf6+I/BUR+diP/7vDNT/tM4N/QUT+OvBnj+97kYt8kfIYU7jIRb4s8vcCW+B//EEuFpE/\nDfx5Vf2P3+R8Vf0TwJ/wa38T8GeAfxH4U8AL4Kf81JfAH1DVvyYifwfwcyLyV1V1LOc/CPx2oKrq\nDvhbfpB3uMhFXicXIL/Il10+AH5dVWscEJG/APxtGMD/46r66IKhqv6+z/Hsfxb4OVX9k/739/yD\nqv6vwzP+TxH5b4B/iLXC+fdU9f5zPP8iF3kjuZhWLvJll+8CH4hI66uq+vep6nv+3Q/Tzvwt4P85\n94WI/A4R+V9E5Dsi8hHwLwFfOzrtl36IZbvIRZpcgPwiX3b5i8AO+P1v4dm/BPyWR777r4H/AfiW\nqr4L/DFOx9PFJn6RH4lcgPwiX2pR1Y+wxc7/QkT+SRF5LiJJRP4u4NkP+fH/FfC7ReSfEpFJRL4m\nIn+nf3cLfF9V9yLy92BmmM8K3Begv8gXIhcgv8iXXlT1PwH+DeAPA7/inz/mf//F49PHP0Tkz4jI\nv/0DPveXgN8D/CHMjPNXgJ/xr/8V4D8QkU+APwL8yePL3+ARF/fDi3whIpcdgi7yG1VE5B8A/ifg\nAfinVfXnfoTP/jngdwB/WVX/0R/Vcy/y4ykXIL/IRS5yka+4XEwrF7nIRS7yFZcLkF/kIhe5yFdc\nLkB+kYtc5CJfcbkA+UUu8jnlXDpcEfndnn2xiMjvettlvMiPt1yA/CI/dnImle2nIvJv+nfvish/\nKSK/7MD78yLyb4nIT32R6XBV9c96NsZf5OIvfpEfslxyrVzkx1V+RlXPhdf/Z8A18NtV9WMR+W3A\n3+4+47dxkojUJ+5xkYt8qeQC5Bf5jSY/C/w7qvoxgKr+PPDzb7dIF7nI55OLaeUiP67yWNTkXwL+\nQ98J6Le+8c1E/rSI/OEvpmgXucgXKxcgv8iPq/zvvhlEfCJ68l/Dcqj8q8BfE5H/W0T+idfdTFV/\n35vmNL/IRX7UcgHyi/y4yt+tqu8Nn58DUNUHVf2jqvqzWNrZ/xb470Tkvbda2otc5HPIBcgv8htW\nVPVT4I9iWRR/+u2W5iIX+cHlAuQX+XGVszZyEfkjIvKzIrIRkSvgXwe+z2XB8yJfYbkA+UV+XOX/\nOPIj/0/9eAX+OPBrwLeB3wX8XlW9O7r+C0uHe5GL/LDlkv3wIhf5nHIuHa5Hc/4pYAP8nnGPz4tc\n5IuWC5Bf5CIXuchXXC6mlYtc5CIX+YrLBcgvcpGLXOQrLm8lRP+d5+8rgIq4KkkIAgiIfVQ+64aG\n/R4i0K9W/79i61zq3x3fXXoZ2pXq10AzQSnDMlhtB4Th+7heFRFBpN8zfj9n0XpTM5dKOlP+x2V8\nfnvCuctV7Azxd2r1KKv72E+h13k6eY6Q2vFWO+Jtfvbx0Xb50fKP7XquplbvOdTlZ90Yc7wP2Fv2\nG7cHgHr7CwjK+PZ4f1P/Hnm6FI/1k6jJ4+8EsdoXRamoHvzcTBIhCwgV1Wrn54nMhkRFZEFZfKgJ\nWhZElJwg54xQQRfQAylZPxBAtXqftt9RUMlUSYhAlorWCgiqM0WhVqXWSlFQzUCCBFWh1Aq1UMrC\nUhZ21e6vqlBhsZKQi9jxodVzEuaUSEla3SmCSkZlsuZRe3bVBa3FMaCPPZEJSdmu1eJ9RkiSuJ6F\nq4313FLt2dsNvH81MWnmF76r3C0LhRjj+WhsWxuprnFoJdF/Tr84+itAx45/5zu/ctKZ3l6uFXHA\nlTODZDz+xjb8fp61hzrIxOMCcPTsbY9BPIqh8b9YZ1rrB/9D9Mn8dgHox7//YPL59usVHK8fvfUa\ntM+DuB3vdSZDM47XRf0MD2zteq4QZ+B9VVdPv3vU7RcJ4ifXu65rfwiIaP8i3kvG0z5LKc687xkQ\nj8MGIgnVCVQd+tTrwkDeQMZvkDJIIvkx6w8J0YpIJSdIoqbLvV1FhCRCrUJ1QBQ1pSwkRBIiQk4J\nRFFNKBNSlSqKJkVKpVSlqo8VrYiWNsaEbAozleB2UOFQQUUbmImaAsskUs7knEGglmL3poJUB3Ft\nCqePf1r9pCRI8nFZ/V1SJichZUWkgo7qwxWoJHJWcs1UXRO9lAbiM4wB+/oYdOQRfFt1MlMI7a/z\nQPNWgHwEA20v7WxNZN2VPzPoWUeJimvk0TlM6DcbfOvLzpT0dAzGmB0OqPb2eKy0x2D+etB6Wj7L\nEvX4bInR+4QIaagz+xk/+t8DK5ex88aJzkgGYNcYRwMYvb7ww/PHa47bz6XW+pn7zKmSOleG8QL7\nb9B7yJkiPq4x18/tv69nhb2OtJ3TPnF2clau4uBYUd1T9UCplZyy3U8LSIU0IykhkkkoiYo1dyWx\nkOVATrUpBHGYlRQkyNtUQTVBSqYIkhh7VwFNVM0glSRRDQWhsNSCqiBabHbgd7X5m7KdM9s5kch8\n/HBg2R06S0dJKmw2W+Z5Q8qJqkqthWqD2nVEpdYO5r3+UuvDSowJqztj5pkkyWYytZjSUkWdkXd2\n7fPQlMjqz3QAqLX628S9jzvF430g2voctp8SpbW8FSA3Zts76RFcwMnfp3Ju0EVlhg5t9aHCmknq\nKRDKuae2OdiaSTsOv4kp5Itl40/LU3US37fO++Q9RlAZvmv/D3W5Or+fKa0zr5HOTGZyqg9X94vC\nw/is/vPpev8s9XwOxI/LcP5WgylFxBWLBI+w32Vd968tC0/UfWPffpYrw/jXtYoBV60FrcWB3Ftc\nKkkqSawFEgWRQsLYZ3IwT1SSFJ/6+/tLJjmpVR1+irFuu1+UwV49YWxaREnJWbAqxZmWaiVJIkll\nTpXNVeb2esN2zuweCq/2S6uFlIzxT2lmzjNJAsSrmz7wulczpaizf9RnDPZpddEGsT3BZij9+3aG\nE5+GVmqznKpqyCW9zkPh9Bnauv3O9/hRhpnd8E0frY/3/beYxjZsymfs4dZT/fvTgj89KLoGjssl\njjvoHME8x0xoVRCxc8+bVt5MfpRgfizHpoZ2nONXGNcW0lF9dHt5/FQd2+EYeBqPo9fhD/DOrZDH\nbfP6Rnijen4diMcpj8zW4kcM3GYPj67tZ6bPbFo51xePCyUrDSPtuClQsxlraABrVQfrrICDtlDI\nCQfyQtJiPxsjj7v3vh9NEiYPkdqK0mmSmWqgUrX6kHZAr0JtGGq2+e0sXD/bcHO1YUoJPRQ38wgk\nmJIwTZkpz0BGVSi1mg0+zDUOwVVrm5Frqy6vkxPzrTTTSzDrQIhOMPuMCD9H/Znq7xszhkGNr655\nM7F6PjUPRp0+3t/fEiNvv3Xdc2Qz72wnPdWlx7sePWMN1HFGx5Sn7roeIK3tw6bVC2fTrTcB92EW\nspqQjOV6g/Kc//s1coKDYx2P7zowwoFpc9SR+y3GG4+DPRTmCDbSnhD3O1mnePS14j7jCfXonG7i\nOi1bPHNQPGOxoiZkVGZx2SMDKIDrTL1aVfTnr1dr1mU+N9BluHf/PsrvHNwXGAVtC5oBvCIZyTNZ\nwqYrpCwkUQdrM8FIWkhSfGHU7Os5aTO5SIBK0ra8JNW4t0px2CxucoixHOXz79VmBmGWSLZya4uS\nmG372Tbz/Gbm5tmE1sJhtydnmBJMWZim2ezW4guaxDKy+OJ5n2Orm1rGdrZF2gBcb+ckJBJIQv2c\nWnHb+TATr8XNdW6C8eGeXAmpmqIKXJCUWh10m7w0xbLuQnKCA5w5z95rddaJvFUbudK1X58+eLf3\n+du4uGMXt/8GiWtjlX48Km0sdk0LyGOelwFkfgMdlxqCeY0qKNgnrZFDiRjwD8VeIfZ4r6fAfM28\n7MgjZ54zrfTSOYtimP5zVL+dRY/H2v19MKqc6U4jwxk/g+231UFr31PRo3czu+ZxeRSz46+nnDZo\n+7Fx2svqvaQXtb133OZM35LHvAvCG2etEgU1uzGCmSeOVGbTjQF94xfx3qFYhoL6j4og6nMeUYQC\nWhDUzSYCDpQOV6To/z5TSdm8LJIksphNXBAmEZIcDIZ0QSXAsiBS0YQtZnpd1yPPiyRKczRQhVoh\nVexCofpiZRLaoqHZxTOpmhbWKVN3B+aUudmYp4uxYAEmeycRVBRqoVKayUOjz7R6lNamnaVb/2le\nadq7o9W7gXJj6KIkgZx8MVmFWhe0diXraspH27FX2ZoMjMp57O+PrZ31GTGPfP9WvVbshVRqQ7kA\nnea2Z4fXrImhY6+kI6aGbY8RGBy9xBTEqiDt+s7MAvio3rD0MrYnSiz8jPc4ec3TYg5T8c4qOANu\nRwO5HX7jpUKrz4YwoUDHb+P+aajh89bx01cZwFqGejv6nGuz8zB+5jlnzAgjZNop5+o/2I6uFGu4\nRcZgfSPpKP9GZZZ2rh5ddjwTWN+jM/F0BsjtRjpoYW1uohXK3h6UkrFCNTAXbAEyurCoseuUTdEk\nMZZsNm3z5DATzOJgl62dRbtpUQRV99iodfAFc4+X5H0jJk3qXb6a26GItUIWYU7CnIWchFoKKkJR\nOJRKSgbwS4GlOjroPJADtcXeCkhx0mWLkJ0Br5Vjrb7AWoEsfo0MdY29a3sfm/2kpDabUB0WU6Pv\nx5ixVYbeXq+TJ3Ds5LzHMQbeIiNfG/DHzyh9Cj5i3cn0d3Wf8Gl2H962AGr/i4ppbo3Ge21h2627\nd4quvm6lOV/HXwp5zEe5gfhKYciKmJ6qDXXLQdR3r3caAxo+Z5TR48aGs6U/uf70+/g5UKs4mkJF\nhf04oOf4aY81YNz3NZ1luLw/PrW+fs4ffjwev5+6XD4y4N1jwmyq4Qu9gJovefJ3FRyok/X3RLHv\nY4FTqgEwFU0FpXizZSAboJfaa1lSI12SkjNaf0ej2ihCVdwc0hlq8Cjx54kDvwgsFe4f9tztFw4l\nUzVTmShAbT6JsxF9rdRy8HImRCbQBRWblYQ7os3Qrb1jxhYsW1BSyu6xYmU0E4ux7iSJaZ7aYrDN\naBKq5lVjs8WEJEg1kfR1/fRN5RwunWUATd4OIxf3zm7McmClg3Qy3tk6R4Pg6Mb+/+DWGFQkFifM\nARa8M649Wk7vrePzVuDWB9LjbO2Lkc+1OCpnQDzMG42dxuKYdcQ1r3V2NRShr9angR0FYDMAfNxh\nfb1X3SPvenwkTBRnLpDe4ic3iHaTwZzmgKIiEfO0LtRj7fgaN8IzFzCu4J/3jLFSPfbzWNbHYyzE\nuyUkTb4A5wDlQJ6StzHinh/GLMUXOsXDbpIY+aksSKrN9GH02sA6vECCaqc2I3Dbdfiua3XLkfp5\nZlLJApJ9rAfwoxyWA6/uFw6l8rAo+0VYStjRJyQnkuJ27sneu9LHniRSmu18reCBSxoBRlKasmtT\nk6ZbwrXQGL06+KuDcpbsSg7CJz9JJouSyZASi5MaDZvjGdfYNx/DYS47Ol8fIx8mb8m0YrQ6wDyA\n4LSIAeAQANMd185VTExqu3Egpp990cqPNx/WAYhO7unAJkPpvPH7uB80pXDGPPJ55fOB+OrPEWh1\nDeKspoSD+egcuDTQSe06M5PFCWlg5YFp/XpdP+LR8vpTeKy9Ow0YTGjHxOUsu40CHN/zzdvu0XWK\n1b0CwPuzx+JI1IvI8PtRiXR8hXEWO7L8RE6zHQ/AFJx192uTVLeLmweLsAAHzMcbVwCFLEL2IJ9m\npiE332wbPeGx0otcHcSqob7ds9nsTSeIGlOPGV0CSimUAvuiHKpwKImler8Mn3dJVBWoZo61iZ96\nS0Q/xhh1OWB+8N7/Ggun1ZkRmmpldtu0AXEoKrtvEjMBoSks8FaHCXLt/W6Ml1i31SmIP+W2HP3g\nHO4/BS1vybQylsgWCM7PXI9NK9q06jlP5FWg0TFanFIwv28soqTzldfY6lik6Ah6wjS/SHHz22fq\nCI/fa2CFYdujg7hIcqZEZ1djIcZ7EQVLtIUdD7bo/LeDb5sEjO9wXL7VFa//5qyZYjxtsHe254Vy\nUfv9cRX5ZlrmxFVxoBFjOoj2JFk/s/0V5Vp12VBSceAMyws1J8a8J8kk2RqIuZnFjJiLcxlBmMgp\nkd1oLSyIHtoTUxImSUzJFkkRt0OniOy0stTqYD4omqSYW6GqsdiczddbK+Jh+VpA3U6dJblJKKNi\nLolFoRipRhNItTFmdvVE9SjqZpqVqPFMLC6byaYY+BPRmQHmUeceeq/do8bMrVZ2ah4UEV6P1kBK\nQXSxBWQVi15V86oxr5XT/vLGY1gb6p2299jXj+TtuB+uWPXjQ/ioZ79G4lxdHYqqH59+/MO8DGzw\nCae5PlY3g4Ftjlp40MDju4xK68yrPA4m56Wzi9Mrzx5f2VwDMJxFByAHK/RXk9Hz45hpCHSTSure\nGRLn0+732d/uPFwd3ytquynYsexjO8XBcYYxTqzOPD1YZtdK4sRj6EUrd7v4m1YHrPq3/y5wqjqO\nB/fwjazPcajpVeLvv9KzksnZF3LrweN5lqYM3Hzdr1HF2HhtzHOSxJzEfLgBSQpSHbCquSJiYFuq\n+OKlPd5s0h5i7wE2pUZOFodDsXv3i8wfvKiaySJbsUq8tNjzw5XV4y5B3fSTzIaPZl+Mrc4xfJGy\nJkMF9y1v0Z5S3f882ik5iMeMps/SbcxZ9Rd3pLjaKHlRUik8VIDslbuOzDxu81MAb6DCcXDR2ruP\n9vs5eUtAPg7K1w14OfP749es60lPdMFJNag6AMQqtNJZlV0RvKo/s4crny2HxKOPgo+OMXa4y5tG\niY6/vxbMGx4HGAwLk2KLUOtT9cS8NwJ5Y9thUonB2d7muH16Ha7K2M45PnZ6fK2E+rl9ltRBvCvb\n8R6hsUdmG+sBfWLc20iG9h7KJBXxaL5+jq56ylN94in+fxqEJCe/i5fN/rByJxkW7EUxn+hMTqF4\nrMxmZql+jeceGQJ+khh9mZOY77Yok7vciS9MGnZW+ygN8Cp9EbGqIsVAODWCkFCpluitCpqi71h9\nGSjb/UUyWYCsnUWHCVSapzvhIxKpBoRsVntdzNYttdVR5AhQt39b/pUxctNHhIO3/bSZZkV8XaBV\nO0u1dYDnV4IWuN/D3UOliM8IKCtXxrYuc3Z8Hyn7MyAdpqzuL/clAvLKucUxOC7k+QWCxwbEUXRV\nTKk1wnetc6wHVAC9dxjBrSXSHzNMzUXDXtifE1o+2Fv832yew1utGnNs7PNUrGvkI9A+Tg4Vv587\nDtaRmwmFtGJHY92LL5SZ2WG0mXfvCFskTgOtW1dnqwPpL3mWhZxh7Ge7qPQynB4/U2fjeeME7Ywu\nHcE8lEFj9S0xTBS395XmlyzuBeXvKq2vrJWaaA9eegy0H4subW64GMDggDwCuTcx1YG1uqlFNNty\ntigpFb+X51FR940mk1SZE2wSZClMUsmSyDmRJezslUoxb5EKOWXzJGk+9kpVYS9CqZ770Wm1ZUgU\njwZKwOT9dbEozJgxuGqsavb8SILVMwsmH8tBJjLmrWIeO6XuUd07KStEtsbwNqv+iTGbwpvJixZg\nLmJqrlRlqe7hgzKhLGqZF999lrgicbcTPjlUdvjycfEsigHiMVt8hKe1IKPW5OOJnZ3Xlp3xSwTk\nx0EO4Yz4Jiu7bVifMC+TPnUOAHJ0bkP8DPjI+kBUWA8mGIEtLurleT2Xfr08dZ+nGNvT5zxSnzr8\nMr6/4iAdJRoVk6AjiJ9lnsfHZPXjB5PPdvGx0njd1R65MMwSvb1F2hKI4bOn44M26sw9b1TXb94T\nnnY5XB/voB3f1PX3IwhohSoOTpMRdU+pa6YVdW9ndVPKRKpKTsqU1ELhs5k/JvdwSa7cKmbDrkLL\n+icJ94wRqiY2WdgviX2BBagiSE0En7Zw/sVBtqB1AcxMonhQkxMxceVgpD28XXwmIUrG3AVLrZSy\nNyCvB5rXin/qmB436jamG+DIXpGUSVmYkrCZhWnCshwKZJSstc1EMoWrDHkjvH9d+Wi349WSWLQS\nQUHdNHK+3WONLkiPuoJliBS1vkhTvGOw0yhvyWsl0ut048PotfLmrjrtivYzWPXIJkfzwCkUD3fT\nYFV9OoMOV4UNa9Uy/WafC68ekR/E9XAFEo+epX12oaNnytFHgrmn89+vn/wGv/9o5TGb4gjA2nqf\nM/EG1PZ9m2k0//NOodY1PUTADEeP3/8x9n18Tnxn3ifmKXEcAS0y3MNt1BbxEyBvrFwkkVMlizFM\nUSVLNTCfYM6FnApzFiYPj8/ZgV/62yWMaatWcLZuwUWZWjOLmOKrWqkeVSoKSc0s05SNWhR2myWL\nENGp4uROxrFHtWhKjZEpqCZKWTyfubFxUw69jiL6tNm5h7qVZOWfEKacyZOlxd1mmCdhzpDFlRk9\nOjaU0iSwmYUPby02paiyL/KoPj8lW/FbGE6UcJ/EE4oFvuRYRH1kKL0dRj6WZjWl6J339QB2Zroe\nw0ZAtedi68aR42nL+KdpQANz77K6cmQEwltmZH6yGkhvW875Kp/IieKx96wtl7Iw+oG3YAk5+u7E\nv/oR8D7Tt+Xk2i9GTsw4cvKy45fta/X/wmZqg13bFy2CV9ykQpw39INVjOOqUE+W+RwjH8eBeaW4\niSMy9MWGEe0coFS0LNQpk9yElnImp5kpCTntDciplm+FA1kKV9NETjumXNlMI5Br86EWoEolq1IT\nDpZuf0/ZVaHY4qVUJqmUVFmCJGhFdIFazNS0YsjZ1h98vCX3RW9jS8QZvOU1KWpMXTWxLKUBORKM\ndjRFagPxYwU6pcR2SlxNiXnO5DwxpcyVVA8CKl3Bi7gvu9mN7G0L25z45vMNChwUXt6HVR9KqauN\nL863fXSxugLxqFsbwha41AH/VN6SaSVAQodPX3h7CsR7foRj0Ei9MxHkOfKgSD8tRuzxfWNxpFVW\nWPKL/56sslfl0LPj9ouU4wXO+Pk688pTphXrIOvvu7/veDxAu/9swTRnGTnrdpF1Lpl2+PyrfiFy\n4ublD9TjEjRPE+lAGwwcZ3D4uoECZA9QcbCW6n2jxzm8aV942o94PfBbu3i/teYRku+kJMNrxEK9\nFuunmifwXOFIIfbcySLugjgzpYntbPlWplTZTBgTTUrO1RNqWTnMKFPNBj5ElQoJ1YwyM2Vxa/pC\nKb4zUIWFxRJ1DeQovFuqR0uKWI4aVShFKRqzYvP3jt1+alWWGmYXN7OkYSFzsCWPZlIRafnqRYTt\nlHm2ydxszJRkCXZLq09xU2Ik05qTmRdbcyRLRnYlylaU2etVawRH9W51HtM6E+9t6Ne09apIjdBd\nKM/JWzKtDG8YGs8PvJEpwT1NztyRsHjaH8GigjHHuH1sIA2w465M/e5RzoHHttt03n/ubo8/S1Z/\nnT1rUDyPlfvJlK3Sf+ngLv0r6TW3tn2PIB5sPMC8E91HHkaPDXhT2H6qTY7r9xSsH3vKacusCYAB\nfVCA2sFQi22BFgpdrppN3HqZb+XWfLAtnP20JBqs4vzbDe07MuyTewQxjH/DzKC/VWr3APPqMEZY\nPRHW3kwJkj23d2J2M4L5jgvzlJizGpjnZIxcMLDGFzGr+tZt1i+0JvtItpmD2sRBam1ppAKQxvKK\nJDO+aKIMhEvV/cmdAStYfhP3ja9V0dISH3jdRX1GZGb/O/rhyk6uppLnJGxzQrDF0QoG6iosVVmq\nsBQ3AW09A2PMjBzskyizwCSCMNmMQoZx+eQY6CCubfZi79X7hjJYi87KWwrRH1lb+sFY7WNT6JNh\n6wAk3iHUk3QdL4o1lunTptjmybW31ekaCMennBTvTGlOoWhdhr4w6wzoM9RLZwC9jA24ZQRxY5Tx\nugPO9zKMIB72cUnDd4wR6EMZ4us1qz9+jade61x873kluVZIevQNQMvGMLTt6QMDmBXh4NzCTBTl\ncIdqIaeJaZoQ5nWRdKGWO6uttCXJVX+DE0331GA+6ldmB+hHxktHLwcnQmFLTimRsAXOlCdydmCV\nA0l2JA7Gxj1J1ZRhzsZmc6qeMjaxmZR5ginXNgOI0lQV34dTHWxtb6GKs+okUIubIBaPi4rEW8nq\npa7NJiCWHtdNINU9zcy+DbUuvmBZqBJ2dW/f4LTagXqcuao29tYUZPNmKYIWgWr25yyKpEpOiYel\ncLevPBxgvxSSwDxfscnS2kScAGhVEpkcKQWkezCNyqk14VnilWjzV6GZlnAT3+uw4K0Cebj5Nd16\nxhwwvu+aAa/OijMGcApGGNd6hVjVn8K9DmXCyySrM3q4P8Iq0CQ06BnIGlnDeCQ6Vut0w/XHLoSr\n846uO62ncQEstcEibhZopoH2fs646blWuhJwAB8DiOJdzlHypofWwLRaEzmuh+HitvB9BvPGNYn1\n7dbtHKi+AvNH7gl47h21hbTy0tpFbSebutwZWOcJzZu+j6Vm0ILWHfXwytooK0wzSJj4hr7S+vt6\nQJ8o3qFqYOnxAAAgAElEQVR27HsZ7KT9JVpODz8k4o6lYqH1CbEFSEnAgtYdyj2SFr9RIcnkC5mW\ng3zKC/OkbOfEdoJ5UqYsiN/H3iQZCFZlKYWlVA7F3B1rSrbGslgSrjDfpJSQOmFEysyUY2PY4qya\nCUO9ncNH0Hul7UxkppSkqdWtxmkxoo/c85pLbuDM0IfUUwVkgWepcpOtHjQJh6rcLYWX9wsPxQjV\nZs6+6A8S/vmK40YEHQk2K6utLOGa2ss0AvnRyGi2mNS7uSuFtrCdlHPy1kwrvROPLOwciMtw1Skw\n2nkjuMj6eDuUnOi4ff1oZK+rNNB/uN1qFLZ5bju20rjnX5phZeNxZHmNvM70NIJD/N4A2BMgaUtx\nQAPpHiYeHXPIiBigfrIucR7Mm6yY8Gd930E5v2bKNlZpW0TVkzPO3D0i9hStC8vhDrR61sAMejAW\nWCtaHygsVC2ktLE6LQu17IwNi4F7N6/0ntrAmHWzt8EcVTx0y/F8IaIyfX7ZTIZd/YZbXJJMJtlG\nDMk2OKYeUHZAccP0gSQTObktPClzVraz+Ac2kzDPQpomJCXCw4RqmQUPRTgsprIW9ZB9UbSGH7r7\nsnt2wVQtarJIfyfBQLuBsUprj7HNZNTMKh7jE4vRulZq0bIj4TkzZhTzCdda2YjyzlTYZgPeT/eQ\nqrKokZ+UsJQF/sxW/ma2aRolWvxs3zvPqo/KFtkqW5kt3YAd60z/WN6a18rac0W65jw6LySSrq9f\n8s2e5o+gg/ka8PuzPsN9o/GaxtWzeDMG9bS/dVRew/scUcfXmtfeUEamHb2w7bAYHil0UO/BF6PL\nYStVL+tJJzwCXdH1NeOpZ15s/SSJGbGff/xOHJ/t9SpH5+jqrzg35mUWAW6JlpblAXRhkgTTdcPj\nqkopO+pyz1J2zPM1WWZQQauZ6sw1zvbAVLWF8eZx8kgbju3bZlEBEiKr68MFUcTT0wbo4YxNxN3p\njJVnMfdCrZYXRHUBiQVH8zSZkoXjzwm2k7CdE5sNXG0c0DcT8zwh2cwpWoVaKmUR5iLsk4BWKJWC\nKY0qiy+cCqkmtyEnJrHZz+g+aWO++ozIvFBUY/efox2gOv1ufSPqLUazJfjqvuO1VlMmEgx8Dar7\nohzKglblOhduZ+sPi8IsG+ZpwyQTWZTtVLEtLsznPSJk8Zwwx33sKXkKv2SY/fazbCZTtUApZ697\ni14rvTECXE9fMAbzaN96s8oa7kCL4BPLTfx0uOybyBk73BGLOLn7aA4ZyOzqnVcgflqez14HwXtG\nVu7sGvoCZmOGA+DTv2ug2dYzHqunsQ5OleWblXddJ32Goevzml/78dVvWjc+K5HO8LI/JoCz+LQ5\nMYFms+2WguTiod+YiQUMKPWAaALJrRgWYdiDQ5qZRXo5fCrhL3CsyKMHa7RIY/lp1WeNpYubdhKF\nzILqAfM3mS24XRebdaiSqUzJvFQ2k5lUtjNcbRI3V5mbrbi1yMN0KiwL7PeVZXEFpYIcbCOIpVaq\nLJ4OwMqd3FRFXZC6uH3c3juFMm19Zfx5vh3HISSu6Y/rFv8upeR5VUbyMd6r8PEe/vorQaaZn8zK\nu7lys03clsxtlbYWNCWIbSMiz7tSPdPjMduWgSwOs3fWY/ccoPerHLV8gbeUxUxTUk+ugbdqWjk3\nWI/OepKOHg3s1c/1cYdxYqGv+wcPd1sBZ+cNvZP1565SAbSynGfkx++jA8U8B0Nx3hvf5wnRseiN\n/g2RmWIDtLkdRju0EGj6uStFIGfftbmGDkc+G5jHvWW47JRR93OPr/SFThkt8OtBLEMb4wvEBoqY\nWUb9ZwynaOta/LOYr3bzfjCGpHqg1AcUSMk2CG5vEA1xZv9ZZexjYRMfler4Fuq4H6pZGqpHG1rR\nK0kKiQPIgUQlp3A5NLaegElgm4SrGa43wvVW2GwTN1cTt9eZ2+vMNGcP+EmUKhyWwm4H+z1N8SGC\nLEApLIcFqIgaC8+iJK0k9dlAvIPXa19C197nQreNHAdZkSVTnsP3Ip606yiCM/TtmfGiWrlfhPJg\nawIJQa8nS+qbE/PUk+H6hnOkIWtmtIGZeaLMo/k3lEjHhhi7r3Ox7it5BVXzlUeUlM9f9/a2emNc\nhLAjT0W59WmkcHraU2DRwbyP6eMBNWhMhg5yDiy1/9I7x9Ogerx4+VlMK1aMc7lWzhfvXGF7znef\nZroHSuQTX/neN0BJjXwf5w5h9Xd/lh1JnLhtngn+6a+zBivRcTALj3kjnRmW4LvdqA+g1eLtyXP8\nmtbgNq3WGmkdQGtESnoObbXc3XU5IKl6342twxaW5Y6UK5ktOW2J5VsbkB5g1gJ6RtY21mw3qTRQ\nb5RPBnww90fx3CXN91zAfMYPJPYk2ZPSYl4pIg7oNvuYxELqrzeJmyvh+jqx2Uw8u5l5fpN5fp2Y\nNxPTlEkpU6qwWwr3D5mHuz0Zc70k2R6eRSuO6EBmEmEWOGAe2kYbaAEz9s6hTPvcublhJqzvKC2d\nrY07aF4qdI+OMRx/9MUfZ8+970kz49wvyi9/Uih1wwMbZqncV/AIoFbWrnT8X+M1FrAlnlpSXjMw\nnyRqLdNmmJ0KqJl/Uk4tfuBY3gqQ7/cvzXaWrIOIZMZNCvq4D7PFAMdq4bArIPGGiY7P2LgrwOjA\nYtPdY4DXFrAQmCrR7ZpJobNviYQ/jSjoKQl1QBFvAAOZ2AM8nksHLuhMK/5K6w4ZSv64P4hGB4t3\nNTu3vat5oNg+jsMCpwx1LnEs2uC4wx0rmXU50WDE3WtDVj/b23aA9nptxgPpTwovgfN6MoxFguXe\nPgB74MHNdBOablAsqVILsMAy7hlQJOtJkfdD3asCqNUWOrUWkELR5OxbbRedWLMJwFVFlz2lKJoL\naRYkT5aHZLV2MLjedUjoADbaxVFEC7EdWtjIFWWpC8tyT0qJ7ebGF+OAanVQeaDwgLBHUrHw/KRM\nqTInWjKsFG6Ic2K7SVxthWdXidubmdvnme31NfN2S54mlprY7wrblw+85A7KA6XuWbSyL5XEwXqc\nKFkKhdTzuyTLjVIFUtHGnqOtmw6K69Xnz/Flg/lEiYmfxglDf5DU+1pgh9+rLVa4AiCUh1qQ03fv\nFl4dYJNhs5mZNkYkxJPIWdkaD7dxLG7OkkzCImpLG+OCRWpGnz03K1grnQ4mo8+9tXkphS9VZOd+\nf2cvnjI5ZSRNpDSR0sZCUdsC3Oi+0weuKenxhYJvjazxeHo9sshw6RkOraYz4xUdSeKu0qGgXfs4\n4OAAGSkDamuiFeaLuNONtEt6144yD77lxyBOB/JW+k4ZBi7RrHwrxupDqM0YHpc+k+KoDXolrAvX\n4zvjmhiJUTfNotpbrWH6eTC3p4UyrlAfSPUVW7lHqVSZWTRR5RqkJ21qCDAAKbIQW55pRHXqvp27\nNqVFLzDvp8YeiR7rJpggAKGYBm+DPmg7jKfWh12l+UK69QknObG5pbvw1boYWNUMwdB1B9yj7FAO\nkCqiFpgziWc5zMLGc6rkrOScmKfEdp643kxcX83cPNvy7L1rtu+8y/zsHWRzTV2U7f2OzUefkvgI\nrRY0sy8HplTIop4KwDcrtq0/V/lKshpfH/tEEjte8bmyYHb5SnNJjCRfmgKf1QjzmN5GrHfXIBTe\n22E9KdTh//hRER4WZVcK20m4zXAbgB2gv1rbiz2Sep82s1Ebrf4z5iDnB9XahBQkcRgD7YRYxP0S\nAfmymMuWSGLxPfBSnpkmZZq3lglNgi2ywgZjarC2xbbRYqfrOODie//o2DjDtT7IT1hufK8RRKON\nQsci6trOsfa+adXebrzOx9FxuYNvgPhYlNjF5DH3o2Y8kADFAbzbtHsNiqE4tKVMWLPiozcYHzbo\nMD066xEtoPHA8XN8U6/VUD5HbTGeGQMegaQLk96x0U+4zTuqVh7qhru6QfOE5snzcoc3RBnv4jvk\nHAgTi3qqVo0MfzJWWuKkkxAs2mdfiT7VHpTeSbsOSkwQZ46uPIRBsY9Ro0IodcuZsqDLHVoFSxuw\nB90hYuYf31en+YtvcjIPlUnYTJD9M02JzTxxs91wc73h+vk1Nx98wPy1nyC98wFsniPLwvzqU+bt\nr4PaFm27/YGHXTGWnyz51JyFQ64s1fKm5CQG1GqZEyPysYfrW0KwVOx4kkRSqwmKUrQ2dj5F7SXz\nGFIZgtyjiby9ooWDNiTpDLjN2MG8jAIVVCl0wJY6jOfGnKOfBJRHuxQ8wzqrQTSaTsd+P3ar8Oip\nHV/W7r/hK89ZeTteKx61ZFGWlpeh+iKS1oV5c02erkA8IizRWFEVaIEuZ8TAdmCx9sQ2he+Md9SR\n0RiPJD1qoO1lb6aLwLHHwGl86RjCY8OPX3ewDfub3T/KG0V5/FlhDlGk5xoX3A0DEPWgJj/ZbeVW\nNRFAMiihwbYYdsxelqjhYBHBGliXdwAfc09ycGyLgfF9d3WMNlupsuNfmwIpSHnJi3zHh1d7PryG\nfU18f1/5Gw+vuGdD1QlJ2S8JbwsLr9d6QMs99XBPZSEUca1jqtiTqu7ftZJafaeUSGki5+7xswoA\nkX7t8Xwm5krGMSQSZDfw0GpBNaIG1pMeSHogl50x1lSN/UphTsqcE5spsZlgM2kD7+0EV1u42voC\n5yTmtbLJ3N5OvPPeNbcffo3tN/5W9N2fptx8g5JvyOWevP0em3nDjRYOhx13n77kfoJtFvZT5pCF\nlI2B5wxTtfzk5msOxfOimKQWlWoZE4VaLDS/mfeSEpkTkhO0ybtcNT3YdikKCE0+uw3FmQayMebt\nZ/i79cRQJCJ9dkAMJW2/I739bRQsxFqIxNJocMWRZY+inW6Z3d/t+42CYflcwkHhCdv7W8y1ov5+\nPtGSyPpllbtRRaYrJM1I8kQ1Gpr2MRDvdqVjxjiOxm6LDjgagOa4mMMEanzOCoyfwO+4zfB0Ikve\n+rLUQHyFHMM03H5EOR97qDPsk0+2zxB6r+1cL+FR3H1fKzh61ur56sCjR2z+GIjjmqCax7XTlZi9\n9tjGujrb3xL0QNYdN7zk/fmBb14vvL9VDmoBHK8OD2i940EnRK6pEl46CdUDtewph1doeUDrviv9\nVvVy8vx1uf3/YVBLu04euTJsql1pxTUiodBD2aopHDlgMFUQPSAsJBaymEkjPtlTzibB8or7lm3Z\n2XKE5U+T5dveboTtJpn/+Jy42iSunyWu37tl+7WfIL34bZSb34xuPiCxQdIdyC2ShPlhx9WrV9x8\n/yPu7x942AkPh8ic6FvFSU+DOwnUpOQ6ALCAVkuOVXwXn0o3p6ha+HubtYqQfA0no5QAew9hD+Ad\nDR6tBXQkInLi3TJ2tcZTdOyd3cPJPoEcAfZuIdAyjFld/VgNruGBLR8M3aQWD0o+Ptd29FN5S4zc\n7Eax4iyuklQLS32g1gJamVTJG0iywQBqYKjnbqy9Efts+BicA0zW94kMY2cK229OcHwllswUWeH/\n41W9BifVI3U0pIoVcE8T/P5rVtjti+Ocwn0CmkkqwvNjgdOm5xqzHB16ZbMkyml1tbINz9KYrB6f\n6/dqnS6AWdeflYvWqKhO2e+54C2r8ELSB7b6Ke/mV3yw3fO1q8o1B2oSdJP4eFPZ7+851BllA8yu\nnDxqsyyU/R1ad5jLXi/PCOKn4z1Al5Xy6cXs025l3e6yGpRhY+/HQjGg7uqoBY1FS4qBuHT/7zlV\nB/HI5W1RpmbagfBPj8VuEWPKOTsLn42JX20S26vE1XVi8+IF03t/E3rzW9Hpp0i8Syahcg/TFk2K\nvPMp84vvc/PODfcvX3F/v+Nur74ZgymN5JGnaVAwOVkEZ5h6l1pZqifJYljJqH2PTa+4Vn/Js5pm\nsWjSqN7UWLajiw5mF07d/s5lFg3fdBo7Zo0L0hXtyMzjHlorZF9v01iRHcew9GesxrB2njP2keHv\ndb9cy1sLCDIgM9PKqPUUi7I7qFpe41TZZECmlkb0FG+114kcAeRYUSswGjU0REOf3jk6UoD9KpQL\nxZhFi+d47buPZw2dKu7T5hWu4cKzZLjMJibRSUJ8SjewcG2gamCuZCzdaDx6zYYDise356jjNxDX\nvpgXQGSMfPCKaQAXC4xHbdHSAqzr4o2mOFRyfeBaX/LhdeHdrW1VJphr3TXw/nXiZV14uXvgoDcg\nE8hE0gRSQBKFOnjodIV1POhPB9KohNaiGNO0NIBr0B5fYhWp6QChFLTuqWUHdU9iQeSAUEiibLIB\n+JT6Tj+hbKzXWFuqxjeWSnapQipCyQ6ianU15cTVduLmeubZzZar6+dMV1+Dq2+i0zfI6R2Qa7e0\nT3Zh2iHzrzI9e8H1i+fcfPKSu7sHNvuF/BBeKm73TgHgkKv2hU4V222IRAGKiCfgkkZIIQiKj0Nn\nrn2orxczA8irKnXxRevkboaqbcyfA8VVbEYMee/+nSCviUZDFLWAy2WpHA6FJImcrY+uLSKpPd+u\nq20d5rj/xOui6ptEPz0m3s7my9qahhgMOn4nlaoHLEOoTTem+ZqUtn56mCEGxeYWstHzg3b/oWXi\nqMRTO6M+DrQ55v7RANrichsnd7YUL0G0/HB9637EoO729VNIkJEdN8Qcz0qr843BT5gJZQD1GNjH\nO/zocN/2GB1yrzj7q4WIXhTB2WzMTGh4HMxy9YyjmlzXqbb6Cdt1bxNg6OARPBIzA9EFKfdc6x3v\nTw98MBeeJd/0wGtmTsq7s/LJtPDysOOjeg9pRphMVTYmFf3odJbTnv+ohh7Y4sjGsbWIsQskf4/k\n54//aEw0fIf3JL0nsSdHbkG3LU8STHd41gBQtpOQgWir6+bC69eppaK1GCdrizwlNpsNm+tb8vX7\nsPkA8guQK+tLCIkNKs+Ar8H26+SbX+HqnS1X15bTfE4w58o8VeZcOWSYslKqZTHMWZgsONZrOuzg\nRljCwhA5wRzHfCOJwQShpy0lKLYsIRbunxPUyC5+BNDgPt/QsybSKNRaVwv9m3XPtqRZncGZaaii\nnvM8rrf+FSoqOWadhIMOdx6KGyyftRI6lrcE5Gs2OfK0cUpb6wHdV6gVqZBmi5rTbJFzMUWJBldq\nA6ewXQVoNLt2GwTn5aSiwm48tqC7e4W7UWp+7R15GyttuNlZ6LjwtTbLKAEscWSoGf/RwdkL7Aw7\nGcg2W7ibUyT82OM+SuSWXr+nup+t2D6LWpG6R+oDuuzdWpNIskXZoExtwEFngkH3u3rWKCahwFbv\ntHrPqMboH7GBiEUH2k2sXLm85J3pjq9vDrw3KVe2WhZZU8kCt1Pl/Vl5dYBP9y+hbtE0ucof+p8z\nnj4R72y8edCsFn5HciC+gBwrCl6X0t85VGhYOmImMuJ/89BRJWlhkgOZgy2bSTBbQXwG2wZ5K4ct\n0OUcQC6dDYu4a6Apg+SRoeGdA8UWJzcT0801sn0Xmd4DuUZkaq0pmhC2qLyDzu+Rrp4zXWem2ezx\nCXF/9cKU1X3V/XnJJig5NEyY14YKCKXkmd6bcitazT//DDFtplnvY7YVp2D4oGixTSlEw1+7562x\nsaFtI4hag2D09hMH+zgczNEdHf3B7n0jmBeNFkqFKefWV1qMqPr9HnFJXM34QmE1s88ZfHJ5S4ud\nT08TgM5ItVD2O/ZV0XJg3l4jYougtdrCVeSYaPceAaZ5SfQdiN68SD6CnDnYYLPRkYKVJtwLRxuJ\njKErzS96PWhXvw2zgPMclsZ6g732thaQibWPcWpAHsd70iZ3wTvJ/hgdxQN5qpJkQcsr9ruPkLKz\nXpwzeXqG5OdIeoakyfNQR2df24v7hOTc8vR4JGL9fLFHS/8IhAmuUkAPzNzxjrzkg83Ch88y27xr\n+VKSCuGLI1J4d5vY14WPDi95pTP7ChKD3Mshw16cbaFMtbXNMRNa7/7ird1IQ3xS6wm5hnnLFbpa\nuHXVCaG6l0XMMtNwh0igoN4HXOHoGAEw2NcdoHIsNg4LnPOkbGb/bGC7NZv49iqxmYV5hrwB2eIJ\nw24RspmhnADFuKoAWtByQJcDtdqWbotmKhnF9sk01q+UoixFKSXZrj+eHKvt4dnYbqSDNbKnVdvH\nOVObxXYGHX1XmwJN4mZKscVCM0tJS6AVIG4grRR3KU5idxw52xHt9/7YwVabMWhYPC3FEoxpYsqW\nPdI872obKxLK4mRc9P5n62Xxt1/75cq18oaiMawKZdmB+wBnKnm6IqWNg+cIYqM3yNGimoN9m6qv\nH3a+CEgLcR/5NhLfep5lGZlaa3G6Q//4+SzSr4t3UYIxxKKm5cE2htNBZP3ckfofeZSMx9WBsx5I\ndUfmgXlTKXWx3NOqiGZknt3/Q6gtKpdOmUYz1uoRx2sRTnXU6jJphCX7tlsKwdGqFHLdsamv+HB7\n4GvbwrNc3J0t7I5jrSk3ufLeBj7YwrK/Z18nJN34kx1ItA2fVTmfkqZQT/WhKbTmH+7l15gR+kWx\n1uA+1YnTRc/Rg6elT/WuFx6l2cEqDe7tYUJJDIw8CTkr06QG6lu4ukrcXE/c3m54drvh+vaKfPsO\nsn0P0ju9Tb0sFi5VqLqH5RVl94rl7oH7h4X7XeFhrzwcYLcI+yIsCywlUdwzZalwWGCpbm6pfXu2\nqmHHTo0BR5/oniEGvrXS2PvQ8gNpStiuSK7Msp1rGxh3EEfMxNQnkl0pj66FZ8dsU9we6eRtHAxa\n1FJqFRH3Is2Ee2FoxO6H7jU8kIGw//fyWp95rFt+uYEcfy0BdKEslglsdle2NEdHD0aqbTD3aXLs\ntJGIREYqanmaT+QUzHtVj9GRMZ0OzwS3iSUPRTt9A0Y/6bPv+SRuDAw/KqSZTLoppT+vl3dkD+sy\nxU/tPz1YKklFlh2ZHZup8mybORwKr8rC/vBAZWNuoaIgG1LY5vFZipwfAk+Doy+g6tKAXDxDB1HH\npTDrPc/TPd+4rry/rWxSscGt3Y/GgMBmHxtRbif48Drxad3zan+HyrbZKW06jE/t7Vmvc/WC3l7B\nnNoLD3Xelul0MXbtfTAm572/paF3OYiESS8qMUHko45d7Q2oDaR7nuxxGq7NZh5uiFPyHeLdBfFq\na+H4z243XN1ek2/ehc0LtCm7YL3hE7+gegfLJ9Tdp+xf7bm/O/BqV7jfO5jvld1e2S/CUmyhdanK\noailjq220BkeX+GdYiYOXLe76WIImArwjKR3ESCjOAtXM9+MVZtSspGhETUa2q4TotamUferkS7t\nu7OdYPWFtn5UfXZZtIAK2TdPtrLHe0cQYmrdR0IRhWoXNwURzhDn5UsN5EliyhK2b/No2T+8opYK\nFeaNTfFtZp+tDYfoyxU7bZGiFgzcpS8CrcFcIbZcQkFzKNOB+U5e4Q5AEvkQRtZ8ysZPgeLcjKBr\n57CNi7iZJ0wozTsl01bDhQbizdWw+blGMY57hb1YAICWezZy4Pk28WwzcUiQCnxSld3hjlIW6nxF\nzltS3pLyxsqYJlQ2mKvjAEZwxMTji85MVyYVigN7mMQUWe55MT3wravKh1eVZ5N5bYS3Q1WhVFsQ\ntP0gC0Jlm5SvXyU+3i+8PDzw6XIHaTJ7s7MvFWl9Io6NG/WeSnuptgiXRBCP6BSpbXsy1Qduc+E2\nCZNM7HXLTrfUNFG9rmIhV90kEV4awTpxPpz80aJq+beJBdJercHcu23dAd0ZakowZfH0tZhpZZOZ\n5pk0XZn7piyo51YXIGkGURIHhE9g+Yhl9ymHO4vs3O0r+6Wy29nnYV95WIR9FfYqHIraZhQFlvBO\nkQ5sEmshAWwCpXaXxGDgq34kyXJ0R53UyqKKluL+6GaZzilm4rVfO6ytjd1xnO2IMEwspdVrjJu4\nPtb8pJUxwL+a3V08staw3Hzni80IVSspxY19PIRyk4qkbj56Sr7UQA4M01UAaUyqsGPv07BpA7K5\n7qAGzf5lIo1ZNy46Dk49+aX9nRonCZs3HZM1eerTTLOsKWh0rsYgxMt+jh23wp59fYmIS7eBN5bd\nXApHRZFahxgmbP78vjizDtw5KpFW0AXRA/NUuNkom7QwTYpcJXZlYTnsWJYd6D2aZiRtSHlG8haZ\nrkjpBtIGmGDIZjgavU4DfgzMwzu/UTUxc1rSPTdyzwebPT9xXbjJZmc+qLmtFTVGVmpCk62b2Ka4\nlmPk3brwzY2wK4XD3Uv2eu1zNfcw0T5K29T6EVY+LlaLagdwwsShiFSKb1ghuuO9q4Vv3cLNJHx8\n2PG9wxWf1Gfs2VKZvV/VbvYLdi824MeeE0BjSbVoyjl+NaAPwqhNsWvFN3AQC+lHXH8Wlv2ew+4V\ncvfrsP02Mr2PTFdeJxsP2DtAfUVavsfy8F2W+0/YPSwsSwTkgPi9LZqzsq/CoSYWTe4rHoo3urwX\n3s0dkxgAFsS8VdrbdyAYg6+SM92Uou9GZ7YaC5dZU4BDFCXaXBJHMF9TjYGRSztlRckiF1RKmSkL\nWQpZhKs5cb3J7EphKQdKUSI5oCaoxRU12pa3mn5y3LGms/Zryboe6ZNfaiA/ZnA6HK9lodZ7wrgx\n5eTpKGbWewz2ThA20VMNF+p4BFSv5JYkP2HOTN0bJbxYYwpEMm0r47MGO3XztW5Aqr3nSO9FYzDN\naNPTIUNk81IZd25vC75RW/GcaPxhpf3o7Vud14LUHVkWNrmyzTDpAllI28T9AvtS2C+WcVB5AMmU\nPFkkbr1hypWUr5F8BTJhcXhtSej4ibQAJ9UzLePuePUVLzY7Ptha9GaSyq7AfUkcigN5tX0d55TY\nVJtWb7NynSq3FD7cZnZa+Gj3wMc1s2hCIrdJa4YRNM6LtCbsoB8+4fa37RRks4o9GxY+vFr4LS8q\nt9vK9x72bO8Kh7uZqpZwtqUuCJCWDsYBFiOYC/SMjprWVUpvepGoQ2n251oStSZqEUqB3W5hd79n\n8/Il6fpXyZv/lzQ/R9ILS1LlJkvRT+HwHbj/NuXld9i//JjdvYGUgU0P/BGJWFTbUq1oNgB3hVs1\n3NmHLy8AACAASURBVAr72o+lGXDy1N14BhrcE86JK6FR6Zr5OcwlNpZHH+xEALtjSLg1xvgk2jCt\nTCwdxaOkJz2CnIU5CxMLmwzP5sTz62wzk0Nhdzjgk49WV2E5iPoa7AfIUZ9MPts2xXUqbwXIU0qP\nfreKtmq/yXDMvQlQtB447CtaF2o9MG9vyfM1ksw9ziA4AML3L1xx1dDOGFj6Ua3V/EGlNs1oi2/V\nbNIpgTqAynh99t4imH03vA7szn3flHVXUAIUAmTDVyHcBINVBQgaiKtHaraFMj2CoOjQvpsJPkD6\n0Dmqe6mgOyiv2KQDG/F0ojFgknCzzdwflPtD94NXCroopRY47KnpgXl+xjw/I0/PQMztT1PYRkHV\nF4Gi3Ir38gQUt7+7OaHs2JZXfONKef9Kybmy08z39vBrd8KrxWywYF4rs+9BKQLX28x720zemlJ6\nX5X3r+DhYeFhEbIWii5e1xbwIrDKa23Ne4YJuStrMGTrKsWZYTbbuCy82Fa+eQvfegGbTeHZFqZU\n+Gi347AsFCzntPjGyZMI2WcU1RfOwkolA22MBE22fVuYdOynLfLh+3iaSYVk/aZqZimZ3QKvdjDf\nVeZNYbM5sN2+ZLr5VdL1O+j8HJU9Vd4BLaTl28jDL6Af/1/Uj/4/Dh9/n/u7Ow6HA6UuqCxIqqRc\nbVG1CvsKFF/YdIatmmz7PLSZTqzeC7ELjxTbKi57/y0B4qKIW+IkgDumIi3FROtQBuYVN52Jr0lq\nX0chADIhKbX1hJSlAXfXJYOJyhepa/vSSIFtgm2Eqy7KlQjbOVMzvCrKTgsluZuoCLVIH1+CmwXt\njyVyu3nLW5t+iYD8TeV48BzvIB87bi+L8/JamcvCtLGpvQxsVdp8s91sBeCWr6HNbWiA2QJTbACF\nC1jfsqpfot7pYuGx7y8SQzBmCr2TjEYQXZ3noNZX1VontWsqpDMulSsk95V0BdtsoNKCe6K87QPi\n7n2p3nO9VbbZp+/SV9GvNxPPrmy/w1e7Qg2KgUK14aalWvj78kDOL0nTlX3yliwbVLJTkK5cwkMi\nxUwnBlrdc5MOfLhVvnGtvLOxwI9UhEmUq6SQ1fQqgtZMpKutCPuD8korL4F3tvDOBr51U7hfDtzv\nE/f0+MgWaRcErLHscxyMPsX3fSlrNZ9nA609QuX5VPipF8I3n8PzK0WybbG2Oyy8Nx94We+5LzEM\nZ1C7VzCznLTbu70NTHHY3pzhN51iB6DUFeTYq1Dbd7PUylKVpRQOS2K/ZB72Ynbuhx3lYaK8/HWY\nbU9S2X6fPL0ACvrwbconv0j9/i9y+PS7LPf3LPvCciiURdA6UbX47Mjtw93I7wq8mzuMn3hfV9pM\nugYFasw4Fn9tRmleIWbn7zMxizNIY7uokKQ6pvsuoOoM1z1YYlPpWIcJDxpbd+ojo40UiSHpKiC6\nvu8RKmLlOZTKw963iLNk8tSlm5wmJtvcI4VG6qRARFo+GmPq4skClZO9TF2+dEB+zICO97g7DqM3\nMC+Uw84AxPO05OnKIoikM+cB0vsULYIjGmMFiKmqT3Y61sZ/HIfWapRZEyLjood/YjGtYcKZ653l\nq3QWH0it/SSMkriiSDZfa181hdR/2qykOJhHrFsojUikBaIF0R2T7rh2s0rY14P0zEl4tk0cSuJh\nKRTfUSfVWHSqVN1Ti298kDNT3pDnK6bplpRvSPkKyVOUrLGlJLl7a9SK6IFJD7zYLPzkrfDBVeHZ\nZI0xpcrtBPkqwr6t3YL5FYXFB9UGO5ZEuJ2Un7gpfH934OP9zP0h2+xLLW9381F6wkY+Npq5p4Z9\nvlJqMaZZF66myvO58tPvwNefKVdzpYrFlr7YFj642vPd5Z5PSqboBnMldSXt0ZzRb1cgPh7znCrh\nI93GzdiXo8dVmzXZT1jqxGER9ofE7mApaQ8Pe9KnH6Oi5LpHrr9Hmp8BSrn7DvXj73D4+Nc4vLxj\n2e0opVCWQlkqy5I4LOYzflgsgrMWWfmCR9nw3tdoxNDPbO6bUEk2y6gYiIcvdbW9QFPKaDU3v6o+\nW4739aGTRVpm2FAi+H3tOydog6lFwE0+2oieNBSP3+MNfBnan5FcGR0We+cpW8KylMTnGkYEk8As\nlg++SJ9UxAyhejSspW+IMRJnncpbDNE/ladzWxyZXcZ7uE9uLXsOu0pdDsyba6bNNTJtiU2Dm0FB\nBPPyGGA9GkYyKjNRtS0GckjepG1eN5RdRw5k7CJcH7tdXNb3aiybEamjArxRtd3fppGd5Zs51xeD\nwk7qiK5tZ5KBwWtBZKHvT5o72IuAHsh1x5YdWw8mMaDyAI5aEQpXSXlxJdwdMmVvnggiQ7pQUWCx\n35cDh2XHsr9jn18yzzdmdtk8M0+XNFNT9sAiYfEBnbQwKdzkhQ+uKj95C8/TgVmgpkxKyvXcF7F6\n8EzxaAMrgdZY4YDtbLl73psq39grHy/KR3vhUGyqn8ONdOhf58hDq2fMs0VLpVBscdNNAJKUm1z4\n+nbhp57D+1eFTTa/YhHldlP4+s2Bv/Hwil97gEVuSdmCmGp9icieJJZwIOzm0vppJyXQUUA9stVY\noTE6cth8oerS2LCilLKwPwj7w8R+gf2h8urVQpV7trUi5YF093103hhkPbxEX75k+fSO/f0D+/0O\nZY/WHcth4f5BeNgLu4OwlMQSgUCLBQXVQlMuLTDHTWLmZWIx0rXabKovhmp7v1It0juFC7JASsbQ\nY9G5QlurmnKmiu0ApIh5tfiOFcmjYO1PD2JStQRhPmNQ71/KsAgeo3wY1jZrSkyTsJTqvvIWKGW7\nIykpz1zPVo5cC5PPqg6illuqeqRMVU8kpuDukxkz2eQvk438dfKkXZL1IBuusu9qoVCRgzW0VeBE\n7C5uZgYBsW28lmq50CUJKV+R07XvKjuyo3HhwfXwsLDopWo4bCxXgew9N1p7ZOQ6fOido33Xn2oT\nTY/4E+twGmaAqrabSlt3CGDuV/eZQW4KwsTdFgOZ1NKiXiergqqWMPWwqG2qWwpXs7ms3UyJF1dC\nrYWXZTA/dY3Z390aBtUdS13Q5YFyuHOTy5Y0X5HyjEaUKkrWPVd6z9evF75xvfDuZmFL9ag9sXBz\nMQCPqbCIkCl9gKHN/lhRJIcXiPDBtfLpofC9B+W7e+V+CdA/39fOSQtmIQC/giRSTkwsfHhV+U0v\n4GvXlau5ksVZY1Y2G+XF9YEXc+I2T1S55tnz58wT7F/dkQ5WZz3Sc7STD7NLz6rXzI52mU3CRRvj\nBCHJBM5el6WwZCizKb1DhYe92cthMSeiWtDtQpps/Oh+T3l1YH+nPNwV9oeFlMwenrMph6UkczGs\n4ptzsOrVjRV7PwkyJU5G3FpqO+E48osqUgVxJj5lLNd6tvfPEZAT7x+sXTwIyMfd4jEeVZVaals4\njJ13jFfJkbly6MPI8H3vK005xuJqmCIlMc2+3Z0WN6WYHz+L5Rk3k1xl7372VHONttU8G0+iNNCf\nvmpAfi4z2fgTjgG9H9NaWZa9XwyiG1LyzljDz0Upy4Gl7Kn1gKSJaZOQzZXxNxk8GpqPV2hmTw2w\nGvZ1YGrjyxwDeafg4Su8PjeiAGs7qysIb+i6NyBHUNkgszM1mVbTrwCtAHGJeXoruSss1AJx6oFJ\nCtucKLVyqJUHhf1SqUsh1cqUhO2UmJPwYpNYlsqyKLvF64bB5/f/J+/NuiRJkiu9T0TVzHyJJSO3\nyqru6g0YYMj//yP4zgcezuEQHAC91ZZbRLi7maoKH0TU3DMrsxtoguxq0M7JLTLC3VxNVZYrV65c\nNnN4SEVrlVYXajmhaUTzhlQ2pDwiacR0QDE29shdeuCr7cLLTWWfK7lzjYMd0bf0sQqHqpxqRD/q\nmtiTGPsBpgQmLXBHFxR7ujGOpfL9wZjNDdliCbl4Jp814hfGqXcGxpHzBpSk7HThy73x6yfC7QRj\n8ixO8eEoaTBuNsbd1LgdKydr3FxfsdlsecAoDxWbo+jLpfFeQ4p16zSzYGT0RLEbFmIvR8aGdXVc\nqhglO2ZbW2NelMeTD6Xo9SZrjTxWUo6ZuktlPlSOD5WHx8Lx5DBNrz018wESPZrs8MRa4he/N294\n6hos4nCPrdyl2DuuRZIdOKHDnUlgTMqQfLCzod6Hp6wU1HMk7++btEfYXRIgaI0x0NkaYRdkxajX\no/w5P35+IPTgvO8ZW6PnbstwtlAwaIZeHbd+5v3/a7MLKRC5qMHYmg187vpJQSvw6Wj80nB//GFW\nI74aeXB7Vylldk87VsgTOWdojVoWluVEjQG7RNpD3sVm64kskVZVx1DFOEvwXkbkPWbqCx5fM2Ed\n9Svy0RCHaM9eX+Gyg67j9R2q8M1ZW8HqiVYfaN2Y60SSEm3q+/Xef2SwVyEtvYgvOkxTQ+NkQaWi\nKjyeFg5L41j9tYaU2eTBo1qc+Hg9KHVKlGIstZ7Zzm3djRAZBN2wS5j6NlPqAssBjkpOAymPpDwy\nJuFmXPjZ5sDPd42nU2XQenYKBj7o1otdh5L457eNP9xXLGeGBNsMd6Py85vE8z0kmVceU1JhnHxN\n3xfhfWncL8KpqtcJ4rmfTeen9uulab2kHrqM7pMJfn4t/PKJsBl8AvrKnIrC5H6XeLrLPD0q75bG\n1e6O6+tX7HjCu9o4Vqd3nlvWV/fvpq13ODqYusYSTbvKok8r0mg2KsVz92TemOS8cjjNC6oNNweF\nLndcW0NzWllmUhvLqfLwUHn/MHOaCyowz46JL00cTmlGac2HRfTtF780xdbHsf2chdNizKdwIKsl\nEwYVsipCcS56cy6Y67CDthZMGHwk2zqWrQdZ5nTaMAotzlyHQby+dqZDAlwIE4Vn1IvMoR/f81nt\nZ80jcFaGUT+/Zanx6NT5+hmnShfxjEf6tNiAMDvFWMQbvtSftkNPlbpmvx9efyU98k97lsuo++PI\n+1NYuXxkvNfvuPg5s8IyG60ulJJo1QtSrfbRTLZWsNe3EFnbttdUtntJAxd5miOVW79j/fe50Hn+\n0wwvYl7yY6PAtu6S+MazM7H1IHgwUVFmplRp0lhq49RO2HLEdIMOmwtFwp45RApostpWNzydGwzS\nGmozaifEinfjVf/5q0l9FFhKEQl504ZG08t+EOZN4rBUDotRzL/eP2J/HJdgUXd4tMDetSDFG5Fg\nZkzK09H4+Q3cTJUp+/SbOEMgoCGE1JoyN/j2KPwf75WaHHLZZ/hqL9ztGl9II/fIVkKCIMHVJPz8\n2nh9NB4W4dh81FhrLYyCMypa32CcE2p3SHqezxHPKYtxNcDf3wlfP2lc79y9eTdjQrUhqgySSMDN\ntvJ0Z7w+DfzDf/k1z7/4O3773/+J5eFfOd7nMKpB2+vJdryZEayingH1gqEs0ekaw0RMqNYorSE0\nj5YblALzLGd4w4xEQpszj0px+MHZJK7xvcyV46Hy/qFwPBVKNQ7HxrtH11ipzSGmhkFwwpNBa0oK\n3mDKYchNsCKk6oFBdZWGyBKUnIxBK9vsHZun4gOSa2RfGShrNhWGG6cxegH7DE90vZdOX04agsbG\n6jySCENSBm2OrsrlWbVYaS9E+3GPgM8c8hsUtoMyGyEaVtxAh2NJ6rWTGvAQ4vCToAwCJGNee5qC\nvRR1sa4dkz5D3f6rQiufYqZ8Kur++Ps/vj4o2H3w/fimar6otcqKa57hh4scySyYC57KuVFMnDG8\n80HuwxLOrGyldzH2SN5f/xxz9+5BN6ydCtjZ5Wdjd5GLnAuTKm5wpbLJYM0f8um0YOWI6SOmroGC\nOL981WxoPbtgFaM4+xMvENJODCyB4wopZUY1pqxshxjfFdDAWeujMmbhahQeRgnWhv9/w1ZnCB2b\njnUXx2VTfNKGR2/SKoNV7sbEFzvliz3sOrbMBRXSP8HK6S0G90X47qRU9aOzT7AbhKX5z+uFIe+t\n+ZtBeSHGl3t4czRez8ahudHtGGvPhi4eyeoYP8wa/d6mZDydGn//TPjy1gus74/C48k7HIcRn8Yz\nCEM2bjeNZ7vGdwgvn+949sWWH/5gaIrBCKYRj9mF1oavp9rFXvvgfHeutrpsQQQk1UCtUxBhWfD6\nSmxHmnfB0pRalWVpeGOTB0y1+uCE+di4f6wcTtGWPxuHWai1R+Bxf5GA6oWjUQxNTqtUM2zObAbY\nSuP9QTjMcDQ/t0kag1Z22fdHZ5k8Lm68C0Ixf/6V8744u70zTNPngIIXRV12N/oq2nk/DeoNZSpy\ncQ4vr+Zn/xI5aP6aQxK2A0hxWNLdWadLOAc8Ja9fSZxpzIOtPqavhtNxx9ojfA98krpGzqeuv2pE\n/kl+7p/AgS6vD7jkn3iNDw8ZgH2QlvyYjeARobUF2oIk7xD1XNCjongZoGHSS/Bdlzw89fo9H0Zw\nbkSrP7ie1vUk2fRs5KJYEneEWQKyV+bFD8A4pMggjPtTwdqBugiIocOWlCZMJ7zYqjQbaFSQdo6W\nwz0lxRug2omkTjncZkGHMYSWQv+iVaxWv48YLNyab9MpC092ibk25mrUS4cWG/LDZxfuyrrWCVQc\n99znyi9u4OsbuJlsNZyrMw1HcOEfIxqW0DmJN47Q/YwzXuyPcJaD+CjBl3vh9RH+cD+zkJi7Tsw5\nQ1+zi4tPQQ8eekSeUK5S44ut8esXiedXboxfPza+fa08HJTtDu6ewLObxt0Et5vKs2XhqiyU+Xe8\nu6+8ff/fOJXvacwrwtO3lCcHtoJiHdbxD2Yhc+rc+GpCgWgdYy0k1iaU4uvYaNQmtOqysUqjVvWi\n5ZgxK47t4pK0pRjL3Hg8OU96LkarHc6zVZirtUzrVFj1yH6uRqkwSWJMC0NeGHcDmyuwqfL7Pypv\nH4z3R+NwaowCY/L6Qi9E1jFxqMZSGiaZ6HSPhWn0JinPPQIyCaaXaGDXSdDkBtwieBPzAMabbpyP\nL5wf/5pyXYZZfW+KN1zlrExZoc1kAxsSx1opJqCTZ7PhxFrQdSWkBVYWTvP6RevMGumv77WXnH9C\nxc7PFTP/vdfnZu59DpY5t/Kev1ejm0uCMmc2I+3k+7IzKSQHEiJxqBpoiai6rXrk9MzgHA+cI1Iz\nByT79B6/O7+PC6Peq/yinWHiokoqCyJOkRvUvbOYssnKsSyU5Z5ajqATkjZo3pLGvXO2dUS7QmLr\nQlsWgpHOHdd2YBoam2Rs1PvtaoNTgVPxzzkqXE8am8YjBcWYVLiZhLkkj45PRu1NPbT1c17sAP8/\nibqDOSTxZFJ+9WTkl1eN5+NCbs1vN3D1bszXwyMdYLA1ClytldqKW/rz/fDtIUalSeHZpPz8Svjh\nEcp7WCqcxKe99P6vH4cXthacFS/CbbXx1bXwjy+VF7uF/eBO+ulWaUeQBR4Pxh+LcP+olOewUWM/\nNK6454//5//G/Lvf8u0fv+d4vKdR+AC+i2W8FEa0KDTautKV1ECkcHY0zp6yoLiVWEMPPWR1Bikp\npQrz4pHvca7rZ0WCJ1+M+WQclua6O3UhpyHotzUKruIVDIsGKXPV0iSQB3gyDVxtJ7bbxDAYmipL\nNR7HRi3+ftvBHeMA4VzMWSzNz5IZlLog4oO2s3rzXrXGEjS+LgPQQ3PpDB/8KGZRUrJQkPTakQUf\n3RvgerbdQa2+d2S1JeE/HKq0wnyao7fCg5kU329WyGbkYlBDtK9P/oiCeW+Hap1FE/u8269mvv6f\nun4Shvzjjs2Pv/7vuT73Wh+//+XAAOmu1RrSFqizfy1SH7qmiYSJFuiNRp6g9SNxEZWvW6Abalgn\nT1jcA71ZpxvyHkX6ezqnPSa0NB/5laWtE9JJym5IlFpYyky1BWQGOSJ6ZKhH0rBBhhHVGMjBxiM3\nDbzPXNQp2ZFJK5vUGKKhaWlwWODdsSDAfhB2k5IxxCpd+QUxNAvXk3KqcFzK2ih0tjofPo8zg8YP\n2H40vtjBb54kXm4L+xwF2JV2eY7CBdZD1Fka69d6gc16/NSLkP7Fy/qFp7iN6xFe7pSvb5Q3s3G/\nOOxwfoqf20hnx5IwrnLjq5vEb54JTzYlIknh6c7IBptsfH8w3p+Uw0l4f4RpD7uxcZsO/P7b3/J9\ne837h8I8L3xQZA0sLICx+HsPF7oIVdDzxBikMaXKIIPzta37OAmGv9ekm+BFtSrkKpTiq7aU3n4e\nqb1CrWHIZzhVmAuU6jhvrTHCLWCBrI519+ESqsZmUrZjZivCdhCm7JliNiFZQl1VCxXYjgQNpfPL\nz8OQkwpJHL5ISRgUxqw0g7lK4MyX0Ipd1KYIp+Yn1o24Q4d9nNyH635JPb6gHwpYhMuCJ+5JGrSF\nrvfUzMiqDGIoha02cjyIE9mLwR23j8CInt1bwJMXndNOePgJFTs/d33KaH/OmP8lBv5Pa2d0CKQh\n7eRKqt3WMAKdddIXG1YcXVIYHWclrAURvCtjPW6xqYzerWEgLQoe3Th1I55XnNu99EKmkLWRRN3T\nJ2E3jRxm47g6sIa1E22ZaeWelDNpHMn5hpyvSakhOtJio0mbSXZilJlR3QAkGtWUUuFxMd4eijuP\nlHFGe3UNFpU1m0g0rgZl2STuT422gFWnbn7sVIXATWMLJxGeb+AXV/Cba+M6N08/RdB2/qkVQSA6\nGmGNsATWIQrNzkZeepFUzqjVSoWL15uSrSyTPz403p5cjKun7T8y5nJ+Xr4LXCPjdtP46kb4+k7Z\nDmcs/mZXuNnBi2fw8qR889Z4+9Boc0N2ynYUnm4Xvnt/pByE+STU0hkcdr7RNTPoDCmLA78iSYCR\nc2U/VK42RtIJM3XcPz5LCb68Px/Q5r+W5lKzLRpkSkyEd0wbn/RTjGUW5qLMZaDWxKl64XQpiWoF\nFSNlYykOgdQKu2ni2e3E3fXAu+8PHI+V40l4e195fpO43g48vFt4f2ycxLjaKMsyU5fGNO4xVSwZ\nSmLMwqZWljIzqBfhxywUy95DUquXsKLdUqKeoRJd124Q3FFZOJ6cEHOuufPKm5MTNDbKh9jcag9a\n/P+Qhc0ojCOIuICyLZUpCVMWNqmyjXNTmvCmGI/NociuUKFKCKFFcHlRy+uG/NMMqp+AIf9zLfif\nuv69RvxzP9MfGAiaHOcTHG6gLawaW70tvpPxxb/zkjzoEbpFSuVG3Dp+zlmjvB/E830REpzBtl11\nR5Tz6KsK9USSyqDqU2Hih6c8MSSX8Sy9SNJ7G6vQrEBdaFoo+khKb0nDDh02nue2Eyla8segrYkB\n6oXW1qqvUURB2Yo3WfVoWDoP3fmx+0G43fqBqmbUFuyb4AX38rAYNFGGLFyPia+fKF/fGE/SQlL/\nP5Ngx/S1WyMiWdeuRzG2Wuuzhf4g/YULR8DK7lFxAzcm424rvLqCN4vwriYO0W6O2JpVha1ci8Uq\nSlbYT8Yvnme+ujNuNovXElz4gyaJ0wynRcjJ+OKJ8eLaEFN2k1GpPL0StvcnbDbm2alqEfatjqOD\ndr2E1pX7nAHSoS7YZeP5lfD0KnMqiccFSo2S6YWcQ2enaGnr2mp1GVYXhAJTQ9QC93Yd7bIIxbxO\nlLTGDldaS1j1Iu5uaxxOytIUqXA6wvF+ZpGZ42PlWISTKfcHZdqM5CnxUBcONXOShB1mkiQ0JZaI\nsBeDU2RKOWeGwbHuJnBaHJ4pDZI5c6klIuqNvpAwjr1/ozoO5NTd6Ia25o7HUg+q4oHHn767oiag\nThds5oY0J9gNPlrQTNAJBiqDGlkb18nhmrkJBzOWmJlqKBlhEOfGFywKpZE5rFH7h7bj8vqrG/I/\nd/1bovFLmOTPFUE/HeGH515DcC98nuuCBlqRlsPq9kn1rB79HOKd6QPOdKnnUy9nv9BTMj+lF0wV\n46ztZcTPz9COpKEypHMrvOC45jgkhlmZew90/4UFVzicipyoek9atuiwQYYNWQopnxyTlKAlmrBW\nWeTcb+qf8Ey4/HBxHYCaEtxMyrEYp+IHnNbo+jNn/q2RJHE1KF9dJX52Dc+3jVFLyKZewh9nF7iu\nrHvcDzb3mj2v9vzMZFhD9/481+X2vydtXI2NV3t4NwvfHwnGB4FhXryTnJ2ESmKTjWe7xt89h69u\nK9uheHt93EczeP2gfPcO2gB3u8bdDnaDa8bM1XiyS1wPC5NBLck7UnuwEMbXDbHfQ4sP3KNN8IEa\nk8L11LjbGk+2ifdHFzizjr32DKNZzCrySHsRh0Xa0qKmIAEdeOOO9yk4jbCW4HNn43pvLtFwNE4L\nbLfGkzvhxbOBf/29cayQizOUtgPsR3gLPJyMt0vjMAvpXjg04d2SeQgDfyKxG8RlGFKMYjZjKYJp\nir3vnapm0SAWzA9XLvTmJJ9GdAlGEWsZsEY8o2pnTnrfE3KB53kPT3RKWN+R3dg71i3quH625hTY\n4ZyxVnNWTxOhIuQkbIEhuRZMh8s3KYS1qmcEF6bj4vT9+PqrG/LPaalc/t+fMuafK2Z+itr48Wv+\naGLNRcjmXZQ12q8NKKhmrGVMB0wG704znzNpYqFJYmfjE0Z5xWXXkU6y0ps6p7vjeP69FgVU3KHY\nCezIII0hXTgr8Zx4HIVNEQ5LTEBp+OH/YG0rZpVaZ8p8QOaM5hHNQt4ru8GZMcFvcEOhniY6lzmi\nOemgSF+u+FdEO1ngdhQOs3BY4LSk8AAhStXXQIUxK083yt/fws/2jauxUq1FPvIhptHpn91hGuJr\nFGtr66Hzw9nW59tZRdC16bsTAE9lLfbDlApf7ISHGf7wqBxMOZlrX6zZgLGm3KqKWuJ6aHx11fiH\nF4VX14WsBa+ABcgmwh/eCv/rvwhvG/zDS/ifvzT2zyopNSaFJ1t4NjVucmUdKG5geNNIw+mE9P0h\nTjH0tnZFkrFL+GvtKjcbY6PCSUOqyVyZsppDz71bWcRZLJSIbM1IodQsGrKsaq7ShzjPuypNjP0O\nvnw5cJiN798oD4/Ks+eFX/0m8ctfbXj3v8y8OVTGBtdj4tXzkS+fZF6/e8/8vvD6YCwNHl8XiR+z\niwAAIABJREFU5LXxWEbul8KpVJSBZpUhFW52wUaJZ1iqUqM+UYvDcPtdXoMgNaVJZW7wOBtzszP+\nLWc6oMU+aOINhGbdebmoFsn3hytN4lBZKPoQ+zSLujZTEqoWlqrQPMO7SX6/xyY8LIlDCUbN4IZ8\nHx3SS7VVX+VqUKo1DrWtKqESxsR376evv7oh/4+6PtUJ+qe+92PGS7MaDzOHQ7AASjxxxPAaRMd8\nzXD2h1BF42C0CMidIy5yVlumT/mJxhy/w3Z+Mqux7/8wfw0WYEGkeJeXZrqes1e2C6MY2yTcq3fV\n9cJXd96X/mql45lBK4x5ZModrunQzCXVMqLiDlNcvMZFiLv+4apuvfDZmOvCHCwCF8XwdTARnmyE\nL6+En98K+8GjmD7y6+LhrA727JwdDmsqFE0UyRGhulSvmNO4LAS0Gr0P95yt9bxgXZf4nLvReLaH\nXxyNQ0ssVbgvPQfxg34e32dMOvPFlfKPLzNf3lSuNp7ZXK65iTGr8K5l/vhQef6QOZwM0eJCWWps\nc+PuqvFs29i+rxxlYEEQG5wtYp2B4XujCx33T5VMGHPjdtfYbTzNrzHkGCyEpc6Oz+Euzzg0pgZp\nf+UWin2xH02Elj0qdpGwwm4jbLOQcmU3jOSN8vSZ8exF5vnLxG6THJufGzY3njw1bq4NHVxgbEjG\nzSbxeHKuuqQGE8wPxnExjkAqwq4NDKNxOsy0UtlfwbtD5TQbiyUwByFLi+zEGqUVqglzc80SUYdb\nVl0ikWC0hGM3l501xBugYm27ys356Z9zUQnCQVahhK0oNA6tsjRhBtKxsskOLz0uilmi0ihLZWqQ\npYazFhYzTrVRUY7V1v1z8Y4fvP/H19+sIf8cdPLx//1boRmsUWvxdFlTyIKmwDnOrbJdDlYwx8wv\nx61JRN1mgWsfsFri8CTQIYYWh7Rux3Pt43s0j8QgIJ6FLH6wanMPXmrM+xOnTo3Ziz6tuoxquPGI\nRD/6zOJGK9HYZmGTvbnozELpwe1FVCyd3fNxXNCpm90YOq69H4WlCofZuG/G7OaGrjFtCHcb4eXO\neLFpbFLzOULSD8zqRdZn9qEDNkoTTlVopozisrbVHLPciLM3vFNQkHTGRnuazfpedBSJKcPdZPzi\n2ngbjS7LoiwtimN9dipOmbzbVH71DP6nr5TnV8Z28iismdPhOkSCJhZJPFbjWDSGBniXp0Zz2ZO9\n8eLKuP6+cqyJU/UCXI3iYxXWYtiq9hN7TmjuDPY+nk+1+RSg5ntkVN/jnULbYgmsgdRO5XQ8uYlH\n58ni6xoQXdQgpHnvwIDy+B4swWar3N0p0pTHN8LxwXj72jg8glriyfXIOCr3Bx/QnASuJ4d3tltj\nt4NDqVDh4VE4mnFqwv0svH4QlqNL7sroGcVSu5hAyMZWF0hr5uJT1nyfDYk1422AuO2nNiP17K6t\nBJkV1hQ5G9EPLI30PS9Yil9iJFGGlEgpczI4WePYCkmERYTH1jyzDZGsTUo0M05Lo2DMrXEKHajS\nzvGLn0MH2da3/8T1N2nIV2H6z1wfc8U/dalqFDojIm8V716rwS3PpJTj78kNeLSqCQlpDRgQzaBB\nEUQxBkc2W6PMD0g5uHE1IY170rAj5w3eIEzgn9L3Bx3B67vHakFaZcoDajAvxuNcWEoBMzZjYjMq\nKSubMbGUxlIsIBHXiLELR9GNqOAtxftR2WRBL2a1rKwOOG+fTwQDcmnU5RwzGI1NUq4n4bB4d2VZ\nDEnJnWS80N1WeLap3OjCSnNbvciHxvxjymoD5gqHuUFr3GR4tREWS1iBAWOn/n9z9WSgV/0vMw5v\ntu3xlrd934yCXis/PML9ER6XzPt5Zra+Ik69nAS+uoF/eNX4rz9fuJ0cX/bCHz4fs0Gu6kXqFM0o\nfTkjUJDIZJ7shZfXcDc2vj01DgtIc0jB5WtaDJ04t327Jrk6a2isvLiqbGIo9dLc2Q/qei9iFWvq\nvRGKT62PT3SOOn0sn2P7tmqi1wZo8g5GMaZBoArf/E7QVLl7Cs+2E//yzzP3x0rRwm//1Xj/KFzv\nMldXe5ot/OG7B44HJVG5ngpTUr56pbx6obx5XWgnePNOOC4+9endyTj9QUlpIOfMyMxS1T+HgWSX\n6C3F60OLCYfqTmabYJ8aKTWnJoqCemer103OA8tNHFPHeuE3MtEP0tmzkTeBmgTJTmvYpMRuyOyH\nSmnOMmsKlqG0xoECjPgEKNglH/N3z8zDUjhVv3eNduI+POPyzX3Pftru/U0Z8ku5yI8N9b+Xg/7x\n/0tE1KtMbC20FgJKEa55MObGKOno8rg6+JAEGUBGJBmEbkniSMqNIoXDXH2sUzo3C/SdsZZiehQs\nEG1nYAvSZhRjnhdKLZRmpKQMQ2YzZsfNm7GbRk6zMZfl3PH20XO3cPWq3oW2yTD2tLsjJJf31Lya\nT6Sxn9pIZ4N+NgkiXsjZT5n7gkfkmqPxwrwdPyWGpKw6QXTmToCd/WYunv168BCWYpxOhbHCq1G5\nyUoRXzoFhgSTGGVp1KQXzknW3y9WxnFIUYakXE/GVzfwbjF+OLmutDQiUlWyNK7Hxj9+NfD3X1Tu\nrheHVIgpqs1V+fyjKOMAI0a26jzoLGh2TWzMndt+J9zdwPOd8T/uK1aNqhqCZr4m7mRdAvWc8Dd2\nWnkyGs/3yqR9pJ6AQZYWrCQ4BQyhOH00mdBqNMugIUtwjv7V4xMsjKePOCscTwN1gfcPjV//cuDp\nTeZ43/j+deObt4VDWXhzgGM12rHy3/7lEZaFNz8cudlPZBndiW4bX75SvvpC+fJFZndt3F43/un3\nCz88Vh5n3zdDNnK20CR3R57COUmDlARrzQvuOZNoJPX6lVY3zmPy8m5SieEVoV+SYDdm5mrM9dw1\nq2uC3Weycg4q8EJ3kkwShzuX2jjMJ2o1hlTZDo1tKqgo11PmYfHC84Jxv3imfqrRPKfiYiDWoRs+\nyJJFez/FfzJo5VPXX9IdCqzGoTcGSXhmPz/xWFckxB+gaQkIJrtBTyOa+pScE9pOjKmSkzDPytEW\nWjlRAit38aRQI7zQNreAQ/yXY+SKq8wZ3so7jZ07q4zZ84CmMA2JYVDSot6C7Z/ux58XP8Tj4NS5\ntE5vl4v7kICIgr/a/+z3eF48zgb8IoKP33PyrrvOCxchCkfEHEmnGq7NEKsL6ffqX2v9lS9goqTC\nZoBJjStzHfomnO9bYJsbK+WswynrYeivGU7dnPcu0hgSPNsJL4/wu/eVo+HTbhAGUTYKz3aNX79Q\nXj1tbCY/kGbO5ZcmZwKRuOHOChrGUhPkwdBkocHk0fr1Hp5fKfsfHHaonNN8Vujp8rn6164n425r\nXE/ezLQU4VidJphVSGpsEjxICFtBwCQ90nOj3/VROhyhSrC3nAapycjJXDArJCxyct776zeN795W\nvntbeJgL9zVTzPn4/+P3J6cF1szXryZ2k2BamZ4bm03jUBpjVu6uhf/ypfLsSvnmbeO7e+Ph0Bg2\nvgN+eBO9EmIMqkjIFmr8loCcHTJKgtOK1w3VN7A7RJ9n6lTFKWdXW5TG3KK4yXr0V5ijr70gZElk\nyZTQNipmHKsXuTfZuJmU/WAMpbFLicMc8r7Afelianhg12GrbougL/zFvz88G5fXfypD/vH15+CV\nD64ejSJrOok5dW9lSlhghVRMYliu+tSOPG7WJ93qgSxHNoM30bhmgrDUQmlHWoOUCykPJM1oGjjP\n8zQ8BDJoC2rFZWpF0FEQHRiGgSyQaSQqYk5pqlkZciKl6NCAcxS6BriB7ypMg4Yg1WWzTb+8m67F\nFw1W3rLf6OXfJd4gLLQoFlMFYuWCHWLrrhTV8+sGxqs9+kZWqqLbl15ghq7o6N1/yjgKycCat4E3\nqTE4GQqOnScPkc8fTqDXJT4w6eI0vf76Vxvl+c54vqm8qYkZF/efJHEzCl9cG18/Ne6uiMG9GntE\nPIGJqLgiaI5aL9mNR2rkwULrhjXi227h+Y1yu4HNPZzOcQTnnCWiihATywh3e+HJDqZUeTzAwwwP\ni8/mTCkxJac7vpvdIfWEpydZ/ay4vPhqsXyYg7gDStoYtHGzgflYaJq4uhqYT5Xjg/HHb5Xv31fe\nHh0WOgaMU5vw++9nrkbliyc79vuJm+sF3VS2P2t8913hX/61sp2EPQPPrzO/+cXA63vlj99Xvv2+\nkjbwMAuP7xOiSxRkh5XlZQKjuCOy3FiWEFXL7lxbc9383uxkZuTAt80qaolJDM24xEDy/XCuqfT1\n70ZVSZIYJDOjNBKLGLPAKMJ2UJ5shK0WHwgeGR3NVTIemkUxOTKrNePUizJU7xvoCdkZ8vz4+knJ\n2H7u+hyF8C/9+U9/j7vcJMaUlJQcKzwe66pVfOZqGJ0h0RkkzvfuU2D6NJDEqIZlZTuNlMPM0haW\nU2VZjo7DayalkZwySb0YsmLx9USmsRkcB9foIisNFnOpzkl70cuLb1P2wQ+nxSVeHW9vsQG8RJYE\npqRsxxQblv7busmLJaoppp4BTClkOFf9lEZXlWrt/PNO9StrFIM4S8A0GAFxElwy1VBzMS6RzpPu\nzjde0aK42KGiCzghqzdbePTkBcNupG2tPaQ12l9fuwUrSaCtjJxuJuNPkaAFCl/fZf5QEkcTRlGu\nB+XlNfz6ufLitrKZKk29EUtEIGn4CcMCBskDaLbImaO1fMgMua1OysTY7uCrF40vvhH+9T28e+wi\nUH5f5/qz49dZYZuMV0/g7sqZTMdZeH8Pb45OF02i7AYX6HozN+xUAT0P9L2IWC8zKp8Xaauey5Od\n8uJGeXk78s13C48H4/iw8IdZOM6Fb99W3hwbhwJzS86qEkNQ5ibcLxV7+0j97wtPnylXT5XyA/zu\nd8Yf/2Bst42/+5ny6y8HOC4IyvMr5S4NzMA37xtXU2H36KMBBxmZKVSruAZYRZuLeJXiHcOLFkwb\nc208zqDi6i1G41TckKYI5ydp0XQXY+i6B+1BxMUu9z+8Icgkul4XoxRhSD7WriyNQ4aHBqcYaTeq\nsMkG7SwvLNbO54V6Ab1GQ1OzNWv8nOX7Tx2Rf+76HKtFcQGezeSFldpgWRYf6twjz4gqPxj2w0cN\nLNY3hKd3QxI2Y+LxpCy1+OzEVmiyUCWhMlNTckOuOZgMkCmkwaVkh+RV+NLgNDtVchBjmHLsNzdo\nm0HZTMkLouAshf5ZYzfm5LDKZkz4lPHoEIzotzXhVBulugbF1ZSZkrAZhC6H3AuH3biuVfZ4JyAk\nRkM0P7rmWtDakrihaCYsxfUuuqFyg+idkWtCxNmAgfOCk/mRFOHM4KDDJH4bPjHGdcbX5911ZuL+\nRXuRtR9Wf5oJN5K3G2OjMCKMYmx04XaCF9dwtWmMQ4OQZV0zErE1k1PJHumlXthUNAl5aIxjrGMT\nTI2dwqsXmVd3jbsfjN8/9r0l6/peRoVTNp5tF756YjzZA7UxDrDbJArKw2zU4hopu01jd4LhUWhV\nqcIKWfXfLbKes7GygCyMbTa2WaA1KslNToPjQ+HhVHlYjLm6tGw1iQAohmHjfOrlpDz+YHx3amzf\n+fN9/Vp5/y6zX4ybm8wwCe3YmMS4GoWnG2NKRts1fvWssBky3z4kXj8GQcEENcGVRUOyNlLquTrf\n3jVYmg91EHf0tUKjec0CVy8cckZbJWkiJYXVGa2UhPO571XqSEhjnCiLwKHA21mhKI9VmAM2GdU1\nxRteBK19Y4YFsn641j88i9D+hZ9SRP7/5fW5aPzHo+O8YjwMic1mJOdMKY3DUam1hZSnRHofKf4l\nm0L6BnG9lUQNbrYEjJHJaUZKf0Bh2Kg0W6jFi01oQlR9eEOGNCaGYfBmHRNqNQ6nSq2uBb7bOIjp\nbTtuyHc18T756Kgiwod+vDHkzDQkpiEj5lKpPb52SMU4zYVmypQTY8INeRKy1hUu6Bjwiul3Y4wX\n2+ZOD2yhItgWsIzEvMWeXTyWFjMJeyGpRnOS49XS2/QjgvScIMyt6cobk56e9rhSJUSb8Ck68fpq\n0JSAJsyxyVBLTD0yD7hBgTFVNiQmM7IZAwu7rNxsM2NAJqas+L3R9wVu1Mlrg02ioZLQJKRhIbuM\nj8N4auiojHnky7uZ5/vK+NrZDCbBUMEdjeK0vt1Q+PJm5stb5XYH94/GzZUxbRL7Y+L3rz1DWkrj\n+qZxdTJ2WbgvgzNR5KPzETRFpQ/U6Cm9Cz5ZMV6/qzycRhYbGAbldFo4lUZDowktFMHj57u4bCMz\nW+b9Cb57rMi3lWmI5qeckCHz+jHx8FvjzR8qV2Pjqztj/JkP6Lgdjb9/2Xh6m/m/foAf/ml2mqcD\njL4fm1Alip8E28YyxYwmjRbntFljMWcWNRNOArvRjbeGUuOQEmZO5+0Rs8Qe7F+QtQOaNXM6NXhX\nBD3501qasDQvqkbCFjBlZaHQR4cTL933OPF4VmT8TyARP2lD/pcWL/+SS6QFG6Uf5iiIaOc9e0ME\nAl3cSgKS+ECQrBUfDBydfxYOIGvg10ul1NI/4EVKBZ12aLXQxAs1WdTF/qOZwyLSOcuPBgfcvGCZ\nJUX0rOHxP/TuIj7z0JuAbKUCrjMFBUyUnI0tigS+6kVRW4s1rqF+Zk44lu3t0NWcp7tUV8ebRBmy\nkaxh6iJMOWnQy0CLhh5F8SaJaAnPQdXTWG9Vzwg04KRkfghdOzqocpQw+p4ZmUlvdA0qJj79Ryzm\ne1pE7nEgQz/Dh3GcBytvRNklJQ0elU7qUmopHImRLpx6GMCAwpbZyJa5SolrOTFQAHE65iAxk9vh\np9QU08zT68qLPdwMyvtiLJw/d+98HbTybFf5zUvj2VVAPMDx5Ls1Z2WcIKux3whXm8rtybiZ4PHQ\nKP0ZXmSWvqM9i1r3Op5Z1mY8HCvvDwtvjr5+22GDaWahcX8szCbxurK+YkMoncDdKlq8+tLUvBib\nvOB//1i4Pxg0oc5QpHFj0IaRtw+V+bFRl+zKjCfXohFNiKk77OZ5VMMbgyz2dT8zntHWqGN4Rjep\nD4QwimdtDTbqmbXVmEkKaxDR16ifJRGNkWwa3b6+/48VXh/tLO7WC8eCs6o0Go4sOSrbc8DQJNLV\nwUbXgHTE9dPG/CdtyP/fvs50NodLXFMCiIKXKOSUEa1QwlpL/+3cvScrjlacN5whZa/Wt3rGZsck\njElZlv7gzlDNukEixFX1SeFZFcVnSbbQv45knB7/OvIdDSjSaX+JuVRKdaGjDvmpCuOYGLO68Y8P\n5W7L1sr8JruyhEjzZiTpkTBYGIB+SCxuu0dePRFVhe0gPNsM7PPAVY5Oy2DuXA2w18YknUzXYr5n\ncN+bnDd2HJJuJ9U4j1eMZ6LBsxZxQ95xTl/Si2YicyPkz1uC1eGvr7EPeqR6qp6CZ4FRQRJsx4H9\n5BOIEv21Zb0P6WuJO4jDIwzS+PIWxqa8fGJsNu6oNamPPhM3nmpeKH16l3j1FJ7/zlgOjsH2WohD\nT42rAV7dNH7zSrjdV4/0WmJehIej8O1rn7l6uxP2G2OXjdvReDIZ32qlFWgXeGxn7qzQTUBXnfZ4\nKrBU4e1ROC7GmCtLWXzkYBUOzeGWtjKdWDuhDY9FpHVjGBlZ7Ro8RKt6WyEZZvjuQfnu/cjxYeHx\noZJl5GGZeffohrtDYT1g6meiF5rX+4gsyUKPSHFn7Nr+PpUo9NHYDA47zbXPBzgPePCFOmd83Yiv\nG7NDjQiLGIM5b3xQQ9TPb21et8kq7LJQ1AXvSi2gsg6Q7tt1fUJ2rmJ8fP3/2pCvVyyQqJCSGw/w\nmXkpp5VN4ZdEZPzRS7SKVXFFuDH7RJRSqNVhBVULuqByiAHOZ4lX34S+F/3AJhXGnBk0kzo4sj7d\n3rzjwJyGUlsMBfdGnylzmAtzcUOEuDEcsjINzj2XGEbrtKbeMeNfm4aYp9k8sXR5Aj/4Pn3GaV3W\ngs1jZygkpUQSN5Bjhi+uBr7YJ15sHaLqww2SOa4sll3TOn614k31WROtzv55e7OQuQofxmo0ltb1\nXrzxZuVbpwuWwccPvAU8oRoSvTENSas7lDDEc/VhC4N616clYztkribYTy2cT4/8WLPu/sbWhHkW\n9kPlVy8bX995y/l+i7vg5NRECZpfM7Bs3D1VvnxuvNgW3szGsXrhMegLqDaebo2f3cEvvkjsRydX\nNxPePChv74XfftPIG+V26/reWzWuB+PJpjGmykMRqvWc7BPdg5G5+D5tPBYfHXc/p2iUg1pnjjGk\ne5YMa8Dhi3HJiFljlpC2MHPDWpcI1sVXvolH0/dL4tu3yj9/o7x7EB5OymZS5hPcHxu1ZTojytfl\nXC+6bHY6A34eBEk48EldW9+ApokSGWfW7gD6LugwmbGObuzQSlI+sPIWbBl1RVUltOHFYdTSlNZy\nGHJjkz04KtWYpWI6sDThtOBBTcdsuo/4DErxk2GtfKqh53PXp2iFH+uN/3vvobe655QuOu/wxo1e\nIEHOTYedRxDP0LFub76geTo9zwtQyUmZNDHkxDgYOS0sNdCSj+55dSg5MU6ZnIPBsnKtvUjXDVTE\n9P1DRBrshcxpXMhL5VBDHS4JY04M2WGKZmf83NZ0zn+5YqLjpIYbCMcTI42N7sYsMe08CqhDVnLO\nUZxpWCsM0fySUiO3cB4IucMl9PmojUqhFc+MhiGBZSQKTwl1IbNa8clJSjVjrnXNBJKlUPmzi3Vq\nTk3ERaNasyAZCYhSaD78oDaUidZgrvW8piI82TrDZzFhsuLONQmHUtC5kZJiIbvqw518entO8PQp\nTFvh6l55//bI0iq1CqfTju1e0ehOJHB2U+XqFu6ewvPrxu8fjftZKE0xq4jCVpVXz4yvvoC7Z5At\nU+bCYpXNJpEHpZIYcDbTKM3574Ow23g7/7tFODVds7A1qMUDj4azuBBvTHo3V9cXL40nO+Vqm9hN\niW8eHjgsRrMxWE1Kx8m7SSeyIp8WT0yut3V2Sx8JJ4CaUC1RG7w/wf/++wOHpTE3Y5oatEotvjc9\ni2osS4lRbv7vIg6xxGmPrKmRNTOKxfCUSsGLpU1GjqXxus0+TzYn+tBWD5jg47CgKyf2oqdEHcPE\n6z3e4OOwmOAQ7GI+fSohTLi9SOp7qQ2ZQ4GH1jhdnOtVAVH+BqCVf6sW+aeu/wgsXcRx25TcYPbu\nraS9o5MLi7m+M+cH6/QzxVY6kWPurrk9ZG8aGLMx5ES1GrTFy5s4G/KchZw65fDcjNPTNv/bRSFz\n5edJsG9wQfvs016GnHyQ8pjYJMe7uYg4TJxZ4LrqvqZrpImumsiIY9yjKlPSGFbrHas5WxR0nDLV\naqO2xsOpOs3wWBjw7jvRXtz0Sr1HeIZKxZor7i0W0VZSxxU7hmNG1rrKlubkDBdVH2Jrcd/OB4+W\ndks+QxJnFlgA557JFIzqXYA6AMnTbHGsFIWbK+VUPHLaDMbLO2E3Bh7dZnIuDENjGBrZIGdBzffS\nNHkRfbcTbq5cEVKyMG0GDxRCLrYXWRFlu4XbW3jxtHLz1vjh4A5LJaSCR+PrVwNfvYLdVUNLYklC\nFeHqqEyTR/sqriOf4vVzhs0GthOkk1HrZVDQoz+LDMz1bwrGwcT1YUwY00hOijXh4dQ4Lg65fCAF\nEcdjjYpXiCOeQfwtSKOcewziNYLvfSzGUqprkosLVIX+IN3WtlAt7EGVdAGwswdZ7ymJw5vb5F2W\nx2oxGq6xiPHYFIqxVVeS9Ij/zBhaj/0aAAUCeOG4PHhv4bjiDIlTYavBbI0NvblLVkWOajCXxlKD\ndkiPKIHL9//E9ZMx5P9PjfFfMqDi/P0xPkr77D7HwwWPYrs+89q7CyvdbpWUDQ5xLwpm9cg0xXSV\nrG4QHdpw2MWLcp1yRziPwG2zkrvgz/lOI3INKdmomov0Y3GudiuubXw1JrQZ4ziwGZVtFrbZBbNW\n7JJwQ9ZZB5HhNOg8bmiINnL2sVqbrOyyNyZpT7+j3lBro9ZKDQpjOfjk9RMzkxqDEnCQBNRi5JTJ\n6joegjsGTd7GXMVVDq16pKdqDLkwJi+kJpxS6c7PVgEolwoecFkFPTd6ZU95k3hBukMBgpGyusZO\nGkjaGTA+kNh5+T4F5nqv3OyFVgfmcmCpByreXTpYc3cl+FCGBNNG2Y/K7VNlKS7ulcdEHqDPF+3G\nT4BxUm6uhZfPM3ffFL55V3molUET+9F4cdX45VeZV18o07bADBKF2qudsJ0s5lFGJ2kMT0gZpknY\nT54t1GNv+Y+9Jg6jdZ59wZ3eKdL8MSWmYQCMw9w4zIXDrIFX945RW89Ih0z8o9mKm9Nx9AuD2LtL\n/QstggkfKNG7HmtAkll8WINI8iKnpHDk0SAWkE41o0+hR7x4nlQYkg+nphK4/ExTX0NpRm7CGEac\ngGU+jMclQreLz2q9cuVrZU0wSa5BbsYk0dPQfFJQckyHhjFXlzN4LMaxCcWcf79SHjkvzaeuv4oh\n/49mo/w5hcM/937dU/eCV5cCB4cpcgxoru1cuBG7THmEVBspK9txYDv6azWEajWiLdfMGAW2Y+Zw\nmqlR4DqDh17Jzikx5RRSooCFZrL5r4obznPqupYX4xB5ZrBNwrgduJ0Gx+tiUolK8/RWHfOMebBY\nx73Nf77LdG5yZhiUYTTS4AUw34iNVitLDaGg1jfzOc7y9fGp5ENOjKkxxCQiM29Bb9J5tb6+DnM3\nKD5I97Eo93NjKU5XbBiWZTX8ahHdRM0pi0M+WWHQmZyMlLwYmFS80xFlo87u8UyggRQ0V3JeyCkz\nDR7NevNXz64S203m7unEyxdbrO1ZlspxPjKfDpzmwvFYybmy2SxMm8IwztjQEMloEsZB3HgnN0TE\nMG7BIu1oZFGu9sqXX2Re/MvCN68bp4BHnu/gVy/h61fCs7vEkH1vJiuMlthsE+NYvQNSG5KMPHbt\nfNegudmObJJL1hYSqh59Kxaa3Z5V0Vydr7XGZvTaxzLPLG3gVIX7R1ja2ZB32uFKv7QkJZr8AAAg\nAElEQVTL7mjOxc9u5X8Ej354hlWCgWLddEZ1yIBaWRAKXnDcpFC9VOMxpHAboVnS4YvWmFtFqqsk\nNrfePgvTPAAYQyOHaBLsARRE5uAf6kOIN345vBOweWd44dlvTsoggpixl8ZoIA2W3jBVhRNeJK00\nXMBDo7ZqfzIk/09hyD91dUPePuAGfvabHVaJbpeewfcH0pkNC70Lby3lrJQzqxUxF4FKURxaauFU\nimuNDEMYR2eEjElZigVOzfqQkqpHPTmTLpqO+iEpq9fnYgza+XsswM5mhjp5mSaJGhG2SrBp8Pd2\nPNk3YcaxaRUJQSuPXMYEKeALasOssoRGtgV80qJwmaStYkMS0Eeia09UrkfX/Ej0dmmhIMFW6d2R\n0JPwufrnPsydjunTXMApgkpjnZIasHaSzhSIXtbIGkR7IQpGaUzJ2OTGGKPymjmzQKSisjAm/zyd\nxeSGXNndZx7nhcPcuNoPbDaZzXbLZreltkYphVpOVI4c5iOnslDMD+c4KXlwiusaufZMT891EFGY\nNsLTp8rTfePlvrG5SkgTvnyq/N3XiRd3wnZjwXQRjEQChjGT8pmZkwdh3CSGqC8MpXG9UXZDI5NY\nLJ9hEYvsKiC6FM1potWFq1KFZjyUhUMRjhGxegzh4/3WvQgr9a+bQC6MuAdEZx7G5dcj3b3Y2+es\nReJ7ZguqoRiTGFt1KeN9SryRhi7GMbILTUpKBPGz0aySU/NipSXqMX0wo/Wc0f3YVq1Z7CU0arYG\nhEPy5+uCc7E8YgwSPaXi8tFjfMbupGozStR9OnngfNrtstnjR9dPBlr5j77OHO4/fznedmanrCQ/\nCxEe9ZFqErM3fzRpG+iAR/ITSm2V41I4nApDymyyy9uqCGP26TjHxRkXDhj4dTbkqQuK0iOCPqpL\n12jzstXnnNp6J6UgkqhNOJRGqS6ehKSLkVayOqysErCHO7WcXAwpqzNRzLwFuRY/BEIhi6wNCx4B\nR8t81BVUCGzWByfcbJxpsR9gMFYnYiKUHuGID0rtTJlj9QpgCVEliUaq/nyaubLigvl0+OZQi7+3\n/9szDfEZpkAFLHlDhsrsz64RxURvvGoNUjQmdXir74UhJV6/m/n2+5nnzzPPnm54erfj6mbPZhBM\nGmUeWeaJskwsywGO7uyWpTFOjTx0ZkML+M6d7KqhIjCOjpM/vTJ+dgtf7hJ1hlfPlV//fOD2Whya\nWUByiLkhaE5oqmuWOQzCuIHcoM3GtBi328LNKGyTp/Ot0yc7AwSjiaEhimUGY27BJ4djqRxidJnG\nz9VYW4i+otWY9w5S+7D/yAKOW6GYMFpr9PvR16SLQvjXilc/XN1RGyOVSYXrKVGbZ1lji7OpkJJS\nwmFDIWejSgWrnJbRRw1EBN6zgfV0fSYa9v3SLYa/x2XPRTVfhYxn4+DZZk4DUxKvHTU4NIeLtLmu\n+lkB1Na1+JvAyP+jrh4hj+MYOG39N/2MRx6OBXvDW++16qOeOgUpfugjO64aVEV1/Lp1IZ1miCpN\nNAYneCv9OCTyYsFP71GMO5QhJ7IqHqv6G/ZRUGbCZsgxFchnIRJGEeujxRJNE5hwbJWHeaY1c156\nNNnkoN0ldd75kDUwYb+aNY7FtTuKseLeAJNWdkNjSsIoXc3QLorC7ZyamgY2mRhyY0qFTapB8Yp4\nJ1TePqjKm1Kb8v5oPCrsxLjdNDaDb/hCC9YP0RLum19bb5wi1qVrlbjRqKYsVRhGZb9Rnm4HsjqF\nqFSjtuIQliiuUeM0Rqve7TgoDjcsM9/+sfDdt43NNnFzO/Ls5Y7nLzY8fbbh5nbP/skeMWU+nDgd\nHjgd7nn/9h6VwjAK0zYxbSrTRpimRNer7lFXSnC1g5d3A1phewuHx8bd08QXLwbGydeupdg/oZ0v\n2eGjnDKjJnIy8mCMvlHZG1CNZ9dw+67x5n1jibCB1bC2vmoeMZpFmi8c58pSNfTWfXxfM2VpEtOv\nzhBJx47bxR7vQWWvkfj3nbPbvt+t+U+tPG0CAo3goBoMNAZpZDVOTWGBIVWGwXg++kzUfj6aNWdj\niasnzij3BY4ziM1e1GwOdUnUFloHp6XXsM5U4A4Rdd68l18UpSIxtLwHXoMqo2jMBo3pRGKMyX+2\nCBQRdPY5p9XOJrxDNyrSp0X+6PrJGvI/NXfz8nv6dcmCzSkxjZlaYJk7wT4iAjjz9vF/dMYKAqXC\n0rFBM6YoyuWgiMkFDnL5/im5fgZ0ARxnRPQ+vMAlAH+w45AZMqjOntaaG8Ih+1STpI77dvU/zHHf\nTfJUcohUzSQodcFjbvSIw/HA1ho5mUsPpMQuO40upYA/iEYT88ahGlH/3HxsnHeGphijJcG1Dpgh\nwRCFJwvaFbHK/tf47BGWqWkUj3rnYMRscm6P74XKakqtmXlutOLdqNejcr01xmxr+tlz4ZV9c7E3\nzg7VRZIMN+IPJ8CEXVae7GCb3UD4YffJTC0KyCLRUUcKB+hsibk0Ho+V+0cfE/bubeVwLHz/3YHd\n1cD++j23T/bc3OzYTjCOE7vNyLTcUOZCWRbu72fuH44Mw8L1vrHdwTAl0hi6LVbJqbLdNu5uhSfP\nM601bu4ST54Jw2C+f0P4TFqHJWAzwJONSzokcW3uIYf2e0SIL2/gxVv442ONZ6/0ZiYDUhOW6hSf\nAYeAirmq4hJUQhV1/r9BbQpKL8UDbnQ7W8gu4AeJbeH1mXOG2/dw7bCEeJAkVDLGlNKae04Kk7kR\nM0nM8VqnuZKzMI3wZBJG8SDkELx5TSDaeDcbsyWyKVNqHhFrZZONQTOQkT4nVTq80w0rEbA4f9+M\nlYpYqnuA0sDU6M2zCz50pJjyGHNqkJCyNcgYt5NyZcJiwrHC0lw/no69/y0Y8n/LcIg/OcbNAkfN\nmc2QKBhH9dFo/cyLtDDeMb1aQBNodiNQaotRUS0wwoRElTvJ/83cmzVJkiRnYp+qmXtE5FFZ1dfM\nYLAAZBeAkMuFgG8UPvHnU4R8oVAowyWECwwW6Onu6e668ogIdzNVPqiqmXlk1gBYoUiNt2RXZhx+\n2KH66adXpMbH9e1fdgdaYnM2RlgRtWSLxnI1IT9NGfMkyMmy2wQWdjhNlhnKLAChbQmQUSmZLZsw\nIlzWQKQW5zTcm91nYsLtbsIuZ+xSsizKpACbmJMo1F+0Iduq1rA2hPrEiokIE1lUSPLU80glNuQS\nQjyeN2Lf2bjC8d1Ime5id/AF2HchVjf7vJpzaz8nXM2C6xmYZys+Fp4KVrSQxuokalhPFkljlgEB\nWAowH4Hjk0UNTGTJMvsJrbokoGj7l4KmYS8toLi6ts4+x7Pg3XvGhwfg4ag4ns5493DGj98TkBi3\nbx7x5qtrfPFmwhdfXOHu7oD5cI08K3BeUY4nrOdHlHK0ElQCzEWQVkKeqt2KCFKq4GSjc3eX8PrL\nZPHnDgyICWqBzmAliFTsJ8XXrxjvHtAASM4WDQQGZlJ8cUv4+pZweCs4VudmwaiOIFjJsg3V5ngt\nttaOxdqXRUxeRB5VBUg6NZKC3qIuoAGPFnKQUqtu1nicK/aZIXinJli9y7wp7zkJDlBMrqwTmdLa\n+XkIBoquE6GyRVMVtrrvma2+ihVCS0AGOFVMk2BO4rShWymNJOr7l7zxizmEPQhBzSls9+euWQ+g\nEBCOYi3qzspANbS/+hZYXRlcTwYqKyV8XICHxRG/X/wTcvyPS5C/dPzrE308TpbICz0RSCxRpQxh\ngy4dEeF7IEPITIBKQSnVTEZ4bQunXJJEkf0RzvtGZzaPdOPZwy4y/gxqJiigbqJZuv5+sponUq3r\nOpOh3OylWeGosjU+CO6CCKJWyL7UTqsQpIXUJU/vn5ixY3bBrSjqJWNrwVpWz6ZkVDGIHj4Ai5ww\n5+c+WUJJdjRSq+BcBAusPGtOvivRqMyYPGgr0WnRMiFgWy/zIWY/5ke8UJFAMWXFgQgpC/azgBNQ\nhHB/tmJE5lBVj1SJbE2YY5MJicXrtpsAmRlAsh6ip4Xw7qEgZUGatFWrZJArADiC9IxVMkV792rG\nbm98+hd3wOOT4OkkOB0rHh4UH+6Bd4+KD79/wo8/HAGdcH2b8ebLCb/802t8/csrfPnVFX75J19D\nyy9Qjivq0z2W5RHH90eoLtjvFfNsc3k6EX58W/DPPy74q7+ccP2GgcoA1RZW16LBibCWFYcd41ff\nXGOpBZxWAy2pgkOcCuPmZsLdq4xdVuTVU8dbyFa0Hs5QESxVUaoVp1prciNTW5kE8z0YBy4CF6o9\nxT9F8lnjnq3v7FLEECkRkucrmLXGsCIRAqordklxxYyZCWdRFCkoq0JzsoS7zCAsuEqCNzvFxwVY\noXhcgZQmKBSLVpxrQRLFzlH3PhEOvGDHBbevCG9eWZTI8ah4eCpYdQBgXvOkr3E1+k0BqRVlXbGs\nq/mdmJEmS+hjtr6xD2vB2ROblmrPcSSLUIrCfajVMsDnZEETUrH4XtOxzMTF8UcvyIEhLRa28cfE\ng35EVqMh18QMzQnzNGEpS7Qy9jMqImHXHIf2AxjyppysaS3UMz4tdT+nhFVc/fo12ePP58xe/AdN\nUdj9os98CHexmICJrRaJVovfnidzck7JNlHQJWaWBiZQq/Am6hyceeQttMnQRopwGxXfuNaftKqg\naPVu9SZYwcmuA3VcY68nj/eeGNgl8Qgaq2+xKpkDkbjxhQQA9NwF3OcQ200QA4XtXAZFw2So8e7G\na2AwcJgUAOPjmfGbHxXvz8YrJg5BDmRYfWn2+P/MigmKpBV3B8LrPeNmx7gpimW1TkAczlmuZkoj\nchMJPdFKXQ8zUrYoEE5A3gHXr4BSBGUteHwA3r0jpB8EH0+CUwGWpWI9Cn76ruD+Y8F3/3zE3RcP\n+PKbB7x+vcftzYyrmwkHugVkj7osKOcz7h9WLKcV9w+MDw+Mn+8Fv/gVoxTjdBFRVI7mCOYXmeaM\neSeY8oJaKk7HgqdTxasrc9rnJKCJcNgJbvcrXu8Eywo8FfPDiHq8NgCIkW+rKIokVI+qyCpgVU/S\nspkUGP0SK7VAvDMttYgTOFAoYjXC12oFJ9gbc0T0UghJhmDHwCEx9syQUsxZ6HtWfQ++PhjYOmTB\n64NlZj6siqda8f6ptoACZndgw8JOD7N1aUpZcXuwvqcqDJwJRzAK2d7YAEH/XUUcoDlY8fBUVXh2\nNjfKtoJxrhUnb+0WVRpXZWSYn8pa0VnuRFLFniquWHBK6o1Twmp8fvyRC/JhAP9gBIqjQTI0lhO1\nYvHznMHn1ehp2uzJxtdZcSoK0hhECaWo10jx1H22anJcbMmSh3swR4ieO8LgghfUbrljVW0alUgs\nFHFiQDPQBHkGg1tonlEd2yCoGBImC7OzZBiLUY2QRYWgaoGqogq7Z916GEZGJHGPMlBRJKqeaKGY\nXYhPLuSULJbd4txNUSQiNEclomb7xfw1DeY/o1Lu2m0Yo0BtijkBcwqBaj6C08p4XBP+/r3id4/A\nSanFQCcCEpJHgFgkSGLvpKSEf3cH/OWXjC9uE+6ooFSjjPbZWnxFo91OgfXniHUTt0mJwDvCbiLs\nyISoKuHqgZFnwtN5wVXNUDLn4MOD4OGx4uGnio8/nfH7bx/x3Rcf8dUv9/jml1f46qsDbm8mHHYz\n8rSDYIasJyz1hGmXMO1XlPuTdf+5rzg9FWSvAxSJPCArNrbfE65vgevHgpSq1TOp5nRPyYumKuEw\nC14fBH/6WjET4f0R+LgS6ppRhDxPwaytooKzWvniFCtcx7lDowAMhMDBU6+RyQjnoPmilmrWlRJF\n2XOnL43WM0pHMSdrbcgATmtx+tT+FphlcLtTsDAyW1VFo3WM0nhabS/PLrATGdAitj6m06TYTcBV\nVuxEraepwDM6GVG1pZet9lWhRsEGsEtM2M2TVxHtNVcA7xEqQK2AMqEg9ndCUTF/A1vlyFUIqQjU\new5cZQDFcj/oEyT5H7UgNzTrTj/dJgvgEpWTFZW3psQeKZHMqZg8fTfQrZOn5sT0cL/EoTnJQuxE\n3UPuyT3MmFJG8noQYc4SMXaTUSLJA1wF1DrthNc+mh530WWhbIc5I08z4IlHmS3SYimWMl+UW3fv\nsB7mRNil5E5R28gKBUQhtRid4RlkIIUkE/h7uPVBAMiKEy3STcY5qYVGJke1MC77rLaBigquJ6uc\nODM51WJTEZXznk/iIMQRfG3YQ/G3CW9yGsuCPMUbdNhGijo3oowiE05V8VgYT0JQWNSJ+Z3IFXXA\nVAaRFR5TFnxzI7jKBa92q/fntNhrVgCFoO4ENuzfhaRWT8hyJ5zFLyfAs28pAcQZEAYdCbubFa+v\nJ9y9mbGezvj4vuL9O8GHD4KHJ8XjSfH+d4q33z3g7/cfcXtH+OaXO/ziV7f45a++xN3tLb549Qqv\ny4JXv1zw6vsHTP9FsDyt+O6fKqZccXuzx9VhwrzLzqFXqC7YHRhf7xL2hxm/+9Ecpjc3gt1sdJPR\n2IqrHfDNHeFv/2LCD28V379b8Y8fJpzvLSSxkEA8dLOSwAivIL2kZxk3Xa2+rwCwo3o1AU4wipE0\nimMZSjX/hYDEyzCr+24cwzEnpDRBACxScSrmnGZm1Koti2CXFJpnnOqEnx6OWM4rlDLy/srK5a4r\njusZN1MGsfnChKxuTSJz7OqSsBYLeT0vCUW80QtZr9wx2IFg+1qkekVFa9Y4T1Z+Q936ZgcBrOa/\nYGUvt0ue2h/JTQpoQZ5srZ9FIKWAmXEzZ1xP7p/7BMX8Ry3I4Zs8BHlHRi89jLrnEgDDnGHO9Qbd\noN5uyccYgPPbORv3C4sGPJ6tzM1+Cu7KJnCeMnbVtKcUW2yZCbspDzXM2eObIynHzMZA4+InC4XC\nrBbfrMYZWnlsQyPqymViQiJDJUEbhfBefCEFWWRJOYZeOSWLWEjqZnAvhRqbMCIOwJbdp2QNIWqx\nTMuliqUNF0/YuVUz2zm4Y58O6tPwbF7aXAbS7ebpiMUBV3oRYxUImWzDdmRkbeImVuyIAZqstgsp\n1pZu76EcKlBRFCWswhZrTsUjBhRKBVGznBz5d07UXmuqSNstmd+iVlMUzXfCWB8Fjx9WaCUc9gmv\nv5jABLz5quCbp4qHe8H9x4r37wVvPxR8fFCcV6A8En7+5xOO71a8/d0TXr8+4PbVjOurjGnHuDkw\n/uTrA1IBDntz3H14r7j/qEh5Rc7qtV4Uu72l4mdXyLuZcDhEdyfL5BVReElv3F3beCYmvFsI/GCC\nTlNFSxNXqzRoSW22LmVISCMXVi3qx6tiEqynaLgNgainH+MpTodGbRND0tXRfQVZp3lPa16IcHBN\ney7AfiZMk3X1+u6D4O3RHLeluAVZqqN7IGlGORt1yQxoKUYjesz36vz9UyEcK1BJYETIEHboNJFZ\n99IsXak2JyKlrVFz+PvaIXNuVop6LD2m3mSE+R0qKR5FsRYBCeMqM26SIsGs8/WPiyO/vBka/t2a\n3hZV4iVV9VMx4S7GfICrCtSLATGsrveaGEUq2sj6dRJ5so8LbFFgWatz7D487rWfp4SDTgARzihe\nI4QxZ0tdjqiRhsChliGZ2TU4Gr3jGMXMTG8W7Dkr3WHJFimR2KwD6/JNTptoq2GsboJOzhcHt21d\ndxhM0efMJZGbnOKbSmGcHtg6mZyL4rgC5yKW+FGsSURmq22t8AxOhPD7tCSn4cdeoEavbOgLsu/2\n6BdP/rFZQROv3hPV0vPhFfASNNk4etsbRAcniMXAS1FHjzygmm4pjXdJw709B0CxM9VYJTehSU2Y\nswgyKq6vGfsrRpqBPDEONxl3XxDWM/B0X/DxY8H794off1R8+EA4L4y6rDiezji+e8TH64yrmxk3\ntwfc3s1ImTGpYn+VcLiakOeMdS22ppcKeVo90aTicEUu7JPx6XtFzkaFiFr1wmUFTitZTH1WvLoB\nFgH2P9keXKpbRRz17i15xebcXNXVlWYVeGlh3wPqpRcUHvvsNYSgnXfRPrbRQ3afLCs4i2IRC72r\nasWtlrYG2PpzCnCuwOzRIWdh/PS44vePAmFzylZVyOItERMhc8bp5KGzk3HTDO+zKxWZCIkTVmGs\nAMDiVtlQ84QCCvqzeiJbFXfergWUjO7kgQmAl5Zwsd8UQ7LNBzBDiLCgYi1WLCyqgqZiUTsF1KJc\nLo/Pk6IfhDUAleCcPNVdt3xUSow8ZQ+TCzelnyciWkBu/iSoKs7LCgawy+Y8PE8J5+KxPwPRyeAu\nMAmOhu29oERMiHsw/kRgzmBW1GLJOpkJMxtfZ0Vy1BJnxLIcdzm7E9TNqQFpVLWY9XMxjjd7Jbzd\nlLDPGTvOzk0LxFPjlyIo1Rs0IDrkmOP0JlVMXFuaPEdKk/Zntg44gd+N77bwNfvM0yJ496S4X4Bz\nragqqG4KHibycUMX4mEaDgt9nGkafhDZg6HV/LNE6M3ESbzGuZnejWuEAMK+KyqEpsatpmg+Q3AF\nTk0IK/MgNGxXdQHtzrp2UK90F6Y0Rue6F0pSS2ayFnFdKRBXvHpN2F9PqFAsqHg6L5ATcL0HrncJ\nV7uM6z3wxZfAskz4/XeC339f8O7dCq1AXRnHI+F8rnj/9IgfvzuCMyPPjPlA+OqbA74+3OLu9gZ3\nVztwnlBrwttv3+Ld79/i4f0Jux1a78uno2LeeUZuWoFaQKtgPWecF8ZpBZgqMgumySi26s5I46iq\nj3+CV2i2olculIkISxXU6lnFiiFvw5R2BbwjDhBNO4iA6N06ZcI+A3uuYLb6+rMktwpDjXskGRTH\nau3UziAcVvM9/CNW/HAU3Fcg0wTRigLBAsFXRDj4ev/pbHsuc8Wr2cKGKxhLMYvkMDOup+xZluKW\nQSwSd4GHLvd+nkJGgy4VuF8EuxneztDkC4mFGMOppqgxoL6HK2DZympZypEwRCDcr1ahkQOVYrPB\n2vEZqZUwYC8PQwRWPMm62Vv/TKumVwXPvhfCPbFx4vt58lR3D0ecgdMqYFotFdlPYZEo7HHRjhIp\nNnIPl+oEe5hMMAHP5JoXhnJ9E5Cf0+hVE6bFk4zGaomA1eS+3s1WZnYy9Jxd3pVSUMQiTTSUG2C7\nwvkMk6ERhjeE8WlXWYFAKT4LbigSTMhwB1P1ZKDBERXIPUBrJGPQMAdBSQxX2cxmD+Sj4HTa90bU\nG705pXHog7B3K6YjYrfY2BKfOCVz/q1dCXe0b+dqc9fWH3rY1/BE5K+zgwlDmeSvjd/B5mwKgLOF\nlqpm/Pgj8HffVvz2hzOur4FffpHwzd2EN3eK2ys2R9tecbgBHh4n3N0w5lxxfCw4nhmnk/84zVUf\nBW+/PeHhreC7356xv9vj+s0B12+uMB0Ir//kBtevJ6yPK07nFT+/XfHTWxNSV1eCLw5WXkCUcX9i\n/PgeeHxSvHnNuJ4ElCsqikWmgMCagZpQiby7TUgfF8ZuzdTw9zHBqmVKA2SCoaSsZw5Hy72IBmFO\nSJNFXHGyBB1eudU62tBtENSq1jhaAUoThGDAQwiLAqVaFyB1D2rKCZzsmYSsCBgUWMRKHBe1wmGo\nguVk9OIuGZ252UjN0amIGHKBZ3B6JFmpABdgzvFZwbA5LMKIg44iCDmlGmtxcLgDsHrp1SEEfzoM\n+zM1lsBmfIZ3sKFWyNBm/JiD4zm9Eo+Wk4X/zDk3tMAETDljyqsviq3gz6n3fBxP1rfqOHA9LReA\nN6IwjlQdLFZY6VByQW5dUCLk0FBImFzWlsybLXu1Q7hjs4ot2LVW58W0xbRHg18Zo1m0C5OgbUbB\n5B9pIosiYcFpDiGFetWg4DBbg+Ph+V+atX4NunjfBeggJOMMTakQ0CNZTNhyfDIstefhMHYOH4sq\nArD4Zr+8B7+P8RrPzra947jfptQRFAHa33GV8V+hUC4AScLDI/AP3yr+1/8syJPgF18Ifv2l4Jdf\nJvziDeHrm4KZAZ4YlICbO8bru4T1zFjOgtMT8PhAuH8oOJ7NIj2fVzy9XfHhxyP4MGF/d8D1Vwe8\nuptwtU+YaAdNCQXAqQpOK4GOwM/vFesjY5cLlAWPC+HHd4rHJ2C+Isw7o/XEn8P6Xobd1QMNjNsO\nIW6LrrqTmdt6tNGNaTPWJRSnn0el8eDqYKESOdUIzyj2mPOm2O3/VaRhAoGFw1pTDXOUF3Ffk8uA\nqtbFflXvreUoehGzWoUYwpZIVbTgqQIgxi4BUdJ6c/M+HtY8nZogj76htWprYYdmgbgH3ZVArGFL\njjMKkUeAQCanYtzNaTzcwsXxeTsEXYTVjbQH0CkNRhfoheqLsoTJ65R4duV5WVGZwFP2IlAeEUFh\nqFmWXmZLu46r+hJs5pS6qQP4InehnIgxTQnTlKwWh0+5Dp+rVZogJ1XkbHVUdnP2mtx2T2UtqHVF\nLdbJppPpDGFLSY6YcYmQJ/ImwcwQsTrYRQO1GyUR7MWzuR90Vqu2N6BsQ/9eiW9E9hfjPtbGeEmA\nhjC0P54L40vR3CiYZrYDlpFpwl26sdEEAMCo1SJqeiGKjrLHzRBvjVZAo8jHN8fPMXlj+R529ikt\nEOXP2OdINOFcZ7x9qvj4VPDbHyqucsHrK8GfvCb8x18r/vrPD7i7ThCcwbuMw92M1zsAVXB+qvj4\ndsH1R8GyVDATjkfB45Pi8aHi/ljx/tszvv3tR4AZ+8Med3cHfPGLhFdvMl7fZhzerWBRlKJ4/1ih\npaDqioUyfn7HOJ4Jt3fAPDGWAgCzxfIz3PfiSUfceeIejeUCORpVR3niNptbdGmzBZdl7vRUa3xy\nPCtQDa0vVXA8A6AJnJJTrn2ORAlQgTJwLhVaFSoFC5LVfWmzQSABHpeKI6ohb7WSwQLBuXpkWkrg\nbL1xVTMWKchicoG1qxC6mHuJuj4uE9TLMJciKMV2VfLwXDhg6QX3+vnCTzPukMvEH/oXFt9nEeTJ\nSU2rXy3DJA1bdHD4QU1wJk5gKvaJ4TnjszkQqyjWtUKTFZiKWPE5J5SlVyDcTYBG3ioAACAASURB\nVAk5d88y3CQXba0bTHgSHBVaGn2eM644FIR1jYF/tjqqNWuArfXXZCZcpAYn1/5SV5swr+Y3uVCN\ndLmiXjJAQhsbV8bZY+TYuPckFQnhfJSGPnsSxvboQT+OTgNJ9gH1z1AHxuN4YxTgHbnGu8OVsHmV\nuvCP62L8XlMwHde1TRRp941VYkdvdRMBYfK8+1u26wSdLmk0FDn9Ndx3bC64hTRQPM/+3YyK0wpQ\ngCumWXF7AL66MUW5iqKS4OMqyA+EL98Bf/GnFa9eJ7x6nXB9Q0g7MgmSzDm4r4S1ZFwdJtze7XBe\nVxyfKh7vK54egeMZOK6E06IosqBWwQ/fKr7/jlE14ccfCV+8mbG/2uPua0XGAWWt+PgAVFlx/7jg\n8eEEqoK1MtazWAMPUVhcejVMrtlWi1trASyjxIO65cTuUB/7dJpfKKzQ4JhblR+sRfEk4YsxRK6I\nyCzpy2j0sfjcLGJInjShRvVIXw9WXUc9xDaKtIUVyJYcy4JE1bl7f1+47X1WtJZuYY3Fmm/OTnHn\ngYTi6qHJxA7KN4u9q7agJTc03uXSiq+8QOnF8VkEec7mvDS+qyM5qz9vv7MPmqqiFqNTElsURonN\n5Yf1RnQKhgwTiIhVsIOdc0qW9noqFrmymzMO+9lbsGlbmBoalkOldGeXOdttIeYcNaWtXkQ404Lr\nIpgHnDk1KqVhRBForRaFo1HTxQtlOYwWslKqcBONE3mNClMS6tI1wawKi1jxeNe2lDqK2h6DYGro\nQJtA1oae9QWcjU8i0pdQ+ebdGAMaS4RewGX1fxswpsZt0yCEVaMuB5piD2uIfePooPHH/R8md+QS\nbK5P3QRp/tigZZoiivV3YWHE9/waUxJcz4IvDgKpFp+sDNRVsRbFw9nqy+8PwM1NskYTXL0xg4AS\nwBOZs5MZt69nXCtjWQpub43PXRZgXQnHY8XTifF4Bn7/fsHjA3BcEuSUsRwTPt4bMjzMjEwZ+z3h\nqy8Srq8YD0+KUirOi0WP7LxMRHdiaxMwipBXpiitHo/HF7kgp8GMCyd3jBZ15IBApQovAlrgZW3D\nnQ5AZRhlV8Ad9pvvgAhEBg7VQQncoa+Ad9uBtYBTAByZyepjrV5KgNraMzpJX5hlOAgYaNa2znyt\nMXnvVtv7ql42olmwA5Bpf/0rjhdvxo7PhsitrjRgta4BNBPYBYqn65ZSoFWQcjaEywxqAfd2MFn6\nfHLzz8y3NkpgeLz3PCGdKzgx9vsdDocJU7JrRinKjUSHb3gKpB7cdYVW8VTyBKbkZUMZeUoe8mfa\ntcJqk9daABUIA+JZalZsy2LQMwSJihfad08/vD45mQc8yBtx5SZOnB0my06M+uQmlHuM7yUlos7b\nhSlCiqGrSzz3J8TyCFz/BWrl8ouB5DkQfGwCdDRkf/dsOozWQuPUe5y+1V7HBjyrc60NxVwOQDyG\nvxVKuNsC3gZPxBX6sKGbIrg8o4K0Nl0kYCRVHAh4NQF1Z1Xv8qQ4HsVQCxe7FyGwMJhXWFfoamhU\n1Cp4lgrNAqEVaQYOu4T5kCHVKkPqSlhPwLoknE4Jrw6CD/cF90+KnCs+PJ7wm98sWNeC25uEb76e\n8We/2uPLLxg5H/D+/gof71fQw4pvVPHmoeD7R8VpdWcfhrXkfxmYIBfiIcvCFxROuVGgU1uTRlnZ\n560khDdiUBu3Dry7Aolid3DrG+pJWmTZpgS2DkgwQRrOUYLXBFcLx4WiJ47BnFvW19WCLG2NFU9V\n8tWgvRTBdu0MHHbbE0CeEubd5DLL8hgi27hBigHejw0qXqJwQiQBHSxcHp9HkBMB3mzXTOaRz6XW\nFMAsIEJKE1KytPWcrS2TmXcEQFrXebIcbaNsKDqz27ZK7NXfuKN9G6v4zfG3xVc1oRGB+xopu2re\n7Kj3nFzzBnKzhVNahbaRnjGe35vGwszMKCxEqIiEIWt2zKgON83rb2GK52IFjM7VzPW72cqxctAV\n6OV2RxEbv7RFCEekGJABjQavecnNsRUCmBGFTnv9GxNxFiWi7Rp926P1PWxlZ2PUhxuzcZauSOIt\njXBNwASs1fwzEUCQRiWR12mJy3ZkqLA1AW3R+whro4WCtTY9oeTQ3FzhHg1qi9rac6QZyh7mSLNS\n0z00zQqnmTDKbnkZMIxt66JQCKQW3UwkIPG15w7oWrXRbhKhuMn+LqcKycD+VcKvryZ8+cj48EFB\nCbjeK5a14v7Jaq6/+6ni8eMT9ruEaceQZGnwE09482qHq52NrvhkckxW063UlDBFMaythneLyMcz\nIhkFEDZ6kgRo7QS9rn5dveE3oSFZGzeO2YKIInt1QmFFUSdQtKeuh1EVYIDjnvu0bZSyerBCNxQM\nSJDviQ4Kw3FvDxNNvLu/QKEkIE5mTWXj2AFsun3FxdqfbalrvznyfeNoP777AiYB8BmdnUzRRsod\nUoF51CiBSNSJYjrGg1s3+LV45fUB5VmHHwCwzTOqNYIphtljO0FBi1hBqWDEJciwtgTCvLLXEjEo\nGUpJMCeJOQVDYdj1DTVL07QhOqJUQBfeAEGGq7nQoEi7sHR6S7pQHJeCh3PFuRrfmphwSLZhmiAn\n8m8OAnFQ44E+KYQQ+h4dY6cbb9zWFTWBhQshjs2zoy/ScdHp+HeP9W735aPe7pti7vq4kHZ0LMMp\ng3MNKd5nrEdZ9Hr0svk2tSvEybbXbzSC380nahYhFEl8um9S72OJWK9deGxN6uqaw5UC9WSTQH6i\nisjtEjc5iExgUIZl9eaKSoT9dQYx4cNTxc2VgJPi/hF4eCI8HoHjacH90cqk1ay4u9nh+pAhXLGs\n1lEqiLVn7EHHPdv5vRiPAOUUoYrjl0IJtDwBU8LkPDNHBJc4kvVcBxHbe7O7iRZVkFjp6cbGQFuI\n5CAXR/Q20HxosqUJcu8/uo3Bwebe4f4sdWGrEnvegIV1fzIrATBB3spVRG9cDOGVsPtoeTJtqBpy\ncLDw8vHZ4sjZI9yZ2bPCRgOWWuo8J7ZkGNiD5hycc48ssXhuQ4sxQDEFhARS807vmHDI7ELVtGpU\n7RSR5gxR51ctjMgGMhEh59yzQFU93KiilNoWRDja7Lki0gQ9LTkgDo2VzYGmdCieP2Ga7HmqWAW9\n47ng4bhaijVZ6U54BiOFNG5jGP//1NTHQh5FznbxxjOphkD/pBT7xAVo2MBxL4GE/9DXnr8ZAjv+\nMsHiFsPIdQwb1wQIBgnkAn6Dji6u7dcfqYHRT4JQaH79QE1bVBqCoJ2wXV1VMI5IdxT3SBD7TtA7\nIw/bH8Uilzy6iAn7Q0KpimVd8cPbCk4Trq922N8suJoFr2/FuPSnjMcHxtv3gncfgHcfCD9/YJyE\nUdeKnx9P+P27iqczrJabGI8sRB0xtpEalhw6Bg4XSzybxd6L164nSFFINcXrvn5DvpxAYqV2p0Sw\nEiZWbgBOl6mol6pm7LJ1nuc1kgUtl4MHy6/PzKU/xKlLWAhy9po5XnUa44xul0jw+gPQCGUr2hJ7\nyGUYe80f4u5bUThdM5y7FdNzhaVi5ckwrkVgeK7t8VkEeSkF1ByRHZmRCwujU7gJJxEBmFuoUCD1\ncDImjwTpnTt6wwOoaXomq6T36mpveaWJkVgc6Vg5zaUI1ur9IEVQSsVpreZMTIwEMcerSt+I8OL5\nbIu41tonFmjKASCvBwJ0U20cFXc0htBUsd7qZCZ6N7vc7GvUjx26EZjPz9v+ajxdH3O/TEcpCMFI\n41n6hrjYFD3EcBT+F8t/yOiznxHtdKj3/F4DyW5x0Rj9Mrzax2ArV/szBJ1BRpPBlXazVAanVKvv\nMw6WX6IZfYquLJp3NO7IiSr/nlW/s9IKdrSI+Ua/dNglXqDL1078CMGKSmn7HOAUSyUcnwj/5R+A\nh9MZu/0ZVBK+vAOmCXhzl3G1A673BW/eTDg+FXx4qPj+QwFPE451wj/fC06Vsaogqaeoax+Fjh7t\nzlursxjbYQJ730mxRtAxtmoIHERen0SbIx/sHpKgMsnAhWi1WkkaPidFTcCc7b5KqShe0YU3gvji\nfjZT6cEJ8UAOxADuuQuNBKe2vuPfEMSRuGTRcckj09SyVAEgEVh6qd5EXRWMeSl2Y2rVSWEJRkES\nmL8s6jY9Pz5Pir4GN26Zm1UEVH2jw0wpHuufiLQoB0IIc8v0jMGJyJBALZOH+sW34MJvnpJ1wgG8\nCpn9XkW95rI0YSKiWJYVkghAwqxmKpFqWwiBwpWoOUKBAdV5uzcCQBqFn8K0vzz8bh3W2ELpuj8W\nmsnELqn+YJNpeuGlzWu+oGh4c5MBOXy+S/rhvVHYX7zePDTD16mfb+vQjL+fn3c8/8aGaYI8hNpW\nmfVNfIGtQgGGUHYF2qyqURgh1utL9xMUkptcpoE9RNJzCxqYjr9rUxwmFLRZdzygWjSE5zu5zXXc\nk92D5caoOw8JpTA+fEj4/XsB5YJ9AqQC+x3w+lXC7qDYzQrihOUsuL2t2N1am7efHjIUq9VQCcqA\nNljb7+HiPsM7eXFY+Qynutqa8oQ5IkCsHgoQPiTxcbXwYQNoCRF7bR+1RjFLNZppR9bycE+CMyz5\np895n3JXQ4M1Ncwvom2d9+rU6q/Y2IcSaxh9WM9Mjq7J/Hf7ecJ+zthNyXhxVxIhozgiZqBexC/O\nRW1N7OcZ1znh/rhgEc8BJ2vsnnN6PtD4TII8hC/AyNkb+3JEsfTUaEKUg21GMVTVnIaJoShOY5jg\nj02nIphS8vK0TsNQxLOG0BavAWFFlIpWb9agoBQa2TS9qnFoVSfjxpms5+Uwo9V3l4i4orGMTQk2\nXNQiU9gF+afoAwxIb6A5NBAD0dYki39HqzeOFzbX5fHCbWzeG6mVf/MR3wkZBwR8vUDiFwL4BeXQ\nnZiftC47BTEIalO2emlgfOJ+/3UPGVX9WhSc2coIpRTI3uR79IwNVeWOTPLrqaFxS0O3MTG07c60\npqNcoEdSyQD+Q+ia58XI47UA6xk4EYFRsZ8rvvmSsHvN2B0YxMnCXVlB+4p1zVhqxpQi6guIsEEh\nxSg+1IHGi2BEQ2SioXUmU3TK9jAcfiXV1jxFqFcFtHLMFfvdDjkniBanMe0ZiwCnCpTVkP1Egn1S\naFXvi5maXtduPlzMv4cnkvuwqpXLyCkbULvoBNbXyAVg8XMxWQPzq6sJV9cTDvtsOTBO1QQFZoL8\nItKqnYxAxLg9XOGbVzeoP/yMuiwN1DEDKf8RIfKUxmXRCcvuUBs5ykFkEVqESqqW8ZW8rGuk8lox\n94ykPfVe3BQVEaxFcC6GvkkBzhkgxvG8ojgtYtmeGZktpFBh/J5WBbx5MUfGlrryqJYYwD4ZVYC6\nFqsi5xbI3SFZxAoNKHs83LSOZ6dQYC6EzIkjg7yhloQwct3jQQhhHHSMn3tDjQDhGd+g4ud32JVs\ng7RxjpevvxHUG2pluMjmfjdwfwvqx0tYaJK/3okfb4XQ7j7MZ7OKjCqwYPN+391C7Pe2tXI6uguu\nXMdnbv4d/6wjdJGIlnGhJWg0WVATQBfMvVSz/dRq6d7iRcTUhWGn7pzmcmkkKlA6I8+CeVboaog3\nzYzrK8YuW3SUiNUVL2oOOoZgN1Vc7+1nl41OtHrrPja+NhUwHnhjKUQYnjxDFERGqaTEpjgg0Cot\nrb2pdTXQ1rwLzFirQBcviqZRATWmn1ALWxvCxLieGVkEp0o4CnnKfEfioD5fsWY42WSvonh4eARz\nxmG3w+1sTWIaCyD+bINVFzRuj5l3YT4l7ObkBcgIxKlTd82aCuuir0FyuZE54eb6Bl9/+RV+eneP\nx3X1RhWx1F5GMZ8taiX6TFpI3uhmw7Ch3EFA2+8SGYc+5ahRwhtc1+KUYQg7zF3rrem5d1Vbur3A\nhOOUGZmCc89WHhUEqMWVti7vzud1Pts5LAIoEVYVnFfFaalYizml5kyggysdexJsoxvQeGq0jR6m\nu2EtBMIZxBb8LyuCFf0xn0/2i9RAjNNm7w0jqQC3mFvaJtY9O/TFN9rMEg31skbpvLmh8d3tZ9SF\nAiUkSq21m5WmVaCtIGrniq3HTmjywH22b2x8C9I3e2iOdqvx5LwR5v3xB80ksIqVwl5QStzaswUU\nY0Lh6RNYTLSfVVS8i45aw+NiV1rWYg0kyHhl8nBQDYXm85ayIGegqCkCygDPQJRtsKhWQVXfC6pI\nLJiyYJ7s+1Y/KNaf+wyAjrgVW8Hqo23ZnR6NphHCN+xnNLJlqwzj9ofPiiqWWjAhWgqifQ8KsIoh\negdxmYEZVpO+kjkKo0tRrIseFWUIlxNDKeG8KEQXqALX0+yWr81X9NsNoBOUioXBal93ZD1uUw4f\nHzf5YMEZ0flL+xbb6j2IKo7LgrcPjzhVzxUBHI50RXJ5fB6OnEyrQ73ymafi12q8VIQCWaGiCFHs\nAxAe4d2cMXkiUJSQlYjcpyjk4wlDZO2hMANTFUxFsBbFuhqS3k0ZU4K3bDMTuAjhVHrh+5m9mQLi\nBwiLIpMVtRJSHE8Vj+eC+ydrejslyzgljYiNEOYAYln7c0E7I2dve2uuSAYCzFnki6nVigY6hQBg\nmznQV0rne7fOKdt0svmu07e+iUOo9dC+QBdAbEjdXCM+18MW2yOhcf9BtcR7NDpKIyYbTRkQGBkT\nrifgZrKCSVVDOAAFVvxJ/d/saGaFtQFLIEsWGWLbG0L2pJPI+gzBDQmOlwDvrC6IZwjkj2ZBGHKu\nkEKo1dqkFamWgq4mlhIpWBSQavHVdTumRRRlBZZVcV7EG54AeYI3iNDuF4qRb/H+ACcBe99ZJEEl\nQRFGEctlgHj0DJkviF1OZLZmJ5rE0zR8DDI3Id5ghPPjVa3bFMiiQPp8GoiKPBFjh7g5R5m9Lspw\nXrKmn9b2TAy5x3lDWQVdxiQAJeshW4tVIiUgU7Ud4wIeztVDua9t3y+JGUgTgIxSFpzXBYqphUQC\n1uzBlLwaLQbAWvv1Okz2oq0MJoA42bhRRK3YYKs33AjrLspwKwASa47+w9u3+PnDB6zr2vZSp1bx\n4vH5ytgOGz84bhRxHsm1Gdoct0N9kWRmUHYeCtZVm7zZwZSAacqYpwlzmmDISiC1oorVCie1tP0I\nP5zmCYBglYrzKljrirVY7ZSbfcYhZ+SELt0usCmHsEJHuk2YDQLz3zhIbYz+/zpGp4odbnbCs88Y\n5rxlq0UBJY+esDRzVe+8Q/T81l4A5Z9C7xGjHzYm88tjFGKSyAR2qUCWiv/+TcJf3FhDaYFVnaxK\nKLASDlXtNa3WUPhIwJ9fV7w+FFjbAHl2pfE/E8ouPLzMsf0n7b6ePVXz59i41aqoq1ipUxaIJKxV\nUTXASY0v+nctDllgzR9Kgf+Y5bicjZ5hF1gpV1sh1FFhS+YKgacODhSevOK2CJFnFqtTDH0UmBIs\n97qJZQNZvo5z5qaM4S3ayDl8bksjlLo5J08FTluqKzR6PnZojFfjxDdUFrZ7STThVGycWa0hBcHa\nDrTeBUGBGPy3Z2z5Er4X2FU2e/PylAAISi2uaAWc+ucbAIj7GrcCEThlpJz6vbtyin3TdrU35ghh\nbs8EK57n/jofHQ+9lGfyMI4/ilZv7M7L8OoSj8tRW0IQwVG5G3ORpZkcMCROyJkxZ8KUrRZ5t2Gk\nhfQRkwfik6VHO+JbSsV5WXEuhp7EN0HUWqYGUYHtVnZh2EKUXBkx27lbaGRHqXbE/fmCCjN+PLUR\ntsCgKP5bjk4ZdCXTz6ddLxEsK9H7EBLU27pZr8Qc/P5LQvzylJ+8X+ofQgiXl504hEhmJFRxgaIF\nX+4VdRcO7MiItYgAK8zvOWNiRfpXVnw5A68zkNSaijSh/Mkb1b5L2y1vH7whJoQED7QK35UwJKhm\n5YXzs6kDRfPfEDw3Qa1yZqmKWghlVQgD50VQK0yokDUN1knB8FThJiBDyFBslc18qCiiowYRWqhv\nzF8CIcFS130LOGqPeGgbB1Z7LSoEggzth+g1VtOuU8SiyIzL93mTLgzjXpoj0IfPLJS+r/rMmKJd\nqz02UUKOCJ54f1xtPo8hwAEvQBf8tN+J0UIMC/+UPt9tfEYvzrgW+tXYa600B7cSiLypTZyvWd7D\nc7lssYxR3ezRZo/8sQry2AhWYMo6ZDMnQLlp9eSCHGS1ewFxPlgbVz5n60A/TQlTIqhW1FqxrKtT\nE0ACMHk2psKQWlAaRQqW84LH04JjqeA0W0ISqGXsWW2IGNRRGPVd0mQuRVJQRxGB9EKgdwmh7VdD\nHdsxGmkLi8P9b8PpcR9hRj+bC/8/Q5HU6oDkRNh7F/OrGZhZPyFyYyzjWmj6QS+v1TZl+/SFlTB+\nVBEF372yCjIJ8lxbxmSjXxTIw+ZRJZAmkDKQBAdWvGJGlgnEpQkz9Q3UQtxiPFwokmvZ0YppkSMX\nVBBCJLgQYyUkyUjqyYZMDXkDIdDgQq0LciuDbHWtSzEBuiywin0+0GUVyGyLYc5s5WQdxfou8VT+\nviYDDHGEGMKqckbH9+B8s5vz0SzFfE3b+QpLOnnpBE7Jo7K0JfmJqkna0D6udqNukaAj7OCUTXFI\n44cFQdlsV0Z0arI8kQRR67SVqO/ZAcsP+6jFwDWKMkT/uP9UPTKprdVYaBg2YF8w7bchKi9CUCmC\nI3yvB73ykrXedUf3kdlvXkvgheOzxZF3G9SFXoroE6/mEaYbEHaIaTEy4ZI5Y8oZOWXj9WBOieVc\ncW6IxKDInAmTc99MxRezNYSdvRPIcVX3UjNyJq81nkGwnos2ohxLAsONIWowAD7Hqg1lmQHRHWR/\n8Gi8dgiQ7aS2FUablfQvnLNz4f0HHVnBeM7IQJ04424PXM3UkqhmBiZWTAm4mSqmVpryX/FMf/DW\nhg38SXPDBoEgmJPg7ppxs0/Gu9rdu0PLP61myooYrVK9/CqRZQvyTFh3hAwTsqMJEU7yUUj3CJ2m\ng0N9tM+gnwLqaduULCFk4orrVHBOwElNIJVG63htbDUHJ3zNhCCPOPIqAESNZmlKxOqUlNnC8OoO\nUGUsK3kJB2BV9GJoA5/exnUAHL3+fAWrkSqiEf6rvRWfAuKJeEpmSUMLoGi+reY5ILNiM1kD8YbI\n/SdATxu+gWJoA/7CmhnpwXAak6fyK6z8c9fIYS0P8iT2lSuj5Fnh5HKpgS42n4zHPTYxFHsqpH4j\nS9o5GTxlkDIU1R3TpvClird268DsWfKc/9++h7ZG/tC+/2yIfHPvbuKkRE07BkoCfLH5oLEX2cnJ\nJ8AkZ48McM5UHTUkgpdUiYJH4lEmbnqx/Y+9jRIzY85sSiK7HmxVBdH+PzzJH3xADe27MSKff582\nMLuHB45RO5vrU/92T9q4OMYXRkHekhPsDKIeWkmCOTNe7U3rZ1bMSZBJPZJHMSMcvhF18PLjB+q5\nvI3L537p2K7X2HwWg59ZQDlUnaPYWCtEVjUnzHZxnhwAU0UiK3swVrZ7PlhdmBuXSoOCBXr8tKNv\n7XMFoFMDYlE1t3vGr7/KuD0qHhdr7P2weKQIkW12oZaKb9ywtEYF1cPoBMC6uqJw/riQ8allLVgX\nW/WPp4zHk+LxDCyVwGKlXrtliPY8JqwAlnCSGjUyZWDOPvIUY9ynw/jhXovH5ky9ngi13Cj28F/2\niBJGi5Ztczeu6uZ6css1BGQb3WGcya/Z9qUOc9KWjba1ZNRXSHS34lyeJOamqMgFMXl6Vkfw1GS1\n3Qo1BD8eqvCOX9msBGFIBVKyqJ4ATI2i1c1i32xkHS9onudP7prPh8iblmx70CkUhF0KANY/AR6Z\nwQRy8y2FAG+NBdwhB5968s5CsA46Ddk2D3kzuBATTm4q5nkyQUf2fqdT4gHwaQC5fdD2cb14rdlM\n8KX3BwA2+X3HOMU6UPXwsfjQKG8GVIQRPbDVcUmJLZQNavU0oMi5YAejqRiCzJY1R6Tg5FEydUgY\niU2swyXGex6Gq92Xn68rK2qvj58OtNXmBl7ejNRotaCyEMubPATUNy+zm91ecA3cNm5ulQ4xXDse\noq+HuB/yD433FAraEFXMC7fvRILJ3QHY7xKeCvBwEjw8Kd4/CpYCXM9e3kHQHcoeqSFVW6haVRPm\npdhci0e5VAJqUaxrwflstMjTAtwfFfcnwiq2wU8rsJaO6shNPfL1Xd0aSUyYJsZ+NotMAFCxeS+1\nZ0B3QWnCRuDlMEgRXZrIY3JJnTMGuuBzi+5yT9htDVx0CHVswUzzJTUl6sK5fYD7UmqyhNqpWhis\nAzejc+1r5DHv7PTUpYwNp0EUqRvXiqqVYFA1YDrPE0olSDXrDNRWT7+RC4DXq40GAIw3CEPP+mfH\n50kIYjbTgmzxQiNjk5rDM1uJQBA56vY6x+wxnRpSjYL3ZdRiYXxM5PHlyTRsaGsFQFZEa2OpRFgR\nRY0WQ0dVYA1YRS2guqEFXx+xQEYBekljqD2DcosjGAT3ZShjF+1GJ/jGg8cc+0qNqbfGCgMHenEP\ncapwto5CPOWENBuvyKpIYvHDUrz2BXwhiSEM8vRpl/4tUmLr/GnDAx4W6Kis2eviAF14R4QS/DlH\nFqm9jp4f0J1TdkFu44q+y5twkW6C+zw3A54AbnNJ2PDgDERNnYhe0UAfcQVFX0cgX6vGGdTKSCiY\nZYUW6yF5mAlvJsIvXs0QWCbgzcGyGOFWhFSxHIdKqNUEcPGm2LXYPZRqjRiYPBZaCLxaL8vHc8Wx\nZBwr47QCWQsez4SnM+HpuBrNOLOXifZ5cBU0MeMqAzeT4tVs1sCUGOdKOBW2uGYSj6gz2rCqRyiS\ncens4yIue9mzoOEKL7Krg5xuvj+EYPYQZPdjxT7QSOIidvAd50HLiG3rA4rIr6Awj7hjncDYYugR\nOQ+lnxNb27fa8yZinuHZntw02RBbDkIpgofTCbt3D8gT44s3E4gSOAE5extqBSyIwO4mAGjsWzuz\n7YMW3tr2Qy/yd3l8noSgoR5JK7/qIShh9gfyDM0V9RYAQQrJFecb0BlgvdRpdQAAIABJREFUgku8\nBCiRtXVL4SSyTwxCL744CCam/hptrxXm4CcU4/Nn/ST30AXC8090uBvvtagMRyqBPntHlhCOo/No\n2KwD+kgpIc87TPsrgJJZNeUETkDlBbUUzxY0iJKouHfA8cTlDQ/yTTV8DZ8ajxiTLQoZ3/uUIG8U\nWxsZ7UlU6OupX2vc2AOv2gRvt/rG++vCRRtQH7KZnitrv6Zo7TNFjOtr4OuvCUsxRLsWYCnA2f9d\ni0AWxbpYc+agB7VGVie1IluGyK0URKkWYtdq61NHzU9nxWlVnArhWBlUFQ8L8HhSHM+Kw+TPlAmc\nOvXgog0TBDMJJkcGSSPD0SWzQ+IoOxuUhclSQiv+5dy6RgSaxu6NYeQByXaFHwK6RYiN89I/1UHV\n8IER4Y/upp430R61nbOVmwW1n8RkiJwI0ZsgkAj5ODTg5eyCZeIqzqeK02nBskSTeJdbDWn1tR9C\nWi/plVh7m0cckefz4/MIchE3t6x9WdQgGAe98YUa2r8LESL2DewCPExcX2hKlgWnYg6h62ly/t0R\nJmxMQrk14ULkqJwbZWHFj8YwKdvp/+a48A1P/ukJ8SXn9xUKqvnTvQKkMXhzAnbJXWbNVEb/ro/H\nKHCYGSlPmHe32F19hWl/jVoXnI9vsZ4ZoCconVFXBXkW5UTABHOCFZYWhR37Oh6luR+pKzodoh3a\ns1HH8WNCjpnTzwV5zJcFNTiWcUK1KVbqWbdtpnw+N/TZC4rkuUx4zn3HEwIe4UHczkXkSFNLXysK\nXN0odgdCLRZxcjoDx6Pi4UmBJ8VaBNXjoKuYII/4aamKWuEhl0a9rFWbEF+LheUGKieYID8uwHlV\nnIviXBhSJ2s+fC44n4FzVsuj2DGm2TIbCZGkIl4ULqzk1BpaVHf4hSK1IBRCAlArXJgzLLvJLJDq\nc2sRR/CYIwvBVHikSeSzbs2bi00Re5PCKHWAFfNH/TVFkxWEAWmH8u672EOXXXBTULFjsl3MOPU1\nOMj1UFaxCUQFaynNgiL28aBYFX0dtX3gykRfEAfj+ms69BNy57MI8t08O4XCbfQjMH6QCt1pNTyk\nqPhA87DZ7Hs5WdZYqRVPpzMgisOUAE1olEaIEDITyRaUa2afJdOuAqmeug9C9WzPf6P4RjzMGLXy\nB8/RhJ4tXIs5tgHYTQwlxi6ZhbFLlt24y1tlNF5nFOxNkE+vsL/6NV59+R/w+qtfQPWMjx/+GW9/\n+i3o9BGpFDx8fEI5reAquD4kXGfFBMW5nPFUCs619nuNORxQkJnKGyC72ZB9w7Uhapv0Yig2G7aF\nZAEbYWuCfut82nYxGm4O/fXuTNY2hqrm8Lpcj+2emrKhJvTj5jWck54GD1rBSbDbW1bmbq+4uiUs\nxTo+TaSYklud1bKbOy9OHhNvv5sQV6wrcC7qyqsLnlUYS0km+KsltFRJltFZCOez4siW2BW1U6bZ\nrGATkoQVhFUZixJWylgEWMUsv4kZSa13UM8qtcYZ4oEGzEYjVlGgWrJQq/VPHs4ow74elsA4twBa\nyVbLlrS1G6h9AyQo7uVlcNTO35aSSYPEPXR5ToRCCtLa6NWAcAS05+33eAnM+lWIE1KekPIMoIIr\nQFT6HiRuX4v1Fs+/zZTurw8fevHZPk/1wxxx4Wg3OHLKjRsLa44iLlQB9Jjy8TANa9+vcBqBCFPO\naCFKbvLa57XV+X3J+xzlJnm8Fm0F8r/tCEE3SqftwnspnjRC0RITrmbGYQJ2LBbSlQj7bMlQ5om/\npHwu/iLjyKf5Fl988xf4D3/zP+GbX/8JiAs+vv8Wv/3ta3x8/xZlrahrwXo6QpcjXu8FeyqQ5Qk/\n//A9+OEBJHV7jUDZFNwibe9guJWe0XkhzC/G69nGpC2u2aBv1hfWeFAH47m6f6R/fnRYBcIfhbR2\nYdGAR/98+5GekRjx4LbC2C0mRUoVO7KSpHPOiAbcDYFXUwLBg8drNV4rZBTNSghLJNZvEcV5UWRm\nXM22uE+rtEieUoC1ErgApyXiuSumyWYrikxFuzqolZKdPImqO9Y7Qo3uPaJWiM6e3fa2cuSCeBgl\nAWsUzFITka2TFgJUDdVP23qOXerNnr15A5isUumztTNCmGE5wR2J6AowJcJhn/HN169xPJ/AWbHf\nTcBpRUGs447ibQ3os9OHcgh2gVPCNM9uLWfUXVdMnTXpyrCJmIvzdqCypfEuj88TfsiOwTUQtkUV\ncJCVwW8jHoA9jKw77UaRFU6NyDRmAHOyZs3zlMEU3GVMsU1ObIBGkfqmbQsU7sCK+0WgvH+9MA+d\nvpFXvjY2Z2lIHJtnC1Q4pYQpMxIpdrBntWxW+EaNb/dJj/W8QeOJMc1X+OKbX+Gv/9Pf4Bd/9ivk\nHfD48ddIrxi//+EHnI8Vb+5eYT3e4+H99+B6DyqPWB7eQz/8DH2KuPrgRv1P5mGR6+ZJ7N/euuwl\nW7IjnRGAaIP3gY76yKk/XwzfpeD3BJcN3xpeMz8PbRVCu268HeeIcUUsk74OmsLViDzxOHA1xU9u\nPVpzBENX7FSEwCiIqtWRtAntOgj2UqkL8komkFermN2AECx56FQEmROuZ8aUCVDBxCbAajVUzwxg\nEahUj+e29oUmyF3heH0ReFPx6mGMqgTOyRG97aGUzNZdFVgW+9elpWXXAl48zMpHqxcno6Zo7T0y\nU+jZogj/TBWjeKqXBWAkKF8KbY8Dv7D2xjXmugdEtn/2+4xffPMa53WB6IrDfsKyRs5I6ICt5dYy\n0IbTN1rQI1+meQYogTGh7izzvEuEEXG/uB0uhPZz8Doen0WQi3u8VcxB1OI4ddhg8ahi1cyKVxXa\nzVPTZL3hsAfhk4VCQbXxXR1+cRcKuIi2ULRkALizplM9hLGWNICGguyPMeqE0JvRwmPaudUtM8Ey\nXCueskm7C+UE4/DAwd0pMhRZPSY+nF2DRh8X9Qu4BCAz8ecdY3+VkHeE3XUG717h9ftv8Fgr6GHF\nf/e3/yMe3/2Iv/s/n/AP//n/wfL0DlxPeDouqJE+HEhlFOqgjfC1wQy4G8bqJQUyzkVAE/+Uajt/\njLqq9Nnb0CvcSziE06zNdjy+OfXIwxjMQotwwr4gpDltbU0o2DMw4esk1kX7ivt1Imuzj41SafcU\nn4VWqC4DmpeBlqGG7KsnBJlQVxf0hFqtLndEh4AIpRKWFZBFMakh82MCstfGP1VgLgXg2oGUWG0X\nhaDUatQCzOJLEOyzQimhVMKpKIp4vDkxpCrOy4I0MXJiS7hSc8KvIpDKWKt6qntX0ymnFlMuomaN\nON1CPudValv/lCwrdAQBAVQstDSqkYbBNAQAGPrqSoNC+dtuzkyYJwaqIFm/N8xEqBGL2JzXdt5Q\n4pET1zaV/yF+XylZExvQBChjnqvFpytsEW1qSXWL0W7Zdn+GQIhQiCzWtAiUC146Po8gFzExS935\nYE6DrVlro2MOhLVWcCLs/NUxR0OH74f5q1Ktg7moK4itkOzDpcPrJsAlWrmptgWv3jCVePhOC2iN\n/418l02mtX8yHi5SkLsQ/5exPRGQzaj0SBV0E79Jp0t13pHi9m317Nd7vP3pn/D3/+//BToI3kxv\nkHLBm9sr8PUN1qdH3D2ccTXf4PSnf4nv/8tv8PjwHc73b7Gez5aF6DKuPTpCSfb7bpLUX1A0o2d4\nuW/w7VgETPEN+2yk9OLTrvwJXmxou4kHbNWvN54iikvR+Dijkvbn8+JQ7Wvaf9rptd+RhZINPHoM\nggtPK4ZkAlo8k9PZlkGYe0nbqiiVLcPTnZ5Vx3BU++yUTJArmVCuRXE+Cu6nionF63vD4+gUWhRc\nrOGySEKpjKWaIJw4ITMjeRSuCU7L1hQQJPc6SJYJ7CUeBDhL34+tFDI66OagV2DN0G2b2iAWr20e\nSV3RhSsqpRKiiXkLS+9yoU2IoIOEUPCxddyKZ1jtcGTkyoBWsKizA04N+YIQMYUjZEEUMZca6wdo\nFljKyQrxUYYqYZomC4f22PpYQU05+ZFAuOKEm5TAVfAExSNCAZJlmb9wfB5qRQGwe/5de3IT3HYw\nefjPYE6NcWKjlRFx2V2oODpyMxcYBHnbz6Ok6doQiMJc8BoO43UC+fVzNC/4hYDOTNhPFu43p4SD\n1013SNeC/vu5t8clSGe1yo7BDXaQOyqiT6uFljAlFefjB/z8+3/E3//d/4Hbr29A8xnTVLF/esDV\n4yPS27eYzgX7b77Gn919hX/66k/x+MPvcP/wLURqE24trGq46XEWw2RsH7m4vWc+gRjCS7TTAnrb\nTF2MD3XF5sJmpD62JwxUHFRZlINoGLp9bry7TVjn80fZ3usgxNtaU5/7oeJdAJBmCIbwrhHJgh6C\n6DVX1qJYPHxxqYSiXnME3Xk4ZSCRKYlMChaCesnmqOgJAbxkN3RVpGRNV0plnFbLDBUl7IQwT4TJ\nY8ETW0hi8kzprMlVko0pw+rxJIrek3DfDaMn+wTdZcqAGb2eCVl/gEjlh1sr0WQ8Jau6YntBN1Z5\nzE6j2WI99thYF+z+H5kvbJqsvpNWsabQawVtZtkUg3H7vqYDd27AgI0ZUUJKGdM0QZEsOSxNnolu\nzEFYC+PXmQjXKeHf3d3iz1+9wvn9I75/OuJ35YwzE6Zdwv7qZZH9WQT5nKdWBY7ITLJEBAhvnEvj\nprYJsQ0b6bShiZns+wyJOkhNE4+ywrKm+gaLwjqdT6a2oEIT99AkX4DNFOpIr2t8ACLIJLiaGLtp\nj4ktmmZO3ApOKWgj3JqjA9hkSQ5n/fTRoOWIEgdLQU04EIfJXlHXI9bzexwfv8e7d/8Vi77Fev8O\n33z7e3z5j9/j+tufkGiC/tlfAH/91/jLv/qPuH98i5+/+0fw+QneKNIUbTzG5vetsLMN7OMUfD29\njCxeROawaBC0XIAIDOvXs+sM33K+Ui/WQ1ykJ3tsEVFfa9vzANwccX+IqxwF/sYR+uwHz37EkXmt\nYsK7WHW/Ej8FWFf1WHTFWRhLJVRhRM/PiQX7nWI3mVLZnRivrghfv0642SkmVpRVgWQd3osV2QWn\nivOScF4Fj2fF+yfgXAVgq1V0s7Oqortk9coRfDkbxVNUoWvFzOq0DCGpIIs3QkkZouz8tk9WVGoM\npO8JgEoEdvRrb1p0Wwjwth9jn2jMG7lc8F1GcPqxoR5bR34mJmvJmL0ctmaFVkbRxae4U2QKtOib\n7fz331t9JTCIZqS0MyuiEFJae/PlWIPalRlgpbl/eb3H//w//BX+l7/9T/jhf/8N/re//y0+/nRC\nJcJuP+H21eHFdfd54sjVBqWKWAlNRLbfdqEHT6w0JB/EOUKIY4O3O7JyE+YC3rXPjCBx5Msj9NCE\nvQBkPTjVza9N84Z+gvZrYsKcPDOVktcpcQQDfXa9URn01OPt6f9QoEzolSjeb2ND/c1ByFlFvQrG\ngrIccTre4+/+798AnMD3D9h/POL1uw+Q9x+R4Bl0orj7m3+PV9d7zHdXOL47Q1cZFNqFEG9Wy2gl\n9YiPEJKjsNscAa4J46wgNnw7d2xU6utmGJH2zPZK3NMw77S9j+2IPxthRJhicKSjAui/b5/lpc+0\nHwzC3OWFaqdHghuXIZyxqpWDXSvhXIFjIZwrY62WKT0TwDkKbvn+0OSVPysoetqoxaYnAJUI5Gi/\nVlvvxASyes+oqljUQhvnkGFeOdFKBgtOq2IRH7sMiyaBCaZd8hBEUiwQVHiMdTOfYl7EDXV28GTI\ntSq84Xh3rCfyxLBIth7mn+CO0/iwDn4EwChSXxxRkoOT51eH3Gmbse/17TIZkVe3qoKKTclqrZBX\nfCQeOk/hYs1dgIgrML4Q4Ou14L4uyFpApBAWUCakPyZqhRTGC6ppbyavOZGASARqNNelENZB8KEL\n8oFes89RT+R5GdbaecbtR2oLRqvREOrFQK3WTo/XRdzWwPHHa4kIlL0fuiMTph450ZBDWyS0ucFL\nHfEpRL4VcugL8JOHIpxxFQXL+YiHj+/xX396D60Zb7DDenUL2t1BX8/WhGOpqD/8BP73v7BmHTc7\nPD4wpBJS3SLXdscNsAQiHhzBpANi7UrguTA3VceOioZgv2Hjx7likcQmfHnEus/FzhMbagwzVB2U\n9IVltBlJVVzesr3eFdP4TJdCHJ9A5CbIveqgaO876dZrFW2CfCmWNn8sjKWy9ZVMliRWpcLAtAlb\nFUGV6lQjLM5bFZW88gSF0jCwkZPRDSKERToAsVaHtm8Jnc45rxXHCuu8BEASkN162SdrOl6oQip5\nZdI0WD7jOra8DWuHGE5omwgmc6Sq0zeMIZrIlehG7fv88WB9xSSF8A9qhZnQeqs2iTAK8kHpNCE+\nrqe4oPnF9lcz9lc7q0lOBGZTjiOojPGLG250WxUsbz/g/rf/hPfv3+FpOaOSJVmr16956fg8ceT/\nH3Pv9iPJkpz5/cw8IjKrqqtvZ85wLjszXBJLQIRWu4IgvQoQBAF61D+qV0Er6EEP+yItIOwuRC5J\nzYjD4Zlz7WtdMiPC3U0PZu4R2d3kw0JCTwxquk5WZmREuLv5Z2affSbimXRJjIM3JE7qxq4NQq0V\nK82d9c/1pRGLuRnvvaCUhgHpD6d/7nKRXg4CWOsyglIiYSHiyGQY3AXbhHL88xdoOk6p7CYKFZHU\n3TQPzcjOAG33wvafFz8f2Ys9ivwHLP1HRQWyna1WqFI4nR54/O73fPV64emTP+KXf/zHPPsX/5Kb\nJ7dM55ny/h3l1RvWx0ceFyMvzr9pMfmLe9h9V4s99gUmTVagofF2/5fXbmabfg6hShcP1TnH0Wqr\nFWZweb6OiMVLRdoCtL1XQCS4bTPs/bN9bD+4sLjWFlvt19oC65+w9P94SMV6gjOk9T826HWTeq1F\n++85ioKWwmbIV2UuymDu+RWpZJrKoD+7ApSY16VWtNReTVgDvNSI0Q8Io8BBJBqjFE9iqjGYd9Yq\nJhH79hxQscJ5rSzVpQWuBuGQfHM5ClwnWCisBo8CNao7W5+AVhfohrVVqrrMBtX7crYc2kViswEp\n2+Zam+pNhbKaV7+6NhD04LZai9jQDeyeOnvh4e0AyD8AlgwQFY5XI89f3vL85S3jNFLMvSTVtDPm\nOwNuHW5SzHizzvzNV18x/vAdv1/OfDtnSlUsCUiDrB8fnweRq3l7RATVwqCJKY2M4zUmlVJXcn4E\nEXLxIp7Qr/OBt+1ZiFxWt7XxqIHc6860NojvxUC2G7+KinEcBST1tLqIm2PXUvbr7kiy3cuu/Fbj\nvy9Q+i4jYvsJEydp39FCER/ahiZC1M8XZ+r/yHb27lmIbAa3fZ1BV1srRj4vzMs9d3cLh+klOo3o\nL36C/JNfgI6wLMj9Pen+DuEd9vB3SDGmUIWTZnj7RTVKmG1qoXu4LnU3cHv3oZEDN0OaK+SiKImU\nSoQ1YmO0lmewCwMrPfz2IUMpjP5+YXYjDi3x1p5hocZbdNOXMS6ebTuPh98amq+7V1vLC8FImLls\n3TZL4r67CqNF15yIs7Iz6u1vNboFFf9Zi7AU4Vw9vDJJZare+s69XR+EGpRcP0ecJyZO1WbwNJJ4\nPjabCFnTHzFfAxjJildoIjSG9zAkpuqKgSJR+ON3jogxxSROOGVztV1orrE41MGT4TRL7cbYn3eT\nKm5Azde9bXa3tvDFNrb7bkk+dhsAaHIOTlNugM/nWANL7lG2TcNDRSoOyJC0zT2L7xBvg3c8Thyv\nppDSUOpgwVrRWO9ttu1AF4SsQeXduvD3tfCqZu7MWEIYzCUF+OTxmZovO7Ly6kRj1IHrw3O++OJX\npKOylDte//Bb5DSz5HV7sObu1cVSjV2y8aql+Apo/e6a3kNvF8X+w23ienHNYVSGgV5wZEjoOPuk\n+TBNfbk5b4ZC9ufvXOoPPtCQA20pb0iwv3Ufutnbvk9+7/6VMI4dMV+iTDPIS2YuMM+ZZV7Jy0o+\njOQXT0jX1yzzTJ2vKacn8HqF5HHYoQblrRk/2byh7Zd2Dzuj155fqxrc/gT9Yz5A5wXWLFATw4D3\nlRQQqYh6013tuQftXHrbPee2KfglucFtl9eMgRJSpWHQk0innjb03p5n9+LCcmzGW3doe2PAtHnQ\nSt93JMaPQjPttc2YxwIPZoOX7IO2YqEKa4UlfuZAyMVagtDHOAKDO6RvXdtcddssqNLXh2MY6fME\nNqA0iHmrP/Win9IMv0hwyJu2SYTDxLrxGStbki8arnRjHc8JiY3GfIz7vbDJVIi291unHgY22aZ6\nOz4AR/t1tV8LlG1+9BV4aShoebwkDZzR7U4/V9zHNA4cpsHzfqLUITEOQzTwiGcgDYxIv1TFPaKK\n8GDwUIUTsKZtHMb9F+6Oz2TInZ43psTxAAe54dntL/lP/5P/lpc/veVh+Zp/82/+J7779hsezist\n2h3BiT4g3YX3s9KHq1Zqzb440kCt2ifqNkDWZ6qIM0tEYkLEszKzQPS75MnOLeoTwj68lv0R0lzb\nW7k09p+YaPGM2u97M2zEJUhDG1uc2Lb5tX1C9mf212qgplIqVmB+nHn33RsevnnF+fkT7Fq4+93v\nWB9mqgmZGTs/euFIWzE7KmX/Urn4mg++1egsAIGtYXC7sZjUKjzOxsNDYl2VYSykVL03pMomxasW\nPH2NmKqHtVLIoDoLQtz702gsHS3NnMkQ5V0GRmVQb6ZQM9TqwQijxDRxBNaRlHmVpnQ6fUi6FoFI\nLjY+YQeG1T/jrIaG/VpLNpeVuIyZRuLTmqEnYuXxQ1R7xk9RiypRnJlR2RB3zPWL8+zCN31qS/Tv\nTH73Sy1YbJgS3OnjkLBBeVhd2KtVtNba4EhhEOMgbuA1CaYh9ibmgnn4OHbBvKivcGkCZ+z0auqY\nFx1CtRxDmz3esMCfc18kO8DVEHB7tA6JO0gr2aInaljL1l3Kao+hNxnjlIQhKUl3tAuRy8Q/MAwD\n4zAyJI0uSnUz4hHv90iQdKVVbwsIT2TkqQzcmPAmOgw1y5dwjftPHZ8ptOIUnEEqU1IGHbm6ecLP\nfvEz/uhXL3hYBv7umy+5e3wL799D7PAm5trHbaEKHfU0q+ec9Mr1OCAqHEZl7DspPgl2RrQhtySA\nRoKIZnZkCw9sYAy2YfyPPuwT5+nFUchGk2zv321g8YLf9x4B/iPf1TTY/YtaabVX763rypvHE6eS\nef/tN5QfvqL8/hW2VMow8P4w8/D999h5js/Hou1jYdvLPRbJppVDe6EPAht03S048ZjmUoylisu3\n5opGY+L+7h0q6pW0sTi3Yr7mQru2ukoz5vSKWNf08Njxk+vEL388AI8u6bBjAXVs3iZGXLu73hY5\nHTidvWG1JiXJEGjRsOh/iiXMho6OrZbezg2TXb4nzmlEhyC7+J7GXinmJfBepBLa4C0xGvtm70a/\nO6eFsW9diLbdVkCqN6u2qOLUbU155yD3xs5YsM+UZa3MGVQT16PHxJ+oc9xVKhnjmJQxedepqq3Z\nR9uwHFAYrfCpolE9rNpnT58vVr3i0eeLj061Ruzd1vm2rugTsVP+6sbeeTwVXr2/AzGOk5JqjgYR\n+80vGDUJmub89gWy8wKd8DAEbVmSUJMypBTjZ1GoSG+j1+LkFW9T9xgJ5vdWOdtuM64QBvCj4/MY\ncmnoKXjaWsn1zNu7b9HXjzzk73hczsyluHsl0cG7U4Jki40D2wrzhzcl77mZ1DnqrdqsoacPcbOH\ndpvGsuFSm9CNTzNIzVWzj07xH3F8ejPwmFxsNtYKf+Sjz7S5epE0/NQ1fYCO25co3ofzmIxcFr6/\ne8urt6+4Or2m/vY33I7PkPHAzMoP3/+e96++o5zOsaG288Ui26HxbsR339cToLKxRDq9a3MxKOZx\n37VAoZLGlcNYSOp4tYs6mSN6ayC/MzuEjO5mQ7is1uYNzoHuc0gRFR7PwrwqP/1yYmRGZO1ob8uv\nbH5Ox162Pfxa4eGhsmQ/r4d93B2PkrcwphI/bkS97N4cPoeGSI/GtbnW0fienhhIvIYxZ8d4CYOB\nbhonPWQTXkDPvfRK1XZ/3hC5WgrUXBnV+6WOCcZAygcVim5x/VzdSCcxjmpcJ5gLVDFKhNS6PKw0\nG9BCn21NNS/FEWvaMBQer7+c5tWEXZoBX/8fF3I1VHGxigxc0iFxnuGrr9+Sa+bpk4kvbsZOQW7G\nfIMjuuXFYmxawTYBwDZs0kJLodxoUEqhSO2aO9abTBvZhLuaUSu8NeMHMe7NN0QzY5kzj48Lnzo+\niyEfKL5IeszokVevfsO/+l//R+qhci53vH79NflcWBcfgLFNAnwTaHG7hmLMDIkGzleH0TPuEvG5\nQGWOxtuwNBpcG9gWJnBjXkPQqCWcNtPwDyPf/68Oo38xe1egG+/dFTT0ufvkp8622+sErRGPE+N2\nEl7PJ37/5vf8+m/+Apkmnt2f+Nl//98gP33B6f3v+fZ//ve8efs9+XSixCpsWQTaJe74n82A+qX7\nhN0STRtrZUNPfnc5Cw9nl3jVlLk+Vl4+hasxujbV7bGYNpTcDJ8Xe5SyhZjAGRbZ9rmS0EKxwTds\nEe7OcFo9Qeel19Gei8FpcLKFhPz+Yt64qwMItSp3d4U37wqnuSDJVQWnSRnHgWGopKGgQw5jo0hN\n3g0oWrv59W1l4QKNfkL75hY+ydaMuOCF+DUotxIGm47A+w87Si4bw6NvSrZ9j4pyHEdGVq5S4Wp0\n/RWNTfB6SugwIOvgoYPiiFVj5SSrJNHY/5yj7ptKpRQ8pCBtLrVZsxXM+DqvndmyN+bdqIvs8gnW\nPaQ+DztoaKO2zU/vXJQQHViL8PX373h4fODZ04njz78guci6nzfO5Utoh5raHh/rqm0atVRKLtjk\nKMNpt04DzbmwWt62JXPBtHbO79eZHwKfz+oBlWSu0XL3cGLN8yfW+Ocy5FLIBnMWptUYOVPzyv37\nBxaFxTLLnKmhCjSlEU3uskxDMEiwbgz2R+vx2TBQCvS5sUs+htORSWsQAAAgAElEQVQCkeDcoxYL\n1ONtuLyBbPqHgPT/L8eHX9Vc/I2ZHRtPpNY/5Shs6GP7e3NLVYzbUVlL4c3ywF/+5V9Qnj3jz549\n5Yfv/pb17v/h99//mh++/Tvuzw+YbgyTHey4QN97F1P698Zi3TOFmjHfuTe5GA+PmWVxnehDgsmM\nZFvyuX3exLbQGhuK7eziQDnFrDcQ6QhUBKpSDM4U3k4jpcAPrxa+uBEPy0nxgHkwMzwOHCGJjiJt\nd95AYHjrvHUunB69XZrzN/z+VROavP1ZGiwULNXj/anpIfoM9MYrbQOkP/cIgfdGDYQOibW50W1y\n8wCsb4CtqUNPrsd91Fp7b9DGqdZambRypRaUQhjVaYmCYgWWuqsFUTfmIhaKBOIAqbJdnzqdssXJ\nm3ntYW0DsQhNAJtKyxZObSDOAvE2MONiapdGvKlXfnzsXpeE6IjpiDEgMiBk6OO7uUh7kNAxUszh\n5nXWWik5U0tG1OPwpWT3ksK7ggjtqVNCLebp0ua6SZ8zlYKIkquxfloz6zOV6GshZ+fDzkskM4rw\ncDpxqsraXJTq4ZfjNDCIs1yGXaLqsvajLfJY8jGojWYEbJZRLtGu4cmmtRhLNdZSWKvrW5TibIbD\noEzDliX387UdPs63y2a377vEU7vDLv5ht7Q+OmKa9ElacfYOO6T+wZPoS3//zZsJDkQp3pzidoAl\nL3z/7d9znO+50ZnzX/1b5vrA969/x3fffc/5NLvXE2XKKvBkaoZmQykNYV9wzDHQneHV+Olj4A9K\n1Q3b9QEOo3A9CaO6ZOvdrNyvnuDz2Hbxzd1zXdH2LtTydui/3a1ooEUxRBKDJAaFoxSOk3E+F+7e\nFW5VOapX5jqVNDreGj3G2WUkzMtSSsEbRSyOvm6ujLUq81KY58JSzKVoC1jVbmyJir8W4pkOcHUQ\nbq8KQkvgstuw2EbW3HgXhLUKZ4RRXAZijA1TJTj45jFkqxVLAWdkc9KoW8KyurX181NJwCSuCJgi\ngSmqJJMoEIpetx0tR+RbInxlGz3PdmPiFdCOSkuN0I/Q3QjRrWhI29puHlH83hKhfd3Ydk8dcOwA\ndPvsfmW1xLNruWhvstFNRk+U9EW/e3C71Woba6nWSime2JYw4LXk3XdJBxR7xtV27UF/Dq32FkWo\nJpSuEHt5fBZDfhRjrpm6ZlbU5R5RVqvekcQUqZVEZRyE45QYTEkYSXe98CyMdHP1O280dlKhu5su\n3GMQPOFWIQaOUOcq3uX8XDgvlbVWcvUuQU+mEbmauJrw8mPZXC5oEyosa0yCDjAudvAdoa0b8s3a\n14Y24xPt3nyoa5/Y1bQXOHh4M6KwDYWwN2SbEYi39tnc4pDXE2gy3p8fefOQ+Ytv7qnf/JaSV0qe\nOZfKuVTm4u3JzOBqVP7kiwPX6lrvPVS1XyltYUaOoxd76O5tQluVHA/w45c+yZPi0qhSeP1O+A/f\nKv/hdeVxUQaEIcGQPGE7Jk9oTwmmFKqTKiSUQaq/d0wcKIxqaBp4MglPpszNceEwLs7RPlXKEw93\noCBJNoOx2/StmQpzyl1ejbvHyg/vC1cj/PiLxHAckLpSloVTqcwLLLNxPgvns3I+CaczPJ6Fhxnu\nFyMdlJcvhX/2y0ISDfbLjmYXm5ZaW+rKasLDWjmZcE7J+4MeCkuFcRCy5UDaA1Em6sm2huqrIVL7\nhPUkqIIpJeXAOuqZByOa/0pP2JYwRGriEagYVIFgZ2jwHdvzgsHgoML16HN0yZXFKlWNnAu5Ohe+\nhWW2him2uXkNQIh2A1q21RVPZ7eYYt6bNqqydUxeI1bdwqu1V59YoOPa0fF2GduJG3nCalx/NM9o\nDaqdppr98xG6a9MeVaTKhSJiAx7OKKoNigCKSOJTx2cx5LcjTJp4dvCmDYNCLoVrNfKKt6JCGKVG\nZVih1+Ls0G5tg0qY7/2uCYEqgoNq9Cz5h0etsCyVh3Ph/jGzVk+2eYI4UUMmThHESp9AF5lrtt37\ng1dj0GRD7hcZ9UvXr99is77W7sDaXEStkMzTQhY0wAsqX9tJPvkabKzmlggzsMJxSAzJWKzyzfvM\n3ePCvMzkUrw60IRsxqTCi+tG1dyEpLbE0v7efePzUmi6bvyHcTFBkOg/Wq1EYlJAhQXhXVa+m+Fu\nTgwkhEhIWeXqMIJVSsnkSKwl8a7wg7oRKmYc1asWixV+8Qz+7Evjn/905I+eC3YLoyVujjAMRkqJ\nC72NnfHYezuORgsDmS9vE1ejcD0I395XahVGmVBVjpNxNVaeXlXyaqwLnFfnzD8ulfvFuDt7EUkx\nQyxjErS13VJuj01pnqDzrddo2Nx0WN6tzjBZsnI8G+8eMqPtwhLmFlWT9Hh1RcnmWuAekjKyCFmh\nqGu1VDOkFoxEcWGVbZ6J+OKtpedI2sZXcTXTDlJiHdTIYKcmKNXK2dsNs/f3uAAK0jYUa5vt7n22\nswe7h6YReh3YoW7pfk5PbrqNjSdv+xHfzVe7/G9wO/bu3TvevnnD9XHELFGyI/K2Tvchorbhobq7\n/hp2ZjucBlpJqfKp47MY8qdTaPuGMa5UFjWeHTXikL7wrpLwZDRuhuy6xFXC/bq0h9any6UrZYEg\n6mUFEewMGX0ALPooBttZdzzVbqhaXd6nDPbuWvr+skuwWJuS8snP7Udtv1819L8Jh8V7zL2NWuOK\npPYsfz+Btclv+x3CCyzbWwUQby6Qa/uCxNvTwquHynmhs0Vaq8FjgicRQvRQybbwAlxvN9VcbLHg\ngBOx0V1PzIjHiIAkD9/4vXvC2lGXUiyxmrKap8GWQD/XOmJWWDOsUd0oOOqboj5gXitXyUMw59X7\nJ3556w07rg7FWSbsWRUfxFbbLfYNaxstlcohFV48TSRNzCb85deZ+7My4n0xD6lyGPB+qzR5V4OD\ncD3BFUL+wVgLzAug4YgLlz+0ROCOsWVeCJQNliosFe6za4NXPKd0VGXOwtOsPDkatwdjAA7aDGKw\nfqp2hFqKsYiyVCMTFbCxqAwX1Gp0Rh8vn5g9N2IEcYAAAtvK69WqpV5Uibbk57aMd+a5baTN6+1W\nvM3nD9Zoy7/EDtgKdhIhvAWXMCoWWPM6eqJ0vyAvRt56bLvlX2o1zucz5/MZ51SKM1Nq3ua4NYCz\n/VwwcuyyzqR7OGxyJR8en8WQP5s8iVlLZZXKKsYyCmkYu6tzWio3h4FnV3CdMisrGSXLsO3CNRaD\nXaLhPRultow27ErGZQuF0L3KeF0dCQZ3vTa/KRITDUnsjfFF2fYebe+QqUVncunv3xDApXbKHq1v\nJzJR9mzqGiGjpSaEzCROJ+x3dDH5Ptg6bDNKFkHrapW3j4WjKLc3V8z1zFKVLBM1KiqThlRw8iz8\ntnwuEXZTYpRY/B8qRvYwTDyv7pVIK4/f7j8hHE24JvFsGKjFcxlzNEjAFBmNEeFgiVq9a71VmBSu\nJmcyzatyHLSPnXjGHK0LAxXVEjYh0Tj7faNq3sxFjCrGwipJKseDI/nHKnzzLvG//brwu2+diZOm\nzNVYuR6N22PiyTHx5CDcHoynU+XFEX58O6Als55XHh8LehUlxbSYfxOL2jYblRBpEzZkbi4pey6+\naaFKtoHHojw/F56fjB89gV88rUxp5Wila754S7kBcE0Vy8ZqxpxgrRJeSqDWXpjUJpTPI78+X0ed\nuqe+wWbTKHwKVcXc+gVIg+hR9Rn/aiv2aXkB+jPZQZoOkFq82Y38J4rVdgYxbSswms/EfwWQvPTu\nP2XJ/T2l1iBGaCS225o2pjGh6sV3LazVf9ocV0Eigb73aDt3PA4ncLQr//j4LIb8eoiKuQEyxtmE\nWhK5FNCBYVImdVQ8V2OKarBBwcsLtIXdOkp1OukFlqWR7KVPuIao/H0xtgTo8+RZ1BH3R5g8gWbi\nnFxpDzQ+/JFyXz8ay2IXD7Md0ugoRrpb2BBJfx33FOZcObV2WOGOWhSGzNWTgs+PLlYk8c1t5+5z\nYwMm8e/mlTTUezJBZOLZOLn+TF3RgFxqEQcNNkWPh+/c2v3G1e53T1FsroB/tLnk+wXjD6ZV+glQ\nxFjVWBVOVjiZUJNAhVQjXrxE/D1akIk6glytMoaODiqsFtW+CirFk3dD6JFYE2ZqBkU64tKokPwI\nJ0r1MnUVxtELgJZFkDVhNZEFzqpkhPeLoWcY7ryqeUiQUuXHh8qfvKhcjZWrozFNcHs1Mgwr6+qe\nUhsjlQgNSDPofcuJa3WX3EyoES5RvOvPWpXTWhkojJZ5gnEtlVFgGCuJwjkL6wrHlHhxBQtg3rqI\n+WykyesyfLQSlUTTmkd8A6lJKQoZYSmZYh42KTgNNBvkqGpy0kJsT4Fc/V71ArF2xM8lA8df31C4\niD+Ttvb6mu8/G9AxPNtezRtQt4CK4Y08agdlxkUMZbe+vWCpyRL423zzV9c5T8I4JKQq81Sjs1Gs\np2gOvz+2CMP+atuLwpoLdv4DCq0chpaJNQYTKIlTTjycjdNirFHkcC5Gys6sOCbnPZeo6morvQYa\n2OdyLx/Ilg1uzLOYEvFunwhDEqZBOU6xO+zeO46eyc7mCcXU0KhYn1x9V4hztolmSOz4vuOm+Omj\nTkPon94Q1goPq/FuLuRWEl2CrhQcYiFxO0mfyD051i6pTbQeJdqjmdjn5XLyN9fUEUwHTDtEFOas\nn3+XELTddyMdkTf2RZ/5n7hl+XCMJJ6h0ZX8Nt9ru1QJFkUKv95TsM3Paq27aKSIuMiCadNW2Wir\n29zx31qnGh+mtkP6+ypEBhc0xKCkOGWyxVhNvPmCZe+92Y2DKLYkXh68sfHNjXO1D5MDkLVdibTO\n8tvzcWPeCt3afQJWqbhnoiIkM0qK0IsoaxXmFe4eC+9Hb0BxwBgpLFnItTIN8OzKC1FKbHAez5U+\nxrUzNDbmSLXCWitzcfrgXPosIZuv61yNXD2YMii0zj9Cmw+xNmSbZQ0RbwZ8W9O9Q1CbX/GJ2ke+\niYBtxtyAKi5TbRbdx2C7vx326JdzaXP7vOuTp12TRR5IpReFjSqMw8AQFZ41ZAn24SG//jbO0o18\nDfooZoyjMIyfupDPxSMfzGlQCVIV6jKg55H7h8LdUjmbk+TX5IvrehKOGtKmtssmB+2ptlhB7Oz9\niImxK1xrs337jxioITk7xh/i0GlIHp92itVarXcM6iZPtm3Bqx612cAopQ79iJwZNHEYE8chEliy\nIfpuFHehFkNYK5wyvDtXcruR0AJXAR2GLubjiG2n/7cLBXTe9j5BbI1rL4wIkxipFurqVEPTiCLW\nDduYpEAx8Yq0ZNnOXdxtTD0GqGx6KX1XsH4dZg1V7RkKYZxx9D0aDOax4CLmlYU1kqKR4JwCZS3m\nbAwB1Ly0R8Q9QO8e7yoWWVwbZEAYTTDxkMbWlLmFxSxYUR2P9/HuxkUNxDVYJoxJhFU95GUm2CAs\napuSnw5MQ2JMhSGtPL2qTMl1w5diW1HV3ngHzVL37dTaJl2dJVKrh8xqAIZSXJ+8DAnTAVN4mFfe\nn+F4iPdirCVjtTAl4+bgmja+SSWs+H0kcRBWahjyEtemRrHMUtxrMksejhEv7GkG3EMQlSRCia5P\nKcCUV9IWeqtFtk3dp8oWk97m9F75dAMebW03O9unZ4RjK7tEf2msFEFaQ9F44Foba+bSgDbPuIaq\nntM3w9MX6fO8jd2gjs6ncfTNJD7bqjqTiNdOKBwGFyETTeRSmddCxri6Gbi6nvjU8Xl45KM1HpVP\nfgq318LPXii3i3DKwkNOHJNxMxrXozKpx7xUtCPmQR25m9FDKIAbX21IocXXNhfJB9ZRlCdivMWW\nxsPsyDJc51oNsZCvEQuktzuXfym5Co9FKHNmXY3ZIvkW1KbDCM9MPFZLTC6TzhNtfNluELG+q2tS\n916AilfNaRCyHVl4teBmIPebmr/m69oNUucvC0ioCQrCIMKUhkDWFp1m2rO0UFlq3OwQs9oFtS9T\nufEdzXtWDxU01TzCgGMb39/EtjL1/SHeN3KKPaKgm9dbcYlhCakrCd10M/q2L07bLPGaJ70kGn8Q\nc8FRsk8X67ulWIK6c6FjXjWedjMyEnEPS5vhTfH8Tcy78UjIobolR2UFso/BUElDhSL+DDraDM8k\nfiTYF0nM9YoUznS1Ar+WoIRWM87Z5+ySK2LKQRS1xDkb50UY1Cl8XvJfvWK0QK05QgQwpNKrKp1d\nb8HfF26PyjhWKoVUY04jrJmoVZCeDFRzvosPv6d9TaJIzVrzjOqde6yitXUP2xD1HpQIbWOVoO82\nKu6G2WokOzYa4+aZFWufyCDZ15O4UBW2raY9PgS67G7LpTW6ququkUzMe1Xv0OTdwoyqnlyWIlAr\nKnAclGeHgZ88GXj+ZOL6+oDoxDdvHvj7H96zCDx/OvLy5R9Qq7dxigWhEjGlwlODn78YeFjgfhbe\nzsaTybga3ECZVXLZh/rbjhuuUrxqxlbsYNswu4ZK4293zMdePtR5mk2rw5FdaQUw/b2tiMAuwH2A\naZZsiKlTt2rlNBcX84/u39WkTzZfpDuPcufQt9BLF3tq6Bqw2tywTUag1QNemNI+mR2Z7cuXPUao\nG6qMhgz+MGsUkkSCtt+oxLc05FH7d/RFst8sRaL4RzxB2pXLdog9vKkW+umn6N4D/afFhbXKtmlZ\nX2p9TBtn2WMinlzroRnrrPcIc+0Q9rYf4Y0s2M2fMCb9PWE+dgksC352bBVhyH0zNoQMwf7wDcSr\naysiHjDS4NtH2P0ilCK6oTvCkLkhh6E19G0I9GIMnDGyFEfT3ZPSRKmFeYVkrvdSIAx4PLpYWQrI\nYB05m0RYRyqjJI7JQylVBI2k3yl7WNBUepjjkOD2AMVaBy3pyooxszdDWysFQlxvYJv+LdSzN+Tt\n0zGGLWez8xr7HGN7ph4aqkgtvpFqRcVj5tXqZYhlm4YBiNoFbSf10Gk0w2nRVxyYpJqZ1DgObujN\nnPeeSaDeqP32WvnJ85HnNyPDqKzVOA4wJqFK4uo48uz2DwmRT/RdleoVY4MWriZ4mIV3J08GPTv6\njcyz9wUEIVva4ri7hddaP8V+3GN4BqG+I4EUGp6O5drpUR5XzYRCWRhyq15l93Gpr11s017BBtTK\nzdXRMfGyMmcvyEity5C6bkIvONgF3/qktC2J1ZgKEvCgGdVm/Nt8MxOs+mKS3aR1AygbupDtm9p2\nUrFgrziHeFlmr0xru+LFfX94tL/t3+cX6glkTyimEdKAS8nGBo5ujpIjnNrvq3tXHY1KR0n9DoII\nsFXqtiRWhHtqf3LhxkYJemzwG9UwnmX7vX3v3ky0/0QC6dv2tzhqeDCNiePSr85nR7093mLFw1nh\n2UmE7XbD4l+/N9q9EYv1SkmfO0Qsdtc5Z9vvu/fgC8TZO4M6LfGYfCNal8ope4LPtAlxhehWGHIR\nIRXZumSJG/EEjKJUcWOPKDo4hdcMVqtYVRZLIJXrUbg9QJYxKqjp88vMKObnTIQufJuDwTH3BjPW\n75eWeN9WRKB6ukfTEvPtWTRRLW3ryApYZhoVqyFR2/V4IvzZn6Ns86MtqNghhNBjt4TqQOs5KlZ8\no6grRzVuBhhwLz+bskRx32E0rg5wezMwDZXT+ZGHs3E+ZcDDLMMwMk2fNtmfxZBfHQMBmWER0mgD\nsqoyNuGcnNFaIcfiEZDB6TqYbGAMwow390wio25kcwGfMYEOQYmSC5Pj7yvG41KZs5FzdVSnQCkM\nOnj1qUpsGpEYCzTXgKNrwST++Bc/QYfE7779nkri/rR6ia5rV6Kx7cCWkGsXY0TmPRar7ryBnsQ1\nMAmVuv4Ighpo9IntetrbBGybRFs4TYzaaWyB3krmfF4oue5EqnbFFrKxCD46uiHc4uIpgQ6uK9I8\ni6bBjElwxpshi1BYR/c7tGWNwxwvNJqa2e6NzuMt1YWZiLCYBTJuHy3NEAu7KlPbbX7BjLCWzPZz\nWfCEvfflnlVhfXxqxenDO2cixbktUHRD61B7bmP3COk5hmacae76tkk7It7x3onXd8Dgcmgk9Nud\n2ZIkFCVNKDWxZjcoORdK8fyOatM9F9a4BpOmXaQMQwJN2Gre9AI3oFZd47uYVyUuVdFaGLRwIATs\naJn3mPdxXhsTkgafc+YbhKbN++koXNgBngBRbKE614PZDG/4ZR0UNULAqMLxMPCzP3rJvJy92E7x\nPJRudmoPZvoTbki/fb/3UQx05Vo9VjN5zszzglWLzQ9MFTXDbKWSnEZqEhW05udoHZPMN9Nxqlxd\nf3rxfZ4S/SmogVGs0+JdpoWhCrpsK9jMua3ZnHhYGqZuCzgOCUhVqjGvOUIgAE3HUKNPqHRk2gbZ\n8NBKLoXzXFjWErEtIRnI5Emk7aI+NuIt6ZeS8OzpE4ZB+fbVDxwPoxd5zI1v0Z1yGj2yGcYOyGxL\n2PhOT7jw0q/XQXaNpI3L7uYYf3fb2vNphsORzDiOoWJHJDtDtD7QRzVXbmsNsPfHBef9HwPpzUD2\nak56X8a9Ml1D7pcJ34jFyw6V9gvYjfXueVl4FCY+kNHTYTOk4uX8Up0PvT9lM9w+hhttsjkijVpp\nNI/s0nBvz6a9f7/w4zr7/V0enUK4+4Ptb/SDedHi7tqulZ1B70/lcmC6vECcqAGXfVejgrq3aniy\ntN0P29ooVcgl6IHBjbbYrAeNJxTccgudovadnpzcONbtmfhUCL680Y3roK31cjy/qN+Qjww3/Z4t\nBqE9p578R9jJi9GEiZsHnVQ4HhIvnl2zLImyLrAunqfoY/6PT/c2O1TEK1OtgBWsrJQCOWfyuiK1\nMGC0yuY1Pp3xCuQxCdMoTArruoErCc9tHBy1f+r4PIh8sjCcwtKMCuZ6xqUgCR948aTWXEfOtTKH\nMaeyW0RtYH2651I5zQtmyYWSEohVkrogUNqvmg9gX63uYi5LxnDNjlGVadwblEtDdrHI8LDBkGIi\nloVWYOSl1q4TIyJYVWdexOpvCTkB1KLKMCyK9O/bUOU2waIRQHF2CzTVRtkU5wK2T6NyrRPHQRml\nohRUMkIOkTFxFBub5L6walP6+ziksB3GVsm5oeTNqPnfESLMtXuQHzxU6W7rB4+8PSPZxahlfx7p\nBrUZvkHhEIs7WwunbChLIGLQ1sMZe1tqrX5gdy0Xd71HbLZdZ89HhCfRRKncIbGIz7fHtKOsNpzS\nz7rFgvcbTv+dtuDbxW3PdC/65Bt8k8Dd+NgF0Ij5dgUise36W+OKQOSCOvDEA3OqniQXhDUHyi9G\nKFv4ZqIeEl3j3pr8rPV7khj3iClrbFMxn/okbg9n9+zcVO/CTXgzd/f028O8NOQac0fFBdo4Doyp\nsiZjKW5i96yy7ZEGdNgPlPmGPCTvMjWox91ryQ7Mi/8+kDlqQTQqbsVzPbMlZ6xMwpOrkUkKec2c\nl+bNeZnaqMZx+vSW8nkKgsbEUj1TncvWb2/CGEmM5iJZlcJDrnz9bmZmoIjHmA/Js79hd2KxtXJh\nN2DjOHA4TEzTSMkrKZgdtYJuZV2B/GLnlzbECcJNk2CHaPjgDZ8hO2QXk9Jdbrh7eEQx1iVzeiws\na5tUzRVvLb6ka1o4CN2FUaieEGuXapsRd70LX8S1GKsY94vy7WM0HChuyD2TpCG9WlA1DufMVYIn\nyXgyVp5ewWFwmplL/UpH/i2cYFyixk8f2xbTPCy/VqCEBEdl9/zYYOzF8RFeBnYa2w212+UGuo2M\ndQRn1ToiH9W/R2Nh9NPH+KtE/F7aeMqFQW3zw+9th3936Hz72RkA/2CMuUTqMDyuRiWUbbNuiN72\nv8d9NdZIj/0Gc0Jb39Kmm95t97bp1tBjWasjQI/UezK4Fs8V7Ts9NT5z3x77OT3Uks1BhCtKhsVG\nQozLUb03mnAgZShZEqXuJGgjCdwqGlW93ZnHltmKctr40DbxAE2y28h2HomKOeMFozXQ9s061lij\nbGIQBjdJoUqlBLccbEt4Bohq823b0dscqKRBOF4lbg8T18eBMYGVQiIxqXEzVF4eKuXohvy8Vu6X\nxDl7GGkY4PaZ8vLLA2ktzKeFu5oRKwzq3s+YXIX1U8dnMeSqiYdH+Pqd8P29U8qeHuBHN5VJXa4W\nfOHPBd4tQkmKppGhKofkdC1HPm54rK0EwY395PzzwygxgQhotTMUbbcH2CXaEIky3aA3Nh8/Fsan\n9kQj0EQtvH334Ea2FhecKkbatb9uUeEm9u/0RL+OjZLtjIoKWFxbNyxm0OQszYWPiirv5rrrBBPG\nQgXMGyeLQRG4GhLXR+XLG3h+ZagW7pdMEo8t5x1a29S8tw2P9pz2z3G/Mza+tRG8XYmiKP97R5O6\n3xh3p+1j0pbmlshuUKypQfY5hTDEOGQ8gZ4x79dandaYayWbeZisG3DpPOwmqNQu6eMqwmYYtw3I\n+qTxkfWYcxsz35r3n7BuHHf3GLflOR7ZZF2Nrj3UUGx7vmbQFPPcmG1MqG1+Rs4hwLVVIYcWixfn\nhLZRbEZhijtyTVjzIePOI9hQG2UgmDctbGZ+P1V882leUBtFv/8YL4Fk9PMgkFCKWhh+Y+8FWmws\nLcacZIuXE+ukeSXJ2pzYh8yke2j+WvXvsUK1YA01mu+g1NyuuHl+0jeSbTxbrgmmw8jN1QRM3N5M\nXB8GjhqFjCbYrXL/o8StJYoV7s7Cq3uj3BdSNW6SA9yUlHwuPJyNdzM8ZiHHWpdBGKY/IENuqrx+\nEH79tfC3r+DFtfDHX1T+6JkxjkZKPrzeQko524DoyJgSgqJaUPFJ2XwpidUmUXQyjXAYKodwZcSk\n057cvsRE7NVCtZ1ku07bmsvu/9fWoMk2pI1NkKrx5r0b8tbGyZNArslQ8XxIa79V8PvwkvAtCSYI\nQwgnOaukUcIaOgoUI8Ywjeg48Hjy7iHNODWDpyLeUUdAUK4PIy9vR376VHl6LOSyUKgM4tz30m23\nf39DZ/vnYi1h2H76gu1Wqb8m+xXc3huLDmmM5zjas21IbfklwOQAACAASURBVLdBt7FSAbVdGIQt\nHAUOBNYIj1Rz7ySrstTKUq0bxEYDVN0t9LgWi33bqmHqyoL9+rtxN6RzJh0nNOqeSUVIwdlvy749\nIWG/8fktWvcEnFkTOaQIx/h1BNo18bLy6ol/tT2dNTa95nSE99LOXWr0AdAw6EV6o2PYmrGkCHHQ\nzixbvoYaz17BZRGiEjHWoOGhmIN4/Nxbx9U+j1u4MIkXd1XzHFZneiiBitv02nb5FEBvkG3e7fdS\nP28857bBdU8q0D7hfYRYXA3kLppIg2ukLAtkKhqqLNqfxOadNkMuljjcTByurjikA8+eHrk9jtwM\nyu0IV6NXdtpPJ15OI0s23j4mro/GpJn7VTmOcG0D6+PK3f3K67vCDyfh3aLMxdAES4Y5fwpGfiZD\nXlOlaiKTOFXhRpQ6QjqeSbVAMmqKQg5VNKXoiuLUoC7qKvFwG0JhvxgVEyFTyXhsrpiQJDlH1TyD\n7OL8CgxuDMxVJNpOTyyKLtDVUdkHR8Aes8rD4yOIN5cupTEoHPVlM/+plbW6VkrOHrPEguUh7h6W\nWEy51NBLbnHU6PkXeg3jMDKOA/a4OjqxpmdR2ZTVmttceXVn1HXhzXvhi2vlZnIjU4ov/JTSZmg+\nyDhedMdpcPXDJyIfvvDBn8QTZv4oXcq4WZ72/w1tpc7sKIgM7i6b5wGcvbTJf1ZCm8Wcr9066RSg\nkLoH1jw5bQHV3Te3C1Ri41R64nR75+WG3+8tnpVZ22zjhMHhr7WECW+aG+wM+PZcPwzTUL34qVav\n7s2E9nYz0DWsqvgGUtsFSHSXAd9wdsVOucJswgiMZi4cFrrbxZzZo7V5sOJp9dCx2frfGkSQRvG1\nozX1sF9SZZToVi+N0uvx+BZSUjSYQBYa4UE/bJmzmM8NACEQ2f9tTMwHywIcNPTeUqMXRrhPzW1T\nRaIS02ELNUgRnwz9tU0VvyCxhGjieBw5Pjsixxt+dHvg2TFxOyaejMbRjGSZZzeVIfszePks8fMf\nDZx+Lry9W1lyBU7M383c3VcezpWHk3CefbNNZeSrv114fPPqo3kHn8mQp6SMo3I8KjdPrqhUTucV\nEWVMlUOqjER8TZybkYsbsCQ+8BeNMnossLXH8kEqsTBcQtPI2auqihiphVJ009WW8L1MjBqTRfFi\npGp1+7r4ysau2JwtYjH5BFqLbboekdEv5mX3azXmAufiGeoakyPVaJoQhRQaG9D2zfv79sW0LCu1\nVtacuzEo1fuiShQo7IO9loWHM3w/CK8flB9dC8+vfMGouuDPptAYFmWHyt0R2VC50df7HltvaDqW\nz87uB5L58J6kI574hC9uD2CDDqjCqB7PrEF6Pg4Dk0ZDNfGQ1BhocBRPhC+lgiQGVbB1993hUTXD\nunMNLvICPcEo7G+xs1da4s6iW45oaOhbcz/otQFScWGo3SNqXe27J+D/1hZmqQEUXPsZEGrre6vC\nNA3YIIzVOM2rb/7hzyGGSWVQLyDy0AQuiFa84jSrIJIoVqmq3owi1oiHnoyIkzk7QzbqrLXNTzwX\n0jy6Jq+gBqq+sZqpF7S1cW85AIvcj22Mrc4c6tu7G/QcnXNUNgpy7LmI+D0S4Z1S27h53LxzxsTl\nhJMUBgpDjJEiyDiQh0SOSS1m+yHfHdo34avjyMsXN9w8fcbL24HbAY5kJjNGMoNWbq8Sh3rAaQ8j\n1RK1CPfP4XSu3tBmrhzU5ZChgFVenR0gvn+fOT98utfb5zHkw8A4uM7D09sj57uF+4eVWgcGrRwH\n4xCTR8XRaLZKEWd/5MF1N5pcajMfQrAUUqS/LJBLBGtdbErxtmMuBbshC+txAGt6GGwqaHuk1CCX\nEfHHMGyEIZE0eJyzNLfPp4HhMfe1wlJhLl48sZbW7spISZg65glD3ji3YWyaO2841e58nhER8pop\nJTQtrCKa3KBwmX1fknGnjrxPZ4OiHFLybbBbUdl/5RYIkN0Tsy2O2UahGbs2Hn0/ABqBv8ubNgNo\nW1KqJZGb++tGXEHdS/A4JoxaKdWlZw9DYqSipWAyehwVR/1jhBaWXDiMI5MqwhwGtG5j3yHwFirZ\nQvWbe442nNfuu40tfcNWa9WW0qdVb6xRC0qKpGpLurn1tooXqO1CKxbzooSRsww1R8IRparHTV/c\nXJGmK9DE7795zf3DzFLMtX+kIFoZknFI4noe4ro1VCMjrClBFQoZG4/I4YCqUtcZkZWrY0XmgkW+\np4VvasTbq1PNOOfKmjdqZMLReNIaneRbkrVVQDTM3PTpm7+y2wBdyDxK6umGu0c22+yTRods0rK7\njbZtAy2UKu36apTP495hEmwYGNLAEt17Glhp89h2E8TzGpXDlHh+e+Dly2tuhspVqqS6ILlCcPeP\n08jBjkwazWoiKf7siXJeKqezcXo0rk9wmOBxWbhbVt4tlYXinZTWDVDuj89iyIsKa6nMp8J8Xjgt\nmZPCYkcmhWFYmAZBtTIVGBKci5P3FjOyNRpXa3+mYMIwqMe5NLkxD1U6sxUn1A9oSs6pjvBJR1E1\no5bxgI+7p86n3YzVB2a/7+wduQWcOM8za/FYnbd8IhQbo8tOjQo6c/qhT7H4PSpdayvnF4GIQ5ag\nUNYoPfcMvDQrEhVxTg8RcE41dbtT201CFEVJozJoYkgjUMi5gHnxQkPkFoqTqpsb1BC7dEjJ7m9s\nnkqn4PlGtjeQ3WjvkHztse94PTqnaFlJeYHVk3QZodhAqzNYLGOlRvNuX/CjNA5+8TioeUJ0kK0g\nRHbaGBpIrz2fDZG3Tb4h8u2e+r+2PRfVFLoajV0Sc0xbWGHjEndlw7YhtI2ubr+3sMha4bEeuCvK\nu6XymI2a4OnNyJ/+6c/5xa9+xZPnL/lX/8u/5q9/8zWv38/BVVYGEQ6qHJOriaokMpEEFyVFHKog\nXD3/EU9e/ISrm1vevvoWLe/55U+U11+94uHto6+42FhKVR5PXhFtJF7PlXMxBlFSxKSqiLPMwiSq\ntpVUSBKyABYiXXgopqlx9UrkKPwIn7sNUV+VYkASbxcni68vcF2T8MIFL9jxBLBASSxVWeLc2sMx\njV64rX/Hbj7227Tw9SWCF//kM3V5pIrrvmSEPAhSM3k+U9bCIAPTYcSS0zFrNcpqCIWSM6+WE3/7\nuvDr74y/fSv8cEo8mgCjR8bkcq2147MY8n/3m8p3r4zv3xtvzxXRa/Io/N2bB26nxGITORkHLWhy\n9FuR0Cag7+cOamL39/pvH2SUUo2yFMwchagZa6nkEgUwhNiT+kMfVbkaB8QUlcS8upJbDaMozUWm\nAa+9f91+8UmQSyEX91+r+eIehqG/p5psdLzmWrb/mUWBj7NmPFG0md8t0UJHtIIypcThIDyehcdl\ndTTWLjY+sQPPJDGuRnh6nbg6pCjHrwgaxUNEJ3MNY7cZ8mkgNtqN9ncZloirlQ9e3rmoIp+ek5sR\ndyOXs3Npnx/gp7fwsLaQcSV7oSyjZlKUU65qIb8KWmsXGpsRDuL00HKTeHo0xhT9EGUrce/c5g8u\nbr83tQ1u+7cPBl2orWS0eNm2tRwJ0XEej/O7QWyf9sT7ZXw8zl4hZ+HeEl89wDcPxrsF1pqQJEyl\nMH77jun6FdOovLhOPLsaePf+RI1k3YAxif8MUllNOEWJ/PUUypdqmCR+8k//hJ//+X/Fj3/yS373\n27/m/u1v+PLpa+b7M6f3Z8xcU6QiUJS7ufCweBOK05pR4GZIPXEpIuiYuH36gidPv2Q5PzKkFdGF\nb75+Tz1DteR1I8Urc5eSnRKrG7++Vq+6dgop7h11lVJBiwUd0ptsGIJJcrfWQv45OA1JlGuplCuD\naxib5o1VZDbWNTyF7obLzi3drcE+/ytWM7Uu1KJkgdVCnwZjCDBg5iDuccm8ejR+/8548z5z91i4\nPxe+v1v55l3h23fw5hEec2XF7zkN6Q9LxvZf/1+V8wwPZ+P9Wnjy7MgDE3/x9XueXRmDKm9n43qA\nx7V6N/vq1LlhT1mjrSsBSX0BV5TTsrDkTC3Gy5sJqnCeV05riVi7x+o1fkQ9EXoYEljyJgrm4vrb\n+G1xgo2zYfEXBRx9u4Kb0cycamIcR2rxTcGZCMLW79UnS4vbWqtO1C3Rg0bS0gh32a9D8Uq462ng\n6fVI0pbszH0D6M8qbiQpXI3w8hqe3wiHg7FW7wozJpfRPA7eed0Tf8GDj5Ll4wA3o+cimgv9gRX3\nb429r3s0u+KV/Y60/3TLrTbEf54LVPMY/gvhXELl7oLVkNEWM1WjBKqzXLzwCmEWQUqhVnhO4ssb\n1/HJpTAlHO3sd7oP72nvJfQXPn6/BXi/Go3byZhwJO6xXbiqLQ7s2uXHwQs9epigG/HNsNcKSxbe\nZ+F398ZX93CfDUh+PQ8rrx6/4+3dibevfmA+nxmS9M0w8AqjGJNWBqk8lsRjcTN0EEjJmAYHRP/k\nFz/nn//n/5Jf/erPefnFLd/8PjHWv+ab66PraReiXF/QklhK5m6unLInV29G5dD0UNRIAxyur/jZ\nr/4pf/pn/xnv3/1A0jtKfsf9+7/hvC5kU0/m1so5F9bsyotpSBEa9HVVWkOKVi3cnjtQs2sjmYJX\nXyskwSrktTLPheoEeAZRnshAmQplnBmoHMbKNFbSAmQnFHS5ausBlm1jsQ2511rJuZJLJpdW7Oey\nvVXx4ih173bJxpuHyl99Xfjff5P56tXM+8fKkuGhVB7XyrJCWbNTZnGK8IERGf6AOgT9H7/RaOlU\nMTnzYPe8PR8431cSq7u+VTkOnmR8e4ZVxTUXpIKlDY2Kq62d18q785nVFB0mTnNmXr0b95RGzIx3\n58y7UyWXJpFloQfiGinaXLgwTaqJMUrNN9DdKia3RJ/Z5q7VUqkle2I1PpJCUL6E8SmR9KwWxr9G\ngY81173FA30RmkTc34nhMAajB08oXY/Ck4NycxDWPHBaDM1uATYjupmfq1H58ibxy+eJacjUajys\nkNLINCqHwXh2JVxPQQkjeL/i8WlXsTMGC+U43SZ4+65et1mh8d96WXlksXriUHdsAnGaiIdMlLuH\nlfNcmFLmy5soAY9FKtCEHfsGobI1qqa2uGur+/NvzQhjFGmcT8ZBbWtysJun7dmpujHt+6c02ur+\nfQbVPa2U4M9+eeBnOZPJkMGqU//mxfuMlgrFBiYqL44WwCEG27YaAxMlA2crvF/gLo+cTDHJCGtw\nuuHhXPj11+/5+vUdVwpzBqaJUlqTbkOTMQ3C1eDrZ1DXSnkyGcfRm6roOHElj8jpax6/P8L9Nxzm\nNwzrA9dkniSP2Wdc16ckeDIl5iqUZaDUhVHxghhxg39QePH8C/78X/yX/Nf/3f/Aw/33vH/7a776\nu3/Hr//9V7x9P6MlowiPtXLOlZLDezAhpS13Y2JcXw1cX00cjkeWyJ8JwnyaPck/DAyaQv4ZzDKn\nx9UL5byzB6aJXJT7dyfm04lBjH/ys1t+/OMnLO8fOK8r85yD6ABRI+o5s1oppp3dk6pxniv3p8J4\nrhzEw2kpeUW5IBEO9Xi5GSx54NvXmX/7f9/x7amwmjKOI4bL/85roeSmd058lgg/fXx8FkP+mGEI\nneNaK/ePDzzMM7a4uFWS6Ahu7hbO64qF8homwUzxJgJFEuc6cLfAXD3upBXWXLs2RG8mG1rHa9mS\nLWqBLGvs61Y3mpgKpFBdCwPeVBX3K97YSeGKMKTESKsqdP0VsUJqnG7bDKxbnKbpEMbPvEhICh1R\nDYM38tVI3u0DyUm988rdaeX+vHJec9AZ6y4uTijICUkTST2hg7jCXBVIgxdQ3UyQc3RyEY9KKi45\nqiqMybgacAGmjlM+LFSQ/s++YrCj7QuwK/05SL9eQ6QyjsL10RiHfbxSYhOXi2/z/4qGt+zizT18\nFcgNQa1y1Lo1ekY7bW/b8rZDGw//QyC+Owyfz5ZXjgiaKqgbUUdwwpKiyYOFGJK599OMe+t1iVlP\n7pUwIqNUhpohe45Je+EMIIVclHVVhuuRAeGohlQ3JldjgmTMVnisBRFnr2jErhdTtCjDYPz+t7+m\nWOFHP/pLhvNbjo+vKPN7dK3IOLJEIwZRmEy4GV229lTcM5YorGpdckaF43Tk9vYlz7/8GVfXB1Tv\nefP9M9I0oFpIpaA2McT6JmSfm2aKYOjgSfkXz28Yh5F3dzNzXklJuL058PLFDQXj/bJiqhyPE89v\nr8jzmbf6wOnB+wRUE99tDUpeMSsUhPv3J15/D7rO1NW73vv//DoM57yLhTBb9QYbRZW7xwJvV2So\npLnClFmHM/lq4GoQJjM0LySrSCR9c4XTUnlcff3p0EKzLl5Wa+szwEeA7MPj81R2JmM6JKZBOZ1n\n5vWELcLtOHAzOdp6e4KiToOrdY2EkfQkXBI4KpxIrJZ4yIam0QsZYwFLPDSnCe5obW3Vm0T8VxEd\nMKp3UynFv4NNaKt9qJ+7303E4mzLpE9jom2c0mu+SxQumfdBbIbbA2x+pl0owl3J2mPTY0re61Hi\nvsTj53P1Mv91dX2G+3nlvLroVbvN/eCreq4+18Q5p55UPjgNiOvRuBkrdmieyyYvsLWvcsQ1BBSu\nAVXjCdEC4BvKDmPeKmk3G7/7fTPmEGEYMa6vYByd494qHC3YIds5pE/2rpAY4YlqwV5gs79mbsgP\ngzEONVr3xdnsgwuLMb5Iav+Dh6PfBEzVKxcFd7EdaAvDEJs+juisuqErOE02bREnulY+7hXcJONW\nC1cm3K9GFQ8T+r6uiAwIA6MmEv53xPWsrwalWOGxuL8yAUN4g3M2MvAQOs5v/ua3fP/9d/zpL5/x\nyyvlxox3d8bDg/F6Sbw7e2giIZ5YN3UUrl5aM0TRzZiUIVUGEUZNaBoQHSBNSLsCbyFEqwcRGuCA\npCH7HDFxUWMcHCiVYrx+c8+aM8dJuUnw5PoWGYRsmbMYx+uBL798xnqfqPPK6/TIo2xrNdeCrRUp\n3rHoh9cn5tPKkwmukjEFBbjpzNMYMC0ZXVu7xcTjDPXeGA/GcF5hOLOme+pNwo6KDcJka3DltYfx\nLJIzTcu81NK7B22Vre3tES76xPF5CoKsIJJCl7pQayGpcn0QXtw6arxfFmSYfIIOrmUt6jGopUA1\nZUoDp+qc12xwMw5A5TwvMcFb8iM42kqPrxFsDw2ute+SYHgZd0NealupdEPcm+0NtYqwwKIwJuVG\nNUqbN364/44XCNVWWuwjJApRvodFYUfDmCredHpMEosFhrA3c64s88pavMCjlMpSPMHjTX7qllCM\nDSGlxGLC/SK8O8EX18qTSbiZPDEzaWaQgozGmnwCOe852napN9NNSUiDQOKi6cIF2N6cBloUpW+o\n7SFabDSt44Ftn1U1ro7GlVl4MWxx7D4WwQqBnRF3a2y+yzjrjN1nxTcOVdfmVs0haxAXFkqX23X2\nnf8DnL4/DCgcJ3h+6xvfulrQSn2zLdVDErk6GlurL9ykBR0MhupFZ41MXn1eiFUmIE3Gz54OnC1x\nV3Mwn2L+4eGhwyRYXbwIDji7yhDJVvJ5IU3KYCOn7HUGmpSxZGzOzNV4uyrXI/yzOvFf/Inx4qho\ngW9q4a++zfyfX83cLZmbceKgQqqZ4zQh6nHxwSoHywylcBycwogYkgyRQrWVtczM+ZE5P7LWQrGR\nyshZlTkKmlQS2uizVhB1NHz3OPPd+zOn1ZhXz+ucFljOK/Pjws3t9P8y926/kiRHmt/P3CMi89yq\n+sImm6Q0O5zZwWoBPa0gQM/Sg/5evelN0AWCIEG7WGAlLGZ3uMOZYd+ruk6dS2ZGuLvpwczc41Q3\nocdiktXdVZUnM8LD3S6fffYZcm33TDZjvtSJ45xMAaY1yzZrZY0ahHoBWpQ5NW6vJ379ycSvXk0k\nvSBUzxSnF8FRBEhFYZ6uIN9wuiQurVDaGZ1O1HMzmuhxQSajpGpTWqmuMmpBXT83u2xvL9pl5zAz\nTX9GgyW0maC91o2yaW9PrzVxuhhH9bKKcV8nJWfryms0NCfOxcTwuTlSnit1K0wIizj/tgzSfGCk\nKQWXNyhhyVP0KCg1NzpGYQQ6FtocC6vNCpGkgDfwIsh4uMukTJHKCyZIFM5AjJIkmFFPDZcPCGMX\nebsd5ICQzHgb4yEnYcqTzUzEYKKiNlBCJZGScWUFrCvWYaFajcHTWnPcPSLnTE6JwwxXS2YSo1Gd\nayFmoUbLf+/GS3bdGosgo9uvR9S8xCAGrMLOQDJ+wnexEuGHPzcxiEW8VZ7+907Z2zkO+3dgM45j\nZxmGsaen9o/IEgbXOCLy4U3UHfYO8PmT+1qAeYK7a+tI3Yo7b22dCx6sjFaFUlpvWJkPloFoGxme\n9tt1PniaDS9O0Vge12yfcXM88NtffMbvvrhhvVz45od73j5WkjSukreuq/KwNU5bshqQJhbfD5vv\n77/+1RX/9e/u+KtPD9zmzP1D5f7xzPsTPK2J52IXt2bLAp5W0zfPAjcTXEtiwYctq7CpIveP/If/\n8LfM/8v/xLc/fMPb737P93/8W77/7ontqVE34aFtPBcT9xKHjNoEk4iZUFFEK3VrbJfCWkysuSC0\n0jgcbFL78Wpyf+66NWJ7dTRvGbezNqtTVU3WOYyRJQ66ekfsRIr2pD2MF4GLam8W+vSzz7n+5FOe\n3z/0oRyzCIdJOEz4+th5VE0eGFnWL9g+2GqhtkJrdWfAPcsUYds2zufzz+69jxORN2HdqonPV0+B\nEc5bIoYlFJ24bHaDIJ2ql1PmXBuXJjAdSfnEcVJeCdwsJud6zkYwNN5u4zCZAdoOmUsxw2eQjdGd\nWn8gZmEmGSJB4DagmRffxA7ElJ061qEBJbSlzRjZZ9Tk38PgklsjkXOXCeEh6VoqvVsS19KWyCai\ne80w06JGqYyGoW5qwmDhw6RTopTiRlyQ5Bo2JfN+tSKqiqDJ5qRmMmjtOiF7bLsr9cko9kY0Ey8V\n+VnD/fOGfFf09E/80FRayh1NQ/SOvz1F8IUxd7sdnbcqOF/aqaT+jz3cEhOJdgHRC7aNqmUjL4gt\nL95rPztlQQ5iFLhKDwJibGBTo0i3qi5vmmia0GwGbI3UvTdPmVbMuWXOMvFYlHO1MWiWkaQOTRyX\nmc8/ecW/+Jv/nHJ55mrJ5K/vWdeNWWBJmUtrTmlbmLA5sLZ/Essi/OJO+K9+d8d/89d3/OZ2Zr3A\n91vj3VPlXILHHcwo0Em4aCO3xtIaNzm7BG3mYVVO6s1vbx+R//ff892Pz3z1/Xfc//gdp3dvKPdn\njqtyXeD7Vrg063wWtYao2owafEA4zJm7q4kpQ5KV8/sHFyizPotNjQI5NXWhNtg2GyhddTShJYSc\nzcBXJxmYNo5lmvPUmFMjayXpNLLwvssi83NjjnJ9fc317S0P7x9601ImM6fEJCBtN+CZZPCkGLc/\no2ytsZaCEgOZP9xgdi/Pz39OhjyJa4dE8c+ilefSWMlIzkw3C3U7UzYbdWQBs9CKkg4CeWY6Hvls\nnrlrjc3TsfNayVk4F6WUjawbn14b1n1TEtdLMpEqFbZSWLdqhdE2BLLCEIAizQyjqrBVpZaVsgnT\nrRWUsrgSm0Y3G0OBUAVRi4hNOWLQwWxcljkD9S7TFAL9sVB7wxcxrlokdynaGRAlZmzup+YEZLEf\nJoynaylxX1dO50JOmSUbNv7ZEb68TfzyLiOugSJa8ByGQMG7bjeBgxussLfQ+yyF3f3YIkWoGffm\nkTHDEJvTyF3HY5BOG0ODfHzsh6/4bitph2DrB23xANHNShj/nbH24ueLb/ngjL3obg3cPsNy9Giw\nWeBSqpBqss5bvx7FmlXsrppHcnQj0RA2STzUzPenzJtN+PZ94e0ZNE0mEqbW6CKAJmGTxvXnn/Dq\n6nOONwfW9h/5/od3rGtjysIkiWNK3MlszXfSTJJWlE9eLfyrf37Hv/rLW3776oCuiXXdeN4a7+vE\nRY21YW33xvxSbRyujmhNnB/PPF6AnDiK8O1l46lZy/+pPvN4/gN//0/f8lwKp9OZej7zWVW+IHGX\nEt+VxJOfQ1pDvBciKMB3x5m/+OUntHzFd/dn7h/PBsuKMM+GxycqWiopJ6gb63oi+ci4pnYeljlx\nfSW0WqxY2aD4dx1y5vV8xU2yGoIxuL0DWCOxk37WYkO8f3zilGcuWmyMXUlsaWJbGxljLwkLsiRm\nsTrCMcGNwEEba7OgL4aVW9Aw9p4Fnur28Kevj6NHvsy2KK2xbZt32M0s8w2/+vKXXF0f+PbN1zyV\nlbVBj9rA6YQT14fMzZXhRq0lam1QoOTMp8sVq2NvSuVudonMNvHJTTZKXINaTJBmqzacQZulVsWl\nXEtVpwk6dpmEWqIDzMCE5gyUHFh8pOjs4Npw4F68iseTsOheJRltzg2YOCKQY1ZhCgcwDGhKMqRx\ndfehu++zK1EGoySuz7D42pTqkUgh+fAA412H8UxuZCV2l6fhxigcwkTD5kk30AGOd2eUrNAdnX0R\n0dCXLAyqdrggdEKGzKrfXwDvfk+Rj+wjc+vWpHuV3j+5s9YvhmB4x2x80Qs77p9q6IRh9nGtAVk1\n2qCm7jIOxT27jA8MB2jDfgnP3yGVUCoszWoZ3zwoX18a78/Kc7Fo03p2hwN8fL7wj3/8nv/5f/+3\n3B4m6nbh/cOJpraXppw4HGxQsiSDAZck5JL48vaKv/jFNX/15ZFfHCyNrxelbI2syt2ceT0nXmU4\neXYDdmZodhbqdOBJQZsJT6X5wJFGo1JL5lIUnSt5yizLFaoTn6cLX+bGTVXm+8l1xKsXeA3Dr6Vy\n++rIb377Cf/8L7/k2x9Xvnt89kw2+ehA5Xo58PnNDbd3R+7PZ/RceHx7Qlrl9FyHplKSHijg/910\nsZwvedeoF+tVwuX6PkKGMWdkA/O8cHV7x3w1cbUJbVt5f1pBCq0JV8vMWqDpxqltPFyO5OMrfvOb\nW3785g3npxMX7wJXd+gvJTDsv2t9sSH766MY8l99ERTlEQAAIABJREFU8pqUJ1Th8enE0+lsuJhk\nrg5Hbq8OvMG63ySKhSmiNzguE7dXEzdX4iJI2KzBi2FfKXtzEAZpTLo6T9ca80NuVsioj0kLiVQL\nBoStNNZqOOelFrbaaJJYNwyaydrToB5dgesZ+X/7msfYudYPqUeYYkpveHMFLqcaeHQOTF9CRD8a\nFNQP5hiEYCiCDAOiPSZ+GXH6f8fnkSBlYZoyy2KjpnIWVIu3+MeMxojwfZMBA7cYhlXCcDovOjjl\nwUPPXmyWwEfcYvZo3I1zCogoeTwtbbwjntWLe91DSjIgFPAuyvj9LmPojtOvJb0M88V/qANtsmOu\nKAw8Py5bDItl+NZ+7MKIRwYSV6JeI+mg+HCMPqWBdRMeL/D22YTWSgWjxtXhuMQa3r5/85537x44\nzomrJXG1zMxJmcXYRSkJx8Wmti8TzCgThX82C/9iTvyyNWQtnFFqaZRqtacvbxN/89nEgZnH1XjP\nW0usFWpKrArPi+mbF8lseeGLT17T2sbD8z2PF4PzjO2SyEnIM7w+Ng6yUtdKkQmTo1BoFckWyBRp\nSE5ITpxK5f75mfdPJzO2YYiruqxvYkFgrZxPK9vJ8JmH5wtrcYilCduWev3LpIMzilBEKbV49L7f\nX/4s9/0D7kbNEdjv87KQ0wItcykbp7UwTzNXhyu2WtjKRtka376feHeeSctMniar2dXqUf9LYx3w\n6J+iHsJHMuT/4i/+GcerK9I08+7pxN/9wx/56ptvOZ2f+Ic//C2HGVqtpK0yufJgbdBSYp4nrpeJ\n2+PC9SGz5ImmiVOBlk6obiSpTI55Z01Iw/WqFWhMmCjX9ZxZJtNmMdW6MCDViiDVMPet4e39wloS\nz6vy49OZx7VyqsJZZ8OtI/tWL7o6j9vJBz06t84+7RsBbH9Ew0nC2SG7IqLQpYXMmIt0hb8Vx/l/\n5kEHRKSq3WjtDZpIdP1ZR+dhEQ4LbGsFqWbwew3BIkjiGj7UI1G8AUh2zmVEn3s1vI7p9wKULYIN\nDzaoILlXsFqlG1xlp3uku2vxhVV1gxoNNn5txD3rDluR3ZrFurixlYj0B0wTgl3xhyGJa9eaMXqM\n9nrOSwx/0DMjINlfGS9+79PigYNaA88xC+IqbJGZ1ToitpwzKpmSch/kUTelUDlk5Zgak1YrsJM4\nHG9oOnG6VJ7frdy8e+Dm7Ynl7ZGb371GfnnF6k1r14vyN79s/PruyNMl87xd83jOvD/D/XPlzdOF\nt88XfuTCc0usAnnJ/Jd/+Tu28yP//j+957k1a3I5b3ApaKlciZKuZ74typtT4V01ynGWTG0lFh4h\n8cPbM+/efc3/9W/+YDN8m8tQY233m8D3Pz5xOV+4v594XqvRKusz21ZZW7FRkc0y1MuadmcyOrNd\n12mCrUyom8fO1f/gXFmnaaVl4e3bt/y4NdIizLeFmyTMsyBZIE/Icku5vKNsha3A77965N/98Z6/\n+2HjzVq5FKOCZgm4bZxlEWFZjK3SopD2weujGPL/9r//7/j97/8jf/f731v3JRtpsgM5L8JhSQgz\ncswmiFRNn7dUgJnWZpBrluNn/OLTT7m+fYUsNzw8vOHp8UcuT+99Mk+hlNXSkdpILhWaRJEpsRwz\n1Mp62ZiYyD437/p6Yc529GrFWQZKqSHu3ni8CA/nwruz8vYkvDvbNI8W0Tgvy3Y2TCLs24gc42VU\nTNwS2msfSasGT33AD5bppWGAfvIa793/WzzaiCtMWJv4zWHis7uFL24Tb95trKsQ8Ij9vPFbJTWP\nIpvdWDgwv54+tMMj9qTdbPpVjfh7xDr2OeGQxGmYAogvnOzXbOdApEcxAU91G9CdS+/N7T8ejiwo\nXsrOpvvve1XAM6TBfPqQVy72ENHWuqGNprzkdxj/jmzA7i+iOjqTQbN1G0/JRtRdZeGYQwBsd9+7\np26FbEPfbfiKN7ppfZEaqO+DqoVtLWxPhbIq96Xx/alw97xyns4sJNJtNt2gYjWs7bxSLhutCXcH\n4fYgfHEDv319xfN64HmtPNXG+yI8lkR++IaynvnsSnlcN1ppbGfIVF7dHfjk5kBt8HZt/PF04blu\nVK3kFBltyDEray1Oty0dekOqB022p89WJaUAa1GKU/uq+mDy6JTWkNq1bM+eh4GJAS82D44642k8\nOT8L40xWbZwfn7lcFM3wSU28utmYAdWJx7Py/vwjqWzMDWZJXE/wxZ3wvAqXd80kr5NJLhiPfDBX\nAO9t+dOvj2LI/+pf/jXfvvmK0/mBtTTmuXF7O7GuFxuW7NHOlBNZBS2JtFaLrNPEeVOe1sRF77j+\n5Ld8+eWvuX79C969+5b7t9/y/u33pGmilgvn53sent7x+PDI4+lsMqaTGqQwSWcQkK3AJxlTBJyS\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_net = solver.test_nets[0]\n", + "for image_index in range(5):\n", + " plt.figure()\n", + " plt.imshow(transformer.deprocess(copy(test_net.blobs['data'].data[image_index, ...])))\n", + " gtlist = test_net.blobs['label'].data[image_index, ...].astype(np.int)\n", + " estlist = test_net.blobs['score'].data[image_index, ...] > 0\n", + " plt.title('GT: {} \\n EST: {}'.format(classes[np.where(gtlist)], classes[np.where(estlist)]))\n", + " plt.axis('off')" + ] + } + ], + "metadata": { + "description": "Multilabel classification on PASCAL using python data-layers.", + "example_name": "PASCAL Multilabel with python datalayer", + "include_in_docs": true, + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/pycaffe/layers/pascal_multilabel_datalayers.py b/examples/pycaffe/layers/pascal_multilabel_datalayers.py index f0039eff4..68e4fa796 100644 --- a/examples/pycaffe/layers/pascal_multilabel_datalayers.py +++ b/examples/pycaffe/layers/pascal_multilabel_datalayers.py @@ -78,88 +78,6 @@ def backward(self, top, propagate_down, bottom): pass -class PascalMultilabelDataLayerAsync(caffe.Layer): - - """ - This is a simple asyncronous datalayer for training a multilabel model on - PASCAL. - """ - - def setup(self, bottom, top): - - self.top_names = ['data', 'label'] - - # === Read input parameters === - - # params is a python dictionary with layer parameters. - params = eval(self.param_str) - - # Check the paramameters for validity. - check_params(params) - - # we need to store this as a local variable. - self.batch_size = params['batch_size'] - - # === We are going to do the actual data processing in a seperate, - # helperclass, called BatchLoader. So let's forward the parameters - # to that class === - self.thread_result = {} - self.thread = None - self.batch_loader = BatchLoader(params, self.thread_result) - self.dispatch_worker() # Let it start fetching data right away. - - # === reshape tops === - # since we use a fixed input image size, we can shape the data layer - # once. Else, we'd have to do it in the reshape call. - top[0].reshape( - self.batch_size, 3, params['im_shape'][0], params['im_shape'][1]) - # Note the 20 channels (because PASCAL has 20 classes.) - top[1].reshape(self.batch_size, 20) - - print_info("PascalMultilabelDataLayerAsync", params) - - def forward(self, bottom, top): - """ - This is the forward pass, where we load the data into the blobs. - Since we run the BatchLoader asynchronously, we just wait for it, - and then copy - """ - - if self.thread is not None: - self.join_worker() # wait until it is done. - - for top_index, name in zip(range(len(top)), self.top_names): - for i in range(self.batch_size): - # Copy the already-prepared data to caffe. - top[top_index].data[i, ...] = self.thread_result[name][i] - - # let's go again while the GPU process this batch. - self.dispatch_worker() - - def reshape(self, bottom, top): - """ - There is no need to reshape the data, since the input is of fixed size - (rows and columns) - """ - pass - - def backward(self, top, propagate_down, bottom): - """ - These layers does not back propagate - """ - pass - - def dispatch_worker(self): - assert self.thread is None - self.thread = Thread(target=self.batch_loader) - self.thread.start() - - def join_worker(self): - assert self.thread is not None - self.thread.join() - self.thread = None - - class BatchLoader(object): """ @@ -185,23 +103,6 @@ def __init__(self, params, result): print "BatchLoader initialized with {} images".format( len(self.indexlist)) - def __call__(self): - """ - This does the same stuff as the forward layer of the synchronous layer. - Exept that we store the data and labels in the result dictionary - (as lists of length batchsize). - """ - self.result['data'] = [] - self.result['label'] = [] - for itt in range(self.batch_size): - - # Get the next image in the batch - im, multilabel = self.load_next_image() - - # Store in a result list. - self.result['data'].append(im) - self.result['label'].append(multilabel) - def load_next_image(self): """ Load the next image in a batch. From 01d5a9e0afdbdf1e93f343bc5656ad1ec53c1673 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 29 Feb 2016 21:13:27 -0800 Subject: [PATCH 189/458] output all logging from upgrade net tools output info, warnings, and errors for fuller description of the upgrade --- tools/upgrade_net_proto_binary.cpp | 5 +++-- tools/upgrade_net_proto_text.cpp | 3 ++- tools/upgrade_solver_proto_text.cpp | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/upgrade_net_proto_binary.cpp b/tools/upgrade_net_proto_binary.cpp index 8a0dd7af7..ede07ecc2 100644 --- a/tools/upgrade_net_proto_binary.cpp +++ b/tools/upgrade_net_proto_binary.cpp @@ -16,6 +16,7 @@ using std::ofstream; using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; // Print output to stderr (while still logging) ::google::InitGoogleLogging(argv[0]); if (argc != 3) { LOG(ERROR) << "Usage: " @@ -39,11 +40,11 @@ int main(int argc, char** argv) { << "see details above."; } } else { - LOG(ERROR) << "File already in V1 proto format: " << argv[1]; + LOG(ERROR) << "File already in latest proto format: " << input_filename; } WriteProtoToBinaryFile(net_param, argv[2]); - LOG(ERROR) << "Wrote upgraded NetParameter binary proto to " << argv[2]; + LOG(INFO) << "Wrote upgraded NetParameter binary proto to " << argv[2]; return !success; } diff --git a/tools/upgrade_net_proto_text.cpp b/tools/upgrade_net_proto_text.cpp index 9200431bc..d8e84d6d9 100644 --- a/tools/upgrade_net_proto_text.cpp +++ b/tools/upgrade_net_proto_text.cpp @@ -16,6 +16,7 @@ using std::ofstream; using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; // Print output to stderr (while still logging) ::google::InitGoogleLogging(argv[0]); if (argc != 3) { LOG(ERROR) << "Usage: " @@ -50,6 +51,6 @@ int main(int argc, char** argv) { // Save new format prototxt. WriteProtoToTextFile(net_param, argv[2]); - LOG(ERROR) << "Wrote upgraded NetParameter text proto to " << argv[2]; + LOG(INFO) << "Wrote upgraded NetParameter text proto to " << argv[2]; return !success; } diff --git a/tools/upgrade_solver_proto_text.cpp b/tools/upgrade_solver_proto_text.cpp index 7130232ae..ddff1ce6b 100644 --- a/tools/upgrade_solver_proto_text.cpp +++ b/tools/upgrade_solver_proto_text.cpp @@ -16,6 +16,7 @@ using std::ofstream; using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; // Print output to stderr (while still logging) ::google::InitGoogleLogging(argv[0]); if (argc != 3) { LOG(ERROR) << "Usage: upgrade_solver_proto_text " @@ -45,6 +46,6 @@ int main(int argc, char** argv) { // Save new format prototxt. WriteProtoToTextFile(solver_param, argv[2]); - LOG(ERROR) << "Wrote upgraded SolverParameter text proto to " << argv[2]; + LOG(INFO) << "Wrote upgraded SolverParameter text proto to " << argv[2]; return !success; } From effa9411ca270f32730400861c08dd2aa3f03ffa Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 29 Feb 2016 21:15:56 -0800 Subject: [PATCH 190/458] check all net upgrade conditions check all conditions all the time; V0 -> V1 and V1 -> V2 do not suffice. --- src/caffe/util/upgrade_proto.cpp | 3 ++- tools/upgrade_net_proto_text.cpp | 5 ----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index 449975bd7..775285f14 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -13,7 +13,8 @@ namespace caffe { bool NetNeedsUpgrade(const NetParameter& net_param) { - return NetNeedsV0ToV1Upgrade(net_param) || NetNeedsV1ToV2Upgrade(net_param); + return NetNeedsV0ToV1Upgrade(net_param) || NetNeedsV1ToV2Upgrade(net_param) + || NetNeedsDataUpgrade(net_param) || NetNeedsInputUpgrade(net_param); } bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { diff --git a/tools/upgrade_net_proto_text.cpp b/tools/upgrade_net_proto_text.cpp index d8e84d6d9..617b48dc9 100644 --- a/tools/upgrade_net_proto_text.cpp +++ b/tools/upgrade_net_proto_text.cpp @@ -32,7 +32,6 @@ int main(int argc, char** argv) { return 2; } bool need_upgrade = NetNeedsUpgrade(net_param); - bool need_data_upgrade = NetNeedsDataUpgrade(net_param); bool success = true; if (need_upgrade) { success = UpgradeNetAsNeeded(input_filename, &net_param); @@ -44,10 +43,6 @@ int main(int argc, char** argv) { LOG(ERROR) << "File already in latest proto format: " << input_filename; } - if (need_data_upgrade) { - UpgradeNetDataTransformation(&net_param); - } - // Save new format prototxt. WriteProtoToTextFile(net_param, argv[2]); From ff6c6e487534e4e738b301da2169bd369344b7f0 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 29 Feb 2016 21:17:21 -0800 Subject: [PATCH 191/458] fix input field -> input layer net upgrade: only convert full defs convert inputs in legacy definitions (prototxt), but simply strip inputs from legacy weights (caffemodel). fix #3750 --- src/caffe/util/upgrade_proto.cpp | 46 ++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index 775285f14..511a2dea5 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -953,29 +953,35 @@ bool NetNeedsInputUpgrade(const NetParameter& net_param) { } void UpgradeNetInput(NetParameter* net_param) { - LayerParameter* layer_param = net_param->add_layer(); - layer_param->set_name("input"); - layer_param->set_type("Input"); - InputParameter* input_param = layer_param->mutable_input_param(); + // Collect inputs and convert to Input layer definitions. + // If the NetParameter holds an input alone, without shape/dim, then + // it's a legacy caffemodel and simply stripping the input field is enough. bool has_shape = net_param->input_shape_size() > 0; - // Convert input fields into a layer. - for (int i = 0; i < net_param->input_size(); ++i) { - layer_param->add_top(net_param->input(i)); - if (has_shape) { - input_param->add_shape()->CopyFrom(net_param->input_shape(i)); - } else { - // Turn legacy input dimensions into shape. - BlobShape* shape = input_param->add_shape(); - int first_dim = i*4; - int last_dim = first_dim + 4; - for (int j = first_dim; j < last_dim; j++) { - shape->add_dim(net_param->input_dim(j)); + bool has_dim = net_param->input_dim_size() > 0; + if (has_shape || has_dim) { + LayerParameter* layer_param = net_param->add_layer(); + layer_param->set_name("input"); + layer_param->set_type("Input"); + InputParameter* input_param = layer_param->mutable_input_param(); + // Convert input fields into a layer. + for (int i = 0; i < net_param->input_size(); ++i) { + layer_param->add_top(net_param->input(i)); + if (has_shape) { + input_param->add_shape()->CopyFrom(net_param->input_shape(i)); + } else { + // Turn legacy input dimensions into shape. + BlobShape* shape = input_param->add_shape(); + int first_dim = i*4; + int last_dim = first_dim + 4; + for (int j = first_dim; j < last_dim; j++) { + shape->add_dim(net_param->input_dim(j)); + } } } - } - // Swap input layer to beginning of net to satisfy layer dependencies. - for (int i = net_param->layer_size() - 1; i > 0; --i) { - net_param->mutable_layer(i-1)->Swap(net_param->mutable_layer(i)); + // Swap input layer to beginning of net to satisfy layer dependencies. + for (int i = net_param->layer_size() - 1; i > 0; --i) { + net_param->mutable_layer(i-1)->Swap(net_param->mutable_layer(i)); + } } // Clear inputs. net_param->clear_input(); From 7eaeb3aeaa23b6a3ba4be5f09bad34f00e10958d Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 29 Feb 2016 21:18:50 -0800 Subject: [PATCH 192/458] refuse to upgrade net with layer/layers inconsistency die loudly if a net definition (prototxt) mixes proto formats by defining both `layer` and `layers` fields instead of complaining but discarding and continuing. fix #3381 --- src/caffe/util/upgrade_proto.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index 511a2dea5..9e186915b 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -656,12 +656,14 @@ void UpgradeNetDataTransformation(NetParameter* net_param) { } bool UpgradeV1Net(const NetParameter& v1_net_param, NetParameter* net_param) { - bool is_fully_compatible = true; if (v1_net_param.layer_size() > 0) { - LOG(ERROR) << "Input NetParameter to be upgraded already specifies 'layer' " - << "fields; these will be ignored for the upgrade."; - is_fully_compatible = false; + LOG(FATAL) << "Refusing to upgrade inconsistent NetParameter input; " + << "the definition includes both 'layer' and 'layers' fields. " + << "The current format defines 'layer' fields with string type like " + << "layer { type: 'Layer' ... } and not layers { type: LAYER ... }. " + << "Manually switch the definition to 'layer' format to continue."; } + bool is_fully_compatible = true; net_param->CopyFrom(v1_net_param); net_param->clear_layers(); net_param->clear_layer(); From 326a486d7e15a1e7a23a3a5b81ae591766062a06 Mon Sep 17 00:00:00 2001 From: Jacek Czaja Date: Tue, 1 Mar 2016 11:32:21 +0100 Subject: [PATCH 193/458] - doc and cmake update MKL related - cosmetic change to mkl related doc --- cmake/Modules/FindMKL.cmake | 2 +- docs/installation.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/FindMKL.cmake b/cmake/Modules/FindMKL.cmake index d2012db57..5ab93b2d6 100644 --- a/cmake/Modules/FindMKL.cmake +++ b/cmake/Modules/FindMKL.cmake @@ -20,7 +20,7 @@ caffe_option(MKL_MULTI_THREADED "Use multi-threading" ON IF NOT MKL_USE_SINGL # ---[ Root folders set(INTEL_ROOT "/opt/intel" CACHE PATH "Folder contains intel libs") -find_path(MKL_ROOT include/mkl.h PATHS $ENV{MKL_ROOT} ${INTEL_ROOT}/mkl +find_path(MKL_ROOT include/mkl.h PATHS $ENV{MKLROOT} ${INTEL_ROOT}/mkl DOC "Folder contains MKL") # ---[ Find include dir diff --git a/docs/installation.md b/docs/installation.md index ef781e8d6..893164584 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -54,7 +54,8 @@ There are several implementations of this library. The choice is yours: * [ATLAS](http://math-atlas.sourceforge.net/): free, open source, and so the default for Caffe. * [Intel MKL](http://software.intel.com/en-us/intel-mkl): commercial and optimized for Intel CPUs, with a free trial and [student](http://software.intel.com/en-us/intel-education-offerings) licenses. 1. Install MKL. - 2. Set `BLAS := mkl` in `Makefile.config` + 2. Set up MKL environment (Details: [Linux](https://software.intel.com/en-us/node/528499), [OS X](https://software.intel.com/en-us/node/528659)). Example: *source /opt/intel/mkl/bin/mklvars.sh intel64* + 3. Set `BLAS := mkl` in `Makefile.config` * [OpenBLAS](http://www.openblas.net/): free and open source; this optimized and parallel BLAS could require more effort to install, although it might offer a speedup. 1. Install OpenBLAS 2. Set `BLAS := open` in `Makefile.config` From 93af70e464e973e79d8b9a12c5431c7c209d4ec9 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Tue, 1 Mar 2016 15:41:33 -0800 Subject: [PATCH 194/458] [example] groom multilabel notebook title, order --- examples/pascal-multilabel-with-datalayer.ipynb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/pascal-multilabel-with-datalayer.ipynb b/examples/pascal-multilabel-with-datalayer.ipynb index fd66114d8..94b9b4fed 100644 --- a/examples/pascal-multilabel-with-datalayer.ipynb +++ b/examples/pascal-multilabel-with-datalayer.ipynb @@ -452,8 +452,8 @@ } ], "metadata": { - "description": "Multilabel classification on PASCAL using python data-layers.", - "example_name": "PASCAL Multilabel with python datalayer", + "description": "Multilabel classification on PASCAL VOC using a Python data layer.", + "example_name": "Multilabel Classification with Python Data Layer", "include_in_docs": true, "kernelspec": { "display_name": "Python 2", @@ -471,7 +471,8 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" - } + }, + "priority": 5 }, "nbformat": 4, "nbformat_minor": 0 From 4f4d0209495aa858de4ea7d71b3aea9196b14a05 Mon Sep 17 00:00:00 2001 From: Viveka Kulharia Date: Wed, 2 Mar 2016 10:37:56 +0530 Subject: [PATCH 195/458] minor mistakes removed --- examples/finetune_flickr_style/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/finetune_flickr_style/readme.md b/examples/finetune_flickr_style/readme.md index 4e9d41f13..9ba4c9217 100644 --- a/examples/finetune_flickr_style/readme.md +++ b/examples/finetune_flickr_style/readme.md @@ -14,9 +14,9 @@ Let's fine-tune the BVLC-distributed CaffeNet model on a different dataset, [Fli ## Explanation The Flickr-sourced images of the Style dataset are visually very similar to the ImageNet dataset, on which the `bvlc_reference_caffenet` was trained. -Since that model works well for object category classification, we'd like to use it architecture for our style classifier. +Since that model works well for object category classification, we'd like to use this architecture for our style classifier. We also only have 80,000 images to train on, so we'd like to start with the parameters learned on the 1,000,000 ImageNet images, and fine-tune as needed. -If we give provide the `weights` argument to the `caffe train` command, the pretrained weights will be loaded into our model, matching layers by name. +If we provide the `weights` argument to the `caffe train` command, the pretrained weights will be loaded into our model, matching layers by name. Because we are predicting 20 classes instead of a 1,000, we do need to change the last layer in the model. Therefore, we change the name of the last layer from `fc8` to `fc8_flickr` in our prototxt. From db7a26162c9a1636b83b7d8f788ff669e694a150 Mon Sep 17 00:00:00 2001 From: max argus Date: Fri, 4 Mar 2016 01:59:48 +0000 Subject: [PATCH 196/458] Removed lint script reference to non-existant caffe_memcpy function. --- scripts/cpp_lint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cpp_lint.py b/scripts/cpp_lint.py index f750489f4..14c76ecd6 100755 --- a/scripts/cpp_lint.py +++ b/scripts/cpp_lint.py @@ -1564,7 +1564,7 @@ def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): caffe_alt_function_list = ( ('memset', ['caffe_set', 'caffe_memset']), ('cudaMemset', ['caffe_gpu_set', 'caffe_gpu_memset']), - ('memcpy', ['caffe_copy', 'caffe_memcpy']), + ('memcpy', ['caffe_copy']), ('cudaMemcpy', ['caffe_copy', 'caffe_gpu_memcpy']), ) From ebfa2af1ca80cd7e0f23d92fca1a491b86605686 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Fri, 4 Mar 2016 12:53:49 -0800 Subject: [PATCH 197/458] [travis] force protobuf 3.0.0b2 for Python 3 This is temporary measure to avoid an apparent upstream issue with protobuf 3.0.0b2.post1. --- scripts/travis/travis_install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/travis/travis_install.sh b/scripts/travis/travis_install.sh index d18dc223a..ca8c410cf 100755 --- a/scripts/travis/travis_install.sh +++ b/scripts/travis/travis_install.sh @@ -93,7 +93,7 @@ if [ "$PYTHON_VERSION" -eq "3" ] && [ ! -e "$CONDA_DIR/bin/protoc" ]; then fi if [ "$PYTHON_VERSION" -eq "3" ]; then - pip install --pre protobuf + pip install --pre protobuf==3.0.0b2 else pip install protobuf fi From 7a8b19f957820af928aab3cbfae28e51a87b0d67 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Fri, 29 Jan 2016 18:41:12 -0800 Subject: [PATCH 198/458] [pycaffe] add coord_map.py for computing induced coordinate transform This provides a framework for automatically aligning different layers of a net despite up/downsampling, padding, and output size rounding. --- python/caffe/coord_map.py | 95 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 python/caffe/coord_map.py diff --git a/python/caffe/coord_map.py b/python/caffe/coord_map.py new file mode 100644 index 000000000..dd41f293b --- /dev/null +++ b/python/caffe/coord_map.py @@ -0,0 +1,95 @@ +from __future__ import division +import numpy as np +from caffe import layers as L + +PASS_THROUGH_LAYERS = ['AbsVal', 'ReLU', 'PReLU', 'Dropout', 'LRN', 'Eltwise', + 'BatchNorm', 'BNLL', 'Log', 'Exp', 'MVN', 'Power', 'Sigmoid', 'Split', + 'TanH', 'Threshold'] + +def conv_params(fn): + params = fn.params.get('convolution_param', fn.params) + axis = params.get('axis', 1) + ks = np.array(params['kernel_size'], ndmin=1) + dilation = np.array(params.get('dilation', 1), ndmin=1) + assert len({'pad_h', 'pad_w', 'kernel_h', 'kernel_w', 'stride_h', + 'stride_w'} & set(fn.params)) == 0, \ + 'cropping does not support legacy _h/_w params' + return (axis, np.array(params.get('stride', 1), ndmin=1), + (ks - 1) * dilation + 1, + np.array(params.get('pad', 0), ndmin=1)) + +class UndefinedMapException(Exception): + pass + +def coord_map(fn): + if fn.type_name in ['Convolution', 'Pooling', 'Im2col']: + axis, stride, ks, pad = conv_params(fn) + return axis, 1 / stride, (pad - (ks - 1) / 2) / stride + elif fn.type_name == 'Deconvolution': + axis, stride, ks, pad = conv_params(fn) + return axis, stride, (ks - 1) / 2 - pad + elif fn.type_name in PASS_THROUGH_LAYERS: + return None, 1, 0 + elif fn.type_name == 'Crop': + axis = fn.params.get('axis') + return axis, 1, - fn.params['crop'] + else: + raise UndefinedMapException + +class AxisMismatchException(Exception): + pass + +def compose((ax1, a1, b1), (ax2, a2, b2)): + if ax1 is None: + ax = ax2 + elif ax2 is None or ax1 == ax2: + ax = ax1 + else: + raise AxisMismatchException + return ax, a1 * a2, a1 * b2 + b1 + +def inverse((ax, a, b)): + return ax, 1 / a, -b / a + +def coord_map_from_to(top_from, top_to): + # We need to find a common ancestor of top_from and top_to. + # We'll assume that all ancestors are equivalent here (otherwise the graph + # is an inconsistent state (which we could improve this to check for)). + # For now use a brute-force algorithm. + + # walk back from top_from, keeping the coord map as we go + from_maps = {top_from: (None, 1, 0)} + frontier = {top_from} + while frontier: + top = frontier.pop() + try: + for bottom in top.fn.inputs: + from_maps[bottom] = compose(from_maps[top], coord_map(top.fn)) + frontier.add(bottom) + except UndefinedMapException: + pass + + # now walk back from top_to until we hit a common blob + to_maps = {top_to: (None, 1, 0)} + frontier = {top_to} + while frontier: + top = frontier.pop() + if top in from_maps: + return compose(to_maps[top], inverse(from_maps[top])) + try: + for bottom in top.fn.inputs: + to_maps[bottom] = compose(to_maps[top], coord_map(top.fn)) + frontier.add(bottom) + except UndefinedMapException: + continue + + # if we got here, we did not find a blob in common + raise RuntimeError, 'Could not compute map between tops; are they connected ' \ + 'by spatial layers?' + +def crop(top_from, top_to): + ax, a, b = coord_map_from_to(top_from, top_to) + assert (a == 1).all(), 'scale mismatch on crop (a = {})'.format(a) + assert (b <= 0).all(), 'cannot crop negative width (b = {})'.format(b) + assert (np.round(b) == b).all(), 'cannot crop noninteger width (b = {})'.format(b) + return L.Crop(top_from, top_to, crop_param=dict(axis=ax, crop=list(-np.round(b).astype(int)))) From 6149e7383e84264f315a23bd5b924ab49d4f5804 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 27 Feb 2016 23:57:42 -0800 Subject: [PATCH 199/458] [pycaffe] document, style, and complete coord_map - document by docstring and comment - pep8 - add latest layers and alphabetize - respect default crop params - handle graphs with compositions of crops by walking only the first, cropped bottom of Crop layers - make python3 happy by replacing arg tuple unpacking --- python/caffe/coord_map.py | 119 +++++++++++++++++++++++++++++++++----- 1 file changed, 104 insertions(+), 15 deletions(-) diff --git a/python/caffe/coord_map.py b/python/caffe/coord_map.py index dd41f293b..884d90705 100644 --- a/python/caffe/coord_map.py +++ b/python/caffe/coord_map.py @@ -1,27 +1,68 @@ +""" +Determine spatial relationships between layers to relate their coordinates. +Coordinates are mapped from input-to-output (forward), but can +be mapped output-to-input (backward) by the inverse mapping too. +This helps crop and align feature maps among other uses. +""" + from __future__ import division import numpy as np from caffe import layers as L -PASS_THROUGH_LAYERS = ['AbsVal', 'ReLU', 'PReLU', 'Dropout', 'LRN', 'Eltwise', - 'BatchNorm', 'BNLL', 'Log', 'Exp', 'MVN', 'Power', 'Sigmoid', 'Split', - 'TanH', 'Threshold'] +PASS_THROUGH_LAYERS = ['AbsVal', 'BatchNorm', 'Bias', 'BNLL', 'Dropout', + 'Eltwise', 'ELU', 'Log', 'LRN', 'Exp', 'MVN', 'Power', + 'ReLU', 'PReLU', 'Scale', 'Sigmoid', 'Split', 'TanH', + 'Threshold'] + def conv_params(fn): + """ + Extract the spatial parameters that determine the coordinate mapping: + kernel size, stride, padding, and dilation. + + Implementation detail: Convolution, Deconvolution, and Im2col layers + define these in the convolution_param message, while Pooling has its + own fields in pooling_param. This method deals with these details to + extract canonical parameters. + """ params = fn.params.get('convolution_param', fn.params) axis = params.get('axis', 1) ks = np.array(params['kernel_size'], ndmin=1) dilation = np.array(params.get('dilation', 1), ndmin=1) assert len({'pad_h', 'pad_w', 'kernel_h', 'kernel_w', 'stride_h', - 'stride_w'} & set(fn.params)) == 0, \ - 'cropping does not support legacy _h/_w params' + 'stride_w'} & set(fn.params)) == 0, \ + 'cropping does not support legacy _h/_w params' return (axis, np.array(params.get('stride', 1), ndmin=1), (ks - 1) * dilation + 1, np.array(params.get('pad', 0), ndmin=1)) + +def crop_params(fn): + """ + Extract the crop layer parameters with defaults. + """ + params = fn.params.get('crop_param', fn.params) + axis = params.get('axis', 2) # default to spatial crop for N, C, H, W + offset = np.array(params.get('offset', 0), ndmin=1) + return (axis, offset) + + class UndefinedMapException(Exception): + """ + Exception raised for layers that do not have a defined coordinate mapping. + """ pass + def coord_map(fn): + """ + Define the coordinate mapping by its + - axis + - scale: output coord[i * scale] <- input_coord[i] + - shift: output coord[i] <- output_coord[i + shift] + s.t. the identity mapping, as for pointwise layers like ReLu, is defined by + (None, 1, 0) since it is independent of axis and does not transform coords. + """ if fn.type_name in ['Convolution', 'Pooling', 'Im2col']: axis, stride, ks, pad = conv_params(fn) return axis, 1 / stride, (pad - (ks - 1) / 2) / stride @@ -31,15 +72,27 @@ def coord_map(fn): elif fn.type_name in PASS_THROUGH_LAYERS: return None, 1, 0 elif fn.type_name == 'Crop': - axis = fn.params.get('axis') - return axis, 1, - fn.params['crop'] + axis, offset = crop_params(fn) + return axis, 1, - offset else: raise UndefinedMapException + class AxisMismatchException(Exception): + """ + Exception raised for mappings with incompatible axes. + """ pass -def compose((ax1, a1, b1), (ax2, a2, b2)): + +def compose(base_map, next_map): + """ + Compose a base coord map with scale a1, shift b1 with a further coord map + with scale a2, shift b2. The scales multiply and the further shift, b2, + is scaled by base coord scale a1. + """ + ax1, a1, b1 = base_map + ax2, a2, b2 = next_map if ax1 is None: ax = ax2 elif ax2 is None or ax1 == ax2: @@ -48,22 +101,48 @@ def compose((ax1, a1, b1), (ax2, a2, b2)): raise AxisMismatchException return ax, a1 * a2, a1 * b2 + b1 -def inverse((ax, a, b)): + +def inverse(coord_map): + """ + Invert a coord map by de-scaling and un-shifting; + this gives the backward mapping for the gradient. + """ + ax, a, b = coord_map return ax, 1 / a, -b / a + def coord_map_from_to(top_from, top_to): + """ + Determine the coordinate mapping betweeen a top (from) and a top (to). + Walk the graph to find a common ancestor while composing the coord maps for + from and to until they meet. As a last step the from map is inverted. + """ # We need to find a common ancestor of top_from and top_to. # We'll assume that all ancestors are equivalent here (otherwise the graph # is an inconsistent state (which we could improve this to check for)). # For now use a brute-force algorithm. + def collect_bottoms(top): + """ + Collect the bottoms to walk for the coordinate mapping. + The general rule is that all the bottoms of a layer can be mapped, as + most layers have the same coordinate mapping for each bottom. + Crop layer is a notable exception. Only the first/cropped bottom is + mappable; the second/dimensions bottom is excluded from the walk. + """ + bottoms = top.fn.inputs + if top.fn.type_name == 'Crop': + bottoms = bottoms[:1] + return bottoms + # walk back from top_from, keeping the coord map as we go from_maps = {top_from: (None, 1, 0)} frontier = {top_from} while frontier: top = frontier.pop() try: - for bottom in top.fn.inputs: + bottoms = collect_bottoms(top) + for bottom in bottoms: from_maps[bottom] = compose(from_maps[top], coord_map(top.fn)) frontier.add(bottom) except UndefinedMapException: @@ -77,19 +156,29 @@ def coord_map_from_to(top_from, top_to): if top in from_maps: return compose(to_maps[top], inverse(from_maps[top])) try: - for bottom in top.fn.inputs: + bottoms = collect_bottoms(top) + for bottom in bottoms: to_maps[bottom] = compose(to_maps[top], coord_map(top.fn)) frontier.add(bottom) except UndefinedMapException: continue # if we got here, we did not find a blob in common - raise RuntimeError, 'Could not compute map between tops; are they connected ' \ - 'by spatial layers?' + raise RuntimeError('Could not compute map between tops; are they ' + 'connected by spatial layers?') + def crop(top_from, top_to): + """ + Define a Crop layer to crop a top (from) to another top (to) by + determining the coordinate mapping between the two and net spec'ing + the axis and shift parameters of the crop. + """ ax, a, b = coord_map_from_to(top_from, top_to) assert (a == 1).all(), 'scale mismatch on crop (a = {})'.format(a) assert (b <= 0).all(), 'cannot crop negative width (b = {})'.format(b) - assert (np.round(b) == b).all(), 'cannot crop noninteger width (b = {})'.format(b) - return L.Crop(top_from, top_to, crop_param=dict(axis=ax, crop=list(-np.round(b).astype(int)))) + assert (np.round(b) == b).all(), 'cannot crop noninteger width ' \ + '(b = {})'.format(b) + return L.Crop(top_from, top_to, + crop_param=dict(axis=ax, + crop=list(-np.round(b).astype(int)))) From 25b9ef95f35a4de766500c9c70a18d839a5f7c70 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sun, 28 Feb 2016 11:51:52 -0800 Subject: [PATCH 200/458] [pycaffe] align coord_map and #3570 Crop layer - crop -> offset - adjust crop axis by 1 --- python/caffe/coord_map.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/caffe/coord_map.py b/python/caffe/coord_map.py index 884d90705..a3413cfa8 100644 --- a/python/caffe/coord_map.py +++ b/python/caffe/coord_map.py @@ -73,6 +73,7 @@ def coord_map(fn): return None, 1, 0 elif fn.type_name == 'Crop': axis, offset = crop_params(fn) + axis -= 1 # -1 for last non-coordinate dim. return axis, 1, - offset else: raise UndefinedMapException @@ -176,9 +177,9 @@ def crop(top_from, top_to): """ ax, a, b = coord_map_from_to(top_from, top_to) assert (a == 1).all(), 'scale mismatch on crop (a = {})'.format(a) - assert (b <= 0).all(), 'cannot crop negative width (b = {})'.format(b) - assert (np.round(b) == b).all(), 'cannot crop noninteger width ' \ + assert (b <= 0).all(), 'cannot crop negative offset (b = {})'.format(b) + assert (np.round(b) == b).all(), 'cannot crop noninteger offset ' \ '(b = {})'.format(b) return L.Crop(top_from, top_to, - crop_param=dict(axis=ax, - crop=list(-np.round(b).astype(int)))) + crop_param=dict(axis=ax + 1, # +1 for first cropping dim. + offset=list(-np.round(b).astype(int)))) From 880e1474270523e3e5585a14a370fda39bb743c1 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 3 Mar 2016 16:39:18 -0800 Subject: [PATCH 201/458] [pycaffe] test coord_map - test known mappings: conv-pool-deconv stack, ReLU and 1x1 conv - test effects of padding - test rectangular/anisotropic coordinate mapping, test N-D - catch error cases: negative crop, scale mismatch, tops that are not spatially connected --- python/caffe/test/test_coord_map.py | 192 ++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 python/caffe/test/test_coord_map.py diff --git a/python/caffe/test/test_coord_map.py b/python/caffe/test/test_coord_map.py new file mode 100644 index 000000000..613260e25 --- /dev/null +++ b/python/caffe/test/test_coord_map.py @@ -0,0 +1,192 @@ +import unittest + +import numpy as np +import random + +import caffe +from caffe import layers as L +from caffe import params as P +from caffe.coord_map import coord_map_from_to, crop + + +def coord_net_spec(ks=3, stride=1, pad=0, pool=2, dstride=2, dpad=0): + """ + Define net spec for simple conv-pool-deconv pattern common to all + coordinate mapping tests. + """ + n = caffe.NetSpec() + n.data = L.Input(shape=dict(dim=[2, 1, 100, 100])) + n.aux = L.Input(shape=dict(dim=[2, 1, 20, 20])) + n.conv = L.Convolution( + n.data, num_output=10, kernel_size=ks, stride=stride, pad=pad) + n.pool = L.Pooling( + n.conv, pool=P.Pooling.MAX, kernel_size=pool, stride=pool, pad=0) + # for upsampling kernel size is 2x stride + try: + deconv_ks = [s*2 for s in dstride] + except: + deconv_ks = dstride*2 + n.deconv = L.Deconvolution( + n.pool, num_output=10, kernel_size=deconv_ks, stride=dstride, pad=dpad) + return n + + +class TestCoordMap(unittest.TestCase): + def setUp(self): + pass + + def test_conv_pool_deconv(self): + """ + Map through conv, pool, and deconv. + """ + n = coord_net_spec() + # identity for 2x pool, 2x deconv + ax, a, b = coord_map_from_to(n.deconv, n.data) + self.assertEquals(ax, 1) + self.assertEquals(a, 1) + self.assertEquals(b, 0) + # shift-by-one for 4x pool, 4x deconv + n = coord_net_spec(pool=4, dstride=4) + ax, a, b = coord_map_from_to(n.deconv, n.data) + self.assertEquals(ax, 1) + self.assertEquals(a, 1) + self.assertEquals(b, -1) + + def test_pass(self): + """ + A pass-through layer (ReLU) and conv (1x1, stride 1, pad 0) + both do identity mapping. + """ + n = coord_net_spec() + ax, a, b = coord_map_from_to(n.deconv, n.data) + n.relu = L.ReLU(n.deconv) + n.conv1x1 = L.Convolution( + n.relu, num_output=10, kernel_size=1, stride=1, pad=0) + for top in [n.relu, n.conv1x1]: + ax_pass, a_pass, b_pass = coord_map_from_to(top, n.data) + self.assertEquals(ax, ax_pass) + self.assertEquals(a, a_pass) + self.assertEquals(b, b_pass) + + def test_padding(self): + """ + Padding conv adds offset while padding deconv subtracts offset. + """ + n = coord_net_spec() + ax, a, b = coord_map_from_to(n.deconv, n.data) + pad = random.randint(0, 10) + # conv padding + n = coord_net_spec(pad=pad) + _, a_pad, b_pad = coord_map_from_to(n.deconv, n.data) + self.assertEquals(a, a_pad) + self.assertEquals(b - pad, b_pad) + # deconv padding + n = coord_net_spec(dpad=pad) + _, a_pad, b_pad = coord_map_from_to(n.deconv, n.data) + self.assertEquals(a, a_pad) + self.assertEquals(b + pad, b_pad) + # pad both to cancel out + n = coord_net_spec(pad=pad, dpad=pad) + _, a_pad, b_pad = coord_map_from_to(n.deconv, n.data) + self.assertEquals(a, a_pad) + self.assertEquals(b, b_pad) + + def test_multi_conv(self): + """ + Multiple bottoms/tops of a layer are identically mapped. + """ + n = coord_net_spec() + # multi bottom/top + n.conv_data, n.conv_aux = L.Convolution( + n.data, n.aux, ntop=2, num_output=10, kernel_size=5, stride=2, + pad=0) + ax1, a1, b1 = coord_map_from_to(n.conv_data, n.data) + ax2, a2, b2 = coord_map_from_to(n.conv_aux, n.aux) + self.assertEquals(ax1, ax2) + self.assertEquals(a1, a2) + self.assertEquals(b1, b2) + + def test_rect(self): + """ + Anisotropic mapping is equivalent to its isotropic parts. + """ + n3x3 = coord_net_spec(ks=3, stride=1, pad=0) + n5x5 = coord_net_spec(ks=5, stride=2, pad=10) + n3x5 = coord_net_spec(ks=[3, 5], stride=[1, 2], pad=[0, 10]) + ax_3x3, a_3x3, b_3x3 = coord_map_from_to(n3x3.deconv, n3x3.data) + ax_5x5, a_5x5, b_5x5 = coord_map_from_to(n5x5.deconv, n5x5.data) + ax_3x5, a_3x5, b_3x5 = coord_map_from_to(n3x5.deconv, n3x5.data) + self.assertTrue(ax_3x3 == ax_5x5 == ax_3x5) + self.assertEquals(a_3x3, a_3x5[0]) + self.assertEquals(b_3x3, b_3x5[0]) + self.assertEquals(a_5x5, a_3x5[1]) + self.assertEquals(b_5x5, b_3x5[1]) + + def test_nd_conv(self): + """ + ND conv maps the same way in more dimensions. + """ + n = caffe.NetSpec() + # define data with 3 spatial dimensions, otherwise the same net + n.data = L.Input(shape=dict(dim=[2, 3, 100, 100, 100])) + n.conv = L.Convolution( + n.data, num_output=10, kernel_size=[3, 3, 3], stride=[1, 1, 1], + pad=[0, 1, 2]) + n.pool = L.Pooling( + n.conv, pool=P.Pooling.MAX, kernel_size=2, stride=2, pad=0) + n.deconv = L.Deconvolution( + n.pool, num_output=10, kernel_size=4, stride=2, pad=0) + ax, a, b = coord_map_from_to(n.deconv, n.data) + self.assertEquals(ax, 1) + self.assertTrue(len(a) == len(b)) + self.assertTrue(np.all(a == 1)) + self.assertEquals(b[0] - 1, b[1]) + self.assertEquals(b[1] - 1, b[2]) + + def test_crop_of_crop(self): + """ + Map coordinates through Crop layer: + crop an already-cropped output to the input and check change in offset. + """ + n = coord_net_spec() + offset = random.randint(0, 10) + ax, a, b = coord_map_from_to(n.deconv, n.data) + n.crop = L.Crop(n.deconv, n.data, axis=2, offset=offset) + ax_crop, a_crop, b_crop = coord_map_from_to(n.crop, n.data) + self.assertEquals(ax, ax_crop) + self.assertEquals(a, a_crop) + self.assertEquals(b + offset, b_crop) + + def test_crop_helper(self): + """ + Define Crop layer by crop(). + """ + n = coord_net_spec() + crop(n.deconv, n.data) + + def test_catch_unconnected(self): + """ + Catch mapping spatially unconnected tops. + """ + n = coord_net_spec() + n.ip = L.InnerProduct(n.deconv, num_output=10) + with self.assertRaises(RuntimeError): + coord_map_from_to(n.ip, n.data) + + def test_catch_scale_mismatch(self): + """ + Catch incompatible scales, such as when the top to be cropped + is mapped to a differently strided reference top. + """ + n = coord_net_spec(pool=3, dstride=2) # pool 3x but deconv 2x + with self.assertRaises(AssertionError): + crop(n.deconv, n.data) + + def test_catch_negative_crop(self): + """ + Catch impossible offsets, such as when the top to be cropped + is mapped to a larger reference top. + """ + n = coord_net_spec(dpad=10) # make output smaller than input + with self.assertRaises(AssertionError): + crop(n.deconv, n.data) From b9ea0267851ccc7f782327408fe7953ba0f13c53 Mon Sep 17 00:00:00 2001 From: Jun Shi Date: Fri, 22 Jan 2016 09:50:31 -0800 Subject: [PATCH 202/458] add check and find GPU device utilities --- include/caffe/common.hpp | 5 +++++ src/caffe/common.cpp | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/include/caffe/common.hpp b/include/caffe/common.hpp index 6b902a42e..3c6a076ec 100644 --- a/include/caffe/common.hpp +++ b/include/caffe/common.hpp @@ -153,6 +153,11 @@ class Caffe { static void SetDevice(const int device_id); // Prints the current GPU status. static void DeviceQuery(); + // Check if specified device is available + static bool CheckDevice(const int device_id); + // Search from start_id to the highest possible device ordinal, + // return the ordinal of the first available device. + static int FindDevice(const int start_id = 0); // Parallel training info inline static int solver_count() { return Get().solver_count_; } inline static void set_solver_count(int val) { Get().solver_count_ = val; } diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp index 299d67d4b..dee681654 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -70,6 +70,15 @@ void Caffe::DeviceQuery() { NO_GPU; } +bool Caffe::CheckDevice(const int device_id) { + NO_GPU; + return false; +} + +int Caffe::FindDevice(const int start_id) { + NO_GPU; + return -1; +} class Caffe::RNG::Generator { public: @@ -192,6 +201,39 @@ void Caffe::DeviceQuery() { return; } +bool Caffe::CheckDevice(const int device_id) { + // This function checks the availability of GPU #device_id. + // It attempts to create a context on the device by calling cudaFree(0). + // cudaSetDevice() alone is not sufficient to check the availability. + // It lazily records device_id, however, does not initialize a + // context. So it does not know if the host thread has the permission to use + // the device or not. + // + // In a shared environment where the devices are set to EXCLUSIVE_PROCESS + // or EXCLUSIVE_THREAD mode, cudaSetDevice() returns cudaSuccess + // even if the device is exclusively occupied by another process or thread. + // Cuda operations that initialize the context are needed to check + // the permission. cudaFree(0) is one of those with no side effect, + // except the context initialization. + bool r = ((cudaSuccess == cudaSetDevice(device_id)) && + (cudaSuccess == cudaFree(0))); + // reset any error that may have occurred. + cudaGetLastError(); + return r; +} + +int Caffe::FindDevice(const int start_id) { + // This function finds the first available device by checking devices with + // ordinal from start_id to the highest available value. In the + // EXCLUSIVE_PROCESS or EXCLUSIVE_THREAD mode, if it succeeds, it also + // claims the device due to the initialization of the context. + int count = 0; + CUDA_CHECK(cudaGetDeviceCount(&count)); + for (int i = start_id; i < count; i++) { + if (CheckDevice(i)) return i; + } + return -1; +} class Caffe::RNG::Generator { public: From 64e78bdc76b8cabdf4282506438ab2d7f321adf3 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sat, 27 Dec 2014 01:44:36 -0800 Subject: [PATCH 203/458] add CropLayer: crop blob to another blob's dimensions with offsets configure offset(s) through proto definition. --- include/caffe/layers/crop_layer.hpp | 49 ++++++++++++++++++ src/caffe/layers/crop_layer.cpp | 78 +++++++++++++++++++++++++++++ src/caffe/layers/crop_layer.cu | 60 ++++++++++++++++++++++ src/caffe/proto/caffe.proto | 10 +++- 4 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 include/caffe/layers/crop_layer.hpp create mode 100644 src/caffe/layers/crop_layer.cpp create mode 100644 src/caffe/layers/crop_layer.cu diff --git a/include/caffe/layers/crop_layer.hpp b/include/caffe/layers/crop_layer.hpp new file mode 100644 index 000000000..bab290718 --- /dev/null +++ b/include/caffe/layers/crop_layer.hpp @@ -0,0 +1,49 @@ +#ifndef CAFFE_CROP_LAYER_HPP_ +#define CAFFE_CROP_LAYER_HPP_ + +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/layer.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +/** + * @brief Takes a Blob and crop it along either the width or height dimension, + * outputting a cropped Blob. + * + * TODO(dox): thorough documentation for Forward, Backward, and proto params. + */ + +template +class CropLayer : public Layer { + public: + explicit CropLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "Crop"; } + virtual inline int ExactNumBottomBlobs() const { return 2; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + int crop_h_, crop_w_; +}; + +} // namespace caffe + +#endif // CAFFE_CROP_LAYER_HPP_ diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp new file mode 100644 index 000000000..76409bd74 --- /dev/null +++ b/src/caffe/layers/crop_layer.cpp @@ -0,0 +1,78 @@ +#include +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/crop_layer.hpp" +#include "caffe/net.hpp" + + +namespace caffe { + +template +void CropLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + const CropParameter& param = this->layer_param_.crop_param(); + CHECK_EQ(bottom.size(), 2) << "Wrong number of bottom blobs."; + CHECK_EQ(bottom[0]->num_axes(), 4) << "Only works with 4D blobs."; + CHECK_EQ(bottom[1]->num_axes(), 4) << "Only works with 4D blobs."; + crop_h_ = param.offset_height(); + crop_w_ = param.offset_width(); +} + +template +void CropLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + // Check that the image we are cropping minus the margin is bigger than the + // destination image. + CHECK_GT(bottom[0]->height()-crop_h_, bottom[1]->height()) + << "invalid offset"; + CHECK_GT(bottom[0]->width()-crop_w_, bottom[1]->width()) << "invalid offset"; + top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), bottom[1]->height(), + bottom[1]->width()); +} + +template +void CropLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = top[0]->mutable_cpu_data(); + for (int n = 0; n < top[0]->num(); ++n) { + for (int c = 0; c < top[0]->channels(); ++c) { + for (int h = 0; h < top[0]->height(); ++h) { + caffe_copy(top[0]->width(), + bottom_data + bottom[0]->offset(n, c, crop_h_ + h, crop_w_), + top_data + top[0]->offset(n, c, h)); + } + } + } +} + +template +void CropLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + if (propagate_down[0]) { + caffe_set(bottom[0]->count(), static_cast(0), bottom_diff); + for (int n = 0; n < top[0]->num(); ++n) { + for (int c = 0; c < top[0]->channels(); ++c) { + for (int h = 0; h < top[0]->height(); ++h) { + caffe_copy(top[0]->width(), + top_diff + top[0]->offset(n, c, h), + bottom_diff + bottom[0]->offset(n, c, crop_h_ + h, crop_w_)); + } + } + } + } +} + +#ifdef CPU_ONLY +STUB_GPU(CropLayer); +#endif + +INSTANTIATE_CLASS(CropLayer); +REGISTER_LAYER_CLASS(Crop); + +} // namespace caffe diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu new file mode 100644 index 000000000..262f5fa84 --- /dev/null +++ b/src/caffe/layers/crop_layer.cu @@ -0,0 +1,60 @@ +#include + +#include "caffe/layers/crop_layer.hpp" + +namespace caffe { + +// Copy (one line per thread) from one array to another, with arbitrary +// strides in the last two dimensions. +template +__global__ void copy_kernel(const int n, const int height, const int width, + const int src_outer_stride, const int src_inner_stride, + const int dest_outer_stride, const int dest_inner_stride, + const Dtype* src, Dtype* dest) { + CUDA_KERNEL_LOOP(index, n) { + int src_start = index / height * src_outer_stride + + index % height * src_inner_stride; + int dest_start = index / height * dest_outer_stride + + index % height * dest_inner_stride; + for (int i = 0; i < width; ++i) { + dest[dest_start + i] = src[src_start + i]; + } + } +} + +template +void CropLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = top[0]->mutable_gpu_data(); + const int lines = top[0]->count() / top[0]->width(); + + // NOLINT_NEXT_LINE(whitespace/operators) + copy_kernel<<>>( + lines, top[0]->height(), top[0]->width(), + bottom[0]->height() * bottom[0]->width(), bottom[0]->width(), + top[0]->height() * top[0]->width(), top[0]->width(), + bottom_data + bottom[0]->offset(0, 0, crop_h_, crop_w_), top_data); +} + +template +void CropLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + const int lines = top[0]->count() / top[0]->width(); + + if (propagate_down[0]) { + caffe_gpu_set(bottom[0]->count(), static_cast(0), bottom_diff); + // NOLINT_NEXT_LINE(whitespace/operators) + copy_kernel<<>>( + lines, top[0]->height(), top[0]->width(), + top[0]->height() * top[0]->width(), top[0]->width(), + bottom[0]->height() * bottom[0]->width(), bottom[0]->width(), + top_diff, bottom_diff + bottom[0]->offset(0, 0, crop_h_, crop_w_)); + } +} + +INSTANTIATE_LAYER_GPU_FUNCS(CropLayer); + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 3b27bbd94..ace1a4185 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 144 (last added: input_param) +// LayerParameter next available layer-specific ID: 145 (last added: crop_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -360,6 +360,7 @@ message LayerParameter { optional ConcatParameter concat_param = 104; optional ContrastiveLossParameter contrastive_loss_param = 105; optional ConvolutionParameter convolution_param = 106; + optional CropParameter crop_param = 144; optional DataParameter data_param = 107; optional DropoutParameter dropout_param = 108; optional DummyDataParameter dummy_data_param = 109; @@ -598,6 +599,13 @@ message ConvolutionParameter { optional bool force_nd_im2col = 17 [default = false]; } +message CropParameter { + // Assumes standard dimensions: ( N,C,H,W ) + // This could possibly be extended to use "optional BlobShape offsets" + optional uint32 offset_height = 1[default = 0]; + optional uint32 offset_width = 2[default = 0]; +} + message DataParameter { enum DB { LEVELDB = 0; From 952fd17e52b24736f2644c32c249538241b34474 Mon Sep 17 00:00:00 2001 From: max argus Date: Tue, 19 Jan 2016 18:35:04 +0000 Subject: [PATCH 204/458] Extend Crop to N-D, changed CropParameter. --- include/caffe/layers/crop_layer.hpp | 22 ++++- src/caffe/layers/crop_layer.cpp | 124 +++++++++++++++++++++------- src/caffe/layers/crop_layer.cu | 97 ++++++++++++++++++---- src/caffe/proto/caffe.proto | 19 +++-- 4 files changed, 210 insertions(+), 52 deletions(-) diff --git a/include/caffe/layers/crop_layer.hpp b/include/caffe/layers/crop_layer.hpp index bab290718..f84bab1ec 100644 --- a/include/caffe/layers/crop_layer.hpp +++ b/include/caffe/layers/crop_layer.hpp @@ -41,9 +41,27 @@ class CropLayer : public Layer { virtual void Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); - int crop_h_, crop_w_; -}; + vector offsets; + + private: + void crop_copy(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward); + void crop_copy_gpu(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward); +}; } // namespace caffe #endif // CAFFE_CROP_LAYER_HPP_ diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index 76409bd74..82729f17c 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -1,8 +1,10 @@ #include +#include #include #include #include + #include "caffe/layer.hpp" #include "caffe/layers/crop_layer.hpp" #include "caffe/net.hpp" @@ -13,40 +15,108 @@ namespace caffe { template void CropLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { - const CropParameter& param = this->layer_param_.crop_param(); CHECK_EQ(bottom.size(), 2) << "Wrong number of bottom blobs."; - CHECK_EQ(bottom[0]->num_axes(), 4) << "Only works with 4D blobs."; - CHECK_EQ(bottom[1]->num_axes(), 4) << "Only works with 4D blobs."; - crop_h_ = param.offset_height(); - crop_w_ = param.offset_width(); + // parameter setup moved to Reshape because it depends on size. } template void CropLayer::Reshape(const vector*>& bottom, const vector*>& top) { - // Check that the image we are cropping minus the margin is bigger than the - // destination image. - CHECK_GT(bottom[0]->height()-crop_h_, bottom[1]->height()) - << "invalid offset"; - CHECK_GT(bottom[0]->width()-crop_w_, bottom[1]->width()) << "invalid offset"; - top[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), bottom[1]->height(), - bottom[1]->width()); + const CropParameter& param = this->layer_param_.crop_param(); + // bottom[0] supplies the data + // bottom[1] supplies the size + int input_dim = bottom[0]->num_axes(); + CHECK_LT(param.axis(), input_dim) << "crop axis bigger than input dim"; + // initialize all offsets to 0 + offsets = vector(input_dim, 0); + // initialize new shape to bottom[0] + vector new_shape(bottom[0]->shape()); + + if (param.offset_size() > 1) { + // the number of crop values specified must be equal to the number + // of dimensions following axis + CHECK_EQ(param.axis() + param.offset_size(), input_dim) + << "number of crop values specified must be equal to the number of " + << "dimensions following axis."; + } + // apply crops + for (int i = 0; i < input_dim; ++i) { + int crop_offset = 0; + int new_size = bottom[0]->shape(i); + if (i >= param.axis() && param.offset_size() == 1) { + // if only one crop value is supplied, crop all dimensions after axis + // by this crop value + crop_offset = param.offset(0); + new_size = bottom[1]->shape(i); + } else if (i >= param.axis() && param.offset_size() > 1) { + // crop values specified must be equal to the number of dimensions + // following axis + crop_offset = param.offset(i - param.axis()); + new_size = bottom[1]->shape(i); + } + // Check that the image we are cropping minus the margin is bigger + // than the destination image. + CHECK_GE(bottom[0]->shape(i) - crop_offset, + bottom[1]->shape(i)) + << "invalid crop parameters in dimension: " << i; + // Now set new size and offsets + new_shape[i] = new_size; + offsets[i] = crop_offset; + } + top[0]->Reshape(new_shape); +} + +// recursive copy function +template +void CropLayer::crop_copy(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward) { + if (cur_dim + 1 < top[0]->num_axes()) { + // We are not yet at the final dimension, call copy recursivley + for (int i = 0; i < top[0]->shape(cur_dim); ++i) { + indices[cur_dim] = i; + crop_copy(bottom, top, offsets, indices, cur_dim+1, + src_data, dest_data, is_forward); + } + } else { + // We are at the last dimensions, which is stored continously in memory + for (int i = 0; i < top[0]->shape(cur_dim); ++i) { + // prepare index vector reduced(red) and with offsets(off) + std::vector ind_red(cur_dim, 0); + std::vector ind_off(cur_dim+1, 0); + for (int j = 0; j < cur_dim; ++j) { + ind_red[j] = indices[j]; + ind_off[j] = indices[j] + offsets[j]; + } + ind_off[cur_dim] = offsets[cur_dim]; + // do the copy + if (is_forward) { + caffe_copy(top[0]->shape(cur_dim), + src_data + bottom[0]->offset(ind_off), + dest_data + top[0]->offset(ind_red)); + } else { + // in the backwards pass the src_data is top_diff + // and the dest_data is bottom_diff + caffe_copy(top[0]->shape(cur_dim), + src_data + top[0]->offset(ind_red), + dest_data + bottom[0]->offset(ind_off)); + } + } + } } template void CropLayer::Forward_cpu(const vector*>& bottom, const vector*>& top) { + std::vector indices(top[0]->num_axes(), 0); const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = top[0]->mutable_cpu_data(); - for (int n = 0; n < top[0]->num(); ++n) { - for (int c = 0; c < top[0]->channels(); ++c) { - for (int h = 0; h < top[0]->height(); ++h) { - caffe_copy(top[0]->width(), - bottom_data + bottom[0]->offset(n, c, crop_h_ + h, crop_w_), - top_data + top[0]->offset(n, c, h)); - } - } - } + crop_copy(bottom, top, offsets, indices, 0, bottom_data, top_data, true); } template @@ -54,17 +124,11 @@ void CropLayer::Backward_cpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { const Dtype* top_diff = top[0]->cpu_diff(); Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); + if (propagate_down[0]) { caffe_set(bottom[0]->count(), static_cast(0), bottom_diff); - for (int n = 0; n < top[0]->num(); ++n) { - for (int c = 0; c < top[0]->channels(); ++c) { - for (int h = 0; h < top[0]->height(); ++h) { - caffe_copy(top[0]->width(), - top_diff + top[0]->offset(n, c, h), - bottom_diff + bottom[0]->offset(n, c, crop_h_ + h, crop_w_)); - } - } - } + std::vector indices(top[0]->num_axes(), 0); + crop_copy(bottom, top, offsets, indices, 0, top_diff, bottom_diff, false); } } diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 262f5fa84..7b832c0a0 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -22,19 +22,90 @@ __global__ void copy_kernel(const int n, const int height, const int width, } } +// recursive copy function, this function is similar to crop_copy but loops +// over all but the last two dimensions. It is implemented this way to allow +// for ND cropping while still relying on a CUDA kernel for the innermost +// two dimensions for performance reasons. +// An alternative way to implement ND cropping relying more on the kernel +// would require passing offsets to the kernel, which is a bit problematic +// because it is of variable length. Since in the standard (N,C,W,H) case +// N,C are usually not cropped a speedup could be achieved by not looping +// the application of the copy_kernel around these dimensions. +template +void CropLayer::crop_copy_gpu(const vector*>& bottom, + const vector*>& top, + const vector& offsets, + vector indices, + int cur_dim, + const Dtype* src_data, + Dtype* dest_data, + bool is_forward) { + if (cur_dim + 2 < top[0]->num_axes()) { + // We are not yet at the final dimension, call copy recursivley + for (int i = 0; i < top[0]->shape(cur_dim); ++i) { + indices[cur_dim] = i; + crop_copy_gpu(bottom, top, offsets, indices, cur_dim+1, + src_data, dest_data, is_forward); + } + } else { + // We are at the last two dimensions, which are stored continously in memory + // With (N,C,H,W) + // (0,1,2,3) cur_dim -> H + // cur_dim+1 -> W + const int lines = top[0]->shape(cur_dim); + const int height = top[0]->shape(cur_dim); + const int width = top[0]->shape(cur_dim+1); + std::vector ind_off(cur_dim+2, 0); + for (int j = 0; j < cur_dim; ++j) { + ind_off[j] = indices[j] + offsets[j]; + } + ind_off[cur_dim] = offsets[cur_dim]; + ind_off[cur_dim+1] = offsets[cur_dim+1]; + // Compute copy strides + const int src_outer_stride = + bottom[0]->shape(cur_dim)*bottom[0]->shape(cur_dim+1); + const int src_inner_stride = bottom[0]->shape(cur_dim+1); + const int dest_outer_stride = + top[0]->shape(cur_dim)*top[0]->shape(cur_dim+1); + const int dest_inner_stride = top[0]->shape(cur_dim+1); + + if (is_forward) { + const Dtype* bottom_data = bottom[0]->gpu_data() + + bottom[0]->offset(ind_off); + Dtype* top_data = top[0]->mutable_gpu_data() + + top[0]->offset(indices); + // NOLINT_NEXT_LINE(whitespace/operators) + copy_kernel<<>>( + lines, height, width, + src_outer_stride, src_inner_stride, + dest_outer_stride, dest_inner_stride, + bottom_data, top_data); + + } else { + const Dtype* top_diff = top[0]->gpu_diff() + + top[0]->offset(indices); + Dtype* bottom_diff = bottom[0]->mutable_gpu_diff() + + bottom[0]->offset(ind_off); + // NOLINT_NEXT_LINE(whitespace/operators) + copy_kernel<<>>( + lines, height, width, + dest_outer_stride, dest_inner_stride, + src_outer_stride, src_inner_stride, + top_diff, bottom_diff); + } + } +} + template void CropLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { + std::vector indices(top[0]->num_axes(), 0); + // This works because crop_copy uses caffe_copy which calls cudaMemcpy. + // My intuition is that calling this thousands of times is probably less + // efficient than writing a custom kernel. const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); - const int lines = top[0]->count() / top[0]->width(); - - // NOLINT_NEXT_LINE(whitespace/operators) - copy_kernel<<>>( - lines, top[0]->height(), top[0]->width(), - bottom[0]->height() * bottom[0]->width(), bottom[0]->width(), - top[0]->height() * top[0]->width(), top[0]->width(), - bottom_data + bottom[0]->offset(0, 0, crop_h_, crop_w_), top_data); + crop_copy_gpu(bottom, top, offsets, indices, 0, bottom_data, top_data, true); } template @@ -42,16 +113,12 @@ void CropLayer::Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); - const int lines = top[0]->count() / top[0]->width(); if (propagate_down[0]) { caffe_gpu_set(bottom[0]->count(), static_cast(0), bottom_diff); - // NOLINT_NEXT_LINE(whitespace/operators) - copy_kernel<<>>( - lines, top[0]->height(), top[0]->width(), - top[0]->height() * top[0]->width(), top[0]->width(), - bottom[0]->height() * bottom[0]->width(), bottom[0]->width(), - top_diff, bottom_diff + bottom[0]->offset(0, 0, crop_h_, crop_w_)); + std::vector indices(top[0]->num_axes(), 0); + crop_copy_gpu(bottom, top, offsets, indices, 0, top_diff, bottom_diff, + false); } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index ace1a4185..60d387a7d 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -600,10 +600,19 @@ message ConvolutionParameter { } message CropParameter { - // Assumes standard dimensions: ( N,C,H,W ) - // This could possibly be extended to use "optional BlobShape offsets" - optional uint32 offset_height = 1[default = 0]; - optional uint32 offset_width = 2[default = 0]; + // To crop, elements of the first bottom are selected to fit the dimensions + // of the second, reference bottom. The crop is configured by + // - the crop `axis` to pick the dimensions for cropping + // - the crop `offset` to set the shift for all/each dimension + // to align the cropped bottom with the reference bottom. + // All dimensions up to but excluding `axis` are preserved, while + // the dimensions including and trailing `axis` are cropped. + // If only one `offset` is set, then all dimensions are offset by this amount. + // Otherwise, the number of offsets must equal the number of cropped axes to + // shift the crop in each dimension accordingly. + // Note: standard dimensions are N,C,H,W so the default is a spatial crop. + optional uint32 axis = 1 [default = 2]; + repeated uint32 offset = 2; } message DataParameter { @@ -680,7 +689,7 @@ message EltwiseParameter { // Message that stores parameters used by ELULayer message ELUParameter { // Described in: - // Clevert, D.-A., Unterthiner, T., & Hochreiter, S. (2015). Fast and Accurate + // Clevert, D.-A., Unterthiner, T., & Hochreiter, S. (2015). Fast and Accurate // Deep Network Learning by Exponential Linear Units (ELUs). arXiv optional float alpha = 1 [default = 1]; } From ca9fa498fb76a83befe6cb299a71f7f779aeb5d9 Mon Sep 17 00:00:00 2001 From: max argus Date: Mon, 29 Feb 2016 11:24:25 +0000 Subject: [PATCH 205/458] Crop: fixes, tests and negative axis indexing. --- include/caffe/layers/crop_layer.hpp | 4 +- src/caffe/layers/crop_layer.cpp | 50 +++--- src/caffe/layers/crop_layer.cu | 3 - src/caffe/proto/caffe.proto | 6 +- src/caffe/test/test_crop_layer.cpp | 228 ++++++++++++++++++++++++++++ 5 files changed, 263 insertions(+), 28 deletions(-) create mode 100644 src/caffe/test/test_crop_layer.cpp diff --git a/include/caffe/layers/crop_layer.hpp b/include/caffe/layers/crop_layer.hpp index f84bab1ec..5c605b2ae 100644 --- a/include/caffe/layers/crop_layer.hpp +++ b/include/caffe/layers/crop_layer.hpp @@ -11,8 +11,8 @@ namespace caffe { /** - * @brief Takes a Blob and crop it along either the width or height dimension, - * outputting a cropped Blob. + * @brief Takes a Blob and crop it, to the shape specified by the second input + * Blob, across all dimensions after the specified axis. * * TODO(dox): thorough documentation for Forward, Backward, and proto params. */ diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index 82729f17c..e81bdd732 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -15,44 +15,52 @@ namespace caffe { template void CropLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { + // All logic that depends only on the number of dimensions is here, + // the rest is in Reshape because it depends on Blob size. + // bottom[0] supplies the data + // bottom[1] supplies the size + const CropParameter& param = this->layer_param_.crop_param(); CHECK_EQ(bottom.size(), 2) << "Wrong number of bottom blobs."; - // parameter setup moved to Reshape because it depends on size. + int input_dim = bottom[0]->num_axes(); + const int start_axis = bottom[0]->CanonicalAxisIndex(param.axis()); + CHECK_LT(start_axis, input_dim) << "crop axis bigger than input dim"; + if (param.offset_size() > 1) { + // the number of crop values specified must be equal to the number + // of dimensions following axis + CHECK_EQ(start_axis + param.offset_size(), input_dim) + << "number of offset values specified must be equal to the number of " + << "dimensions following axis."; + } } template void CropLayer::Reshape(const vector*>& bottom, const vector*>& top) { const CropParameter& param = this->layer_param_.crop_param(); - // bottom[0] supplies the data - // bottom[1] supplies the size int input_dim = bottom[0]->num_axes(); - CHECK_LT(param.axis(), input_dim) << "crop axis bigger than input dim"; + const int start_axis = bottom[0]->CanonicalAxisIndex(param.axis()); + // initialize all offsets to 0 offsets = vector(input_dim, 0); // initialize new shape to bottom[0] vector new_shape(bottom[0]->shape()); - if (param.offset_size() > 1) { - // the number of crop values specified must be equal to the number - // of dimensions following axis - CHECK_EQ(param.axis() + param.offset_size(), input_dim) - << "number of crop values specified must be equal to the number of " - << "dimensions following axis."; - } // apply crops for (int i = 0; i < input_dim; ++i) { int crop_offset = 0; int new_size = bottom[0]->shape(i); - if (i >= param.axis() && param.offset_size() == 1) { - // if only one crop value is supplied, crop all dimensions after axis - // by this crop value - crop_offset = param.offset(0); - new_size = bottom[1]->shape(i); - } else if (i >= param.axis() && param.offset_size() > 1) { - // crop values specified must be equal to the number of dimensions - // following axis - crop_offset = param.offset(i - param.axis()); + if (i >= start_axis) { new_size = bottom[1]->shape(i); + + if (param.offset_size() == 1) { + // if only one crop value is supplied, crop all dimensions after axis + // by this crop value + crop_offset = param.offset(0); + } else if (param.offset_size() > 1) { + // crop values specified must be equal to the number of dimensions + // following axis + crop_offset = param.offset(i - start_axis); + } } // Check that the image we are cropping minus the margin is bigger // than the destination image. @@ -77,7 +85,7 @@ void CropLayer::crop_copy(const vector*>& bottom, Dtype* dest_data, bool is_forward) { if (cur_dim + 1 < top[0]->num_axes()) { - // We are not yet at the final dimension, call copy recursivley + // We are not yet at the final dimension, call copy recursively for (int i = 0; i < top[0]->shape(cur_dim); ++i) { indices[cur_dim] = i; crop_copy(bottom, top, offsets, indices, cur_dim+1, diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 7b832c0a0..9ed8f7cce 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -100,9 +100,6 @@ template void CropLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { std::vector indices(top[0]->num_axes(), 0); - // This works because crop_copy uses caffe_copy which calls cudaMemcpy. - // My intuition is that calling this thousands of times is probably less - // efficient than writing a custom kernel. const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); crop_copy_gpu(bottom, top, offsets, indices, 0, bottom_data, top_data, true); diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 60d387a7d..6900bb714 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -610,8 +610,10 @@ message CropParameter { // If only one `offset` is set, then all dimensions are offset by this amount. // Otherwise, the number of offsets must equal the number of cropped axes to // shift the crop in each dimension accordingly. - // Note: standard dimensions are N,C,H,W so the default is a spatial crop. - optional uint32 axis = 1 [default = 2]; + // Note: standard dimensions are N,C,H,W so the default is a spatial crop, + // and `axis` may be negative to index from the end (e.g., -1 for the last + // axis). + optional int32 axis = 1 [default = 2]; repeated uint32 offset = 2; } diff --git a/src/caffe/test/test_crop_layer.cpp b/src/caffe/test/test_crop_layer.cpp new file mode 100644 index 000000000..ba962e4c6 --- /dev/null +++ b/src/caffe/test/test_crop_layer.cpp @@ -0,0 +1,228 @@ +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/crop_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class CropLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + CropLayerTest() + : blob_bottom_0_(new Blob(2, 5, 6, 5)), + blob_bottom_1_(new Blob(2, 4, 5, 3)), + blob_top_(new Blob()) {} + virtual void SetUp() { + // fill the values + for (int i = 0; i < this->blob_bottom_0_->count(); ++i) { + this->blob_bottom_0_->mutable_cpu_data()[i] = i; + } + + + blob_bottom_vec_0_.push_back(blob_bottom_0_); + blob_bottom_vec_0_.push_back(blob_bottom_1_); + blob_top_vec_.push_back(blob_top_); + } + + virtual ~CropLayerTest() { + delete blob_bottom_0_; delete blob_bottom_1_; + delete blob_top_; + } + + Blob* const blob_bottom_0_; + Blob* const blob_bottom_1_; + Blob* const blob_top_; + vector*> blob_bottom_vec_0_; + vector*> blob_top_vec_; +}; + + +TYPED_TEST_CASE(CropLayerTest, TestDtypesAndDevices); + +TYPED_TEST(CropLayerTest, TestSetupShapeAll) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + + // Crop all dimensions + layer_param.mutable_crop_param()->set_axis(0); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } +} + +TYPED_TEST(CropLayerTest, TestSetupShapeDefault) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Crop last two dimensions, axis is 2 by default + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + if (i < 2) { + EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); + } else { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } + } +} + +TYPED_TEST(CropLayerTest, TestSetupShapeNegativeIndexing) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Crop last dimension by negative indexing + layer_param.mutable_crop_param()->set_axis(-1); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + if (i < 3) { + EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); + } else { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } + } +} + + +TYPED_TEST(CropLayerTest, TestForwardNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if ( n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + h < this->blob_top_->shape(2) && + w < this->blob_top_->shape(3) ) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c, h, w)); + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestForwardNumOffsets) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + layer_param.mutable_crop_param()->add_offset(0); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if ( n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + h < this->blob_top_->shape(2) && + w < this->blob_top_->shape(3) ) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_0_->data_at(n+0, c+1, h+1, w+2)); + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestGradientNum) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + CropLayer layer(layer_param); + + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + + // Copy top data into diff + caffe_copy(this->blob_top_->count(), this->blob_top_->cpu_data(), + this->blob_top_->mutable_cpu_diff()); + + // Do backward pass + vector propagate_down(2, true); + layer.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_0_); + + + // Check results + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if ( n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + h < this->blob_top_->shape(2) && + w < this->blob_top_->shape(3) ) { + EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c, h, w)); + } else { + EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), 0); + } + } + } + } + } +} + +TYPED_TEST(CropLayerTest, TestGradientNumOffset) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + layer_param.mutable_crop_param()->add_offset(0); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + CropLayer layer(layer_param); + + layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + + // Copy top data into diff + caffe_copy(this->blob_top_->count(), this->blob_top_->cpu_data(), + this->blob_top_->mutable_cpu_diff()); + + // Do backward pass + vector propagate_down(2, true); + layer.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_0_); + + + // Check results + for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { + for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { + for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { + if ( 0 <= n && n < 0 + this->blob_top_->shape(0) && + 1 <= c && c < 1 + this->blob_top_->shape(1) && + 1 <= h && h < 1 + this->blob_top_->shape(2) && + 2 <= w && w < 2 + this->blob_top_->shape(3) ) { + EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c, h, w)); + } else { + EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), 0); + } + } + } + } + } +} + +} // namespace caffe From e03a2873a0fdfd871b11a86d7feed45fb71013b0 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 4 Mar 2016 02:20:13 -0800 Subject: [PATCH 206/458] Crop: more tests and test tuning. Changes are: reduce test blob dims for speed use standard Gaussian filler, polish formatting and rename tests, test HW crop and 5D crop, standard gradient checks --- src/caffe/test/test_crop_layer.cpp | 183 +++++++++++++++++------------ 1 file changed, 110 insertions(+), 73 deletions(-) diff --git a/src/caffe/test/test_crop_layer.cpp b/src/caffe/test/test_crop_layer.cpp index ba962e4c6..45f24e2ee 100644 --- a/src/caffe/test/test_crop_layer.cpp +++ b/src/caffe/test/test_crop_layer.cpp @@ -18,18 +18,18 @@ class CropLayerTest : public MultiDeviceTest { protected: CropLayerTest() - : blob_bottom_0_(new Blob(2, 5, 6, 5)), - blob_bottom_1_(new Blob(2, 4, 5, 3)), + : blob_bottom_0_(new Blob(2, 4, 5, 4)), + blob_bottom_1_(new Blob(2, 3, 4, 2)), blob_top_(new Blob()) {} virtual void SetUp() { // fill the values - for (int i = 0; i < this->blob_bottom_0_->count(); ++i) { - this->blob_bottom_0_->mutable_cpu_data()[i] = i; - } - + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_0_); + filler.Fill(this->blob_bottom_1_); - blob_bottom_vec_0_.push_back(blob_bottom_0_); - blob_bottom_vec_0_.push_back(blob_bottom_1_); + blob_bottom_vec_.push_back(blob_bottom_0_); + blob_bottom_vec_.push_back(blob_bottom_1_); blob_top_vec_.push_back(blob_top_); } @@ -41,7 +41,7 @@ class CropLayerTest : public MultiDeviceTest { Blob* const blob_bottom_0_; Blob* const blob_bottom_1_; Blob* const blob_top_; - vector*> blob_bottom_vec_0_; + vector*> blob_bottom_vec_; vector*> blob_top_vec_; }; @@ -51,11 +51,10 @@ TYPED_TEST_CASE(CropLayerTest, TestDtypesAndDevices); TYPED_TEST(CropLayerTest, TestSetupShapeAll) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; - // Crop all dimensions layer_param.mutable_crop_param()->set_axis(0); CropLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); for (int i = 0; i < this->blob_top_->num_axes(); ++i) { EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); } @@ -66,7 +65,7 @@ TYPED_TEST(CropLayerTest, TestSetupShapeDefault) { LayerParameter layer_param; // Crop last two dimensions, axis is 2 by default CropLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); for (int i = 0; i < this->blob_top_->num_axes(); ++i) { if (i < 2) { EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); @@ -82,7 +81,7 @@ TYPED_TEST(CropLayerTest, TestSetupShapeNegativeIndexing) { // Crop last dimension by negative indexing layer_param.mutable_crop_param()->set_axis(-1); CropLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); for (int i = 0; i < this->blob_top_->num_axes(); ++i) { if (i < 3) { EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); @@ -92,15 +91,13 @@ TYPED_TEST(CropLayerTest, TestSetupShapeNegativeIndexing) { } } - -TYPED_TEST(CropLayerTest, TestForwardNum) { +TYPED_TEST(CropLayerTest, TestCropAll) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; layer_param.mutable_crop_param()->set_axis(0); - CropLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); - layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { @@ -118,7 +115,7 @@ TYPED_TEST(CropLayerTest, TestForwardNum) { } } -TYPED_TEST(CropLayerTest, TestForwardNumOffsets) { +TYPED_TEST(CropLayerTest, TestCropAllOffset) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; layer_param.mutable_crop_param()->set_axis(0); @@ -127,8 +124,8 @@ TYPED_TEST(CropLayerTest, TestForwardNumOffsets) { layer_param.mutable_crop_param()->add_offset(1); layer_param.mutable_crop_param()->add_offset(2); CropLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); - layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { @@ -138,7 +135,7 @@ TYPED_TEST(CropLayerTest, TestForwardNumOffsets) { h < this->blob_top_->shape(2) && w < this->blob_top_->shape(3) ) { EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), - this->blob_bottom_0_->data_at(n+0, c+1, h+1, w+2)); + this->blob_bottom_0_->data_at(n, c+1, h+1, w+2)); } } } @@ -146,36 +143,25 @@ TYPED_TEST(CropLayerTest, TestForwardNumOffsets) { } } -TYPED_TEST(CropLayerTest, TestGradientNum) { +TYPED_TEST(CropLayerTest, TestCropHW) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); CropLayer layer(layer_param); - - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); - layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); - - // Copy top data into diff - caffe_copy(this->blob_top_->count(), this->blob_top_->cpu_data(), - this->blob_top_->mutable_cpu_diff()); - - // Do backward pass - vector propagate_down(2, true); - layer.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_0_); - - - // Check results + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { - if ( n < this->blob_top_->shape(0) && + if (n < this->blob_top_->shape(0) && c < this->blob_top_->shape(1) && h < this->blob_top_->shape(2) && - w < this->blob_top_->shape(3) ) { - EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), - this->blob_bottom_0_->data_at(n, c, h, w)); - } else { - EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), 0); + w < this->blob_top_->shape(3)) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_0_->data_at(n, c, h+1, w+2)); } } } @@ -183,41 +169,50 @@ TYPED_TEST(CropLayerTest, TestGradientNum) { } } -TYPED_TEST(CropLayerTest, TestGradientNumOffset) { +TYPED_TEST(CropLayerTest, TestCrop5D) { typedef typename TypeParam::Dtype Dtype; + // Add dimension to each bottom for >4D check + vector bottom_0_shape = this->blob_bottom_0_->shape(); + vector bottom_1_shape = this->blob_bottom_1_->shape(); + bottom_0_shape.push_back(2); + bottom_1_shape.push_back(1); + this->blob_bottom_0_->Reshape(bottom_0_shape); + this->blob_bottom_1_->Reshape(bottom_1_shape); + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_0_); + filler.Fill(this->blob_bottom_1_); + // Make layer LayerParameter layer_param; - layer_param.mutable_crop_param()->set_axis(0); - layer_param.mutable_crop_param()->add_offset(0); - layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->set_axis(2); layer_param.mutable_crop_param()->add_offset(1); layer_param.mutable_crop_param()->add_offset(2); + layer_param.mutable_crop_param()->add_offset(0); CropLayer layer(layer_param); - - layer.SetUp(this->blob_bottom_vec_0_, this->blob_top_vec_); - layer.Forward(this->blob_bottom_vec_0_, this->blob_top_vec_); - - // Copy top data into diff - caffe_copy(this->blob_top_->count(), this->blob_top_->cpu_data(), - this->blob_top_->mutable_cpu_diff()); - - // Do backward pass - vector propagate_down(2, true); - layer.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_0_); - - - // Check results - for (int n = 0; n < this->blob_bottom_0_->num(); ++n) { - for (int c = 0; c < this->blob_bottom_0_->channels(); ++c) { - for (int h = 0; h < this->blob_bottom_0_->height(); ++h) { - for (int w = 0; w < this->blob_bottom_0_->width(); ++w) { - if ( 0 <= n && n < 0 + this->blob_top_->shape(0) && - 1 <= c && c < 1 + this->blob_top_->shape(1) && - 1 <= h && h < 1 + this->blob_top_->shape(2) && - 2 <= w && w < 2 + this->blob_top_->shape(3) ) { - EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), - this->blob_bottom_0_->data_at(n, c, h, w)); - } else { - EXPECT_EQ(this->blob_bottom_0_->diff_at(n, c, h, w), 0); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector bottom_idx = vector(5, 0); + vector top_idx = vector(5, 0); + for (int n = 0; n < this->blob_bottom_0_->shape(0); ++n) { + for (int c = 0; c < this->blob_bottom_0_->shape(1); ++c) { + for (int z = 0; z < this->blob_bottom_0_->shape(2); ++z) { + for (int h = 0; h < this->blob_bottom_0_->shape(3); ++h) { + for (int w = 0; w < this->blob_bottom_0_->shape(4); ++w) { + if (n < this->blob_top_->shape(0) && + c < this->blob_top_->shape(1) && + z < this->blob_top_->shape(2) && + h < this->blob_top_->shape(3) && + w < this->blob_top_->shape(4)) { + bottom_idx[0] = top_idx[0] = n; + bottom_idx[1] = top_idx[1] = c; + bottom_idx[2] = z; + bottom_idx[3] = h; + bottom_idx[4] = top_idx[4] = w; + top_idx[2] = z+1; + top_idx[3] = h+2; + EXPECT_EQ(this->blob_top_->data_at(bottom_idx), + this->blob_bottom_0_->data_at(top_idx)); + } } } } @@ -225,4 +220,46 @@ TYPED_TEST(CropLayerTest, TestGradientNumOffset) { } } +TYPED_TEST(CropLayerTest, TestCropAllGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(0); + CropLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CropLayerTest, TestCropHWGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + CropLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + +TYPED_TEST(CropLayerTest, TestCrop5DGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_crop_param()->set_axis(2); + layer_param.mutable_crop_param()->add_offset(1); + layer_param.mutable_crop_param()->add_offset(2); + layer_param.mutable_crop_param()->add_offset(0); + CropLayer layer(layer_param); + // Add dimension to each bottom for >4D check + vector bottom_0_shape = this->blob_bottom_0_->shape(); + vector bottom_1_shape = this->blob_bottom_1_->shape(); + bottom_0_shape.push_back(2); + bottom_1_shape.push_back(1); + this->blob_bottom_0_->Reshape(bottom_0_shape); + this->blob_bottom_1_->Reshape(bottom_1_shape); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_); +} + } // namespace caffe From 01528918c707df82e5910bea0270d7987db5abd8 Mon Sep 17 00:00:00 2001 From: Jun Shi Date: Fri, 22 Jan 2016 09:58:37 -0800 Subject: [PATCH 207/458] split p2psync::run() --- include/caffe/parallel.hpp | 5 ++++- src/caffe/parallel.cpp | 20 ++++++++++++------- src/caffe/test/test_gradient_based_solver.cpp | 2 +- tools/caffe.cpp | 2 +- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/include/caffe/parallel.hpp b/include/caffe/parallel.hpp index 85fc2b559..6c496c884 100644 --- a/include/caffe/parallel.hpp +++ b/include/caffe/parallel.hpp @@ -93,7 +93,10 @@ class P2PSync : public GPUParams, public Solver::Callback, return solver_; } - void run(const vector& gpus); + void Run(const vector& gpus); + void Prepare(const vector& gpus, + vector > >* syncs); + inline const int initial_iter() const { return initial_iter_; } protected: void on_start(); diff --git a/src/caffe/parallel.cpp b/src/caffe/parallel.cpp index 62f5d7385..5bc41c6a6 100644 --- a/src/caffe/parallel.cpp +++ b/src/caffe/parallel.cpp @@ -380,7 +380,8 @@ void P2PSync::on_gradients_ready() { } template -void P2PSync::run(const vector& gpus) { +void P2PSync::Prepare(const vector& gpus, + vector > >* syncs) { // Pair devices for map-reduce synchronization vector pairs; DevicePair::compute(gpus, &pairs); @@ -391,15 +392,14 @@ void P2PSync::run(const vector& gpus) { LOG(INFO)<< "GPUs pairs " << s.str(); SolverParameter param(solver_->param()); - vector > > syncs(gpus.size()); // Build the GPU tree by finding the parent for each solver for (int attempts = 0; attempts < pairs.size(); ++attempts) { for (int i = 1; i < pairs.size(); ++i) { - if (!syncs[i].get()) { + if (!syncs->at(i).get()) { P2PSync* parent = NULL; - for (int j = 0; j < syncs.size(); ++j) { - P2PSync* sync = j == 0 ? this : syncs[j].get(); + for (int j = 0; j < syncs->size(); ++j) { + P2PSync* sync = j == 0 ? this : syncs->at(j).get(); if (sync) { const SolverParameter& p = sync->solver()->param(); if (p.device_id() == pairs[i].parent()) { @@ -409,12 +409,18 @@ void P2PSync::run(const vector& gpus) { } if (parent) { param.set_device_id(pairs[i].device()); - syncs[i].reset(new P2PSync(solver_, parent, param)); - parent->children_.push_back((P2PSync*) syncs[i].get()); + syncs->at(i).reset(new P2PSync(solver_, parent, param)); + parent->children_.push_back((P2PSync*) syncs->at(i).get()); } } } } +} + +template +void P2PSync::Run(const vector& gpus) { + vector > > syncs(gpus.size()); + Prepare(gpus, &syncs); LOG(INFO)<< "Starting Optimization"; diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 09ec3a7e9..975a8f0f8 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -204,7 +204,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { Caffe::set_solver_count(gpus.size()); this->sync_.reset(new P2PSync( this->solver_, NULL, this->solver_->param())); - this->sync_->run(gpus); + this->sync_->Run(gpus); Caffe::set_solver_count(1); } if (snapshot) { diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 95b2f82c4..5d9331f0c 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -214,7 +214,7 @@ int train() { if (gpus.size() > 1) { caffe::P2PSync sync(solver, NULL, solver->param()); - sync.run(gpus); + sync.Run(gpus); } else { LOG(INFO) << "Starting Optimization"; solver->Solve(); From a53fa5150c90e425fc88552dfc02568da325ab25 Mon Sep 17 00:00:00 2001 From: Andy Feng Date: Wed, 9 Mar 2016 18:39:31 +0000 Subject: [PATCH 208/458] [build] travis: remove existing conda dir there seems to be a caching issue at the moment; this is a temporary fix for #3786 --- scripts/travis/travis_install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/travis/travis_install.sh b/scripts/travis/travis_install.sh index ca8c410cf..091e92431 100755 --- a/scripts/travis/travis_install.sh +++ b/scripts/travis/travis_install.sh @@ -60,6 +60,8 @@ rm -f $LMDB_FILE # Install the Python runtime dependencies via miniconda (this is much faster # than using pip for everything). export PATH=$CONDA_DIR/bin:$PATH +# clear any cached conda (see #3786) +rm -rf $CONDA_DIR if [ ! -d $CONDA_DIR ]; then if [ "$PYTHON_VERSION" -eq "3" ]; then wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh From 542d216bb28343111e6b7df2c24824c3f90e435a Mon Sep 17 00:00:00 2001 From: JacekR Date: Tue, 15 Mar 2016 10:43:34 +0100 Subject: [PATCH 209/458] Update Makefile: Changed MKL_DIR to MKLROOT MKLROOT variable is set by MKL scripts, so it also should be used in Makefile. --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 2f81aca84..5424c3a18 100644 --- a/Makefile +++ b/Makefile @@ -364,9 +364,9 @@ ifeq ($(BLAS), mkl) # MKL LIBRARIES += mkl_rt COMMON_FLAGS += -DUSE_MKL - MKL_DIR ?= /opt/intel/mkl - BLAS_INCLUDE ?= $(MKL_DIR)/include - BLAS_LIB ?= $(MKL_DIR)/lib $(MKL_DIR)/lib/intel64 + MKLROOT ?= /opt/intel/mkl + BLAS_INCLUDE ?= $(MKLROOT)/include + BLAS_LIB ?= $(MKLROOT)/lib $(MKLROOT)/lib/intel64 else ifeq ($(BLAS), open) # OpenBLAS LIBRARIES += openblas From 337b07589f4e44761bdb9ef4c242f83ca40c9da5 Mon Sep 17 00:00:00 2001 From: shai Date: Mon, 21 Mar 2016 09:08:02 +0200 Subject: [PATCH 210/458] upgrading InfogainLoss layer: (1) incorporating Softmax layer to make the gradeint computation robust, much like SoftmaxWithLoss layer (see: http://stackoverflow.com/a/34917052/1714410 for more information). (2) supporting loss along axis --- include/caffe/layers/infogain_loss_layer.hpp | 35 ++++ src/caffe/layers/infogain_loss_layer.cpp | 172 ++++++++++++++++--- src/caffe/proto/caffe.proto | 1 + src/caffe/test/test_infogain_loss_layer.cpp | 83 ++++++++- 4 files changed, 257 insertions(+), 34 deletions(-) diff --git a/include/caffe/layers/infogain_loss_layer.hpp b/include/caffe/layers/infogain_loss_layer.hpp index 633f339a2..edecde829 100644 --- a/include/caffe/layers/infogain_loss_layer.hpp +++ b/include/caffe/layers/infogain_loss_layer.hpp @@ -8,6 +8,7 @@ #include "caffe/proto/caffe.pb.h" #include "caffe/layers/loss_layer.hpp" +#include "caffe/layers/softmax_layer.hpp" namespace caffe { @@ -60,6 +61,12 @@ class InfogainLossLayer : public LossLayer { virtual inline int MinBottomBlobs() const { return 2; } virtual inline int MaxBottomBlobs() const { return 3; } + // InfogainLossLayer computes softmax prob internally. + // optional second "top" outputs the softmax prob + virtual inline int ExactNumTopBlobs() const { return -1; } + virtual inline int MinTopBlobs() const { return 1; } + virtual inline int MaxTopBlobs() const { return 2; } + virtual inline const char* type() const { return "InfogainLoss"; } protected: @@ -102,7 +109,35 @@ class InfogainLossLayer : public LossLayer { virtual void Backward_cpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); + /// fill sum_rows_H_ according to matrix H + virtual void sum_rows_of_H(const Blob* H); + + /// The internal SoftmaxLayer used to map predictions to a distribution. + shared_ptr > softmax_layer_; + /// prob stores the output probability predictions from the SoftmaxLayer. + Blob prob_; + /// bottom vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_bottom_vec_; + /// top vector holder used in call to the underlying SoftmaxLayer::Forward + vector*> softmax_top_vec_; + Blob infogain_; + Blob sum_rows_H_; // cache the row sums of H. + + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; + /// How to normalize the output loss. + LossParameter_NormalizationMode normalization_; + + int infogain_axis_, outer_num_, inner_num_, num_labels_; }; } // namespace caffe diff --git a/src/caffe/layers/infogain_loss_layer.cpp b/src/caffe/layers/infogain_loss_layer.cpp index 624d31181..3c3f460ec 100644 --- a/src/caffe/layers/infogain_loss_layer.cpp +++ b/src/caffe/layers/infogain_loss_layer.cpp @@ -3,7 +3,8 @@ #include #include "caffe/layers/infogain_loss_layer.hpp" -#include "caffe/util/io.hpp" +#include "caffe/util/io.hpp" // for bolb reading of matrix H +#include "caffe/util/math_functions.hpp" namespace caffe { @@ -11,6 +12,31 @@ template void InfogainLossLayer::LayerSetUp( const vector*>& bottom, const vector*>& top) { LossLayer::LayerSetUp(bottom, top); + // internal softmax layer + LayerParameter softmax_layer_param(this->layer_param_); + SoftmaxParameter* softmax_param = softmax_layer_param.mutable_softmax_param(); + softmax_param->set_axis(this->layer_param_.infogain_loss_param().axis()); + softmax_layer_param.set_type("Softmax"); + softmax_layer_param.clear_loss_weight(); + softmax_layer_param.add_loss_weight(1); + softmax_layer_ = LayerRegistry::CreateLayer(softmax_layer_param); + softmax_bottom_vec_.clear(); + softmax_bottom_vec_.push_back(bottom[0]); + softmax_top_vec_.clear(); + softmax_top_vec_.push_back(&prob_); + softmax_layer_->SetUp(softmax_bottom_vec_, softmax_top_vec_); + + // ignore label + has_ignore_label_ = + this->layer_param_.loss_param().has_ignore_label(); + if (has_ignore_label_) { + ignore_label_ = this->layer_param_.loss_param().ignore_label(); + } + // normalization + CHECK(!this->layer_param_.loss_param().has_normalize()) + << "normalize is deprecated. use \"normalization\""; + normalization_ = this->layer_param_.loss_param().normalization(); + // matrix H if (bottom.size() < 3) { CHECK(this->layer_param_.infogain_loss_param().has_source()) << "Infogain matrix source must be specified."; @@ -25,28 +51,86 @@ template void InfogainLossLayer::Reshape( const vector*>& bottom, const vector*>& top) { LossLayer::Reshape(bottom, top); + softmax_layer_->Reshape(softmax_bottom_vec_, softmax_top_vec_); + infogain_axis_ = + bottom[0]->CanonicalAxisIndex( + this->layer_param_.infogain_loss_param().axis()); + outer_num_ = bottom[0]->count(0, infogain_axis_); + inner_num_ = bottom[0]->count(infogain_axis_ + 1); + CHECK_EQ(outer_num_ * inner_num_, bottom[1]->count()) + << "Number of labels must match number of predictions; " + << "e.g., if infogain axis == 1 and prediction shape is (N, C, H, W), " + << "label count (number of labels) must be N*H*W, " + << "with integer values in {0, 1, ..., C-1}."; + num_labels_ = bottom[0]->shape(infogain_axis_); Blob* infogain = NULL; if (bottom.size() < 3) { infogain = &infogain_; } else { infogain = bottom[2]; } - CHECK_EQ(bottom[1]->channels(), 1); - CHECK_EQ(bottom[1]->height(), 1); - CHECK_EQ(bottom[1]->width(), 1); - const int num = bottom[0]->num(); - const int dim = bottom[0]->count() / num; - CHECK_EQ(infogain->num(), 1); - CHECK_EQ(infogain->channels(), 1); - CHECK_EQ(infogain->height(), dim); - CHECK_EQ(infogain->width(), dim); + CHECK_EQ(infogain->count(), num_labels_*num_labels_); + sum_rows_H_.Reshape(vector(1, num_labels_)); + if (bottom.size() == 2) { + // H is provided as a parameter and will not change. sum rows once + sum_rows_of_H(infogain); + } + if (top.size() >= 2) { + // softmax output + top[1]->ReshapeLike(*bottom[0]); + } +} + +template +Dtype InfogainLossLayer::get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count) { + Dtype normalizer; + switch (normalization_mode) { + case LossParameter_NormalizationMode_FULL: + normalizer = Dtype(outer_num_ * inner_num_); + break; + case LossParameter_NormalizationMode_VALID: + if (valid_count == -1) { + normalizer = Dtype(outer_num_ * inner_num_); + } else { + normalizer = Dtype(valid_count); + } + break; + case LossParameter_NormalizationMode_BATCH_SIZE: + normalizer = Dtype(outer_num_); + break; + case LossParameter_NormalizationMode_NONE: + normalizer = Dtype(1); + break; + default: + LOG(FATAL) << "Unknown normalization mode: " + << LossParameter_NormalizationMode_Name(normalization_mode); + } + // Some users will have no labels for some examples in order to 'turn off' a + // particular loss in a multi-task setup. The max prevents NaNs in that case. + return std::max(Dtype(1.0), normalizer); } +template +void InfogainLossLayer::sum_rows_of_H(const Blob* H) { + CHECK_EQ(H->count(), num_labels_*num_labels_) + << "H must be " << num_labels_ << "x" << num_labels_; + const Dtype* infogain_mat = H->cpu_data(); + Dtype* sum = sum_rows_H_.mutable_cpu_data(); + for ( int row = 0; row < num_labels_ ; row++ ) { + sum[row] = 0; + for ( int col = 0; col < num_labels_ ; col++ ) { + sum[row] += infogain_mat[row*num_labels_+col]; + } + } +} template void InfogainLossLayer::Forward_cpu(const vector*>& bottom, const vector*>& top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); + // The forward pass computes the softmax prob values. + softmax_layer_->Forward(softmax_bottom_vec_, softmax_top_vec_); + const Dtype* prob_data = prob_.cpu_data(); const Dtype* bottom_label = bottom[1]->cpu_data(); const Dtype* infogain_mat = NULL; if (bottom.size() < 3) { @@ -54,17 +138,30 @@ void InfogainLossLayer::Forward_cpu(const vector*>& bottom, } else { infogain_mat = bottom[2]->cpu_data(); } - int num = bottom[0]->num(); - int dim = bottom[0]->count() / bottom[0]->num(); + int count = 0; Dtype loss = 0; - for (int i = 0; i < num; ++i) { - int label = static_cast(bottom_label[i]); - for (int j = 0; j < dim; ++j) { - Dtype prob = std::max(bottom_data[i * dim + j], Dtype(kLOG_THRESHOLD)); - loss -= infogain_mat[label * dim + j] * log(prob); + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; j++) { + const int label_value = + static_cast(bottom_label[i * inner_num_ + j]); + if (has_ignore_label_ && label_value == ignore_label_) { + continue; + } + DCHECK_GE(label_value, 0); + DCHECK_LT(label_value, num_labels_); + for (int l = 0; l < num_labels_; l++) { + loss -= infogain_mat[label_value * num_labels_ + l] * + log(std::max( + prob_data[i * inner_num_*num_labels_ + l * inner_num_ + j], + Dtype(kLOG_THRESHOLD))); + } + ++count; } } - top[0]->mutable_cpu_data()[0] = loss / num; + top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_, count); + if (top.size() == 2) { + top[1]->ShareData(prob_); + } } template @@ -80,25 +177,44 @@ void InfogainLossLayer::Backward_cpu(const vector*>& top, << " Layer cannot backpropagate to infogain inputs."; } if (propagate_down[0]) { - const Dtype* bottom_data = bottom[0]->cpu_data(); + const Dtype* prob_data = prob_.cpu_data(); const Dtype* bottom_label = bottom[1]->cpu_data(); const Dtype* infogain_mat = NULL; if (bottom.size() < 3) { infogain_mat = infogain_.cpu_data(); } else { infogain_mat = bottom[2]->cpu_data(); + // H is provided as a "bottom" and might change. sum rows every time. + sum_rows_of_H(bottom[2]); } + const Dtype* sum_rows_H = sum_rows_H_.cpu_data(); Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); - int num = bottom[0]->num(); - int dim = bottom[0]->count() / bottom[0]->num(); - const Dtype scale = - top[0]->cpu_diff()[0] / num; - for (int i = 0; i < num; ++i) { - const int label = static_cast(bottom_label[i]); - for (int j = 0; j < dim; ++j) { - Dtype prob = std::max(bottom_data[i * dim + j], Dtype(kLOG_THRESHOLD)); - bottom_diff[i * dim + j] = scale * infogain_mat[label * dim + j] / prob; + const int dim = bottom[0]->count() / outer_num_; + int count = 0; + for (int i = 0; i < outer_num_; ++i) { + for (int j = 0; j < inner_num_; ++j) { + const int label_value = + static_cast(bottom_label[i * inner_num_ + j]); + DCHECK_GE(label_value, 0); + DCHECK_LT(label_value, num_labels_); + if (has_ignore_label_ && label_value == ignore_label_) { + for (int l = 0; l < num_labels_; ++l) { + bottom_diff[i * dim + l * inner_num_ + j] = 0; + } + } else { + for (int l = 0; l < num_labels_; ++l) { + bottom_diff[i * dim + l * inner_num_ + j] = + prob_data[i*dim + l*inner_num_ + j]*sum_rows_H[label_value] + - infogain_mat[label_value * num_labels_ + l]; + } + ++count; + } } } + // Scale gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / + get_normalizer(normalization_, count); + caffe_scal(bottom[0]->count(), loss_weight, bottom_diff); } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 6900bb714..591e96472 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -794,6 +794,7 @@ message ImageDataParameter { message InfogainLossParameter { // Specify the infogain matrix source. optional string source = 1; + optional int32 axis = 2 [default = 1]; // axis of prob } message InnerProductParameter { diff --git a/src/caffe/test/test_infogain_loss_layer.cpp b/src/caffe/test/test_infogain_loss_layer.cpp index a24ac683d..34f21271a 100644 --- a/src/caffe/test/test_infogain_loss_layer.cpp +++ b/src/caffe/test/test_infogain_loss_layer.cpp @@ -1,3 +1,4 @@ +#include #include #include "gtest/gtest.h" @@ -18,17 +19,22 @@ class InfogainLossLayerTest : public MultiDeviceTest { protected: InfogainLossLayerTest() - : blob_bottom_data_(new Blob(10, 5, 1, 1)), - blob_bottom_label_(new Blob(10, 1, 1, 1)), + : blob_bottom_data_(new Blob(4, 2, 5, 2)), + blob_bottom_label_(new Blob(4, 2, 1, 2)), blob_bottom_infogain_(new Blob(1, 1, 5, 5)), - blob_top_loss_(new Blob()) { + blob_top_loss_(new Blob()), + blob_top_prob_(new Blob()), + inner_(2), outer_(4*2), num_labels_(5) { Caffe::set_random_seed(1701); FillerParameter filler_param; - PositiveUnitballFiller filler(filler_param); + filler_param.set_min(-0.5); + filler_param.set_max(2.0); + UniformFiller filler(filler_param); filler.Fill(this->blob_bottom_data_); blob_bottom_vec_.push_back(blob_bottom_data_); for (int i = 0; i < blob_bottom_label_->count(); ++i) { - blob_bottom_label_->mutable_cpu_data()[i] = caffe_rng_rand() % 5; + blob_bottom_label_->mutable_cpu_data()[i] = + caffe_rng_rand() % num_labels_; } blob_bottom_vec_.push_back(blob_bottom_label_); filler_param.set_min(0.1); @@ -37,29 +43,94 @@ class InfogainLossLayerTest : public MultiDeviceTest { infogain_filler.Fill(this->blob_bottom_infogain_); blob_bottom_vec_.push_back(blob_bottom_infogain_); blob_top_vec_.push_back(blob_top_loss_); + blob_top_vec_.push_back(blob_top_prob_); } virtual ~InfogainLossLayerTest() { delete blob_bottom_data_; delete blob_bottom_label_; delete blob_bottom_infogain_; delete blob_top_loss_; + delete blob_top_prob_; } Blob* const blob_bottom_data_; Blob* const blob_bottom_label_; Blob* const blob_bottom_infogain_; Blob* const blob_top_loss_; + Blob* const blob_top_prob_; vector*> blob_bottom_vec_; vector*> blob_top_vec_; + int inner_, outer_, num_labels_; }; TYPED_TEST_CASE(InfogainLossLayerTest, TestDtypesAndDevices); +TYPED_TEST(InfogainLossLayerTest, TestInfogainLoss) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + layer_param.mutable_infogain_loss_param()->set_axis(2); + layer_param.clear_loss_weight(); + layer_param.add_loss_weight(1); + layer_param.add_loss_weight(0); + /*vector* lw = layer_param.mutable_loss_weight(); + lw->clear(); + lw->push_back(1); + lw->push_back(1);*/ + InfogainLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + // Now, check values + const Dtype* data = this->blob_bottom_vec_[0]->cpu_data(); + const Dtype* prob = this->blob_top_vec_[1]->cpu_data(); + const Dtype* labels = this->blob_bottom_vec_[1]->cpu_data(); + const Dtype* H = this->blob_bottom_vec_[2]->cpu_data(); + // first. test the prob top + CHECK_EQ(this->blob_bottom_vec_[0]->num_axes(), + this->blob_top_vec_[1]->num_axes()) + << "prob top shape not match bottom data"; + for (int ai = 0 ; ai < this->blob_bottom_vec_[0]->num_axes(); ai++) { + CHECK_EQ(this->blob_bottom_vec_[0]->shape(ai), + this->blob_top_vec_[1]->shape(ai)) + << "prob top shape not match bottom data"; + } + vector est_prob(this->num_labels_, 0); + for ( int i = 0 ; i < this->outer_; i++ ) { + for ( int j = 0; j < this->inner_; j++ ) { + Dtype den = 0; + for ( int l = 0; l < this->num_labels_; l++ ) { + est_prob[l] = std::exp( + data[i*this->num_labels_*this->inner_ + l*this->inner_ + j]); + den += est_prob[l]; + } + for ( int l = 0; l < this->num_labels_; l++ ) { + EXPECT_NEAR(prob[i*this->num_labels_*this->inner_ + l*this->inner_ + j], + est_prob[l]/den, 1e-6); + } + } + } + Dtype loss = 0; // loss from prob top + for ( int i = 0 ; i < this->outer_; i++ ) { + for ( int j = 0; j < this->inner_; j++ ) { + int gt = static_cast(labels[i*this->inner_+j]); + for ( int l = 0; l < this->num_labels_; l++ ) { + loss -= H[gt*this->num_labels_ + l] * + log(std::max( + prob[i*this->num_labels_*this->inner_ + l*this->inner_ + j], + Dtype(kLOG_THRESHOLD))); + } + } + } + EXPECT_NEAR(this->blob_top_loss_->cpu_data()[0], + loss/(this->outer_*this->inner_), 1e-6); +} TYPED_TEST(InfogainLossLayerTest, TestGradient) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; + layer_param.mutable_infogain_loss_param()->set_axis(2); InfogainLossLayer layer(layer_param); - GradientChecker checker(1e-4, 2e-2, 1701, 1, 0.01); + this->blob_top_vec_.clear(); // ignore prob top. + this->blob_top_vec_.push_back(this->blob_top_loss_); + GradientChecker checker(1e-4, 2e-2, 1701); // no "kink" checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, this->blob_top_vec_, 0); } From 8c041a7cf3e571b175cfd8859f1af5f067f8cd7a Mon Sep 17 00:00:00 2001 From: rscohn2 Date: Sat, 26 Mar 2016 10:00:26 -0400 Subject: [PATCH 211/458] Update info about MKL licensing The instructions say that MKL is free for students, but as of 8/2015, MKL is free for everyone with community licensing. --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 893164584..e273034fe 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -52,7 +52,7 @@ Caffe requires BLAS as the backend of its matrix and vector computations. There are several implementations of this library. The choice is yours: * [ATLAS](http://math-atlas.sourceforge.net/): free, open source, and so the default for Caffe. -* [Intel MKL](http://software.intel.com/en-us/intel-mkl): commercial and optimized for Intel CPUs, with a free trial and [student](http://software.intel.com/en-us/intel-education-offerings) licenses. +* [Intel MKL](http://software.intel.com/en-us/intel-mkl): commercial and optimized for Intel CPUs, with [free](https://registrationcenter.intel.com/en/forms/?productid=2558) licenses. 1. Install MKL. 2. Set up MKL environment (Details: [Linux](https://software.intel.com/en-us/node/528499), [OS X](https://software.intel.com/en-us/node/528659)). Example: *source /opt/intel/mkl/bin/mklvars.sh intel64* 3. Set `BLAS := mkl` in `Makefile.config` From a66bea30d6c0706f106b355c7cafc9e7ffae7bb5 Mon Sep 17 00:00:00 2001 From: An Tran Date: Wed, 30 Mar 2016 17:32:10 +0800 Subject: [PATCH 212/458] small bug in pooling_layer.cu --- src/caffe/layers/pooling_layer.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/pooling_layer.cu b/src/caffe/layers/pooling_layer.cu index 1ea46cc81..81ead1e86 100644 --- a/src/caffe/layers/pooling_layer.cu +++ b/src/caffe/layers/pooling_layer.cu @@ -138,7 +138,7 @@ __global__ void StoPoolForwardTest(const int nthreads, const int wstart = pw * stride_w; const int wend = min(wstart + kernel_w, width); // We set cumsum to be 0 to avoid divide-by-zero problems - Dtype cumsum = FLT_MIN; + Dtype cumsum = 0.; Dtype cumvalues = 0.; const Dtype* const bottom_slice = bottom_data + (n * channels + c) * height * width; From 7a8183642cb1a12945d0a9ad2bddf8304428b4c8 Mon Sep 17 00:00:00 2001 From: Daniel Gordon Date: Wed, 30 Mar 2016 14:27:19 -0700 Subject: [PATCH 213/458] Use lazy initialization to reuse orderd dict/list creations to save time on repeated calls. --- python/caffe/pycaffe.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index c5c0b824a..ca6d050e2 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -27,7 +27,9 @@ def _Net_blobs(self): An OrderedDict (bottom to top, i.e., input to output) of network blobs indexed by name """ - return OrderedDict(zip(self._blob_names, self._blobs)) + if not hasattr(self, '_blobs_dict'): + self._blobs_dict = OrderedDict(zip(self._blob_names, self._blobs)) + return self._blobs_dict @property @@ -36,7 +38,10 @@ def _Net_blob_loss_weights(self): An OrderedDict (bottom to top, i.e., input to output) of network blob loss weights indexed by name """ - return OrderedDict(zip(self._blob_names, self._blob_loss_weights)) + if not hasattr(self, '_blobs_loss_weights_dict'): + self._blob_loss_weights_dict = OrderedDict(zip(self._blob_names, + self._blob_loss_weights)) + return self._blob_loss_weights_dict @property @@ -46,19 +51,28 @@ def _Net_params(self): parameters indexed by name; each is a list of multiple blobs (e.g., weights and biases) """ - return OrderedDict([(name, lr.blobs) - for name, lr in zip(self._layer_names, self.layers) - if len(lr.blobs) > 0]) + if not hasattr(self, '_params_dict'): + self._params_dict = OrderedDict([(name, lr.blobs) + for name, lr in zip( + self._layer_names, self.layers) + if len(lr.blobs) > 0]) + return self._params_dict @property def _Net_inputs(self): - return [list(self.blobs.keys())[i] for i in self._inputs] + if not hasattr(self, '_input_list'): + keys = list(self.blobs.keys()) + self._input_list = [keys[i] for i in self._inputs] + return self._input_list @property def _Net_outputs(self): - return [list(self.blobs.keys())[i] for i in self._outputs] + if not hasattr(self, '_output_list'): + keys = list(self.blobs.keys()) + self._output_list = [keys[i] for i in self._outputs] + return self._output_list def _Net_forward(self, blobs=None, start=None, end=None, **kwargs): From d17fbea6aad122c3818d5ef3593487869948b4b7 Mon Sep 17 00:00:00 2001 From: An Tran Date: Thu, 31 Mar 2016 10:27:31 +0800 Subject: [PATCH 214/458] avoid divide by zeros, suggested by SeanBell --- src/caffe/layers/pooling_layer.cu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/pooling_layer.cu b/src/caffe/layers/pooling_layer.cu index 81ead1e86..46eddb949 100644 --- a/src/caffe/layers/pooling_layer.cu +++ b/src/caffe/layers/pooling_layer.cu @@ -149,7 +149,7 @@ __global__ void StoPoolForwardTest(const int nthreads, cumvalues += bottom_slice[h * width + w] * bottom_slice[h * width + w]; } } - top_data[index] = cumvalues / cumsum; + top_data[index] = (cumsum > 0.) ? cumvalues / cumsum : 0.; } } From dee01c8b5f90a69fd3e73ee455f89aab56e2dbb7 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Mon, 4 Apr 2016 11:36:15 -0700 Subject: [PATCH 215/458] test_net.cpp: add TestForcePropagateDown --- src/caffe/test/test_net.cpp | 102 ++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/src/caffe/test/test_net.cpp b/src/caffe/test/test_net.cpp index 1e0788ec1..92fd317fe 100644 --- a/src/caffe/test/test_net.cpp +++ b/src/caffe/test/test_net.cpp @@ -716,6 +716,61 @@ class NetTest : public MultiDeviceTest { InitNetFromProtoString(proto); } + virtual void InitForcePropNet(bool test_force_true) { + string proto = + "name: 'ForcePropTestNetwork' " + "layer { " + " name: 'data' " + " type: 'DummyData' " + " dummy_data_param { " + " shape { " + " dim: 5 " + " dim: 2 " + " dim: 3 " + " dim: 4 " + " } " + " data_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " shape { " + " dim: 5 " + " } " + " data_filler { " + " type: 'constant' " + " value: 0 " + " } " + " } " + " top: 'data' " + " top: 'label' " + "} " + "layer { " + " name: 'innerproduct' " + " type: 'InnerProduct' " + " inner_product_param { " + " num_output: 1 " + " weight_filler { " + " type: 'gaussian' " + " std: 0.01 " + " } " + " } " + " bottom: 'data' " + " top: 'innerproduct' "; + if (test_force_true) { + proto += " propagate_down: true "; + } + proto += + "} " + "layer { " + " name: 'loss' " + " bottom: 'innerproduct' " + " bottom: 'label' " + " top: 'cross_entropy_loss' " + " type: 'SigmoidCrossEntropyLoss' " + "} "; + InitNetFromProtoString(proto); + } + int seed_; shared_ptr > net_; }; @@ -2371,4 +2426,51 @@ TYPED_TEST(NetTest, TestSkipPropagateDown) { } } +TYPED_TEST(NetTest, TestForcePropagateDown) { + this->InitForcePropNet(false); + vector layer_need_backward = this->net_->layer_need_backward(); + for (int layer_id = 0; layer_id < this->net_->layers().size(); ++layer_id) { + const string& layer_name = this->net_->layer_names()[layer_id]; + const vector need_backward = + this->net_->bottom_need_backward()[layer_id]; + if (layer_name == "data") { + ASSERT_EQ(need_backward.size(), 0); + EXPECT_FALSE(layer_need_backward[layer_id]); + } else if (layer_name == "innerproduct") { + ASSERT_EQ(need_backward.size(), 1); + EXPECT_FALSE(need_backward[0]); // data + EXPECT_TRUE(layer_need_backward[layer_id]); + } else if (layer_name == "loss") { + ASSERT_EQ(need_backward.size(), 2); + EXPECT_TRUE(need_backward[0]); // innerproduct + EXPECT_FALSE(need_backward[1]); // label + EXPECT_TRUE(layer_need_backward[layer_id]); + } else { + LOG(FATAL) << "Unknown layer: " << layer_name; + } + } + this->InitForcePropNet(true); + layer_need_backward = this->net_->layer_need_backward(); + for (int layer_id = 0; layer_id < this->net_->layers().size(); ++layer_id) { + const string& layer_name = this->net_->layer_names()[layer_id]; + const vector need_backward = + this->net_->bottom_need_backward()[layer_id]; + if (layer_name == "data") { + ASSERT_EQ(need_backward.size(), 0); + EXPECT_FALSE(layer_need_backward[layer_id]); + } else if (layer_name == "innerproduct") { + ASSERT_EQ(need_backward.size(), 1); + EXPECT_TRUE(need_backward[0]); // data + EXPECT_TRUE(layer_need_backward[layer_id]); + } else if (layer_name == "loss") { + ASSERT_EQ(need_backward.size(), 2); + EXPECT_TRUE(need_backward[0]); // innerproduct + EXPECT_FALSE(need_backward[1]); // label + EXPECT_TRUE(layer_need_backward[layer_id]); + } else { + LOG(FATAL) << "Unknown layer: " << layer_name; + } + } +} + } // namespace caffe From 77cde9c84126cb108f59e2673c2e6f59b33180fa Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 27 Jan 2016 12:55:41 -0800 Subject: [PATCH 216/458] Net: setting `propagate_down: true` forces backprop --- src/caffe/net.cpp | 9 ++++----- src/caffe/proto/caffe.proto | 7 ++++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 23d94c97c..f0bf59493 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -427,12 +427,11 @@ int Net::AppendBottom(const NetParameter& param, const int layer_id, bottom_vecs_[layer_id].push_back(blobs_[blob_id].get()); bottom_id_vecs_[layer_id].push_back(blob_id); available_blobs->erase(blob_name); - bool propagate_down = true; + bool need_backward = blob_need_backward_[blob_id]; // Check if the backpropagation on bottom_id should be skipped - if (layer_param.propagate_down_size() > 0) - propagate_down = layer_param.propagate_down(bottom_id); - const bool need_backward = blob_need_backward_[blob_id] && - propagate_down; + if (layer_param.propagate_down_size() > 0) { + need_backward = layer_param.propagate_down(bottom_id); + } bottom_need_backward_[layer_id].push_back(need_backward); return blob_id; } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 6900bb714..650c87ae3 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -328,7 +328,12 @@ message LayerParameter { // The blobs containing the numeric parameters of the layer. repeated BlobProto blobs = 7; - // Specifies on which bottoms the backpropagation should be skipped. + // Specifies whether to backpropagate to each bottom. If unspecified, + // Caffe will automatically infer whether each input needs backpropagation + // to compute parameter gradients. If set to true for some inputs, + // backpropagation to those inputs is forced; if set false for some inputs, + // backpropagation to those inputs is skipped. + // // The size must be either 0 or equal to the number of bottoms. repeated bool propagate_down = 11; From 3c3dc95766c8caa374c643b51bd92a27f787b8b5 Mon Sep 17 00:00:00 2001 From: emmanuel maggiori Date: Fri, 8 Apr 2016 10:25:12 +0200 Subject: [PATCH 217/458] Solving issue with exp layer with base e --- src/caffe/layers/exp_layer.cpp | 3 ++- src/caffe/test/test_neuron_layer.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/caffe/layers/exp_layer.cpp b/src/caffe/layers/exp_layer.cpp index 1f4a309fe..0c1b463ae 100644 --- a/src/caffe/layers/exp_layer.cpp +++ b/src/caffe/layers/exp_layer.cpp @@ -23,7 +23,8 @@ void ExpLayer::LayerSetUp(const vector*>& bottom, const Dtype input_scale = this->layer_param_.exp_param().scale(); const Dtype input_shift = this->layer_param_.exp_param().shift(); inner_scale_ = log_base * input_scale; - outer_scale_ = (input_shift == Dtype(0)) ? Dtype(1) : pow(base, input_shift); + outer_scale_ = (input_shift == Dtype(0)) ? Dtype(1) : + ( (base != Dtype(-1)) ? pow(base, input_shift) : exp(input_shift) ); } template diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index dd591f7d2..342f825ce 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -394,6 +394,26 @@ TYPED_TEST(NeuronLayerTest, TestExpGradient) { this->TestExpGradient(kBase, kScale, kShift); } +TYPED_TEST(NeuronLayerTest, TestExpLayerWithShift) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e, + // with a non-zero shift + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestExpForward(kBase, kScale, kShift); +} + +TYPED_TEST(NeuronLayerTest, TestExpGradientWithShift) { + typedef typename TypeParam::Dtype Dtype; + // Test default base of "-1" -- should actually set base := e, + // with a non-zero shift + const Dtype kBase = -1; + const Dtype kScale = 1; + const Dtype kShift = 1; + this->TestExpGradient(kBase, kScale, kShift); +} + TYPED_TEST(NeuronLayerTest, TestExpLayerBase2) { typedef typename TypeParam::Dtype Dtype; const Dtype kBase = 2; From 09130ce35604a991cee41c942ff8845468cacfa7 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 11 Apr 2016 12:52:34 -0500 Subject: [PATCH 218/458] Fix protobuf message generation The latest versions of protobuf do not reveal empty message fields with dir(). This uses the documented way of determining all of a message's fields and so is compatible with past and future versions of protobuf. --- python/caffe/net_spec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/net_spec.py b/python/caffe/net_spec.py index 63de4cce4..5fb1f0b3f 100644 --- a/python/caffe/net_spec.py +++ b/python/caffe/net_spec.py @@ -32,7 +32,7 @@ def param_name_dict(): # get all parameter names (typically underscore case) and corresponding # type names (typically camel case), which contain the layer names # (note that not all parameters correspond to layers, but we'll ignore that) - param_names = [s for s in dir(layer) if s.endswith('_param')] + param_names = [f.name for f in layer.DESCRIPTOR.fields if f.name.endswith('_param')] param_type_names = [type(getattr(layer, s)).__name__ for s in param_names] # strip the final '_param' or 'Parameter' param_names = [s[:-len('_param')] for s in param_names] From 219532f5552fb48931776f5236b5ec3d99eccb2a Mon Sep 17 00:00:00 2001 From: Muneyuki Noguchi Date: Tue, 12 Apr 2016 23:19:27 +0900 Subject: [PATCH 219/458] Fix typo in help text for "-model" option --- tools/caffe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 305cfc363..d121fefc9 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -32,7 +32,7 @@ DEFINE_string(gpu, "", DEFINE_string(solver, "", "The solver definition protocol buffer text file."); DEFINE_string(model, "", - "The model definition protocol buffer text file.."); + "The model definition protocol buffer text file."); DEFINE_string(snapshot, "", "Optional; the snapshot solver state to resume training."); DEFINE_string(weights, "", From b265134710d78db4007471ccbe376c2c4221441a Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 13 Apr 2016 16:40:30 -0700 Subject: [PATCH 220/458] [docs] install: CUDA 7+ and cuDNN v4 compatible Latest CUDA versions are all compatible, and Caffe has been compatible with cuDNN v4 since PR #3439 --- docs/installation.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 893164584..e6c6886df 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -20,7 +20,7 @@ When updating Caffe, it's best to `make clean` before re-compiling. Caffe has several dependencies: * [CUDA](https://developer.nvidia.com/cuda-zone) is required for GPU mode. - * library version 7.0 and the latest driver version are recommended, but 6.* is fine too + * library version 7+ and the latest driver version are recommended, but 6.* is fine too * 5.5, and 5.0 are compatible but considered legacy * [BLAS](http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) via ATLAS, MKL, or OpenBLAS. * [Boost](http://www.boost.org/) >= 1.55 @@ -30,14 +30,14 @@ Optional dependencies: * [OpenCV](http://opencv.org/) >= 2.4 including 3.0 * IO libraries: `lmdb`, `leveldb` (note: leveldb requires `snappy`) -* cuDNN for GPU acceleration (v3) +* cuDNN for GPU acceleration (v4) Pycaffe and Matcaffe interfaces have their own natural needs. * For Python Caffe: `Python 2.7` or `Python 3.3+`, `numpy (>= 1.7)`, boost-provided `boost.python` * For MATLAB Caffe: MATLAB with the `mex` compiler. -**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v3; older versions are supported in older Caffe. +**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v4; older versions are supported in older Caffe. **CPU-only Caffe**: for cold-brewed CPU-only Caffe uncomment the `CPU_ONLY := 1` flag in `Makefile.config` to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment. From 462a688fb8997f87b19c3c51860eb32d5458b246 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 13 Apr 2016 16:43:39 -0700 Subject: [PATCH 221/458] [docs] install: include latest versions and platforms, highlight guides Caffe runs on Ubuntu, OS X, and RHEL (+ company) in master with branches for OpenCL and Windows. Docker is a nice route to out-of-the-box brewing. --- docs/installation.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index e6c6886df..9aa83527f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -5,13 +5,23 @@ title: Installation # Installation Prior to installing, have a glance through this guide and take note of the details for your platform. -We install and run Caffe on Ubuntu 14.04 and 12.04, OS X 10.10 / 10.9 / 10.8, and AWS. -The official Makefile and `Makefile.config` build are complemented by an automatic CMake build from the community. +We install and run Caffe on Ubuntu 16.04–12.04, OS X 10.11–10.8, and through Docker and AWS. +The official Makefile and `Makefile.config` build are complemented by a [community CMake build](#cmake-build). + +**Step-by-step Instructions**: + +- [Docker setup](https://github.com/BVLC/caffe/tree/master/docker) *out-of-the-box brewing* +- [Ubuntu installation](install_apt.html) *the standard platform* +- [OS X installation](install_osx.html) +- [RHEL / CentOS / Fedora installation](install_yum.html) +- [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Microsoft* +- [OpenCL](https://github.com/BVLC/caffe/tree/opencl) *see the OpenCL branch led by Fabian Tschopp* + +**Overview**: - [Prerequisites](#prerequisites) - [Compilation](#compilation) - [Hardware](#hardware) -- Platforms: [Ubuntu guide](install_apt.html), [OS X guide](install_osx.html), and [RHEL / CentOS / Fedora guide](install_yum.html) When updating Caffe, it's best to `make clean` before re-compiling. @@ -82,10 +92,6 @@ Install MATLAB, and make sure that its `mex` is in your `$PATH`. *Caffe's MATLAB interface works with versions 2015a, 2014a/b, 2013a/b, and 2012b.* -#### Windows - -There is an unofficial Windows port of Caffe at [niuzhiheng/caffe:windows](https://github.com/niuzhiheng/caffe). Thanks [@niuzhiheng](https://github.com/niuzhiheng)! - ## Compilation Caffe can be compiled with either Make or CMake. Make is officially supported while CMake is supported by the community. @@ -113,7 +119,7 @@ Be sure to set your MATLAB and Python paths in `Makefile.config` first! Now that you have installed Caffe, check out the [MNIST tutorial](gathered/examples/mnist.html) and the [reference ImageNet model tutorial](gathered/examples/imagenet.html). -### Compilation with CMake +### CMake Build In lieu of manually editing `Makefile.config` to configure the build, Caffe offers an unofficial CMake build thanks to @Nerei, @akosiorek, and other members of the community. It requires CMake version >= 2.8.7. The basic steps are as follows: From 0ef5918bbb7cb6e6d733ef91acff5349febc2bc7 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 13 Apr 2016 18:52:50 -0700 Subject: [PATCH 222/458] [docs] install: be more firm about compute capability >= 3.0 --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 9aa83527f..95a57fdff 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -137,7 +137,7 @@ See [PR #1667](https://github.com/BVLC/caffe/pull/1667) for options and details. **Laboratory Tested Hardware**: Berkeley Vision runs Caffe with K40s, K20s, and Titans including models at ImageNet/ILSVRC scale. We also run on GTX series cards (980s and 770s) and GPU-equipped MacBook Pros. We have not encountered any trouble in-house with devices with CUDA capability >= 3.0. All reported hardware issues thus-far have been due to GPU configuration, overheating, and the like. -**CUDA compute capability**: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Your mileage may vary. +**CUDA compute capability**: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Brew with caution; we recommend compute capbility >= 3.0. Once installed, check your times against our [reference performance numbers](performance_hardware.html) to make sure everything is configured properly. From b9164503ff51e8167cac9feb3f9a3d99778f13a8 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 13 Apr 2016 18:53:28 -0700 Subject: [PATCH 223/458] [docs] install: include more lab tested hardware --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 95a57fdff..aa946911c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -135,7 +135,7 @@ See [PR #1667](https://github.com/BVLC/caffe/pull/1667) for options and details. ## Hardware -**Laboratory Tested Hardware**: Berkeley Vision runs Caffe with K40s, K20s, and Titans including models at ImageNet/ILSVRC scale. We also run on GTX series cards (980s and 770s) and GPU-equipped MacBook Pros. We have not encountered any trouble in-house with devices with CUDA capability >= 3.0. All reported hardware issues thus-far have been due to GPU configuration, overheating, and the like. +**Laboratory Tested Hardware**: Berkeley Vision runs Caffe with Titan Xs, K80s, GTX 980s, K40s, K20s, Titans, and GTX 770s including models at ImageNet/ILSVRC scale. We have not encountered any trouble in-house with devices with CUDA capability >= 3.0. All reported hardware issues thus-far have been due to GPU configuration, overheating, and the like. **CUDA compute capability**: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Brew with caution; we recommend compute capbility >= 3.0. From e867e60fa24985b112af9885ec553d5dd62f49bf Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 14 Apr 2016 22:56:37 -0700 Subject: [PATCH 224/458] [test] CropLayer: test dimensions check to reveal bounds checking bug --- src/caffe/test/test_crop_layer.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/caffe/test/test_crop_layer.cpp b/src/caffe/test/test_crop_layer.cpp index 45f24e2ee..ce2c736f6 100644 --- a/src/caffe/test/test_crop_layer.cpp +++ b/src/caffe/test/test_crop_layer.cpp @@ -91,6 +91,24 @@ TYPED_TEST(CropLayerTest, TestSetupShapeNegativeIndexing) { } } +TYPED_TEST(CropLayerTest, TestDimensionsCheck) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + // Reshape size blob to have incompatible sizes for uncropped dimensions: + // the size blob has more channels than the data blob, but this is fine + // since the channels dimension is not cropped in this configuration. + this->blob_bottom_1_->Reshape(2, 5, 4, 2); + CropLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < this->blob_top_->num_axes(); ++i) { + if (i < 2) { + EXPECT_EQ(this->blob_bottom_0_->shape(i), this->blob_top_->shape(i)); + } else { + EXPECT_EQ(this->blob_bottom_1_->shape(i), this->blob_top_->shape(i)); + } + } +} + TYPED_TEST(CropLayerTest, TestCropAll) { typedef typename TypeParam::Dtype Dtype; LayerParameter layer_param; From 75b0d40a856dda87f2e0de77b2c6626753e1e231 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 14 Apr 2016 22:16:07 -0700 Subject: [PATCH 225/458] [fix] CropLayer: check dimension bounds only for cropped dimensions check only the dimensions to be cropped for compatible sizes and offsets --- src/caffe/layers/crop_layer.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index e81bdd732..849208f56 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -61,12 +61,11 @@ void CropLayer::Reshape(const vector*>& bottom, // following axis crop_offset = param.offset(i - start_axis); } + // check that the crop and offset are within the dimension bounds + CHECK_GE(bottom[0]->shape(i) - crop_offset, bottom[1]->shape(i)) + << "the crop for dimension " << i << " is out-of-bounds with " + << "size " << bottom[1]->shape(i) << " and offset " << crop_offset; } - // Check that the image we are cropping minus the margin is bigger - // than the destination image. - CHECK_GE(bottom[0]->shape(i) - crop_offset, - bottom[1]->shape(i)) - << "invalid crop parameters in dimension: " << i; // Now set new size and offsets new_shape[i] = new_size; offsets[i] = crop_offset; From 00dc3d1ced4467be00ccc82b8509e4a25d54808d Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 14 Apr 2016 22:31:38 -0700 Subject: [PATCH 226/458] CropLayer: groom comments --- include/caffe/layers/crop_layer.hpp | 9 +++++++++ src/caffe/layers/crop_layer.cpp | 22 ++++++++-------------- src/caffe/layers/crop_layer.cu | 9 --------- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/include/caffe/layers/crop_layer.hpp b/include/caffe/layers/crop_layer.hpp index 5c605b2ae..c4fda1220 100644 --- a/include/caffe/layers/crop_layer.hpp +++ b/include/caffe/layers/crop_layer.hpp @@ -44,6 +44,7 @@ class CropLayer : public Layer { vector offsets; private: + // Recursive copy function. void crop_copy(const vector*>& bottom, const vector*>& top, const vector& offsets, @@ -53,6 +54,14 @@ class CropLayer : public Layer { Dtype* dest_data, bool is_forward); + // Recursive copy function: this is similar to crop_copy() but loops over all + // but the last two dimensions to allow for ND cropping while still relying on + // a CUDA kernel for the innermost two dimensions for performance reasons. An + // alterantive implementation could rely on the kernel more by passing + // offsets, but this is problematic because of its variable length. + // Since in the standard (N,C,W,H) case N,C are usually not cropped a speedup + // could be achieved by not looping the application of the copy_kernel around + // these dimensions. void crop_copy_gpu(const vector*>& bottom, const vector*>& top, const vector& offsets, diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index 849208f56..aecdcd631 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -15,8 +15,7 @@ namespace caffe { template void CropLayer::LayerSetUp(const vector*>& bottom, const vector*>& top) { - // All logic that depends only on the number of dimensions is here, - // the rest is in Reshape because it depends on Blob size. + // LayerSetup() handles the number of dimensions; Reshape() handles the sizes. // bottom[0] supplies the data // bottom[1] supplies the size const CropParameter& param = this->layer_param_.crop_param(); @@ -40,40 +39,35 @@ void CropLayer::Reshape(const vector*>& bottom, int input_dim = bottom[0]->num_axes(); const int start_axis = bottom[0]->CanonicalAxisIndex(param.axis()); - // initialize all offsets to 0 + // Initialize offsets to 0 and the new shape to the current shape of the data. offsets = vector(input_dim, 0); - // initialize new shape to bottom[0] vector new_shape(bottom[0]->shape()); - // apply crops + // Determine crop offsets and the new shape post-crop. for (int i = 0; i < input_dim; ++i) { int crop_offset = 0; - int new_size = bottom[0]->shape(i); + int new_size = bottom[0]->shape(i); if (i >= start_axis) { new_size = bottom[1]->shape(i); - if (param.offset_size() == 1) { - // if only one crop value is supplied, crop all dimensions after axis - // by this crop value + // If only one offset is given, all crops have the same offset. crop_offset = param.offset(0); } else if (param.offset_size() > 1) { - // crop values specified must be equal to the number of dimensions - // following axis + // For several offsets, the number of offsets must be equal to the + // number of dimensions to crop, that is dimensions after the axis. crop_offset = param.offset(i - start_axis); } - // check that the crop and offset are within the dimension bounds + // Check that the crop and offset are within the dimension's bounds. CHECK_GE(bottom[0]->shape(i) - crop_offset, bottom[1]->shape(i)) << "the crop for dimension " << i << " is out-of-bounds with " << "size " << bottom[1]->shape(i) << " and offset " << crop_offset; } - // Now set new size and offsets new_shape[i] = new_size; offsets[i] = crop_offset; } top[0]->Reshape(new_shape); } -// recursive copy function template void CropLayer::crop_copy(const vector*>& bottom, const vector*>& top, diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 9ed8f7cce..f78cecbbe 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -22,15 +22,6 @@ __global__ void copy_kernel(const int n, const int height, const int width, } } -// recursive copy function, this function is similar to crop_copy but loops -// over all but the last two dimensions. It is implemented this way to allow -// for ND cropping while still relying on a CUDA kernel for the innermost -// two dimensions for performance reasons. -// An alternative way to implement ND cropping relying more on the kernel -// would require passing offsets to the kernel, which is a bit problematic -// because it is of variable length. Since in the standard (N,C,W,H) case -// N,C are usually not cropped a speedup could be achieved by not looping -// the application of the copy_kernel around these dimensions. template void CropLayer::crop_copy_gpu(const vector*>& bottom, const vector*>& top, From 1c49130c33ebdec042ff6da18d03b7c5f6ad8c93 Mon Sep 17 00:00:00 2001 From: ZhouYzzz Date: Fri, 15 Apr 2016 22:51:49 +0800 Subject: [PATCH 227/458] Allow the python layer have attribute "phase" --- include/caffe/layers/python_layer.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/caffe/layers/python_layer.hpp b/include/caffe/layers/python_layer.hpp index b839d5268..66dbbdf13 100644 --- a/include/caffe/layers/python_layer.hpp +++ b/include/caffe/layers/python_layer.hpp @@ -26,6 +26,7 @@ class PythonLayer : public Layer { } self_.attr("param_str") = bp::str( this->layer_param_.python_param().param_str()); + self_.attr("phase") = static_cast(this->phase_); self_.attr("setup")(bottom, top); } virtual void Reshape(const vector*>& bottom, From 458928a3bc1ee94e5f12bb254a5de819c449fc0a Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Mon, 18 Apr 2016 08:54:21 -0700 Subject: [PATCH 228/458] Typo in docs/installation.md --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index aa946911c..1e29a49d8 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -137,7 +137,7 @@ See [PR #1667](https://github.com/BVLC/caffe/pull/1667) for options and details. **Laboratory Tested Hardware**: Berkeley Vision runs Caffe with Titan Xs, K80s, GTX 980s, K40s, K20s, Titans, and GTX 770s including models at ImageNet/ILSVRC scale. We have not encountered any trouble in-house with devices with CUDA capability >= 3.0. All reported hardware issues thus-far have been due to GPU configuration, overheating, and the like. -**CUDA compute capability**: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Brew with caution; we recommend compute capbility >= 3.0. +**CUDA compute capability**: devices with compute capability <= 2.0 may have to reduce CUDA thread numbers and batch sizes due to hardware constraints. Brew with caution; we recommend compute capability >= 3.0. Once installed, check your times against our [reference performance numbers](performance_hardware.html) to make sure everything is configured properly. From bd762101dba321146d2d9cb747c79c4c678cbfdb Mon Sep 17 00:00:00 2001 From: Achal Dave Date: Wed, 20 Apr 2016 17:34:29 -0400 Subject: [PATCH 229/458] Explicitly point out -weights flag in tutorial The -weights flag is somewhat easy to miss as it's only in one command, but is the crucial thing that anyone searching for 'how to finetune' is looking for. Hopefully this more clearly points out the '-weights' flag, which might otherwise be overlooked in this tutorial. --- examples/finetune_flickr_style/readme.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/finetune_flickr_style/readme.md b/examples/finetune_flickr_style/readme.md index 9ba4c9217..188dedf1b 100644 --- a/examples/finetune_flickr_style/readme.md +++ b/examples/finetune_flickr_style/readme.md @@ -57,7 +57,11 @@ The prototxts in this example assume this, and also assume the presence of the I We'll also need the ImageNet-trained model, which you can obtain by running `./scripts/download_model_binary.py models/bvlc_reference_caffenet`. -Now we can train! (You can fine-tune in CPU mode by leaving out the `-gpu` flag.) +Now we can train! The key to fine-tuning is the `-weights` argument in the +command below, which tells Caffe that we want to load weights from a pre-trained +Caffe model. + +(You can fine-tune in CPU mode by leaving out the `-gpu` flag.) caffe % ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0 From 90426645c36ad71c778c4ac3688ec164242a50a1 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Thu, 25 Feb 2016 19:58:01 -0800 Subject: [PATCH 230/458] Don't set map_size=1TB in util/db_lmdb Instead, double the map size on the MDB_MAP_FULL exception. --- include/caffe/util/db_lmdb.hpp | 13 ++++--- src/caffe/util/db_lmdb.cpp | 65 +++++++++++++++++++++++++++------- 2 files changed, 60 insertions(+), 18 deletions(-) diff --git a/include/caffe/util/db_lmdb.hpp b/include/caffe/util/db_lmdb.hpp index 4e1568ace..ee3703223 100644 --- a/include/caffe/util/db_lmdb.hpp +++ b/include/caffe/util/db_lmdb.hpp @@ -3,6 +3,7 @@ #define CAFFE_UTIL_DB_LMDB_HPP #include +#include #include "lmdb.h" @@ -54,14 +55,16 @@ class LMDBCursor : public Cursor { class LMDBTransaction : public Transaction { public: - explicit LMDBTransaction(MDB_dbi* mdb_dbi, MDB_txn* mdb_txn) - : mdb_dbi_(mdb_dbi), mdb_txn_(mdb_txn) { } + explicit LMDBTransaction(MDB_env* mdb_env) + : mdb_env_(mdb_env) { } virtual void Put(const string& key, const string& value); - virtual void Commit() { MDB_CHECK(mdb_txn_commit(mdb_txn_)); } + virtual void Commit(); private: - MDB_dbi* mdb_dbi_; - MDB_txn* mdb_txn_; + MDB_env* mdb_env_; + vector keys, values; + + void DoubleMapSize(); DISABLE_COPY_AND_ASSIGN(LMDBTransaction); }; diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index 0bc82b53e..df83a52a6 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -7,11 +7,8 @@ namespace caffe { namespace db { -const size_t LMDB_MAP_SIZE = 1099511627776; // 1 TB - void LMDB::Open(const string& source, Mode mode) { MDB_CHECK(mdb_env_create(&mdb_env_)); - MDB_CHECK(mdb_env_set_mapsize(mdb_env_, LMDB_MAP_SIZE)); if (mode == NEW) { CHECK_EQ(mkdir(source.c_str(), 0744), 0) << "mkdir " << source << "failed"; } @@ -48,19 +45,61 @@ LMDBCursor* LMDB::NewCursor() { } LMDBTransaction* LMDB::NewTransaction() { - MDB_txn* mdb_txn; - MDB_CHECK(mdb_txn_begin(mdb_env_, NULL, 0, &mdb_txn)); - MDB_CHECK(mdb_dbi_open(mdb_txn, NULL, 0, &mdb_dbi_)); - return new LMDBTransaction(&mdb_dbi_, mdb_txn); + return new LMDBTransaction(mdb_env_); } void LMDBTransaction::Put(const string& key, const string& value) { - MDB_val mdb_key, mdb_value; - mdb_key.mv_data = const_cast(key.data()); - mdb_key.mv_size = key.size(); - mdb_value.mv_data = const_cast(value.data()); - mdb_value.mv_size = value.size(); - MDB_CHECK(mdb_put(mdb_txn_, *mdb_dbi_, &mdb_key, &mdb_value, 0)); + keys.push_back(key); + values.push_back(value); +} + +void LMDBTransaction::Commit() { + MDB_dbi mdb_dbi; + MDB_val mdb_key, mdb_data; + MDB_txn *mdb_txn; + + // Initialize MDB variables + MDB_CHECK(mdb_txn_begin(mdb_env_, NULL, 0, &mdb_txn)); + MDB_CHECK(mdb_dbi_open(mdb_txn, NULL, 0, &mdb_dbi)); + + bool out_of_memory = false; + for (int i = 0; i < keys.size(); i++) { + mdb_key.mv_size = keys[i].size(); + mdb_key.mv_data = const_cast(keys[i].data()); + mdb_data.mv_size = values[i].size(); + mdb_data.mv_data = const_cast(values[i].data()); + + int put_rc = mdb_put(mdb_txn, mdb_dbi, &mdb_key, &mdb_data, 0); + if (put_rc == MDB_MAP_FULL) { + out_of_memory = true; + break; + } else { + // Failed for some other reason + MDB_CHECK(put_rc); + } + } + + if (!out_of_memory) { + // Commit the transaction + MDB_CHECK(mdb_txn_commit(mdb_txn)); + mdb_dbi_close(mdb_env_, mdb_dbi); + keys.clear(); + values.clear(); + } else { + // Double the map size and retry + mdb_txn_abort(mdb_txn); + mdb_dbi_close(mdb_env_, mdb_dbi); + DoubleMapSize(); + Commit(); + } +} + +void LMDBTransaction::DoubleMapSize() { + struct MDB_envinfo current_info; + MDB_CHECK(mdb_env_info(mdb_env_, ¤t_info)); + size_t new_size = current_info.me_mapsize * 2; + DLOG(INFO) << "Doubling LMDB map size to " << (new_size>>20) << "MB ..."; + MDB_CHECK(mdb_env_set_mapsize(mdb_env_, new_size)); } } // namespace db From f30c61cfdfc0d254ec233b972ff4b6b0aa2f5d4c Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Thu, 25 Feb 2016 20:02:25 -0800 Subject: [PATCH 231/458] Print to stderr for example LMDB code --- examples/cifar10/convert_cifar_data.cpp | 2 ++ examples/mnist/convert_mnist_data.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/examples/cifar10/convert_cifar_data.cpp b/examples/cifar10/convert_cifar_data.cpp index e1b89f42f..7385a74a6 100644 --- a/examples/cifar10/convert_cifar_data.cpp +++ b/examples/cifar10/convert_cifar_data.cpp @@ -91,6 +91,8 @@ void convert_dataset(const string& input_folder, const string& output_folder, } int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; + if (argc != 4) { printf("This script converts the CIFAR dataset to the leveldb format used\n" "by caffe to perform classification.\n" diff --git a/examples/mnist/convert_mnist_data.cpp b/examples/mnist/convert_mnist_data.cpp index 16d28093d..32bee5269 100644 --- a/examples/mnist/convert_mnist_data.cpp +++ b/examples/mnist/convert_mnist_data.cpp @@ -178,6 +178,8 @@ int main(int argc, char** argv) { namespace gflags = google; #endif + FLAGS_alsologtostderr = 1; + gflags::SetUsageMessage("This script converts the MNIST dataset to\n" "the lmdb/leveldb format used by Caffe to load data.\n" "Usage:\n" From 74040cb2ed9d46a267a16870e9878f3b6911d644 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Thu, 25 Feb 2016 20:14:02 -0800 Subject: [PATCH 232/458] Update MNIST example to use new DB classes --- examples/mnist/convert_mnist_data.cpp | 87 ++++----------------------- 1 file changed, 12 insertions(+), 75 deletions(-) diff --git a/examples/mnist/convert_mnist_data.cpp b/examples/mnist/convert_mnist_data.cpp index 32bee5269..57ddef770 100644 --- a/examples/mnist/convert_mnist_data.cpp +++ b/examples/mnist/convert_mnist_data.cpp @@ -22,12 +22,15 @@ #include // NOLINT(readability/streams) #include +#include "boost/scoped_ptr.hpp" #include "caffe/proto/caffe.pb.h" +#include "caffe/util/db.hpp" #include "caffe/util/format.hpp" #if defined(USE_LEVELDB) && defined(USE_LMDB) using namespace caffe; // NOLINT(build/namespaces) +using boost::scoped_ptr; using std::string; DEFINE_string(backend, "lmdb", "The backend for storing the result"); @@ -67,43 +70,10 @@ void convert_dataset(const char* image_filename, const char* label_filename, image_file.read(reinterpret_cast(&cols), 4); cols = swap_endian(cols); - // lmdb - MDB_env *mdb_env; - MDB_dbi mdb_dbi; - MDB_val mdb_key, mdb_data; - MDB_txn *mdb_txn; - // leveldb - leveldb::DB* db; - leveldb::Options options; - options.error_if_exists = true; - options.create_if_missing = true; - options.write_buffer_size = 268435456; - leveldb::WriteBatch* batch = NULL; - - // Open db - if (db_backend == "leveldb") { // leveldb - LOG(INFO) << "Opening leveldb " << db_path; - leveldb::Status status = leveldb::DB::Open( - options, db_path, &db); - CHECK(status.ok()) << "Failed to open leveldb " << db_path - << ". Is it already existing?"; - batch = new leveldb::WriteBatch(); - } else if (db_backend == "lmdb") { // lmdb - LOG(INFO) << "Opening lmdb " << db_path; - CHECK_EQ(mkdir(db_path, 0744), 0) - << "mkdir " << db_path << "failed"; - CHECK_EQ(mdb_env_create(&mdb_env), MDB_SUCCESS) << "mdb_env_create failed"; - CHECK_EQ(mdb_env_set_mapsize(mdb_env, 1099511627776), MDB_SUCCESS) // 1TB - << "mdb_env_set_mapsize failed"; - CHECK_EQ(mdb_env_open(mdb_env, db_path, 0, 0664), MDB_SUCCESS) - << "mdb_env_open failed"; - CHECK_EQ(mdb_txn_begin(mdb_env, NULL, 0, &mdb_txn), MDB_SUCCESS) - << "mdb_txn_begin failed"; - CHECK_EQ(mdb_open(mdb_txn, NULL, 0, &mdb_dbi), MDB_SUCCESS) - << "mdb_open failed. Does the lmdb already exist? "; - } else { - LOG(FATAL) << "Unknown db backend " << db_backend; - } + + scoped_ptr db(db::GetDB(db_backend)); + db->Open(db_path, db::NEW); + scoped_ptr txn(db->NewTransaction()); // Storing to db char label; @@ -125,52 +95,19 @@ void convert_dataset(const char* image_filename, const char* label_filename, string key_str = caffe::format_int(item_id, 8); datum.SerializeToString(&value); - // Put in db - if (db_backend == "leveldb") { // leveldb - batch->Put(key_str, value); - } else if (db_backend == "lmdb") { // lmdb - mdb_data.mv_size = value.size(); - mdb_data.mv_data = reinterpret_cast(&value[0]); - mdb_key.mv_size = key_str.size(); - mdb_key.mv_data = reinterpret_cast(&key_str[0]); - CHECK_EQ(mdb_put(mdb_txn, mdb_dbi, &mdb_key, &mdb_data, 0), MDB_SUCCESS) - << "mdb_put failed"; - } else { - LOG(FATAL) << "Unknown db backend " << db_backend; - } + txn->Put(key_str, value); if (++count % 1000 == 0) { - // Commit txn - if (db_backend == "leveldb") { // leveldb - db->Write(leveldb::WriteOptions(), batch); - delete batch; - batch = new leveldb::WriteBatch(); - } else if (db_backend == "lmdb") { // lmdb - CHECK_EQ(mdb_txn_commit(mdb_txn), MDB_SUCCESS) - << "mdb_txn_commit failed"; - CHECK_EQ(mdb_txn_begin(mdb_env, NULL, 0, &mdb_txn), MDB_SUCCESS) - << "mdb_txn_begin failed"; - } else { - LOG(FATAL) << "Unknown db backend " << db_backend; - } + txn->Commit(); } } // write the last batch if (count % 1000 != 0) { - if (db_backend == "leveldb") { // leveldb - db->Write(leveldb::WriteOptions(), batch); - delete batch; - delete db; - } else if (db_backend == "lmdb") { // lmdb - CHECK_EQ(mdb_txn_commit(mdb_txn), MDB_SUCCESS) << "mdb_txn_commit failed"; - mdb_close(mdb_env, mdb_dbi); - mdb_env_close(mdb_env); - } else { - LOG(FATAL) << "Unknown db backend " << db_backend; - } - LOG(ERROR) << "Processed " << count << " files."; + txn->Commit(); } + LOG(INFO) << "Processed " << count << " files."; delete[] pixels; + db->Close(); } int main(int argc, char** argv) { From bff14b47c58cffa28a71b9e3caba93da2354ab07 Mon Sep 17 00:00:00 2001 From: HeGaoYuan <273230305@qq.com> Date: Sat, 23 Apr 2016 14:48:41 +0800 Subject: [PATCH 233/458] Fixed #4029: test the network every 500 iterations, not 1000 iterations --- examples/mnist/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/mnist/readme.md b/examples/mnist/readme.md index b87a0f53c..35952155a 100644 --- a/examples/mnist/readme.md +++ b/examples/mnist/readme.md @@ -248,7 +248,7 @@ These messages tell you the details about each layer, its connections and its ou I1203 solver.cpp:36] Solver scaffolding done. I1203 solver.cpp:44] Solving LeNet -Based on the solver setting, we will print the training loss function every 100 iterations, and test the network every 1000 iterations. You will see messages like this: +Based on the solver setting, we will print the training loss function every 100 iterations, and test the network every 500 iterations. You will see messages like this: I1203 solver.cpp:204] Iteration 100, lr = 0.00992565 I1203 solver.cpp:66] Iteration 100, loss = 0.26044 From 0e145c5af91bf42e20cf8c8a295816b06905ee4e Mon Sep 17 00:00:00 2001 From: ebadawy Date: Sun, 24 Apr 2016 20:24:41 +0200 Subject: [PATCH 234/458] Read the data as a binary Appending 'b' in the file mode as hashlib functions require to pass in bytes --- scripts/download_model_binary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/download_model_binary.py b/scripts/download_model_binary.py index 66f72f247..fcdbb5a91 100755 --- a/scripts/download_model_binary.py +++ b/scripts/download_model_binary.py @@ -60,7 +60,7 @@ def valid_dirname(dirname): # Closure-d function for checking SHA1. def model_checks_out(filename=model_filename, sha1=frontmatter['sha1']): - with open(filename, 'r') as f: + with open(filename, 'rb') as f: return hashlib.sha1(f.read()).hexdigest() == sha1 # Check if model exists. From 8619fbb90f2b5546ea8cb7c4021216d978d4cbc4 Mon Sep 17 00:00:00 2001 From: Sammy Sidhu Date: Wed, 27 Apr 2016 03:05:30 -0700 Subject: [PATCH 235/458] fixed typo in download script command cpp_classification --- examples/cpp_classification/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/cpp_classification/readme.md b/examples/cpp_classification/readme.md index a086db1a0..0de2885b5 100644 --- a/examples/cpp_classification/readme.md +++ b/examples/cpp_classification/readme.md @@ -42,7 +42,7 @@ script: The ImageNet labels file (also called the *synset file*) is also required in order to map a prediction to the name of the class: ``` -./data/ilsvrc12/get_ilsvrc_aux.sh. +./data/ilsvrc12/get_ilsvrc_aux.sh ``` Using the files that were downloaded, we can classify the provided cat image (`examples/images/cat.jpg`) using this command: From 859cf6e1c3f965b4029b7940b861038031014ed7 Mon Sep 17 00:00:00 2001 From: Kun Wang Date: Wed, 27 Apr 2016 21:09:31 +0800 Subject: [PATCH 236/458] Fix an error in the example of ReshapeParameter. * this small mistake may confuse newer. --- src/caffe/proto/caffe.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 650c87ae3..ea40e60aa 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -987,7 +987,7 @@ message ReshapeParameter { // reshape_param { shape { dim: 2 dim: 2 dim: 4 } } // reshape_param { shape { dim: 0 dim: 2 dim: 4 } } // reshape_param { shape { dim: 0 dim: 2 dim: -1 } } - // reshape_param { shape { dim: -1 dim: 0 dim: 2 } } + // reshape_param { shape { dim: 0 dim:-1 dim: 4 } } // optional BlobShape shape = 1; From 8714b53719165e42f7844126f671f32ecc9b2e2f Mon Sep 17 00:00:00 2001 From: Drew Abbot Date: Wed, 27 Apr 2016 23:25:09 -0700 Subject: [PATCH 237/458] avoid non-integer array indices --- python/caffe/classifier.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/caffe/classifier.py b/python/caffe/classifier.py index 537193db8..ea29fed86 100644 --- a/python/caffe/classifier.py +++ b/python/caffe/classifier.py @@ -79,6 +79,7 @@ def predict(self, inputs, oversample=True): -self.crop_dims / 2.0, self.crop_dims / 2.0 ]) + crop = crop.astype(int) input_ = input_[:, crop[0]:crop[2], crop[1]:crop[3], :] # Classify From 673e8cfc0b8f05f9fa3ebbad7cc6202822e5d9c5 Mon Sep 17 00:00:00 2001 From: Sean Bell Date: Thu, 28 Apr 2016 13:06:51 -0400 Subject: [PATCH 238/458] Suppress boost registration warnings in pycaffe (Based on #3960) --- python/caffe/_caffe.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index a2c46a123..32b5d9210 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -26,6 +26,19 @@ #define PyArray_SetBaseObject(arr, x) (PyArray_BASE(arr) = (x)) #endif +/* Fix to avoid registration warnings in pycaffe (#3960) */ +#define BP_REGISTER_SHARED_PTR_TO_PYTHON(PTR) do { \ + const boost::python::type_info info = \ + boost::python::type_id >(); \ + const boost::python::converter::registration* reg = \ + boost::python::converter::registry::query(info); \ + if (reg == NULL) { \ + bp::register_ptr_to_python >(); \ + } else if ((*reg).m_to_python == NULL) { \ + bp::register_ptr_to_python >(); \ + } \ +} while (0) + namespace bp = boost::python; namespace caffe { @@ -255,7 +268,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("_set_input_arrays", &Net_SetInputArrays, bp::with_custodian_and_ward<1, 2, bp::with_custodian_and_ward<1, 3> >()) .def("save", &Net_Save); - bp::register_ptr_to_python > >(); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Net); bp::class_, shared_ptr >, boost::noncopyable>( "Blob", bp::no_init) @@ -275,7 +288,7 @@ BOOST_PYTHON_MODULE(_caffe) { NdarrayCallPolicies())) .add_property("diff", bp::make_function(&Blob::mutable_cpu_diff, NdarrayCallPolicies())); - bp::register_ptr_to_python > >(); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Blob); bp::class_, shared_ptr >, boost::noncopyable>("Layer", bp::init()) @@ -284,7 +297,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("setup", &Layer::LayerSetUp) .def("reshape", &Layer::Reshape) .add_property("type", bp::make_function(&Layer::type)); - bp::register_ptr_to_python > >(); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Layer); bp::class_("LayerParameter", bp::no_init); @@ -299,7 +312,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("step", &Solver::Step) .def("restore", &Solver::Restore) .def("snapshot", &Solver::Snapshot); - bp::register_ptr_to_python > >(); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Solver); bp::class_, bp::bases >, shared_ptr >, boost::noncopyable>( From 2da8600acdc922d03b667ef691279cb52c7226ed Mon Sep 17 00:00:00 2001 From: Muneyuki Noguchi Date: Fri, 29 Apr 2016 02:04:02 +0000 Subject: [PATCH 239/458] draw_net: accept prototxt without name Fixes #3819 --- python/caffe/draw.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index cfa3fc5b1..61205ca9f 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -142,7 +142,7 @@ def get_pydot_graph(caffe_net, rankdir, label_edges=True): ------- pydot graph object """ - pydot_graph = pydot.Dot(caffe_net.name, + pydot_graph = pydot.Dot(caffe_net.name if caffe_net.name else 'Net', graph_type='digraph', rankdir=rankdir) pydot_nodes = {} From cb3c992a2ae00ec634313a394361214d868f9bd2 Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Sat, 30 Apr 2016 16:40:05 -0700 Subject: [PATCH 240/458] fix grep in CUDA version detection to accomodate OSX's grep (and other grep that doesn't support \d extension) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5424c3a18..568d9c277 100644 --- a/Makefile +++ b/Makefile @@ -272,7 +272,7 @@ endif ifeq ($(OSX), 1) CXX := /usr/bin/clang++ ifneq ($(CPU_ONLY), 1) - CUDA_VERSION := $(shell $(CUDA_DIR)/bin/nvcc -V | grep -o 'release \d' | grep -o '\d') + CUDA_VERSION := $(shell $(CUDA_DIR)/bin/nvcc -V | grep -o 'release [0-9.]*' | grep -o '[0-9.]*') ifeq ($(shell echo | awk '{exit $(CUDA_VERSION) < 7.0;}'), 1) CXXFLAGS += -stdlib=libstdc++ LINKFLAGS += -stdlib=libstdc++ From 5d423b7a63718decf04bad93a481ebd56291ec7b Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Mon, 2 May 2016 16:20:00 -0700 Subject: [PATCH 241/458] Pin the base image version for the GPU Dockerfile The previous Dockerfile can break if image nvidia/cuda:cudnn is updated to any of the following: - Ubuntu 16.04 LTS (already released) - cuDNN v5 (soon) - CUDA 8.0 (soon) --- docker/Makefile | 2 +- docker/standalone/gpu/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Makefile b/docker/Makefile index 725208c6b..0de887d0e 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -22,7 +22,7 @@ docker_files: standalone_files standalone_files: standalone/cpu/Dockerfile standalone/gpu/Dockerfile -FROM_GPU = "nvidia/cuda:cudnn" +FROM_GPU = "nvidia/cuda:7.5-cudnn4-devel-ubuntu14.04" FROM_CPU = "ubuntu:14.04" GPU_CMAKE_ARGS = -DUSE_CUDNN=1 CPU_CMAKE_ARGS = -DCPU_ONLY=1 diff --git a/docker/standalone/gpu/Dockerfile b/docker/standalone/gpu/Dockerfile index 1ddc6560d..371aad5b1 100644 --- a/docker/standalone/gpu/Dockerfile +++ b/docker/standalone/gpu/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:cudnn +FROM nvidia/cuda:7.5-cudnn4-devel-ubuntu14.04 MAINTAINER caffe-maint@googlegroups.com RUN apt-get update && apt-get install -y --no-install-recommends \ From c2dba923b82c669f2998a3174310fbbb5c64c39f Mon Sep 17 00:00:00 2001 From: ZhouYzzz Date: Wed, 4 May 2016 18:00:12 +0800 Subject: [PATCH 242/458] Add test for attribute "phase" in python layer --- python/caffe/test/test_python_layer.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/python/caffe/test/test_python_layer.py b/python/caffe/test/test_python_layer.py index e46b71180..899514e90 100644 --- a/python/caffe/test/test_python_layer.py +++ b/python/caffe/test/test_python_layer.py @@ -44,6 +44,18 @@ def forward(self, bottom, top): def backward(self, top, propagate_down, bottom): self.blobs[0].diff[0] = 1 +class PhaseLayer(caffe.Layer): + """A layer for checking attribute `phase`""" + + def setup(self, bottom, top): + pass + + def reshape(self, bootom, top): + top[0].reshape() + + def forward(self, bottom, top): + top[0].data[()] = self.phase + def python_net_file(): with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: f.write("""name: 'pythonnet' force_backward: true @@ -76,6 +88,14 @@ def parameter_net_file(): """) return f.name +def phase_net_file(): + with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f: + f.write("""name: 'pythonnet' force_backward: true + layer { type: 'Python' name: 'layer' top: 'phase' + python_param { module: 'test_python_layer' layer: 'PhaseLayer' } } + """) + return f.name + @unittest.skipIf('Python' not in caffe.layer_type_list(), 'Caffe built without Python layer support') @@ -140,3 +160,9 @@ def test_parameter(self): self.assertEqual(layer.blobs[0].data[0], 1) os.remove(net_file) + + def test_phase(self): + net_file = phase_net_file() + for phase in caffe.TRAIN, caffe.TEST: + net = caffe.Net(net_file, phase) + self.assertEqual(net.forward()['phase'], phase) From 5acc17a5bfe010d92cc20766f88eff70d4ae92cc Mon Sep 17 00:00:00 2001 From: Achal Dave Date: Wed, 4 May 2016 11:51:00 -0400 Subject: [PATCH 243/458] Exit on error and report argument error details. The statement 'exit' has no effect in Python scripts. Use 'sys.exit()' instead. --- tools/extra/plot_training_log.py.example | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index 4d3ed0d15..d98c52d33 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -160,7 +160,7 @@ Supported chart types:""" % (len(get_supported_chart_types()) - 1, num = len(supported_chart_types) for i in xrange(num): print ' %d: %s' % (i, supported_chart_types[i]) - exit + sys.exit() def is_valid_chart_type(chart_type): return chart_type >= 0 and chart_type < len(get_supported_chart_types()) @@ -171,17 +171,19 @@ if __name__ == '__main__': else: chart_type = int(sys.argv[1]) if not is_valid_chart_type(chart_type): + print '%s is not a valid chart type.' % chart_type print_help() path_to_png = sys.argv[2] if not path_to_png.endswith('.png'): print 'Path must ends with png' % path_to_png - exit + sys.exit() path_to_logs = sys.argv[3:] for path_to_log in path_to_logs: if not os.path.exists(path_to_log): print 'Path does not exist: %s' % path_to_log - exit + sys.exit() if not path_to_log.endswith(get_log_file_suffix()): + print 'Log file must end in %s.' % get_log_file_suffix() print_help() ## plot_chart accpets multiple path_to_logs plot_chart(chart_type, path_to_png, path_to_logs) From 4f22fceda92a0370f21f64d45d71ef3e354a0312 Mon Sep 17 00:00:00 2001 From: Achal Dave Date: Wed, 4 May 2016 11:52:06 -0400 Subject: [PATCH 244/458] Remove trailing spaces --- tools/extra/plot_training_log.py.example | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index d98c52d33..c3b47a816 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -68,9 +68,9 @@ def get_field_descriptions(chart_type): get_chart_type_description_separator()) y_axis_field = description[0] x_axis_field = description[1] - return x_axis_field, y_axis_field + return x_axis_field, y_axis_field -def get_field_indecies(x_axis_field, y_axis_field): +def get_field_indecies(x_axis_field, y_axis_field): data_file_type = get_data_file_type(chart_type) fields = create_field_index()[0][data_file_type] return fields[x_axis_field], fields[y_axis_field] @@ -138,8 +138,8 @@ def plot_chart(chart_type, path_to_png, path_to_log_list): plt.legend(loc = legend_loc, ncol = 1) # ajust ncol to fit the space plt.title(get_chart_type_description(chart_type)) plt.xlabel(x_axis_field) - plt.ylabel(y_axis_field) - plt.savefig(path_to_png) + plt.ylabel(y_axis_field) + plt.savefig(path_to_png) plt.show() def print_help(): @@ -164,7 +164,7 @@ Supported chart types:""" % (len(get_supported_chart_types()) - 1, def is_valid_chart_type(chart_type): return chart_type >= 0 and chart_type < len(get_supported_chart_types()) - + if __name__ == '__main__': if len(sys.argv) < 4: print_help() From 938918c3f5d0a1a738d2229a337774cea92be95a Mon Sep 17 00:00:00 2001 From: Achal Dave Date: Wed, 4 May 2016 11:55:43 -0400 Subject: [PATCH 245/458] Reformat to fit in 79 columns --- tools/extra/plot_training_log.py.example | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index c3b47a816..3ea66e380 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -10,7 +10,8 @@ import matplotlib.legend as lgd import matplotlib.markers as mks def get_log_parsing_script(): - dirname = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + dirname = os.path.dirname(os.path.abspath(inspect.getfile( + inspect.currentframe()))) return dirname + '/parse_log.sh' def get_log_file_suffix(): @@ -61,7 +62,8 @@ def get_data_file_type(chart_type): return data_file_type def get_data_file(chart_type, path_to_log): - return os.path.basename(path_to_log) + '.' + get_data_file_type(chart_type).lower() + return (os.path.basename(path_to_log) + '.' + + get_data_file_type(chart_type).lower()) def get_field_descriptions(chart_type): description = get_chart_type_description(chart_type).split( From c2656f0bc7e1f51b4a82a79e7a5516f0f1fb012f Mon Sep 17 00:00:00 2001 From: Achal Dave Date: Wed, 4 May 2016 11:56:05 -0400 Subject: [PATCH 246/458] Fix typo (indecies->indices) --- tools/extra/plot_training_log.py.example | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index 3ea66e380..79924ae5a 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -72,7 +72,7 @@ def get_field_descriptions(chart_type): x_axis_field = description[1] return x_axis_field, y_axis_field -def get_field_indecies(x_axis_field, y_axis_field): +def get_field_indices(x_axis_field, y_axis_field): data_file_type = get_data_file_type(chart_type) fields = create_field_index()[0][data_file_type] return fields[x_axis_field], fields[y_axis_field] @@ -113,7 +113,7 @@ def plot_chart(chart_type, path_to_png, path_to_log_list): os.system('%s %s' % (get_log_parsing_script(), path_to_log)) data_file = get_data_file(chart_type, path_to_log) x_axis_field, y_axis_field = get_field_descriptions(chart_type) - x, y = get_field_indecies(x_axis_field, y_axis_field) + x, y = get_field_indices(x_axis_field, y_axis_field) data = load_data(data_file, x, y) ## TODO: more systematic color cycle for lines color = [random.random(), random.random(), random.random()] From e6fc797f3be59a12f26d247e2f1f79bf7d8086c4 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 4 May 2016 13:31:35 -0700 Subject: [PATCH 247/458] [build] note that `make clean` clears build and distribute dirs --- Makefile.config.example | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.config.example b/Makefile.config.example index 8fd49c9c1..07bed63ae 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -98,6 +98,7 @@ LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib # (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) # USE_PKG_CONFIG := 1 +# N.B. both build and distribute dirs are cleared on `make clean` BUILD_DIR := build DISTRIBUTE_DIR := distribute From c419f8517b1e1b3d7a07fe212fc6c90a70b519ea Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Thu, 9 Jul 2015 15:49:48 -0700 Subject: [PATCH 248/458] add parameter layer for learning any bottom --- include/caffe/layers/parameter_layer.hpp | 45 ++++++++++++++++++++++++ src/caffe/layers/parameter_layer.cpp | 8 +++++ src/caffe/proto/caffe.proto | 7 +++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 include/caffe/layers/parameter_layer.hpp create mode 100644 src/caffe/layers/parameter_layer.cpp diff --git a/include/caffe/layers/parameter_layer.hpp b/include/caffe/layers/parameter_layer.hpp new file mode 100644 index 000000000..188b92acb --- /dev/null +++ b/include/caffe/layers/parameter_layer.hpp @@ -0,0 +1,45 @@ +#ifndef CAFFE_PARAMETER_LAYER_HPP_ +#define CAFFE_PARAMETER_LAYER_HPP_ + +#include + +#include "caffe/layer.hpp" + +namespace caffe { + +template +class ParameterLayer : public Layer { + public: + explicit ParameterLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top) { + if (this->blobs_.size() > 0) { + LOG(INFO) << "Skipping parameter initialization"; + } else { + this->blobs_.resize(1); + this->blobs_[0].reset(new Blob()); + this->blobs_[0]->Reshape(this->layer_param_.parameter_param().shape()); + } + top[0]->Reshape(this->layer_param_.parameter_param().shape()); + } + virtual void Reshape(const vector*>& bottom, + const vector*>& top) { } + virtual inline const char* type() const { return "Parameter"; } + virtual inline int ExactNumBottomBlobs() const { return 0; } + virtual inline int ExactNumTopBlobs() const { return 1; } + + protected: + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top) { + top[0]->ShareData(*(this->blobs_[0])); + top[0]->ShareDiff(*(this->blobs_[0])); + } + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) + { } +}; + +} // namespace caffe + +#endif diff --git a/src/caffe/layers/parameter_layer.cpp b/src/caffe/layers/parameter_layer.cpp new file mode 100644 index 000000000..fbd326f84 --- /dev/null +++ b/src/caffe/layers/parameter_layer.cpp @@ -0,0 +1,8 @@ +#include "caffe/layers/parameter_layer.hpp" + +namespace caffe { + +INSTANTIATE_CLASS(ParameterLayer); +REGISTER_LAYER_CLASS(Parameter); + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index ea40e60aa..158107186 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 145 (last added: crop_param) +// LayerParameter next available layer-specific ID: 146 (last added: parameter_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -385,6 +385,7 @@ message LayerParameter { optional LRNParameter lrn_param = 118; optional MemoryDataParameter memory_data_param = 119; optional MVNParameter mvn_param = 120; + optional ParameterParameter parameter_param = 145; optional PoolingParameter pooling_param = 121; optional PowerParameter power_param = 122; optional PReLUParameter prelu_param = 131; @@ -873,6 +874,10 @@ message MVNParameter { optional float eps = 3 [default = 1e-9]; } +message ParameterParameter { + optional BlobShape shape = 1; +} + message PoolingParameter { enum PoolMethod { MAX = 0; From 4e690b22ae30b0d483ccbe971007f2c6732cceb0 Mon Sep 17 00:00:00 2001 From: crazytan Date: Thu, 28 Apr 2016 18:45:13 -0400 Subject: [PATCH 249/458] fix problems in net_surgery.ipynb --- examples/net_surgery.ipynb | 45 +++++++++++++++----------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/examples/net_surgery.ipynb b/examples/net_surgery.ipynb index a6092db0c..d50d503bf 100644 --- a/examples/net_surgery.ipynb +++ b/examples/net_surgery.ipynb @@ -22,7 +22,6 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", - "import Image\n", "\n", "# Make sure that caffe is on the python path:\n", "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", @@ -3511,7 +3510,7 @@ "print(\"blobs {}\\nparams {}\".format(net.blobs.keys(), net.params.keys()))\n", "\n", "# load image and prepare as a single input batch for Caffe\n", - "im = np.array(Image.open('images/cat_gray.jpg'))\n", + "im = np.array(caffe.io.load_image('images/cat_gray.jpg', color=False)).squeeze()\n", "plt.title(\"original image\")\n", "plt.imshow(im)\n", "plt.axis('off')\n", @@ -4480,8 +4479,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "pre-surgery output mean -12.93\n", - "post-surgery output mean -11.93\n" + "pre-surgery output mean -0.02\n", + "post-surgery output mean 0.98\n" ] } ], @@ -4489,7 +4488,7 @@ "# pick first filter output\n", "conv0 = net.blobs['conv'].data[0, 0]\n", "print(\"pre-surgery output mean {:.2f}\".format(conv0.mean()))\n", - "# set first filter bias to 10\n", + "# set first filter bias to 1\n", "net.params['conv'][1].data[0] = 1.\n", "net.forward()\n", "print(\"post-surgery output mean {:.2f}\".format(conv0.mean()))" @@ -5494,13 +5493,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "1,2c1,2\r\n", + "1,2c1\r\n", "< # Fully convolutional network version of CaffeNet.\r\n", "< name: \"CaffeNetConv\"\r\n", "---\r\n", "> name: \"CaffeNet\"\r\n", - "> input: \"data\"\r\n", - "7,11c7\r\n", + "7,11c6\r\n", "< input_param {\r\n", "< # initial shape for a fully convolutional network:\r\n", "< # the shape can be set for each input by reshape.\r\n", @@ -5508,33 +5506,33 @@ "< }\r\n", "---\r\n", "> input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }\r\n", - "157,158c153,154\r\n", + "157,158c152,153\r\n", "< name: \"fc6-conv\"\r\n", "< type: \"Convolution\"\r\n", "---\r\n", "> name: \"fc6\"\r\n", "> type: \"InnerProduct\"\r\n", - "160,161c156,157\r\n", + "160,161c155,156\r\n", "< top: \"fc6-conv\"\r\n", "< convolution_param {\r\n", "---\r\n", "> top: \"fc6\"\r\n", "> inner_product_param {\r\n", - "163d158\r\n", + "163d157\r\n", "< kernel_size: 6\r\n", - "169,170c164,165\r\n", + "169,170c163,164\r\n", "< bottom: \"fc6-conv\"\r\n", "< top: \"fc6-conv\"\r\n", "---\r\n", "> bottom: \"fc6\"\r\n", "> top: \"fc6\"\r\n", - "175,176c170,171\r\n", + "175,176c169,170\r\n", "< bottom: \"fc6-conv\"\r\n", "< top: \"fc6-conv\"\r\n", "---\r\n", "> bottom: \"fc6\"\r\n", "> top: \"fc6\"\r\n", - "182,186c177,181\r\n", + "182,186c176,180\r\n", "< name: \"fc7-conv\"\r\n", "< type: \"Convolution\"\r\n", "< bottom: \"fc6-conv\"\r\n", @@ -5546,21 +5544,21 @@ "> bottom: \"fc6\"\r\n", "> top: \"fc7\"\r\n", "> inner_product_param {\r\n", - "188d182\r\n", + "188d181\r\n", "< kernel_size: 1\r\n", - "194,195c188,189\r\n", + "194,195c187,188\r\n", "< bottom: \"fc7-conv\"\r\n", "< top: \"fc7-conv\"\r\n", "---\r\n", "> bottom: \"fc7\"\r\n", "> top: \"fc7\"\r\n", - "200,201c194,195\r\n", + "200,201c193,194\r\n", "< bottom: \"fc7-conv\"\r\n", "< top: \"fc7-conv\"\r\n", "---\r\n", "> bottom: \"fc7\"\r\n", "> top: \"fc7\"\r\n", - "207,211c201,205\r\n", + "207,211c200,204\r\n", "< name: \"fc8-conv\"\r\n", "< type: \"Convolution\"\r\n", "< bottom: \"fc7-conv\"\r\n", @@ -5572,9 +5570,9 @@ "> bottom: \"fc7\"\r\n", "> top: \"fc8\"\r\n", "> inner_product_param {\r\n", - "213d206\r\n", + "213d205\r\n", "< kernel_size: 1\r\n", - "219c212\r\n", + "219c211\r\n", "< bottom: \"fc8-conv\"\r\n", "---\r\n", "> bottom: \"fc8\"\r\n" @@ -5610,13 +5608,6 @@ } ], "source": [ - "# Make sure that caffe is on the python path:\n", - "caffe_root = '../' # this file is expected to be in {caffe_root}/examples\n", - "import sys\n", - "sys.path.insert(0, caffe_root + 'python')\n", - "\n", - "import caffe\n", - "\n", "# Load the original network and extract the fully connected layers' parameters.\n", "net = caffe.Net('../models/bvlc_reference_caffenet/deploy.prototxt', \n", " '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel', \n", From da004d7c4e5d52b701762ecc8e20b4a4544a3457 Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Thu, 5 May 2016 18:29:30 -0700 Subject: [PATCH 250/458] Allow reshaping blobs to size 0. Also add a test that reshapes a blob to shape (0, 5). --- src/caffe/blob.cpp | 4 +++- src/caffe/test/test_blob.cpp | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/caffe/blob.cpp b/src/caffe/blob.cpp index c86fd5d1d..4a34e4c58 100644 --- a/src/caffe/blob.cpp +++ b/src/caffe/blob.cpp @@ -30,7 +30,9 @@ void Blob::Reshape(const vector& shape) { int* shape_data = static_cast(shape_data_->mutable_cpu_data()); for (int i = 0; i < shape.size(); ++i) { CHECK_GE(shape[i], 0); - CHECK_LE(shape[i], INT_MAX / count_) << "blob size exceeds INT_MAX"; + if (count_ != 0) { + CHECK_LE(shape[i], INT_MAX / count_) << "blob size exceeds INT_MAX"; + } count_ *= shape[i]; shape_[i] = shape[i]; shape_data[i] = shape[i]; diff --git a/src/caffe/test/test_blob.cpp b/src/caffe/test/test_blob.cpp index a9d7d519e..b88562223 100644 --- a/src/caffe/test/test_blob.cpp +++ b/src/caffe/test/test_blob.cpp @@ -51,6 +51,14 @@ TYPED_TEST(BlobSimpleTest, TestReshape) { EXPECT_EQ(this->blob_->count(), 120); } +TYPED_TEST(BlobSimpleTest, TestReshapeZero) { + vector shape(2); + shape[0] = 0; + shape[1] = 5; + this->blob_->Reshape(shape); + EXPECT_EQ(this->blob_->count(), 0); +} + TYPED_TEST(BlobSimpleTest, TestLegacyBlobProtoShapeEquals) { BlobProto blob_proto; From 42642936c2c29e539022e33bc0c691564d7e522d Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Mon, 9 May 2016 11:21:26 -0700 Subject: [PATCH 251/458] Catch MDB_MAP_FULL errors from mdb_txn_commit --- src/caffe/util/db_lmdb.cpp | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index df83a52a6..4567cd7b9 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -62,36 +62,42 @@ void LMDBTransaction::Commit() { MDB_CHECK(mdb_txn_begin(mdb_env_, NULL, 0, &mdb_txn)); MDB_CHECK(mdb_dbi_open(mdb_txn, NULL, 0, &mdb_dbi)); - bool out_of_memory = false; for (int i = 0; i < keys.size(); i++) { mdb_key.mv_size = keys[i].size(); mdb_key.mv_data = const_cast(keys[i].data()); mdb_data.mv_size = values[i].size(); mdb_data.mv_data = const_cast(values[i].data()); + // Add data to the transaction int put_rc = mdb_put(mdb_txn, mdb_dbi, &mdb_key, &mdb_data, 0); if (put_rc == MDB_MAP_FULL) { - out_of_memory = true; - break; - } else { - // Failed for some other reason - MDB_CHECK(put_rc); + // Out of memory - double the map size and retry + mdb_txn_abort(mdb_txn); + mdb_dbi_close(mdb_env_, mdb_dbi); + DoubleMapSize(); + Commit(); + return; } + // May have failed for some other reason + MDB_CHECK(put_rc); } - if (!out_of_memory) { - // Commit the transaction - MDB_CHECK(mdb_txn_commit(mdb_txn)); - mdb_dbi_close(mdb_env_, mdb_dbi); - keys.clear(); - values.clear(); - } else { - // Double the map size and retry - mdb_txn_abort(mdb_txn); + // Commit the transaction + int commit_rc = mdb_txn_commit(mdb_txn); + if (commit_rc == MDB_MAP_FULL) { + // Out of memory - double the map size and retry mdb_dbi_close(mdb_env_, mdb_dbi); DoubleMapSize(); Commit(); + return; } + // May have failed for some other reason + MDB_CHECK(commit_rc); + + // Cleanup after successful commit + mdb_dbi_close(mdb_env_, mdb_dbi); + keys.clear(); + values.clear(); } void LMDBTransaction::DoubleMapSize() { From a934ca54f3633479ea0573346c510df4f757df6c Mon Sep 17 00:00:00 2001 From: ray glover Date: Tue, 10 May 2016 15:44:47 +0100 Subject: [PATCH 252/458] [build] (CMake) customisable Caffe version/soversion --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5d99cef9..da7142c9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ endif() project(Caffe C CXX) # ---[ Caffe version -set(CAFFE_TARGET_VERSION "1.0.0-rc3") -set(CAFFE_TARGET_SOVERSION "1.0.0-rc3") +set(CAFFE_TARGET_VERSION "1.0.0-rc3" CACHE STRING "Caffe logical version") +set(CAFFE_TARGET_SOVERSION "1.0.0-rc3" CACHE STRING "Caffe soname version") add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) # ---[ Using cmake scripts and modules From bb6ca4720ea41b8e9bdf162f63eb2757571a2e17 Mon Sep 17 00:00:00 2001 From: gdh1995 Date: Wed, 11 May 2016 20:51:07 +0800 Subject: [PATCH 253/458] a comment misses a space char --- src/caffe/util/db_lmdb.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index 4567cd7b9..fb1d4956a 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -10,7 +10,7 @@ namespace caffe { namespace db { void LMDB::Open(const string& source, Mode mode) { MDB_CHECK(mdb_env_create(&mdb_env_)); if (mode == NEW) { - CHECK_EQ(mkdir(source.c_str(), 0744), 0) << "mkdir " << source << "failed"; + CHECK_EQ(mkdir(source.c_str(), 0744), 0) << "mkdir " << source << " failed"; } int flags = 0; if (mode == READ) { From 078d9981a2c64b19834decdef3ce3dd032b667c0 Mon Sep 17 00:00:00 2001 From: Kyle Mills Date: Fri, 13 May 2016 11:15:33 -0400 Subject: [PATCH 254/458] fixed typo in io.py --- python/caffe/io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index cee5ace2e..e1759beb5 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -46,7 +46,7 @@ def array_to_blobproto(arr, diff=None): return blob -def arraylist_to_blobprotovecor_str(arraylist): +def arraylist_to_blobprotovector_str(arraylist): """Converts a list of arrays to a serialized blobprotovec, which could be then passed to a network for processing. """ From 87c9dc397081248dd3d40e0dabce191557bcfc15 Mon Sep 17 00:00:00 2001 From: Yale Song Date: Fri, 13 May 2016 16:06:59 -0400 Subject: [PATCH 255/458] Fix Makefile CUDA_VERSION extraction on OSX Yosemite --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 568d9c277..403e00a38 100644 --- a/Makefile +++ b/Makefile @@ -272,7 +272,7 @@ endif ifeq ($(OSX), 1) CXX := /usr/bin/clang++ ifneq ($(CPU_ONLY), 1) - CUDA_VERSION := $(shell $(CUDA_DIR)/bin/nvcc -V | grep -o 'release [0-9.]*' | grep -o '[0-9.]*') + CUDA_VERSION := $(shell $(CUDA_DIR)/bin/nvcc -V | grep -o 'release [0-9.]*' | tr -d '[a-z ]') ifeq ($(shell echo | awk '{exit $(CUDA_VERSION) < 7.0;}'), 1) CXXFLAGS += -stdlib=libstdc++ LINKFLAGS += -stdlib=libstdc++ From e8ec9f806bd0051f2ee8d1d2737afdafe314f9e4 Mon Sep 17 00:00:00 2001 From: Bob Poekert Date: Fri, 13 May 2016 22:06:33 -0700 Subject: [PATCH 256/458] add check for background and foreground window size > 0 in WindowData layer --- src/caffe/layers/window_data_layer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/caffe/layers/window_data_layer.cpp b/src/caffe/layers/window_data_layer.cpp index 4ca8315d7..103dd4b6a 100644 --- a/src/caffe/layers/window_data_layer.cpp +++ b/src/caffe/layers/window_data_layer.cpp @@ -265,6 +265,9 @@ void WindowDataLayer::load_batch(Batch* batch) { const int num_samples[2] = { batch_size - num_fg, num_fg }; int item_id = 0; + CHECK_GT(fg_windows_.size(), 0); + CHECK_GT(bg_windows_.size(), 0); + // sample from bg set then fg set for (int is_fg = 0; is_fg < 2; ++is_fg) { for (int dummy = 0; dummy < num_samples[is_fg]; ++dummy) { From b43c8e43a95608a00033f8f8867d32a201e5eed4 Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Mon, 16 May 2016 14:03:38 -0700 Subject: [PATCH 257/458] Add cuDNN v5 support, drop cuDNN v3 support cuDNN v4 is still supported. --- include/caffe/layers/cudnn_relu_layer.hpp | 1 + include/caffe/layers/cudnn_sigmoid_layer.hpp | 1 + include/caffe/layers/cudnn_tanh_layer.hpp | 1 + include/caffe/util/cudnn.hpp | 24 +++++++++++++++++--- src/caffe/layers/cudnn_conv_layer.cu | 12 ++-------- src/caffe/layers/cudnn_relu_layer.cpp | 1 + src/caffe/layers/cudnn_relu_layer.cu | 23 +++++++++++++++++-- src/caffe/layers/cudnn_sigmoid_layer.cpp | 2 ++ src/caffe/layers/cudnn_sigmoid_layer.cu | 23 +++++++++++++++++-- src/caffe/layers/cudnn_tanh_layer.cpp | 1 + src/caffe/layers/cudnn_tanh_layer.cu | 23 +++++++++++++++++-- 11 files changed, 93 insertions(+), 19 deletions(-) diff --git a/include/caffe/layers/cudnn_relu_layer.hpp b/include/caffe/layers/cudnn_relu_layer.hpp index e01f568ab..a1cb29e7c 100644 --- a/include/caffe/layers/cudnn_relu_layer.hpp +++ b/include/caffe/layers/cudnn_relu_layer.hpp @@ -37,6 +37,7 @@ class CuDNNReLULayer : public ReLULayer { cudnnHandle_t handle_; cudnnTensorDescriptor_t bottom_desc_; cudnnTensorDescriptor_t top_desc_; + cudnnActivationDescriptor_t activ_desc_; }; #endif diff --git a/include/caffe/layers/cudnn_sigmoid_layer.hpp b/include/caffe/layers/cudnn_sigmoid_layer.hpp index 9c597958b..7b3486f8a 100644 --- a/include/caffe/layers/cudnn_sigmoid_layer.hpp +++ b/include/caffe/layers/cudnn_sigmoid_layer.hpp @@ -37,6 +37,7 @@ class CuDNNSigmoidLayer : public SigmoidLayer { cudnnHandle_t handle_; cudnnTensorDescriptor_t bottom_desc_; cudnnTensorDescriptor_t top_desc_; + cudnnActivationDescriptor_t activ_desc_; }; #endif diff --git a/include/caffe/layers/cudnn_tanh_layer.hpp b/include/caffe/layers/cudnn_tanh_layer.hpp index c0f0053f7..59e758d70 100644 --- a/include/caffe/layers/cudnn_tanh_layer.hpp +++ b/include/caffe/layers/cudnn_tanh_layer.hpp @@ -37,6 +37,7 @@ class CuDNNTanHLayer : public TanHLayer { cudnnHandle_t handle_; cudnnTensorDescriptor_t bottom_desc_; cudnnTensorDescriptor_t top_desc_; + cudnnActivationDescriptor_t activ_desc_; }; #endif diff --git a/include/caffe/util/cudnn.hpp b/include/caffe/util/cudnn.hpp index 8a7e17c6c..a7d8dbbad 100644 --- a/include/caffe/util/cudnn.hpp +++ b/include/caffe/util/cudnn.hpp @@ -91,8 +91,13 @@ template inline void createFilterDesc(cudnnFilterDescriptor_t* desc, int n, int c, int h, int w) { CUDNN_CHECK(cudnnCreateFilterDescriptor(desc)); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnSetFilter4dDescriptor(*desc, dataType::type, - n, c, h, w)); + CUDNN_TENSOR_NCHW, n, c, h, w)); +#else + CUDNN_CHECK(cudnnSetFilter4dDescriptor_v4(*desc, dataType::type, + CUDNN_TENSOR_NCHW, n, c, h, w)); +#endif } template @@ -123,8 +128,21 @@ inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool_desc, LOG(FATAL) << "Unknown pooling method."; } CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool_desc)); - CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode, h, w, - pad_h, pad_w, stride_h, stride_w)); +#if CUDNN_VERSION_MIN(5, 0, 0) + CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode, + CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w)); +#else + CUDNN_CHECK(cudnnSetPooling2dDescriptor_v4(*pool_desc, *mode, + CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w)); +#endif +} + +template +inline void createActivationDescriptor(cudnnActivationDescriptor_t* activ_desc, + cudnnActivationMode_t mode) { + CUDNN_CHECK(cudnnCreateActivationDescriptor(activ_desc)); + CUDNN_CHECK(cudnnSetActivationDescriptor(*activ_desc, mode, + CUDNN_PROPAGATE_NAN, Dtype(0))); } } // namespace cudnn diff --git a/src/caffe/layers/cudnn_conv_layer.cu b/src/caffe/layers/cudnn_conv_layer.cu index 42c4fd026..8bc534624 100644 --- a/src/caffe/layers/cudnn_conv_layer.cu +++ b/src/caffe/layers/cudnn_conv_layer.cu @@ -30,19 +30,11 @@ void CuDNNConvolutionLayer::Forward_gpu( // Bias. if (this->bias_term_) { const Dtype* bias_data = this->blobs_[1]->gpu_data(); -#if CUDNN_VERSION_MIN(4, 0, 0) CUDNN_CHECK(cudnnAddTensor(handle_[g], cudnn::dataType::one, bias_desc_, bias_data + bias_offset_ * g, cudnn::dataType::one, top_descs_[i], top_data + top_offset_ * g)); -#else - CUDNN_CHECK(cudnnAddTensor(handle_[g], CUDNN_ADD_SAME_C, - cudnn::dataType::one, - bias_desc_, bias_data + bias_offset_ * g, - cudnn::dataType::one, - top_descs_[i], top_data + top_offset_ * g)); -#endif } } @@ -82,7 +74,7 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, // Gradient w.r.t. weights. if (this->param_propagate_down_[0]) { const Dtype* bottom_data = bottom[i]->gpu_data(); - CUDNN_CHECK(cudnnConvolutionBackwardFilter_v3( + CUDNN_CHECK(cudnnConvolutionBackwardFilter( handle_[1*this->group_ + g], cudnn::dataType::one, bottom_descs_[i], bottom_data + bottom_offset_ * g, @@ -100,7 +92,7 @@ void CuDNNConvolutionLayer::Backward_gpu(const vector*>& top, weight = this->blobs_[0]->gpu_data(); } Dtype* bottom_diff = bottom[i]->mutable_gpu_diff(); - CUDNN_CHECK(cudnnConvolutionBackwardData_v3( + CUDNN_CHECK(cudnnConvolutionBackwardData( handle_[2*this->group_ + g], cudnn::dataType::one, filter_desc_, weight + this->weight_offset_ * g, diff --git a/src/caffe/layers/cudnn_relu_layer.cpp b/src/caffe/layers/cudnn_relu_layer.cpp index c86c69071..795e0a9ef 100644 --- a/src/caffe/layers/cudnn_relu_layer.cpp +++ b/src/caffe/layers/cudnn_relu_layer.cpp @@ -13,6 +13,7 @@ void CuDNNReLULayer::LayerSetUp(const vector*>& bottom, CUDNN_CHECK(cudnnCreate(&handle_)); cudnn::createTensor4dDesc(&bottom_desc_); cudnn::createTensor4dDesc(&top_desc_); + cudnn::createActivationDescriptor(&activ_desc_, CUDNN_ACTIVATION_RELU); handles_setup_ = true; } diff --git a/src/caffe/layers/cudnn_relu_layer.cu b/src/caffe/layers/cudnn_relu_layer.cu index 9f617183b..e7928bbd6 100644 --- a/src/caffe/layers/cudnn_relu_layer.cu +++ b/src/caffe/layers/cudnn_relu_layer.cu @@ -15,12 +15,21 @@ void CuDNNReLULayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnActivationForward(this->handle_, - CUDNN_ACTIVATION_RELU, + activ_desc_, cudnn::dataType::one, this->bottom_desc_, bottom_data, cudnn::dataType::zero, this->top_desc_, top_data)); +#else + CUDNN_CHECK(cudnnActivationForward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#endif } template @@ -40,13 +49,23 @@ void CuDNNReLULayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnActivationBackward(this->handle_, - CUDNN_ACTIVATION_RELU, + activ_desc_, cudnn::dataType::one, this->top_desc_, top_data, this->top_desc_, top_diff, this->bottom_desc_, bottom_data, cudnn::dataType::zero, this->bottom_desc_, bottom_diff)); +#else + CUDNN_CHECK(cudnnActivationBackward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#endif } INSTANTIATE_LAYER_GPU_FUNCS(CuDNNReLULayer); diff --git a/src/caffe/layers/cudnn_sigmoid_layer.cpp b/src/caffe/layers/cudnn_sigmoid_layer.cpp index ccb955cda..3ce6aef17 100644 --- a/src/caffe/layers/cudnn_sigmoid_layer.cpp +++ b/src/caffe/layers/cudnn_sigmoid_layer.cpp @@ -13,6 +13,8 @@ void CuDNNSigmoidLayer::LayerSetUp(const vector*>& bottom, CUDNN_CHECK(cudnnCreate(&handle_)); cudnn::createTensor4dDesc(&bottom_desc_); cudnn::createTensor4dDesc(&top_desc_); + cudnn::createActivationDescriptor(&activ_desc_, + CUDNN_ACTIVATION_SIGMOID); handles_setup_ = true; } diff --git a/src/caffe/layers/cudnn_sigmoid_layer.cu b/src/caffe/layers/cudnn_sigmoid_layer.cu index e2a4b460c..48d6cbab6 100644 --- a/src/caffe/layers/cudnn_sigmoid_layer.cu +++ b/src/caffe/layers/cudnn_sigmoid_layer.cu @@ -10,12 +10,21 @@ void CuDNNSigmoidLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnActivationForward(this->handle_, - CUDNN_ACTIVATION_SIGMOID, + activ_desc_, cudnn::dataType::one, this->bottom_desc_, bottom_data, cudnn::dataType::zero, this->top_desc_, top_data)); +#else + CUDNN_CHECK(cudnnActivationForward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#endif } template @@ -30,13 +39,23 @@ void CuDNNSigmoidLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnActivationBackward(this->handle_, - CUDNN_ACTIVATION_SIGMOID, + activ_desc_, cudnn::dataType::one, this->top_desc_, top_data, this->top_desc_, top_diff, this->bottom_desc_, bottom_data, cudnn::dataType::zero, this->bottom_desc_, bottom_diff)); +#else + CUDNN_CHECK(cudnnActivationBackward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#endif } INSTANTIATE_LAYER_GPU_FUNCS(CuDNNSigmoidLayer); diff --git a/src/caffe/layers/cudnn_tanh_layer.cpp b/src/caffe/layers/cudnn_tanh_layer.cpp index 1a5641822..e87dd9de0 100644 --- a/src/caffe/layers/cudnn_tanh_layer.cpp +++ b/src/caffe/layers/cudnn_tanh_layer.cpp @@ -13,6 +13,7 @@ void CuDNNTanHLayer::LayerSetUp(const vector*>& bottom, CUDNN_CHECK(cudnnCreate(&handle_)); cudnn::createTensor4dDesc(&bottom_desc_); cudnn::createTensor4dDesc(&top_desc_); + cudnn::createActivationDescriptor(&activ_desc_, CUDNN_ACTIVATION_TANH); handles_setup_ = true; } diff --git a/src/caffe/layers/cudnn_tanh_layer.cu b/src/caffe/layers/cudnn_tanh_layer.cu index 89df28a3e..6b5d7ae7e 100644 --- a/src/caffe/layers/cudnn_tanh_layer.cu +++ b/src/caffe/layers/cudnn_tanh_layer.cu @@ -10,12 +10,21 @@ void CuDNNTanHLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnActivationForward(this->handle_, - CUDNN_ACTIVATION_TANH, + activ_desc_, cudnn::dataType::one, this->bottom_desc_, bottom_data, cudnn::dataType::zero, this->top_desc_, top_data)); +#else + CUDNN_CHECK(cudnnActivationForward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->top_desc_, top_data)); +#endif } template @@ -31,13 +40,23 @@ void CuDNNTanHLayer::Backward_gpu(const vector*>& top, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); +#if CUDNN_VERSION_MIN(5, 0, 0) CUDNN_CHECK(cudnnActivationBackward(this->handle_, - CUDNN_ACTIVATION_TANH, + activ_desc_, cudnn::dataType::one, this->top_desc_, top_data, this->top_desc_, top_diff, this->bottom_desc_, bottom_data, cudnn::dataType::zero, this->bottom_desc_, bottom_diff)); +#else + CUDNN_CHECK(cudnnActivationBackward_v4(this->handle_, + activ_desc_, + cudnn::dataType::one, + this->top_desc_, top_data, this->top_desc_, top_diff, + this->bottom_desc_, bottom_data, + cudnn::dataType::zero, + this->bottom_desc_, bottom_diff)); +#endif } INSTANTIATE_LAYER_GPU_FUNCS(CuDNNTanHLayer); From 8730b146b7e19af189b9086e59fd1d5bc4214698 Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Mon, 16 May 2016 14:32:34 -0700 Subject: [PATCH 258/458] Update Dockerfile to cuDNN v5 --- docker/Makefile | 2 +- docker/standalone/gpu/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Makefile b/docker/Makefile index 0de887d0e..3a6575b0c 100644 --- a/docker/Makefile +++ b/docker/Makefile @@ -22,7 +22,7 @@ docker_files: standalone_files standalone_files: standalone/cpu/Dockerfile standalone/gpu/Dockerfile -FROM_GPU = "nvidia/cuda:7.5-cudnn4-devel-ubuntu14.04" +FROM_GPU = "nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04" FROM_CPU = "ubuntu:14.04" GPU_CMAKE_ARGS = -DUSE_CUDNN=1 CPU_CMAKE_ARGS = -DCPU_ONLY=1 diff --git a/docker/standalone/gpu/Dockerfile b/docker/standalone/gpu/Dockerfile index 371aad5b1..daf6a7223 100644 --- a/docker/standalone/gpu/Dockerfile +++ b/docker/standalone/gpu/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:7.5-cudnn4-devel-ubuntu14.04 +FROM nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04 MAINTAINER caffe-maint@googlegroups.com RUN apt-get update && apt-get install -y --no-install-recommends \ From 1c3af7078b64ef71a5bb0c2cef6fee528917adac Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Mon, 16 May 2016 14:35:40 -0700 Subject: [PATCH 259/458] Update supported cuDNN version in the documentation --- docs/installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 1e29a49d8..4aac7c42d 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -40,14 +40,14 @@ Optional dependencies: * [OpenCV](http://opencv.org/) >= 2.4 including 3.0 * IO libraries: `lmdb`, `leveldb` (note: leveldb requires `snappy`) -* cuDNN for GPU acceleration (v4) +* cuDNN for GPU acceleration (v5) Pycaffe and Matcaffe interfaces have their own natural needs. * For Python Caffe: `Python 2.7` or `Python 3.3+`, `numpy (>= 1.7)`, boost-provided `boost.python` * For MATLAB Caffe: MATLAB with the `mex` compiler. -**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v4; older versions are supported in older Caffe. +**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v5; older versions are supported in older Caffe. **CPU-only Caffe**: for cold-brewed CPU-only Caffe uncomment the `CPU_ONLY := 1` flag in `Makefile.config` to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment. From a8cc860d6bef79edcdfa07d5da4195ba67714991 Mon Sep 17 00:00:00 2001 From: crazytan Date: Wed, 27 Apr 2016 01:01:30 -0400 Subject: [PATCH 260/458] handle image names with spaces --- examples/images/cat gray.jpg | Bin 0 -> 92726 bytes src/caffe/layers/image_data_layer.cpp | 9 +++-- src/caffe/test/test_image_data_layer.cpp | 44 +++++++++++++++++++++-- tools/convert_imageset.cpp | 9 +++-- 4 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 examples/images/cat gray.jpg diff --git a/examples/images/cat gray.jpg b/examples/images/cat gray.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43c5ce377167a49624c3e9d61e83a04becb8df9e GIT binary patch literal 92726 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 bWv@?B+jK_~y&P~SxO literal 0 HcmV?d00001 diff --git a/src/caffe/layers/image_data_layer.cpp b/src/caffe/layers/image_data_layer.cpp index 62fda4acc..56d354655 100644 --- a/src/caffe/layers/image_data_layer.cpp +++ b/src/caffe/layers/image_data_layer.cpp @@ -37,10 +37,13 @@ void ImageDataLayer::DataLayerSetUp(const vector*>& bottom, const string& source = this->layer_param_.image_data_param().source(); LOG(INFO) << "Opening file " << source; std::ifstream infile(source.c_str()); - string filename; + string line; + size_t pos; int label; - while (infile >> filename >> label) { - lines_.push_back(std::make_pair(filename, label)); + while (std::getline(infile, line)) { + pos = line.find_last_of(' '); + label = atoi(line.substr(pos + 1).c_str()); + lines_.push_back(std::make_pair(line.substr(0, pos), label)); } if (this->layer_param_.image_data_param().shuffle()) { diff --git a/src/caffe/test/test_image_data_layer.cpp b/src/caffe/test/test_image_data_layer.cpp index a4080ccd1..ce5e0bc62 100644 --- a/src/caffe/test/test_image_data_layer.cpp +++ b/src/caffe/test/test_image_data_layer.cpp @@ -34,16 +34,24 @@ class ImageDataLayerTest : public MultiDeviceTest { std::ofstream outfile(filename_.c_str(), std::ofstream::out); LOG(INFO) << "Using temporary file " << filename_; for (int i = 0; i < 5; ++i) { - outfile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << i; + outfile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << i << std::endl; } outfile.close(); // Create test input file for images of distinct sizes. MakeTempFilename(&filename_reshape_); std::ofstream reshapefile(filename_reshape_.c_str(), std::ofstream::out); LOG(INFO) << "Using temporary file " << filename_reshape_; - reshapefile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << 0; - reshapefile << EXAMPLES_SOURCE_DIR "images/fish-bike.jpg " << 1; + reshapefile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << 0 << std::endl; + reshapefile << EXAMPLES_SOURCE_DIR "images/fish-bike.jpg " << 1 + << std::endl; reshapefile.close(); + // Create test input file for images with space in names + MakeTempFilename(&filename_space_); + std::ofstream spacefile(filename_space_.c_str(), std::ofstream::out); + LOG(INFO) << "Using temporary file " << filename_space_; + spacefile << EXAMPLES_SOURCE_DIR "images/cat.jpg " << 0 << std::endl; + spacefile << EXAMPLES_SOURCE_DIR "images/cat gray.jpg " << 1 << std::endl; + spacefile.close(); } virtual ~ImageDataLayerTest() { @@ -54,6 +62,7 @@ class ImageDataLayerTest : public MultiDeviceTest { int seed_; string filename_; string filename_reshape_; + string filename_space_; Blob* const blob_top_data_; Blob* const blob_top_label_; vector*> blob_bottom_vec_; @@ -177,5 +186,34 @@ TYPED_TEST(ImageDataLayerTest, TestShuffle) { } } +TYPED_TEST(ImageDataLayerTest, TestSpace) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + ImageDataParameter* image_data_param = param.mutable_image_data_param(); + image_data_param->set_batch_size(1); + image_data_param->set_source(this->filename_space_.c_str()); + image_data_param->set_shuffle(false); + ImageDataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_label_->num(), 1); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + // cat.jpg + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 1); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + EXPECT_EQ(this->blob_top_label_->cpu_data()[0], 0); + // cat gray.jpg + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), 1); + EXPECT_EQ(this->blob_top_data_->channels(), 3); + EXPECT_EQ(this->blob_top_data_->height(), 360); + EXPECT_EQ(this->blob_top_data_->width(), 480); + EXPECT_EQ(this->blob_top_label_->cpu_data()[0], 1); +} + } // namespace caffe #endif // USE_OPENCV diff --git a/tools/convert_imageset.cpp b/tools/convert_imageset.cpp index 9c52bfa0e..90cdb15d4 100644 --- a/tools/convert_imageset.cpp +++ b/tools/convert_imageset.cpp @@ -73,10 +73,13 @@ int main(int argc, char** argv) { std::ifstream infile(argv[2]); std::vector > lines; - std::string filename; + std::string line; + size_t pos; int label; - while (infile >> filename >> label) { - lines.push_back(std::make_pair(filename, label)); + while (std::getline(infile, line)) { + pos = line.find_last_of(' '); + label = atoi(line.substr(pos + 1).c_str()); + lines.push_back(std::make_pair(line.substr(0, pos), label)); } if (FLAGS_shuffle) { // randomly shuffle data From d4e7c93a6873f75a53d7618e82343e4b5b8a239e Mon Sep 17 00:00:00 2001 From: Aaron Schumacher Date: Thu, 19 May 2016 14:04:22 -0500 Subject: [PATCH 261/458] convert non-uint8 dtypes to float; refs #2391 As recommended by @longjon, this will allow `caffe.io.array_to_datum` to handle, for example, numpy.float32 arrays. It might be worth noting that `datum.float_data` is stored as protobuf type 2, which is float32, as opposed to protobuf type 1, which is float64. It is a little unintuitive that caffe currently requires data to be passed in as float64 but then writes float32 to LMDB. To demonstrate this: ```python datum = caffe.io.array_to_datum(np.array([[[0.9]]])) caffe.io.datum_to_array(datum) # array([[[ 0.9]]]) datum_str = datum.SerializeToString() new_datum = caffe.proto.caffe_pb2.Datum() new_datum.ParseFromString(datum_str) caffe.io.datum_to_array(new_datum) # array([[[ 0.89999998]]]) ``` This behavior is somewhat hidden because `datum_to_array` returns type float64, even though the data doesn't actually have that resolution if it has been stored as protobuf text anywhere (for example in LMDB). Alternative solutions: * Require and return float32, consistent with the protobuf representation. * Change the protobuf to allow float32 or float64 and update surrounding code to support this. --- python/caffe/io.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/io.py b/python/caffe/io.py index e1759beb5..966c164cf 100644 --- a/python/caffe/io.py +++ b/python/caffe/io.py @@ -75,7 +75,7 @@ def array_to_datum(arr, label=None): if arr.dtype == np.uint8: datum.data = arr.tostring() else: - datum.float_data.extend(arr.flat) + datum.float_data.extend(arr.astype(float).flat) if label is not None: datum.label = label return datum From 4bf4b186076b054a0fa06103bc8989a3577468ba Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Tue, 24 May 2016 10:36:23 -0700 Subject: [PATCH 262/458] Overhaul TravisCI * Run on Ubuntu 14.04 * Test cuDNN builds * Build with OpenBLAS NOTE: Python3 build only works with CMake --- .travis.yml | 58 ++++++---- scripts/travis/build.sh | 13 +++ scripts/travis/configure-cmake.sh | 32 ++++++ scripts/travis/configure-make.sh | 36 ++++++ scripts/travis/configure.sh | 11 ++ scripts/travis/defaults.sh | 10 ++ scripts/travis/install-deps.sh | 105 ++++++++++++++++++ scripts/travis/install-python-deps.sh | 14 +++ scripts/travis/setup-venv.sh | 18 +++ scripts/travis/test.sh | 19 ++++ scripts/travis/travis_build_and_test.sh | 54 --------- scripts/travis/travis_install.sh | 101 ----------------- .../travis/travis_setup_makefile_config.sh | 31 ------ 13 files changed, 292 insertions(+), 210 deletions(-) create mode 100755 scripts/travis/build.sh create mode 100644 scripts/travis/configure-cmake.sh create mode 100644 scripts/travis/configure-make.sh create mode 100755 scripts/travis/configure.sh create mode 100755 scripts/travis/defaults.sh create mode 100755 scripts/travis/install-deps.sh create mode 100755 scripts/travis/install-python-deps.sh create mode 100755 scripts/travis/setup-venv.sh create mode 100755 scripts/travis/test.sh delete mode 100755 scripts/travis/travis_build_and_test.sh delete mode 100755 scripts/travis/travis_install.sh delete mode 100755 scripts/travis/travis_setup_makefile_config.sh diff --git a/.travis.yml b/.travis.yml index 4dc7ed72d..92d740cd8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,40 +1,50 @@ -# Use a build matrix to do two builds in parallel: -# one using CMake, and one using make. +dist: trusty +sudo: required + +language: cpp +compiler: gcc + env: + global: + - NUM_THREADS=4 matrix: - - WITH_CUDA=false WITH_CMAKE=false WITH_IO=true - - WITH_CUDA=false WITH_CMAKE=true WITH_IO=true PYTHON_VERSION=3 - - WITH_CUDA=true WITH_CMAKE=false WITH_IO=true - - WITH_CUDA=true WITH_CMAKE=true WITH_IO=true - - WITH_CUDA=false WITH_CMAKE=false WITH_IO=false - - WITH_CUDA=false WITH_CMAKE=true WITH_IO=false PYTHON_VERSION=3 + # Use a build matrix to test many builds in parallel + # envvar defaults: + # WITH_CMAKE: false + # WITH_PYTHON3: false + # WITH_IO: true + # WITH_CUDA: false + # WITH_CUDNN: false + - BUILD_NAME="default-make" +# - BUILD_NAME="python3-make" WITH_PYTHON3=true + - BUILD_NAME="no-io-make" WITH_IO=false + - BUILD_NAME="cuda-make" WITH_CUDA=true + - BUILD_NAME="cudnn-make" WITH_CUDA=true WITH_CUDNN=true -language: cpp + - BUILD_NAME="default-cmake" WITH_CMAKE=true + - BUILD_NAME="python3-cmake" WITH_CMAKE=true WITH_PYTHON3=true + - BUILD_NAME="no-io-cmake" WITH_CMAKE=true WITH_IO=false + - BUILD_NAME="cuda-cmake" WITH_CMAKE=true WITH_CUDA=true + - BUILD_NAME="cudnn-cmake" WITH_CMAKE=true WITH_CUDA=true WITH_CUDNN=true -# Cache Ubuntu apt packages. cache: apt: true - directories: - - /home/travis/miniconda - - /home/travis/miniconda2 - - /home/travis/miniconda3 - -compiler: gcc before_install: - - export NUM_THREADS=4 - - export SCRIPTS=./scripts/travis - - export CONDA_DIR="/home/travis/miniconda$PYTHON_VERSION" + - source ./scripts/travis/defaults.sh install: - - sudo -E $SCRIPTS/travis_install.sh + - sudo -E ./scripts/travis/install-deps.sh + - ./scripts/travis/setup-venv.sh ~/venv + - source ~/venv/bin/activate + - ./scripts/travis/install-python-deps.sh before_script: - - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/cuda/lib64:$CONDA_DIR/lib - - export PATH=$CONDA_DIR/bin:$PATH - - if ! $WITH_CMAKE; then $SCRIPTS/travis_setup_makefile_config.sh; fi + - ./scripts/travis/configure.sh -script: $SCRIPTS/travis_build_and_test.sh +script: + - ./scripts/travis/build.sh + - ./scripts/travis/test.sh notifications: # Emails are sent to the committer's git-configured email address by default, diff --git a/scripts/travis/build.sh b/scripts/travis/build.sh new file mode 100755 index 000000000..bb9406f04 --- /dev/null +++ b/scripts/travis/build.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# build the project + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if ! $WITH_CMAKE ; then + make --jobs $NUM_THREADS all test pycaffe warn +else + cd build + make --jobs $NUM_THREADS all test.testbin +fi +make lint diff --git a/scripts/travis/configure-cmake.sh b/scripts/travis/configure-cmake.sh new file mode 100644 index 000000000..772f1e2ce --- /dev/null +++ b/scripts/travis/configure-cmake.sh @@ -0,0 +1,32 @@ +# CMake configuration + +mkdir -p build +cd build + +ARGS="-DCMAKE_BUILD_TYPE=Release -DBLAS=Open" + +if $WITH_PYTHON3 ; then + ARGS="$ARGS -Dpython_version=3" +fi + +if $WITH_IO ; then + ARGS="$ARGS -DUSE_OPENCV=On -DUSE_LMDB=On -DUSE_LEVELDB=On" +else + ARGS="$ARGS -DUSE_OPENCV=Off -DUSE_LMDB=Off -DUSE_LEVELDB=Off" +fi + +if $WITH_CUDA ; then + # Only build SM50 + ARGS="$ARGS -DCPU_ONLY=Off -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN=\"50\" -DCUDA_ARCH_PTX=\"\"" +else + ARGS="$ARGS -DCPU_ONLY=On" +fi + +if $WITH_CUDNN ; then + ARGS="$ARGS -DUSE_CUDNN=On" +else + ARGS="$ARGS -DUSE_CUDNN=Off" +fi + +cmake .. $ARGS + diff --git a/scripts/travis/configure-make.sh b/scripts/travis/configure-make.sh new file mode 100644 index 000000000..ddc40fffa --- /dev/null +++ b/scripts/travis/configure-make.sh @@ -0,0 +1,36 @@ +# raw Makefile configuration + +LINE () { + echo "$@" >> Makefile.config +} + +cp Makefile.config.example Makefile.config + +LINE "BLAS := open" +LINE "WITH_PYTHON_LAYER := 1" + +if $WITH_PYTHON3 ; then + # TODO(lukeyeager) this path is currently disabled because of test errors like: + # ImportError: dynamic module does not define init function (PyInit__caffe) + LINE "PYTHON_LIBRARIES := python3.4m boost_python-py34" + LINE "PYTHON_INCLUDE := /usr/include/python3.4 /usr/lib/python3/dist-packages/numpy/core/include" + LINE "INCLUDE_DIRS := \$(INCLUDE_DIRS) \$(PYTHON_INCLUDE)" +fi + +if ! $WITH_IO ; then + LINE "USE_OPENCV := 0" + LINE "USE_LEVELDB := 0" + LINE "USE_LMDB := 0" +fi + +if $WITH_CUDA ; then + # Only build SM50 + LINE "CUDA_ARCH := -gencode arch=compute_50,code=sm_50" +else + LINE "CPU_ONLY := 1" +fi + +if $WITH_CUDNN ; then + LINE "USE_CUDNN := 1" +fi + diff --git a/scripts/travis/configure.sh b/scripts/travis/configure.sh new file mode 100755 index 000000000..ef740c898 --- /dev/null +++ b/scripts/travis/configure.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# configure the project + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if ! $WITH_CMAKE ; then + source $BASEDIR/configure-make.sh +else + source $BASEDIR/configure-cmake.sh +fi diff --git a/scripts/travis/defaults.sh b/scripts/travis/defaults.sh new file mode 100755 index 000000000..d69c0a7d9 --- /dev/null +++ b/scripts/travis/defaults.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# set default environment variables + +set -e + +WITH_CMAKE=${WITH_CMAKE:-false} +WITH_PYTHON3=${WITH_PYTHON3:-false} +WITH_IO=${WITH_IO:-true} +WITH_CUDA=${WITH_CUDA:-false} +WITH_CUDNN=${WITH_CUDNN:-false} diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh new file mode 100755 index 000000000..f7bfe4c4d --- /dev/null +++ b/scripts/travis/install-deps.sh @@ -0,0 +1,105 @@ +#!/bin/bash +# install dependencies +# (this script must be run as root) + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +apt-get -y update +apt-get install -y --no-install-recommends \ + build-essential \ + libboost-filesystem-dev \ + libboost-python-dev \ + libboost-system-dev \ + libboost-thread-dev \ + libgflags-dev \ + libgoogle-glog-dev \ + libhdf5-serial-dev \ + libopenblas-dev \ + python-virtualenv \ + wget + +if $WITH_CMAKE ; then + apt-get install -y --no-install-recommends cmake +fi + +if ! $WITH_PYTHON3 ; then + # Python2 + apt-get install -y --no-install-recommends \ + libprotobuf-dev \ + protobuf-compiler \ + python-dev \ + python-numpy \ + python-protobuf \ + python-skimage +else + # Python3 + apt-get install -y --no-install-recommends \ + python3-dev \ + python3-numpy \ + python3-skimage + + # build Protobuf3 since it's needed for Python3 + echo "Building protobuf3 from source ..." + pushd . + PROTOBUF3_DIR=~/protobuf3-build + rm -rf $PROTOBUF3_DIR + mkdir $PROTOBUF3_DIR + + # install some more dependencies required to build protobuf3 + apt-get install -y --no-install-recommends \ + curl \ + dh-autoreconf \ + unzip + + wget https://github.com/google/protobuf/archive/v3.0.0-beta-3.tar.gz -O protobuf3.tar.gz + tar -xzf protobuf3.tar.gz -C $PROTOBUF3_DIR --strip 1 + rm protobuf3.tar.gz + cd $PROTOBUF3_DIR + ./autogen.sh + ./configure --prefix=/usr + make --jobs=$NUM_THREADS + make install + popd +fi + +if $WITH_IO ; then + apt-get install -y --no-install-recommends \ + libleveldb-dev \ + liblmdb-dev \ + libopencv-dev \ + libsnappy-dev +fi + +if $WITH_CUDA ; then + # install repo packages + CUDA_REPO_PKG=cuda-repo-ubuntu1404_7.5-18_amd64.deb + wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/$CUDA_REPO_PKG + dpkg -i $CUDA_REPO_PKG + rm $CUDA_REPO_PKG + + if $WITH_CUDNN ; then + ML_REPO_PKG=nvidia-machine-learning-repo_4.0-2_amd64.deb + wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG + dpkg -i $ML_REPO_PKG + fi + + # update package lists + apt-get -y update + + # install packages + CUDA_PKG_VERSION="7-5" + CUDA_VERSION="7.5" + apt-get install -y --no-install-recommends \ + cuda-core-$CUDA_PKG_VERSION \ + cuda-cudart-dev-$CUDA_PKG_VERSION \ + cuda-cublas-dev-$CUDA_PKG_VERSION \ + cuda-curand-dev-$CUDA_PKG_VERSION + # manually create CUDA symlink + ln -s /usr/local/cuda-$CUDA_VERSION /usr/local/cuda + + if $WITH_CUDNN ; then + apt-get install -y --no-install-recommends libcudnn5-dev + fi +fi + diff --git a/scripts/travis/install-python-deps.sh b/scripts/travis/install-python-deps.sh new file mode 100755 index 000000000..eeec30279 --- /dev/null +++ b/scripts/travis/install-python-deps.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# install extra Python dependencies +# (must come after setup-venv) + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if ! $WITH_PYTHON3 ; then + # Python2 + : +else + # Python3 + pip install --pre protobuf==3.0.0b3 +fi diff --git a/scripts/travis/setup-venv.sh b/scripts/travis/setup-venv.sh new file mode 100755 index 000000000..81245f146 --- /dev/null +++ b/scripts/travis/setup-venv.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# setup a Python virtualenv +# (must come after install-deps) + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +VENV_DIR=${1:-~/venv} + +# setup our own virtualenv +if $WITH_PYTHON3; then + PYTHON_EXE='/usr/bin/python3' +else + PYTHON_EXE='/usr/bin/python2' +fi + +# use --system-site-packages so that Python will use deb packages +virtualenv $VENV_DIR -p $PYTHON_EXE --system-site-packages diff --git a/scripts/travis/test.sh b/scripts/travis/test.sh new file mode 100755 index 000000000..fedd7e6b5 --- /dev/null +++ b/scripts/travis/test.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# test the project + +BASEDIR=$(dirname $0) +source $BASEDIR/defaults.sh + +if $WITH_CUDA ; then + echo "Skipping tests for CUDA build" + exit 0 +fi + +if ! $WITH_CMAKE ; then + make runtest + make pytest +else + cd build + make runtest + make pytest +fi diff --git a/scripts/travis/travis_build_and_test.sh b/scripts/travis/travis_build_and_test.sh deleted file mode 100755 index 174f1ee5a..000000000 --- a/scripts/travis/travis_build_and_test.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# Script called by Travis to build and test Caffe. -# Travis CI tests are CPU-only for lack of compatible hardware. - -set -e -MAKE="make --jobs=$NUM_THREADS --keep-going" - -if $WITH_CMAKE; then - mkdir build - cd build - CPU_ONLY=" -DCPU_ONLY=ON" - if ! $WITH_CUDA; then - CPU_ONLY=" -DCPU_ONLY=OFF" - fi - PYTHON_ARGS="" - if [ "$PYTHON_VERSION" = "3" ]; then - PYTHON_ARGS="$PYTHON_ARGS -Dpython_version=3 -DBOOST_LIBRARYDIR=$CONDA_DIR/lib/" - fi - if $WITH_IO; then - IO_ARGS="-DUSE_OPENCV=ON -DUSE_LMDB=ON -DUSE_LEVELDB=ON" - else - IO_ARGS="-DUSE_OPENCV=OFF -DUSE_LMDB=OFF -DUSE_LEVELDB=OFF" - fi - cmake -DBUILD_python=ON -DCMAKE_BUILD_TYPE=Release $CPU_ONLY $PYTHON_ARGS -DCMAKE_INCLUDE_PATH="$CONDA_DIR/include/" -DCMAKE_LIBRARY_PATH="$CONDA_DIR/lib/" $IO_ARGS .. - $MAKE - $MAKE pytest - if ! $WITH_CUDA; then - $MAKE runtest - $MAKE lint - fi - $MAKE clean - cd - -else - if ! $WITH_CUDA; then - export CPU_ONLY=1 - fi - if $WITH_IO; then - export USE_LMDB=1 - export USE_LEVELDB=1 - export USE_OPENCV=1 - fi - $MAKE all test pycaffe warn lint || true - if ! $WITH_CUDA; then - $MAKE runtest - fi - $MAKE all - $MAKE test - $MAKE pycaffe - $MAKE pytest - $MAKE warn - if ! $WITH_CUDA; then - $MAKE lint - fi -fi diff --git a/scripts/travis/travis_install.sh b/scripts/travis/travis_install.sh deleted file mode 100755 index 091e92431..000000000 --- a/scripts/travis/travis_install.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash -# This script must be run with sudo. - -set -e - -MAKE="make --jobs=$NUM_THREADS" -# Install apt packages where the Ubuntu 12.04 default and ppa works for Caffe - -# This ppa is for gflags and glog -add-apt-repository -y ppa:tuleu/precise-backports -apt-get -y update -apt-get install \ - wget git curl \ - python-dev python-numpy python3-dev\ - libleveldb-dev libsnappy-dev libopencv-dev \ - libprotobuf-dev protobuf-compiler \ - libatlas-dev libatlas-base-dev \ - libhdf5-serial-dev libgflags-dev libgoogle-glog-dev \ - bc - -# Add a special apt-repository to install CMake 2.8.9 for CMake Caffe build, -# if needed. By default, Aptitude in Ubuntu 12.04 installs CMake 2.8.7, but -# Caffe requires a minimum CMake version of 2.8.8. -if $WITH_CMAKE; then - # cmake 3 will make sure that the python interpreter and libraries match - wget --no-check-certificate http://www.cmake.org/files/v3.2/cmake-3.2.3-Linux-x86_64.sh -O cmake3.sh - chmod +x cmake3.sh - ./cmake3.sh --prefix=/usr/ --skip-license --exclude-subdir -fi - -# Install CUDA, if needed -if $WITH_CUDA; then - CUDA_URL=http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1204/x86_64/cuda-repo-ubuntu1204_6.5-14_amd64.deb - CUDA_FILE=/tmp/cuda_install.deb - curl $CUDA_URL -o $CUDA_FILE - dpkg -i $CUDA_FILE - rm -f $CUDA_FILE - apt-get -y update - # Install the minimal CUDA subpackages required to test Caffe build. - # For a full CUDA installation, add 'cuda' to the list of packages. - apt-get -y install cuda-core-6-5 cuda-cublas-6-5 cuda-cublas-dev-6-5 cuda-cudart-6-5 cuda-cudart-dev-6-5 cuda-curand-6-5 cuda-curand-dev-6-5 - # Create CUDA symlink at /usr/local/cuda - # (This would normally be created by the CUDA installer, but we create it - # manually since we did a partial installation.) - ln -s /usr/local/cuda-6.5 /usr/local/cuda -fi - -# Install LMDB -LMDB_URL=https://github.com/LMDB/lmdb/archive/LMDB_0.9.14.tar.gz -LMDB_FILE=/tmp/lmdb.tar.gz -pushd . -wget $LMDB_URL -O $LMDB_FILE -tar -C /tmp -xzvf $LMDB_FILE -cd /tmp/lmdb*/libraries/liblmdb/ -$MAKE -$MAKE install -popd -rm -f $LMDB_FILE - -# Install the Python runtime dependencies via miniconda (this is much faster -# than using pip for everything). -export PATH=$CONDA_DIR/bin:$PATH -# clear any cached conda (see #3786) -rm -rf $CONDA_DIR -if [ ! -d $CONDA_DIR ]; then - if [ "$PYTHON_VERSION" -eq "3" ]; then - wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - else - wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh - fi - chmod +x miniconda.sh - ./miniconda.sh -b -p $CONDA_DIR - - conda update --yes conda - # The version of boost we're using for Python 3 depends on 3.4 for now. - if [ "$PYTHON_VERSION" -eq "3" ]; then - conda install --yes python=3.4 - fi - conda install --yes numpy scipy matplotlib scikit-image pip - # Let conda install boost (so that boost_python matches) - conda install --yes -c https://conda.binstar.org/menpo boost=1.56.0 -fi - -# install protobuf 3 (just use the miniconda3 directory to avoid having to setup the path again) -if [ "$PYTHON_VERSION" -eq "3" ] && [ ! -e "$CONDA_DIR/bin/protoc" ]; then - pushd . - wget https://github.com/google/protobuf/archive/v3.0.0-alpha-3.1.tar.gz -O protobuf-3.tar.gz - tar -C /tmp -xzvf protobuf-3.tar.gz - cd /tmp/protobuf-3*/ - ./autogen.sh - ./configure --prefix=$CONDA_DIR - $MAKE - $MAKE install - popd -fi - -if [ "$PYTHON_VERSION" -eq "3" ]; then - pip install --pre protobuf==3.0.0b2 -else - pip install protobuf -fi diff --git a/scripts/travis/travis_setup_makefile_config.sh b/scripts/travis/travis_setup_makefile_config.sh deleted file mode 100755 index 83aacf11f..000000000 --- a/scripts/travis/travis_setup_makefile_config.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash - -set -e - -mv Makefile.config.example Makefile.config - -if $WITH_CUDA; then - # Only generate compute_50. - GENCODE="-gencode arch=compute_50,code=sm_50" - GENCODE="$GENCODE -gencode arch=compute_50,code=compute_50" - echo "CUDA_ARCH := $GENCODE" >> Makefile.config -fi - -# Remove IO library settings from Makefile.config -# to avoid conflicts with CI configuration -sed -i -e '/USE_LMDB/d' Makefile.config -sed -i -e '/USE_LEVELDB/d' Makefile.config -sed -i -e '/USE_OPENCV/d' Makefile.config - -cat << 'EOF' >> Makefile.config -# Travis' nvcc doesn't like newer boost versions -NVCCFLAGS := -Xcudafe --diag_suppress=cc_clobber_ignored -Xcudafe --diag_suppress=useless_using_declaration -Xcudafe --diag_suppress=set_but_not_used -ANACONDA_HOME := $(CONDA_DIR) -PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ - $(ANACONDA_HOME)/include/python2.7 \ - $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include -PYTHON_LIB := $(ANACONDA_HOME)/lib -INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include -LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib -WITH_PYTHON_LAYER := 1 -EOF From 26879320898aacfcb5236c725938e259788c10fc Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 25 May 2016 16:39:55 -0700 Subject: [PATCH 263/458] Remove misleading comment from a test file --- src/caffe/test/test_caffe_main.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/caffe/test/test_caffe_main.cpp b/src/caffe/test/test_caffe_main.cpp index fccf6f161..6473b74d0 100644 --- a/src/caffe/test/test_caffe_main.cpp +++ b/src/caffe/test/test_caffe_main.cpp @@ -1,6 +1,3 @@ -// The main caffe test code. Your test cpp code should include this hpp -// to allow a main function to be compiled into the binary. - #include "caffe/caffe.hpp" #include "caffe/test/test_caffe_main.hpp" From a355f9c9d0bf28ac81552ddb4873b01d09581fb3 Mon Sep 17 00:00:00 2001 From: Siddarth Malreddy Date: Thu, 26 May 2016 23:31:31 +0530 Subject: [PATCH 264/458] Check for non-empty ImageData filelist. --- src/caffe/layers/image_data_layer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/caffe/layers/image_data_layer.cpp b/src/caffe/layers/image_data_layer.cpp index 56d354655..7ee7dc407 100644 --- a/src/caffe/layers/image_data_layer.cpp +++ b/src/caffe/layers/image_data_layer.cpp @@ -46,6 +46,8 @@ void ImageDataLayer::DataLayerSetUp(const vector*>& bottom, lines_.push_back(std::make_pair(line.substr(0, pos), label)); } + CHECK(!lines_.empty()) << "File is empty"; + if (this->layer_param_.image_data_param().shuffle()) { // randomly shuffle data LOG(INFO) << "Shuffling data"; From 09546dbe9130789f0571a76a36b0fc265cd81fe3 Mon Sep 17 00:00:00 2001 From: Lumin Zhou Date: Mon, 30 May 2016 04:14:42 +0000 Subject: [PATCH 265/458] fix spelling error in memory_data_layer.cpp --- src/caffe/layers/memory_data_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/memory_data_layer.cpp b/src/caffe/layers/memory_data_layer.cpp index 829098740..975f48417 100644 --- a/src/caffe/layers/memory_data_layer.cpp +++ b/src/caffe/layers/memory_data_layer.cpp @@ -107,7 +107,7 @@ void MemoryDataLayer::set_batch_size(int new_size) { template void MemoryDataLayer::Forward_cpu(const vector*>& bottom, const vector*>& top) { - CHECK(data_) << "MemoryDataLayer needs to be initalized by calling Reset"; + CHECK(data_) << "MemoryDataLayer needs to be initialized by calling Reset"; top[0]->Reshape(batch_size_, channels_, height_, width_); top[1]->Reshape(batch_size_, 1, 1, 1); top[0]->set_cpu_data(data_ + pos_ * size_); From 5d7a71ae108f86c05bc03eb542155b30bd28ca74 Mon Sep 17 00:00:00 2001 From: Lumin Zhou Date: Mon, 30 May 2016 04:19:16 +0000 Subject: [PATCH 266/458] using GNUInstallDirs in root cmake file --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index da7142c9b..c765889e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) include(ExternalProject) +include(GNUInstallDirs) include(cmake/Utils.cmake) include(cmake/Targets.cmake) From 90b98ce76fe8613d345932f47a6250dc772f7b8f Mon Sep 17 00:00:00 2001 From: Lumin Zhou Date: Mon, 30 May 2016 04:21:27 +0000 Subject: [PATCH 267/458] fix install path with GNUInstallDir support --- src/caffe/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/caffe/CMakeLists.txt b/src/caffe/CMakeLists.txt index 8a80c9404..5a1b73f74 100644 --- a/src/caffe/CMakeLists.txt +++ b/src/caffe/CMakeLists.txt @@ -29,9 +29,9 @@ set_target_properties(caffe PROPERTIES add_subdirectory(test) # ---[ Install -install(DIRECTORY ${Caffe_INCLUDE_DIR}/caffe DESTINATION include) -install(FILES ${proto_hdrs} DESTINATION include/caffe/proto) -install(TARGETS caffe proto EXPORT CaffeTargets DESTINATION lib) +install(DIRECTORY ${Caffe_INCLUDE_DIR}/caffe DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(FILES ${proto_hdrs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/caffe/proto) +install(TARGETS caffe proto EXPORT CaffeTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) file(WRITE ${PROJECT_BINARY_DIR}/__init__.py) list(APPEND proto_python ${PROJECT_BINARY_DIR}/__init__.py) From 581650b18d7580df726d1d6d54d83c397d1379bb Mon Sep 17 00:00:00 2001 From: Lumin Zhou Date: Mon, 30 May 2016 04:22:42 +0000 Subject: [PATCH 268/458] fix install path with GNUInstallDir support --- tools/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 02fbd5cad..378945055 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -25,5 +25,6 @@ foreach(source ${srcs}) endif() # Install - install(TARGETS ${name} DESTINATION bin) + install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR}) + endforeach(source) From f710ef5e89d3ec22891b24099c66b7a6e9f06c45 Mon Sep 17 00:00:00 2001 From: Lumin Zhou Date: Mon, 30 May 2016 04:24:13 +0000 Subject: [PATCH 269/458] fix install path with GNUInstallDir support --- examples/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 663d7360b..2a2300332 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -19,7 +19,8 @@ foreach(source_file ${examples_srcs}) caffe_set_solution_folder(${name} examples) # install - install(TARGETS ${name} DESTINATION bin) + install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR}) + if(UNIX OR APPLE) # Funny command to make tutorials work From 918d9994e4b2e9d82bd7929b0ef1d90393f68b31 Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Tue, 31 May 2016 18:08:04 -0600 Subject: [PATCH 270/458] Fix vecLib search order for clients with both the old vecLib framework and the new Accelerate framework --- cmake/Modules/FindvecLib.cmake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/FindvecLib.cmake b/cmake/Modules/FindvecLib.cmake index 9600da436..460433673 100644 --- a/cmake/Modules/FindvecLib.cmake +++ b/cmake/Modules/FindvecLib.cmake @@ -14,9 +14,10 @@ set(__veclib_include_suffix "Frameworks/vecLib.framework/Versions/Current/Header find_path(vecLib_INCLUDE_DIR vecLib.h DOC "vecLib include directory" - PATHS /System/Library/${__veclib_include_suffix} - /System/Library/Frameworks/Accelerate.framework/Versions/Current/${__veclib_include_suffix} - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/) + PATHS /System/Library/Frameworks/Accelerate.framework/Versions/Current/${__veclib_include_suffix} + /System/Library/${__veclib_include_suffix} + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ + NO_DEFAULT_PATH) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(vecLib DEFAULT_MSG vecLib_INCLUDE_DIR) From 994a033a725c23811dc50e4b2874450a45f2ecd1 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 1 Jun 2016 10:37:14 -0700 Subject: [PATCH 271/458] Cache protobuf3 build in TravisCI --- .travis.yml | 3 +++ scripts/travis/install-deps.sh | 37 +++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index 92d740cd8..4849a7ac2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,10 @@ env: - BUILD_NAME="cudnn-cmake" WITH_CMAKE=true WITH_CUDA=true WITH_CUDNN=true cache: + timeout: 604800 # 1 week apt: true + directories: + - ~/protobuf3 before_install: - source ./scripts/travis/defaults.sh diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index f7bfe4c4d..ee16d36a7 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -40,25 +40,30 @@ else python3-skimage # build Protobuf3 since it's needed for Python3 - echo "Building protobuf3 from source ..." + PROTOBUF3_DIR=~/protobuf3 pushd . - PROTOBUF3_DIR=~/protobuf3-build - rm -rf $PROTOBUF3_DIR - mkdir $PROTOBUF3_DIR + if [ -d "$PROTOBUF3_DIR" ] && [ -e "$PROTOBUF3_DIR/src/protoc" ]; then + echo "Using cached protobuf3 build ..." + cd $PROTOBUF3_DIR + else + echo "Building protobuf3 from source ..." + rm -rf $PROTOBUF3_DIR + mkdir $PROTOBUF3_DIR - # install some more dependencies required to build protobuf3 - apt-get install -y --no-install-recommends \ - curl \ - dh-autoreconf \ - unzip + # install some more dependencies required to build protobuf3 + apt-get install -y --no-install-recommends \ + curl \ + dh-autoreconf \ + unzip - wget https://github.com/google/protobuf/archive/v3.0.0-beta-3.tar.gz -O protobuf3.tar.gz - tar -xzf protobuf3.tar.gz -C $PROTOBUF3_DIR --strip 1 - rm protobuf3.tar.gz - cd $PROTOBUF3_DIR - ./autogen.sh - ./configure --prefix=/usr - make --jobs=$NUM_THREADS + wget https://github.com/google/protobuf/archive/v3.0.0-beta-3.tar.gz -O protobuf3.tar.gz + tar -xzf protobuf3.tar.gz -C $PROTOBUF3_DIR --strip 1 + rm protobuf3.tar.gz + cd $PROTOBUF3_DIR + ./autogen.sh + ./configure --prefix=/usr + make --jobs=$NUM_THREADS + fi make install popd fi From 5f2d845fafc8883aa16b437b79fa52b39f8a0ddb Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Sun, 15 Feb 2015 14:28:01 -0800 Subject: [PATCH 272/458] Add RecurrentLayer: an abstract superclass for other recurrent layer types --- include/caffe/layers/recurrent_layer.hpp | 187 ++++++++++++++ src/caffe/layers/recurrent_layer.cpp | 295 +++++++++++++++++++++++ src/caffe/layers/recurrent_layer.cu | 44 ++++ src/caffe/proto/caffe.proto | 22 +- 4 files changed, 547 insertions(+), 1 deletion(-) create mode 100644 include/caffe/layers/recurrent_layer.hpp create mode 100644 src/caffe/layers/recurrent_layer.cpp create mode 100644 src/caffe/layers/recurrent_layer.cu diff --git a/include/caffe/layers/recurrent_layer.hpp b/include/caffe/layers/recurrent_layer.hpp new file mode 100644 index 000000000..ca17371b9 --- /dev/null +++ b/include/caffe/layers/recurrent_layer.hpp @@ -0,0 +1,187 @@ +#ifndef CAFFE_RECURRENT_LAYER_HPP_ +#define CAFFE_RECURRENT_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/util/format.hpp" + +namespace caffe { + +template class RecurrentLayer; + +/** + * @brief An abstract class for implementing recurrent behavior inside of an + * unrolled network. This Layer type cannot be instantiated -- instead, + * you should use one of its implementations which defines the recurrent + * architecture, such as RNNLayer or LSTMLayer. + */ +template +class RecurrentLayer : public Layer { + public: + explicit RecurrentLayer(const LayerParameter& param) + : Layer(param) {} + virtual void LayerSetUp(const vector*>& bottom, + const vector*>& top); + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + virtual void Reset(); + + virtual inline const char* type() const { return "Recurrent"; } + virtual inline int MinBottomBlobs() const { + int min_bottoms = 2; + if (this->layer_param_.recurrent_param().expose_hidden()) { + vector inputs; + this->RecurrentInputBlobNames(&inputs); + min_bottoms += inputs.size(); + } + return min_bottoms; + } + virtual inline int MaxBottomBlobs() const { return MinBottomBlobs() + 1; } + virtual inline int ExactNumTopBlobs() const { + int num_tops = 1; + if (this->layer_param_.recurrent_param().expose_hidden()) { + vector outputs; + this->RecurrentOutputBlobNames(&outputs); + num_tops += outputs.size(); + } + return num_tops; + } + + virtual inline bool AllowForceBackward(const int bottom_index) const { + // Can't propagate to sequence continuation indicators. + return bottom_index != 1; + } + + protected: + /** + * @brief Fills net_param with the recurrent network architecture. Subclasses + * should define this -- see RNNLayer and LSTMLayer for examples. + */ + virtual void FillUnrolledNet(NetParameter* net_param) const = 0; + + /** + * @brief Fills names with the names of the 0th timestep recurrent input + * Blob&s. Subclasses should define this -- see RNNLayer and LSTMLayer + * for examples. + */ + virtual void RecurrentInputBlobNames(vector* names) const = 0; + + /** + * @brief Fills shapes with the shapes of the recurrent input Blob&s. + * Subclasses should define this -- see RNNLayer and LSTMLayer + * for examples. + */ + virtual void RecurrentInputShapes(vector* shapes) const = 0; + + /** + * @brief Fills names with the names of the Tth timestep recurrent output + * Blob&s. Subclasses should define this -- see RNNLayer and LSTMLayer + * for examples. + */ + virtual void RecurrentOutputBlobNames(vector* names) const = 0; + + /** + * @brief Fills names with the names of the output blobs, concatenated across + * all timesteps. Should return a name for each top Blob. + * Subclasses should define this -- see RNNLayer and LSTMLayer for + * examples. + */ + virtual void OutputBlobNames(vector* names) const = 0; + + /** + * @param bottom input Blob vector (length 2-3) + * + * -# @f$ (T \times N \times ...) @f$ + * the time-varying input @f$ x @f$. After the first two axes, whose + * dimensions must correspond to the number of timesteps @f$ T @f$ and + * the number of independent streams @f$ N @f$, respectively, its + * dimensions may be arbitrary. Note that the ordering of dimensions -- + * @f$ (T \times N \times ...) @f$, rather than + * @f$ (N \times T \times ...) @f$ -- means that the @f$ N @f$ + * independent input streams must be "interleaved". + * + * -# @f$ (T \times N) @f$ + * the sequence continuation indicators @f$ \delta @f$. + * These inputs should be binary (0 or 1) indicators, where + * @f$ \delta_{t,n} = 0 @f$ means that timestep @f$ t @f$ of stream + * @f$ n @f$ is the beginning of a new sequence, and hence the previous + * hidden state @f$ h_{t-1} @f$ is multiplied by @f$ \delta_t = 0 @f$ + * and has no effect on the cell's output at timestep @f$ t @f$, and + * a value of @f$ \delta_{t,n} = 1 @f$ means that timestep @f$ t @f$ of + * stream @f$ n @f$ is a continuation from the previous timestep + * @f$ t-1 @f$, and the previous hidden state @f$ h_{t-1} @f$ affects the + * updated hidden state and output. + * + * -# @f$ (N \times ...) @f$ (optional) + * the static (non-time-varying) input @f$ x_{static} @f$. + * After the first axis, whose dimension must be the number of + * independent streams, its dimensions may be arbitrary. + * This is mathematically equivalent to using a time-varying input of + * @f$ x'_t = [x_t; x_{static}] @f$ -- i.e., tiling the static input + * across the @f$ T @f$ timesteps and concatenating with the time-varying + * input. Note that if this input is used, all timesteps in a single + * batch within a particular one of the @f$ N @f$ streams must share the + * same static input, even if the sequence continuation indicators + * suggest that difference sequences are ending and beginning within a + * single batch. This may require padding and/or truncation for uniform + * length. + * + * @param top output Blob vector (length 1) + * -# @f$ (T \times N \times D) @f$ + * the time-varying output @f$ y @f$, where @f$ D @f$ is + * recurrent_param.num_output(). + * Refer to documentation for particular RecurrentLayer implementations + * (such as RNNLayer and LSTMLayer) for the definition of @f$ y @f$. + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief A Net to implement the Recurrent functionality. + shared_ptr > unrolled_net_; + + /// @brief The number of independent streams to process simultaneously. + int N_; + + /** + * @brief The number of timesteps in the layer's input, and the number of + * timesteps over which to backpropagate through time. + */ + int T_; + + /// @brief Whether the layer has a "static" input copied across all timesteps. + bool static_input_; + + /** + * @brief The last layer to run in the network. (Any later layers are losses + * added to force the recurrent net to do backprop.) + */ + int last_layer_index_; + + /** + * @brief Whether the layer's hidden state at the first and last timesteps + * are layer inputs and outputs, respectively. + */ + bool expose_hidden_; + + vector* > recur_input_blobs_; + vector* > recur_output_blobs_; + vector* > output_blobs_; + Blob* x_input_blob_; + Blob* x_static_input_blob_; + Blob* cont_input_blob_; +}; + +} // namespace caffe + +#endif // CAFFE_RECURRENT_LAYER_HPP_ diff --git a/src/caffe/layers/recurrent_layer.cpp b/src/caffe/layers/recurrent_layer.cpp new file mode 100644 index 000000000..e0c827733 --- /dev/null +++ b/src/caffe/layers/recurrent_layer.cpp @@ -0,0 +1,295 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void RecurrentLayer::LayerSetUp(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "bottom[0] must have at least 2 axes -- (#timesteps, #streams, ...)"; + T_ = bottom[0]->shape(0); + N_ = bottom[0]->shape(1); + LOG(INFO) << "Initializing recurrent layer: assuming input batch contains " + << T_ << " timesteps of " << N_ << " independent streams."; + + CHECK_EQ(bottom[1]->num_axes(), 2) + << "bottom[1] must have exactly 2 axes -- (#timesteps, #streams)"; + CHECK_EQ(T_, bottom[1]->shape(0)); + CHECK_EQ(N_, bottom[1]->shape(1)); + + // If expose_hidden is set, we take as input and produce as output + // the hidden state blobs at the first and last timesteps. + expose_hidden_ = this->layer_param_.recurrent_param().expose_hidden(); + + // Get (recurrent) input/output names. + vector output_names; + OutputBlobNames(&output_names); + vector recur_input_names; + RecurrentInputBlobNames(&recur_input_names); + vector recur_output_names; + RecurrentOutputBlobNames(&recur_output_names); + const int num_recur_blobs = recur_input_names.size(); + CHECK_EQ(num_recur_blobs, recur_output_names.size()); + + // If provided, bottom[2] is a static input to the recurrent net. + const int num_hidden_exposed = expose_hidden_ * num_recur_blobs; + static_input_ = (bottom.size() > 2 + num_hidden_exposed); + if (static_input_) { + CHECK_GE(bottom[2]->num_axes(), 1); + CHECK_EQ(N_, bottom[2]->shape(0)); + } + + // Create a NetParameter; setup the inputs that aren't unique to particular + // recurrent architectures. + NetParameter net_param; + + LayerParameter* input_layer_param = net_param.add_layer(); + input_layer_param->set_type("Input"); + InputParameter* input_param = input_layer_param->mutable_input_param(); + input_layer_param->add_top("x"); + BlobShape input_shape; + for (int i = 0; i < bottom[0]->num_axes(); ++i) { + input_shape.add_dim(bottom[0]->shape(i)); + } + input_param->add_shape()->CopyFrom(input_shape); + + input_shape.Clear(); + for (int i = 0; i < bottom[1]->num_axes(); ++i) { + input_shape.add_dim(bottom[1]->shape(i)); + } + input_layer_param->add_top("cont"); + input_param->add_shape()->CopyFrom(input_shape); + + if (static_input_) { + input_shape.Clear(); + for (int i = 0; i < bottom[2]->num_axes(); ++i) { + input_shape.add_dim(bottom[2]->shape(i)); + } + input_layer_param->add_top("x_static"); + input_param->add_shape()->CopyFrom(input_shape); + } + + // Call the child's FillUnrolledNet implementation to specify the unrolled + // recurrent architecture. + this->FillUnrolledNet(&net_param); + + // Prepend this layer's name to the names of each layer in the unrolled net. + const string& layer_name = this->layer_param_.name(); + if (layer_name.size()) { + for (int i = 0; i < net_param.layer_size(); ++i) { + LayerParameter* layer = net_param.mutable_layer(i); + layer->set_name(layer_name + "_" + layer->name()); + } + } + + // Add "pseudo-losses" to all outputs to force backpropagation. + // (Setting force_backward is too aggressive as we may not need to backprop to + // all inputs, e.g., the sequence continuation indicators.) + vector pseudo_losses(output_names.size()); + for (int i = 0; i < output_names.size(); ++i) { + LayerParameter* layer = net_param.add_layer(); + pseudo_losses[i] = output_names[i] + "_pseudoloss"; + layer->set_name(pseudo_losses[i]); + layer->set_type("Reduction"); + layer->add_bottom(output_names[i]); + layer->add_top(pseudo_losses[i]); + layer->add_loss_weight(1); + } + + // Create the unrolled net. + unrolled_net_.reset(new Net(net_param)); + unrolled_net_->set_debug_info( + this->layer_param_.recurrent_param().debug_info()); + + // Setup pointers to the inputs. + x_input_blob_ = CHECK_NOTNULL(unrolled_net_->blob_by_name("x").get()); + cont_input_blob_ = CHECK_NOTNULL(unrolled_net_->blob_by_name("cont").get()); + if (static_input_) { + x_static_input_blob_ = + CHECK_NOTNULL(unrolled_net_->blob_by_name("x_static").get()); + } + + // Setup pointers to paired recurrent inputs/outputs. + recur_input_blobs_.resize(num_recur_blobs); + recur_output_blobs_.resize(num_recur_blobs); + for (int i = 0; i < recur_input_names.size(); ++i) { + recur_input_blobs_[i] = + CHECK_NOTNULL(unrolled_net_->blob_by_name(recur_input_names[i]).get()); + recur_output_blobs_[i] = + CHECK_NOTNULL(unrolled_net_->blob_by_name(recur_output_names[i]).get()); + } + + // Setup pointers to outputs. + CHECK_EQ(top.size() - num_hidden_exposed, output_names.size()) + << "OutputBlobNames must provide an output blob name for each top."; + output_blobs_.resize(output_names.size()); + for (int i = 0; i < output_names.size(); ++i) { + output_blobs_[i] = + CHECK_NOTNULL(unrolled_net_->blob_by_name(output_names[i]).get()); + } + + // We should have 2 inputs (x and cont), plus a number of recurrent inputs, + // plus maybe a static input. + CHECK_EQ(2 + num_recur_blobs + static_input_, + unrolled_net_->input_blobs().size()); + + // This layer's parameters are any parameters in the layers of the unrolled + // net. We only want one copy of each parameter, so check that the parameter + // is "owned" by the layer, rather than shared with another. + this->blobs_.clear(); + for (int i = 0; i < unrolled_net_->params().size(); ++i) { + if (unrolled_net_->param_owners()[i] == -1) { + LOG(INFO) << "Adding parameter " << i << ": " + << unrolled_net_->param_display_names()[i]; + this->blobs_.push_back(unrolled_net_->params()[i]); + } + } + // Check that param_propagate_down is set for all of the parameters in the + // unrolled net; set param_propagate_down to true in this layer. + for (int i = 0; i < unrolled_net_->layers().size(); ++i) { + for (int j = 0; j < unrolled_net_->layers()[i]->blobs().size(); ++j) { + CHECK(unrolled_net_->layers()[i]->param_propagate_down(j)) + << "param_propagate_down not set for layer " << i << ", param " << j; + } + } + this->param_propagate_down_.clear(); + this->param_propagate_down_.resize(this->blobs_.size(), true); + + // Set the diffs of recurrent outputs to 0 -- we can't backpropagate across + // batches. + for (int i = 0; i < recur_output_blobs_.size(); ++i) { + caffe_set(recur_output_blobs_[i]->count(), Dtype(0), + recur_output_blobs_[i]->mutable_cpu_diff()); + } + + // Check that the last output_names.size() layers are the pseudo-losses; + // set last_layer_index so that we don't actually run these layers. + const vector& layer_names = unrolled_net_->layer_names(); + last_layer_index_ = layer_names.size() - 1 - pseudo_losses.size(); + for (int i = last_layer_index_ + 1, j = 0; i < layer_names.size(); ++i, ++j) { + CHECK_EQ(layer_names[i], pseudo_losses[j]); + } +} + +template +void RecurrentLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + CHECK_GE(bottom[0]->num_axes(), 2) + << "bottom[0] must have at least 2 axes -- (#timesteps, #streams, ...)"; + CHECK_EQ(T_, bottom[0]->shape(0)) << "input number of timesteps changed"; + N_ = bottom[0]->shape(1); + CHECK_EQ(bottom[1]->num_axes(), 2) + << "bottom[1] must have exactly 2 axes -- (#timesteps, #streams)"; + CHECK_EQ(T_, bottom[1]->shape(0)); + CHECK_EQ(N_, bottom[1]->shape(1)); + x_input_blob_->ReshapeLike(*bottom[0]); + vector cont_shape = bottom[1]->shape(); + cont_input_blob_->Reshape(cont_shape); + if (static_input_) { + x_static_input_blob_->ReshapeLike(*bottom[2]); + } + vector recur_input_shapes; + RecurrentInputShapes(&recur_input_shapes); + CHECK_EQ(recur_input_shapes.size(), recur_input_blobs_.size()); + for (int i = 0; i < recur_input_shapes.size(); ++i) { + recur_input_blobs_[i]->Reshape(recur_input_shapes[i]); + } + unrolled_net_->Reshape(); + x_input_blob_->ShareData(*bottom[0]); + x_input_blob_->ShareDiff(*bottom[0]); + cont_input_blob_->ShareData(*bottom[1]); + if (static_input_) { + x_static_input_blob_->ShareData(*bottom[2]); + x_static_input_blob_->ShareDiff(*bottom[2]); + } + if (expose_hidden_) { + const int bottom_offset = 2 + static_input_; + for (int i = bottom_offset, j = 0; i < bottom.size(); ++i, ++j) { + CHECK(recur_input_blobs_[j]->shape() == bottom[i]->shape()) + << "bottom[" << i << "] shape must match hidden state input shape: " + << recur_input_blobs_[j]->shape_string(); + recur_input_blobs_[j]->ShareData(*bottom[i]); + } + } + for (int i = 0; i < output_blobs_.size(); ++i) { + top[i]->ReshapeLike(*output_blobs_[i]); + top[i]->ShareData(*output_blobs_[i]); + top[i]->ShareDiff(*output_blobs_[i]); + } + if (expose_hidden_) { + const int top_offset = output_blobs_.size(); + for (int i = top_offset, j = 0; i < top.size(); ++i, ++j) { + top[i]->ReshapeLike(*recur_output_blobs_[j]); + } + } +} + +template +void RecurrentLayer::Reset() { + // "Reset" the hidden state of the net by zeroing out all recurrent outputs. + for (int i = 0; i < recur_output_blobs_.size(); ++i) { + caffe_set(recur_output_blobs_[i]->count(), Dtype(0), + recur_output_blobs_[i]->mutable_cpu_data()); + } +} + +template +void RecurrentLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + // Hacky fix for test time: reshare all the internal shared blobs, which may + // currently point to a stale owner blob that was dropped when Solver::Test + // called test_net->ShareTrainedLayersWith(net_.get()). + // TODO: somehow make this work non-hackily. + if (this->phase_ == TEST) { + unrolled_net_->ShareWeights(); + } + + DCHECK_EQ(recur_input_blobs_.size(), recur_output_blobs_.size()); + if (!expose_hidden_) { + for (int i = 0; i < recur_input_blobs_.size(); ++i) { + const int count = recur_input_blobs_[i]->count(); + DCHECK_EQ(count, recur_output_blobs_[i]->count()); + const Dtype* timestep_T_data = recur_output_blobs_[i]->cpu_data(); + Dtype* timestep_0_data = recur_input_blobs_[i]->mutable_cpu_data(); + caffe_copy(count, timestep_T_data, timestep_0_data); + } + } + + unrolled_net_->ForwardTo(last_layer_index_); + + if (expose_hidden_) { + const int top_offset = output_blobs_.size(); + for (int i = top_offset, j = 0; i < top.size(); ++i, ++j) { + top[i]->ShareData(*recur_output_blobs_[j]); + } + } +} + +template +void RecurrentLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + CHECK(!propagate_down[1]) << "Cannot backpropagate to sequence indicators."; + + // TODO: skip backpropagation to inputs and parameters inside the unrolled + // net according to propagate_down[0] and propagate_down[2]. For now just + // backprop to inputs and parameters unconditionally, as either the inputs or + // the parameters do need backward (or Net would have set + // layer_needs_backward_[i] == false for this layer). + unrolled_net_->BackwardFrom(last_layer_index_); +} + +#ifdef CPU_ONLY +STUB_GPU_FORWARD(RecurrentLayer, Forward); +#endif + +INSTANTIATE_CLASS(RecurrentLayer); + +} // namespace caffe diff --git a/src/caffe/layers/recurrent_layer.cu b/src/caffe/layers/recurrent_layer.cu new file mode 100644 index 000000000..4dd2b0e21 --- /dev/null +++ b/src/caffe/layers/recurrent_layer.cu @@ -0,0 +1,44 @@ +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void RecurrentLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + // Hacky fix for test time... reshare all the shared blobs. + // TODO: somehow make this work non-hackily. + if (this->phase_ == TEST) { + unrolled_net_->ShareWeights(); + } + + DCHECK_EQ(recur_input_blobs_.size(), recur_output_blobs_.size()); + if (!expose_hidden_) { + for (int i = 0; i < recur_input_blobs_.size(); ++i) { + const int count = recur_input_blobs_[i]->count(); + DCHECK_EQ(count, recur_output_blobs_[i]->count()); + const Dtype* timestep_T_data = recur_output_blobs_[i]->gpu_data(); + Dtype* timestep_0_data = recur_input_blobs_[i]->mutable_gpu_data(); + caffe_copy(count, timestep_T_data, timestep_0_data); + } + } + + unrolled_net_->ForwardTo(last_layer_index_); + + if (expose_hidden_) { + const int top_offset = output_blobs_.size(); + for (int i = top_offset, j = 0; i < top.size(); ++i, ++j) { + top[i]->ShareData(*recur_output_blobs_[j]); + } + } +} + +INSTANTIATE_LAYER_GPU_FORWARD(RecurrentLayer); + +} // namespace caffe diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 158107186..1556781cb 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -306,7 +306,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 146 (last added: parameter_param) +// LayerParameter next available layer-specific ID: 147 (last added: recurrent_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -390,6 +390,7 @@ message LayerParameter { optional PowerParameter power_param = 122; optional PReLUParameter prelu_param = 131; optional PythonParameter python_param = 130; + optional RecurrentParameter recurrent_param = 146; optional ReductionParameter reduction_param = 136; optional ReLUParameter relu_param = 123; optional ReshapeParameter reshape_param = 133; @@ -928,6 +929,25 @@ message PythonParameter { optional bool share_in_parallel = 4 [default = false]; } +// Message that stores parameters used by RecurrentLayer +message RecurrentParameter { + // The dimension of the output (and usually hidden state) representation -- + // must be explicitly set to non-zero. + optional uint32 num_output = 1 [default = 0]; + + optional FillerParameter weight_filler = 2; // The filler for the weight + optional FillerParameter bias_filler = 3; // The filler for the bias + + // Whether to enable displaying debug_info in the unrolled recurrent net. + optional bool debug_info = 4 [default = false]; + + // Whether to add as additional inputs (bottoms) the initial hidden state + // blobs, and add as additional outputs (tops) the final timestep hidden state + // blobs. The number of additional bottom/top blobs required depends on the + // recurrent architecture -- e.g., 1 for RNNs, 2 for LSTMs. + optional bool expose_hidden = 5 [default = false]; +} + // Message that stores parameters used by ReductionLayer message ReductionParameter { enum ReductionOp { From cf5f369574dd51045c1c92625c0fe6694a031f2a Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Sun, 15 Feb 2015 14:56:50 -0800 Subject: [PATCH 273/458] Add RNNLayer, with tests --- include/caffe/layers/rnn_layer.hpp | 47 ++++++ src/caffe/layers/rnn_layer.cpp | 236 +++++++++++++++++++++++++++++ src/caffe/test/test_rnn_layer.cpp | 217 ++++++++++++++++++++++++++ 3 files changed, 500 insertions(+) create mode 100644 include/caffe/layers/rnn_layer.hpp create mode 100644 src/caffe/layers/rnn_layer.cpp create mode 100644 src/caffe/test/test_rnn_layer.cpp diff --git a/include/caffe/layers/rnn_layer.hpp b/include/caffe/layers/rnn_layer.hpp new file mode 100644 index 000000000..6dce238ae --- /dev/null +++ b/include/caffe/layers/rnn_layer.hpp @@ -0,0 +1,47 @@ +#ifndef CAFFE_RNN_LAYER_HPP_ +#define CAFFE_RNN_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template class RecurrentLayer; + +/** + * @brief Processes time-varying inputs using a simple recurrent neural network + * (RNN). Implemented as a network unrolling the RNN computation in time. + * + * Given time-varying inputs @f$ x_t @f$, computes hidden state @f$ + * h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] + * @f$, and outputs @f$ + * o_t := \tanh[ W_{ho} h_t + b_o ] + * @f$. + */ +template +class RNNLayer : public RecurrentLayer { + public: + explicit RNNLayer(const LayerParameter& param) + : RecurrentLayer(param) {} + + virtual inline const char* type() const { return "RNN"; } + + protected: + virtual void FillUnrolledNet(NetParameter* net_param) const; + virtual void RecurrentInputBlobNames(vector* names) const; + virtual void RecurrentOutputBlobNames(vector* names) const; + virtual void RecurrentInputShapes(vector* shapes) const; + virtual void OutputBlobNames(vector* names) const; +}; + +} // namespace caffe + +#endif // CAFFE_RNN_LAYER_HPP_ diff --git a/src/caffe/layers/rnn_layer.cpp b/src/caffe/layers/rnn_layer.cpp new file mode 100644 index 000000000..f62ae8c77 --- /dev/null +++ b/src/caffe/layers/rnn_layer.cpp @@ -0,0 +1,236 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/rnn_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void RNNLayer::RecurrentInputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "h_0"; +} + +template +void RNNLayer::RecurrentOutputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "h_" + format_int(this->T_); +} + +template +void RNNLayer::RecurrentInputShapes(vector* shapes) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + shapes->resize(1); + (*shapes)[0].Clear(); + (*shapes)[0].add_dim(1); // a single timestep + (*shapes)[0].add_dim(this->N_); + (*shapes)[0].add_dim(num_output); +} + +template +void RNNLayer::OutputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "o"; +} + +template +void RNNLayer::FillUnrolledNet(NetParameter* net_param) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + CHECK_GT(num_output, 0) << "num_output must be positive"; + const FillerParameter& weight_filler = + this->layer_param_.recurrent_param().weight_filler(); + const FillerParameter& bias_filler = + this->layer_param_.recurrent_param().bias_filler(); + + // Add generic LayerParameter's (without bottoms/tops) of layer types we'll + // use to save redundant code. + LayerParameter hidden_param; + hidden_param.set_type("InnerProduct"); + hidden_param.mutable_inner_product_param()->set_num_output(num_output); + hidden_param.mutable_inner_product_param()->set_bias_term(false); + hidden_param.mutable_inner_product_param()->set_axis(2); + hidden_param.mutable_inner_product_param()-> + mutable_weight_filler()->CopyFrom(weight_filler); + + LayerParameter biased_hidden_param(hidden_param); + biased_hidden_param.mutable_inner_product_param()->set_bias_term(true); + biased_hidden_param.mutable_inner_product_param()-> + mutable_bias_filler()->CopyFrom(bias_filler); + + LayerParameter sum_param; + sum_param.set_type("Eltwise"); + sum_param.mutable_eltwise_param()->set_operation( + EltwiseParameter_EltwiseOp_SUM); + + LayerParameter tanh_param; + tanh_param.set_type("TanH"); + + LayerParameter scale_param; + scale_param.set_type("Scale"); + scale_param.mutable_scale_param()->set_axis(0); + + LayerParameter slice_param; + slice_param.set_type("Slice"); + slice_param.mutable_slice_param()->set_axis(0); + + vector input_shapes; + RecurrentInputShapes(&input_shapes); + CHECK_EQ(1, input_shapes.size()); + + LayerParameter* input_layer_param = net_param->add_layer(); + input_layer_param->set_type("Input"); + InputParameter* input_param = input_layer_param->mutable_input_param(); + input_layer_param->add_top("h_0"); + input_param->add_shape()->CopyFrom(input_shapes[0]); + + LayerParameter* cont_slice_param = net_param->add_layer(); + cont_slice_param->CopyFrom(slice_param); + cont_slice_param->set_name("cont_slice"); + cont_slice_param->add_bottom("cont"); + cont_slice_param->mutable_slice_param()->set_axis(0); + + // Add layer to transform all timesteps of x to the hidden state dimension. + // W_xh_x = W_xh * x + b_h + { + LayerParameter* x_transform_param = net_param->add_layer(); + x_transform_param->CopyFrom(biased_hidden_param); + x_transform_param->set_name("x_transform"); + x_transform_param->add_param()->set_name("W_xh"); + x_transform_param->add_param()->set_name("b_h"); + x_transform_param->add_bottom("x"); + x_transform_param->add_top("W_xh_x"); + x_transform_param->add_propagate_down(true); + } + + if (this->static_input_) { + // Add layer to transform x_static to the hidden state dimension. + // W_xh_x_static = W_xh_static * x_static + LayerParameter* x_static_transform_param = net_param->add_layer(); + x_static_transform_param->CopyFrom(hidden_param); + x_static_transform_param->mutable_inner_product_param()->set_axis(1); + x_static_transform_param->set_name("W_xh_x_static"); + x_static_transform_param->add_param()->set_name("W_xh_static"); + x_static_transform_param->add_bottom("x_static"); + x_static_transform_param->add_top("W_xh_x_static_preshape"); + x_static_transform_param->add_propagate_down(true); + + LayerParameter* reshape_param = net_param->add_layer(); + reshape_param->set_type("Reshape"); + BlobShape* new_shape = + reshape_param->mutable_reshape_param()->mutable_shape(); + new_shape->add_dim(1); // One timestep. + // Should infer this->N as the dimension so we can reshape on batch size. + new_shape->add_dim(-1); + new_shape->add_dim( + x_static_transform_param->inner_product_param().num_output()); + reshape_param->set_name("W_xh_x_static_reshape"); + reshape_param->add_bottom("W_xh_x_static_preshape"); + reshape_param->add_top("W_xh_x_static"); + } + + LayerParameter* x_slice_param = net_param->add_layer(); + x_slice_param->CopyFrom(slice_param); + x_slice_param->set_name("W_xh_x_slice"); + x_slice_param->add_bottom("W_xh_x"); + + LayerParameter output_concat_layer; + output_concat_layer.set_name("o_concat"); + output_concat_layer.set_type("Concat"); + output_concat_layer.add_top("o"); + output_concat_layer.mutable_concat_param()->set_axis(0); + + for (int t = 1; t <= this->T_; ++t) { + string tm1s = format_int(t - 1); + string ts = format_int(t); + + cont_slice_param->add_top("cont_" + ts); + x_slice_param->add_top("W_xh_x_" + ts); + + // Add layer to flush the hidden state when beginning a new sequence, + // as indicated by cont_t. + // h_conted_{t-1} := cont_t * h_{t-1} + // + // Normally, cont_t is binary (i.e., 0 or 1), so: + // h_conted_{t-1} := h_{t-1} if cont_t == 1 + // 0 otherwise + { + LayerParameter* cont_h_param = net_param->add_layer(); + cont_h_param->CopyFrom(scale_param); + cont_h_param->set_name("h_conted_" + tm1s); + cont_h_param->add_bottom("h_" + tm1s); + cont_h_param->add_bottom("cont_" + ts); + cont_h_param->add_top("h_conted_" + tm1s); + } + + // Add layer to compute + // W_hh_h_{t-1} := W_hh * h_conted_{t-1} + { + LayerParameter* w_param = net_param->add_layer(); + w_param->CopyFrom(hidden_param); + w_param->set_name("W_hh_h_" + tm1s); + w_param->add_param()->set_name("W_hh"); + w_param->add_bottom("h_conted_" + tm1s); + w_param->add_top("W_hh_h_" + tm1s); + w_param->mutable_inner_product_param()->set_axis(2); + } + + // Add layers to compute + // h_t := \tanh( W_hh * h_conted_{t-1} + W_xh * x_t + b_h ) + // = \tanh( W_hh_h_{t-1} + W_xh_t ) + { + LayerParameter* h_input_sum_param = net_param->add_layer(); + h_input_sum_param->CopyFrom(sum_param); + h_input_sum_param->set_name("h_input_sum_" + ts); + h_input_sum_param->add_bottom("W_hh_h_" + tm1s); + h_input_sum_param->add_bottom("W_xh_x_" + ts); + if (this->static_input_) { + h_input_sum_param->add_bottom("W_xh_x_static"); + } + h_input_sum_param->add_top("h_neuron_input_" + ts); + } + { + LayerParameter* h_neuron_param = net_param->add_layer(); + h_neuron_param->CopyFrom(tanh_param); + h_neuron_param->set_name("h_neuron_" + ts); + h_neuron_param->add_bottom("h_neuron_input_" + ts); + h_neuron_param->add_top("h_" + ts); + } + + // Add layer to compute + // W_ho_h_t := W_ho * h_t + b_o + { + LayerParameter* w_param = net_param->add_layer(); + w_param->CopyFrom(biased_hidden_param); + w_param->set_name("W_ho_h_" + ts); + w_param->add_param()->set_name("W_ho"); + w_param->add_param()->set_name("b_o"); + w_param->add_bottom("h_" + ts); + w_param->add_top("W_ho_h_" + ts); + w_param->mutable_inner_product_param()->set_axis(2); + } + + // Add layers to compute + // o_t := \tanh( W_ho h_t + b_o) + // = \tanh( W_ho_h_t ) + { + LayerParameter* o_neuron_param = net_param->add_layer(); + o_neuron_param->CopyFrom(tanh_param); + o_neuron_param->set_name("o_neuron_" + ts); + o_neuron_param->add_bottom("W_ho_h_" + ts); + o_neuron_param->add_top("o_" + ts); + } + output_concat_layer.add_bottom("o_" + ts); + } // for (int t = 1; t <= this->T_; ++t) + + net_param->add_layer()->CopyFrom(output_concat_layer); +} + +INSTANTIATE_CLASS(RNNLayer); +REGISTER_LAYER_CLASS(RNN); + +} // namespace caffe diff --git a/src/caffe/test/test_rnn_layer.cpp b/src/caffe/test/test_rnn_layer.cpp new file mode 100644 index 000000000..dd8952d62 --- /dev/null +++ b/src/caffe/test/test_rnn_layer.cpp @@ -0,0 +1,217 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/rnn_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class RNNLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + RNNLayerTest() : num_output_(7) { + blob_bottom_vec_.push_back(&blob_bottom_); + blob_bottom_vec_.push_back(&blob_bottom_cont_); + blob_top_vec_.push_back(&blob_top_); + + ReshapeBlobs(1, 3); + + layer_param_.mutable_recurrent_param()->set_num_output(num_output_); + FillerParameter* weight_filler = + layer_param_.mutable_recurrent_param()->mutable_weight_filler(); + weight_filler->set_type("gaussian"); + weight_filler->set_std(0.2); + FillerParameter* bias_filler = + layer_param_.mutable_recurrent_param()->mutable_bias_filler(); + bias_filler->set_type("gaussian"); + bias_filler->set_std(0.1); + + layer_param_.set_phase(TEST); + } + + void ReshapeBlobs(int num_timesteps, int num_instances) { + blob_bottom_.Reshape(num_timesteps, num_instances, 3, 2); + blob_bottom_static_.Reshape(num_instances, 2, 3, 4); + vector shape(2); + shape[0] = num_timesteps; + shape[1] = num_instances; + blob_bottom_cont_.Reshape(shape); + + FillerParameter filler_param; + filler_param.set_min(-1); + filler_param.set_max(1); + UniformFiller filler(filler_param); + filler.Fill(&blob_bottom_); + } + + int num_output_; + LayerParameter layer_param_; + Blob blob_bottom_; + Blob blob_bottom_cont_; + Blob blob_bottom_static_; + Blob blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +TYPED_TEST_CASE(RNNLayerTest, TestDtypesAndDevices); + +TYPED_TEST(RNNLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + RNNLayer layer(this->layer_param_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + vector expected_top_shape = this->blob_bottom_.shape(); + expected_top_shape.resize(3); + expected_top_shape[2] = this->num_output_; + EXPECT_TRUE(this->blob_top_.shape() == expected_top_shape); +} + +TYPED_TEST(RNNLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + const int kNumTimesteps = 3; + const int num = this->blob_bottom_.shape(1); + this->ReshapeBlobs(kNumTimesteps, num); + + // Fill the cont blob with <0, 1, 1, ..., 1>, + // indicating a sequence that begins at the first timestep + // then continues for the rest of the sequence. + for (int t = 0; t < kNumTimesteps; ++t) { + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[t * num + n] = t > 0; + } + } + + // Process the full sequence in a single batch. + FillerParameter filler_param; + filler_param.set_mean(0); + filler_param.set_std(1); + GaussianFiller sequence_filler(filler_param); + sequence_filler.Fill(&this->blob_bottom_); + shared_ptr > layer(new RNNLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + LOG(INFO) << "Calling forward for full sequence RNN"; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Copy the inputs and outputs to reuse/check them later. + Blob bottom_copy(this->blob_bottom_.shape()); + bottom_copy.CopyFrom(this->blob_bottom_); + Blob top_copy(this->blob_top_.shape()); + top_copy.CopyFrom(this->blob_top_); + + // Process the batch one timestep at a time; + // check that we get the same result. + this->ReshapeBlobs(1, num); + layer.reset(new RNNLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const int bottom_count = this->blob_bottom_.count(); + const int top_count = this->blob_top_.count(); + const Dtype kEpsilon = 1e-5; + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = t > 0; + } + LOG(INFO) << "Calling forward for RNN timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + ASSERT_LT(t * top_count + i, top_copy.count()); + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } + } + + // Process the batch one timestep at a time with all cont blobs set to 0. + // Check that we get a different result, except in the first timestep. + Caffe::set_random_seed(1701); + layer.reset(new RNNLayer(this->layer_param_)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = 0; + } + LOG(INFO) << "Calling forward for RNN timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + if (t == 0) { + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } else { + EXPECT_NE(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i]) + << "t = " << t << "; i = " << i; + } + } + } +} + +TYPED_TEST(RNNLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(RNNLayerTest, TestGradientNonZeroCont) { + typedef typename TypeParam::Dtype Dtype; + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(RNNLayerTest, TestGradientNonZeroContBufferSize2) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + // fill the values + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(RNNLayerTest, TestGradientNonZeroContBufferSize2WithStaticInput) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + filler.Fill(&this->blob_bottom_static_); + this->blob_bottom_vec_.push_back(&this->blob_bottom_static_); + RNNLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 2); +} + +} // namespace caffe From 51a68f0a0e9e376597d7cabae709ff969ad30c98 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 5 Apr 2016 09:56:04 -0700 Subject: [PATCH 274/458] Add LSTMLayer and LSTMUnitLayer, with tests --- include/caffe/layers/lstm_layer.hpp | 154 ++++++++++++++ src/caffe/layers/lstm_layer.cpp | 244 +++++++++++++++++++++++ src/caffe/layers/lstm_unit_layer.cpp | 131 ++++++++++++ src/caffe/layers/lstm_unit_layer.cu | 154 ++++++++++++++ src/caffe/test/test_lstm_layer.cpp | 288 +++++++++++++++++++++++++++ 5 files changed, 971 insertions(+) create mode 100644 include/caffe/layers/lstm_layer.hpp create mode 100644 src/caffe/layers/lstm_layer.cpp create mode 100644 src/caffe/layers/lstm_unit_layer.cpp create mode 100644 src/caffe/layers/lstm_unit_layer.cu create mode 100644 src/caffe/test/test_lstm_layer.cpp diff --git a/include/caffe/layers/lstm_layer.hpp b/include/caffe/layers/lstm_layer.hpp new file mode 100644 index 000000000..a0e67c9d4 --- /dev/null +++ b/include/caffe/layers/lstm_layer.hpp @@ -0,0 +1,154 @@ +#ifndef CAFFE_LSTM_LAYER_HPP_ +#define CAFFE_LSTM_LAYER_HPP_ + +#include +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/recurrent_layer.hpp" +#include "caffe/net.hpp" +#include "caffe/proto/caffe.pb.h" + +namespace caffe { + +template class RecurrentLayer; + +/** + * @brief Processes sequential inputs using a "Long Short-Term Memory" (LSTM) + * [1] style recurrent neural network (RNN). Implemented by unrolling + * the LSTM computation through time. + * + * The specific architecture used in this implementation is as described in + * "Learning to Execute" [2], reproduced below: + * i_t := \sigmoid[ W_{hi} * h_{t-1} + W_{xi} * x_t + b_i ] + * f_t := \sigmoid[ W_{hf} * h_{t-1} + W_{xf} * x_t + b_f ] + * o_t := \sigmoid[ W_{ho} * h_{t-1} + W_{xo} * x_t + b_o ] + * g_t := \tanh[ W_{hg} * h_{t-1} + W_{xg} * x_t + b_g ] + * c_t := (f_t .* c_{t-1}) + (i_t .* g_t) + * h_t := o_t .* \tanh[c_t] + * In the implementation, the i, f, o, and g computations are performed as a + * single inner product. + * + * Notably, this implementation lacks the "diagonal" gates, as used in the + * LSTM architectures described by Alex Graves [3] and others. + * + * [1] Hochreiter, Sepp, and Schmidhuber, Jürgen. "Long short-term memory." + * Neural Computation 9, no. 8 (1997): 1735-1780. + * + * [2] Zaremba, Wojciech, and Sutskever, Ilya. "Learning to execute." + * arXiv preprint arXiv:1410.4615 (2014). + * + * [3] Graves, Alex. "Generating sequences with recurrent neural networks." + * arXiv preprint arXiv:1308.0850 (2013). + */ +template +class LSTMLayer : public RecurrentLayer { + public: + explicit LSTMLayer(const LayerParameter& param) + : RecurrentLayer(param) {} + + virtual inline const char* type() const { return "LSTM"; } + + protected: + virtual void FillUnrolledNet(NetParameter* net_param) const; + virtual void RecurrentInputBlobNames(vector* names) const; + virtual void RecurrentOutputBlobNames(vector* names) const; + virtual void RecurrentInputShapes(vector* shapes) const; + virtual void OutputBlobNames(vector* names) const; +}; + +/** + * @brief A helper for LSTMLayer: computes a single timestep of the + * non-linearity of the LSTM, producing the updated cell and hidden + * states. + */ +template +class LSTMUnitLayer : public Layer { + public: + explicit LSTMUnitLayer(const LayerParameter& param) + : Layer(param) {} + virtual void Reshape(const vector*>& bottom, + const vector*>& top); + + virtual inline const char* type() const { return "LSTMUnit"; } + virtual inline int ExactNumBottomBlobs() const { return 3; } + virtual inline int ExactNumTopBlobs() const { return 2; } + + virtual inline bool AllowForceBackward(const int bottom_index) const { + // Can't propagate to sequence continuation indicators. + return bottom_index != 2; + } + + protected: + /** + * @param bottom input Blob vector (length 3) + * -# @f$ (1 \times N \times D) @f$ + * the previous timestep cell state @f$ c_{t-1} @f$ + * -# @f$ (1 \times N \times 4D) @f$ + * the "gate inputs" @f$ [i_t', f_t', o_t', g_t'] @f$ + * -# @f$ (1 \times N) @f$ + * the sequence continuation indicators @f$ \delta_t @f$ + * @param top output Blob vector (length 2) + * -# @f$ (1 \times N \times D) @f$ + * the updated cell state @f$ c_t @f$, computed as: + * i_t := \sigmoid[i_t'] + * f_t := \sigmoid[f_t'] + * o_t := \sigmoid[o_t'] + * g_t := \tanh[g_t'] + * c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t) + * -# @f$ (1 \times N \times D) @f$ + * the updated hidden state @f$ h_t @f$, computed as: + * h_t := o_t .* \tanh[c_t] + */ + virtual void Forward_cpu(const vector*>& bottom, + const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); + + /** + * @brief Computes the error gradient w.r.t. the LSTMUnit inputs. + * + * @param top output Blob vector (length 2), providing the error gradient with + * respect to the outputs + * -# @f$ (1 \times N \times D) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial c_t} @f$ + * with respect to the updated cell state @f$ c_t @f$ + * -# @f$ (1 \times N \times D) @f$: + * containing error gradients @f$ \frac{\partial E}{\partial h_t} @f$ + * with respect to the updated cell state @f$ h_t @f$ + * @param propagate_down see Layer::Backward. + * @param bottom input Blob vector (length 3), into which the error gradients + * with respect to the LSTMUnit inputs @f$ c_{t-1} @f$ and the gate + * inputs are computed. Computatation of the error gradients w.r.t. + * the sequence indicators is not implemented. + * -# @f$ (1 \times N \times D) @f$ + * the error gradient w.r.t. the previous timestep cell state + * @f$ c_{t-1} @f$ + * -# @f$ (1 \times N \times 4D) @f$ + * the error gradient w.r.t. the "gate inputs" + * @f$ [ + * \frac{\partial E}{\partial i_t} + * \frac{\partial E}{\partial f_t} + * \frac{\partial E}{\partial o_t} + * \frac{\partial E}{\partial g_t} + * ] @f$ + * -# @f$ (1 \times 1 \times N) @f$ + * the gradient w.r.t. the sequence continuation indicators + * @f$ \delta_t @f$ is currently not computed. + */ + virtual void Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + virtual void Backward_gpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom); + + /// @brief The hidden and output dimension. + int hidden_dim_; + Blob X_acts_; +}; + +} // namespace caffe + +#endif // CAFFE_LSTM_LAYER_HPP_ diff --git a/src/caffe/layers/lstm_layer.cpp b/src/caffe/layers/lstm_layer.cpp new file mode 100644 index 000000000..da48dba4c --- /dev/null +++ b/src/caffe/layers/lstm_layer.cpp @@ -0,0 +1,244 @@ +#include +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/layers/lstm_layer.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void LSTMLayer::RecurrentInputBlobNames(vector* names) const { + names->resize(2); + (*names)[0] = "h_0"; + (*names)[1] = "c_0"; +} + +template +void LSTMLayer::RecurrentOutputBlobNames(vector* names) const { + names->resize(2); + (*names)[0] = "h_" + format_int(this->T_); + (*names)[1] = "c_T"; +} + +template +void LSTMLayer::RecurrentInputShapes(vector* shapes) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + const int num_blobs = 2; + shapes->resize(num_blobs); + for (int i = 0; i < num_blobs; ++i) { + (*shapes)[i].Clear(); + (*shapes)[i].add_dim(1); // a single timestep + (*shapes)[i].add_dim(this->N_); + (*shapes)[i].add_dim(num_output); + } +} + +template +void LSTMLayer::OutputBlobNames(vector* names) const { + names->resize(1); + (*names)[0] = "h"; +} + +template +void LSTMLayer::FillUnrolledNet(NetParameter* net_param) const { + const int num_output = this->layer_param_.recurrent_param().num_output(); + CHECK_GT(num_output, 0) << "num_output must be positive"; + const FillerParameter& weight_filler = + this->layer_param_.recurrent_param().weight_filler(); + const FillerParameter& bias_filler = + this->layer_param_.recurrent_param().bias_filler(); + + // Add generic LayerParameter's (without bottoms/tops) of layer types we'll + // use to save redundant code. + LayerParameter hidden_param; + hidden_param.set_type("InnerProduct"); + hidden_param.mutable_inner_product_param()->set_num_output(num_output * 4); + hidden_param.mutable_inner_product_param()->set_bias_term(false); + hidden_param.mutable_inner_product_param()->set_axis(2); + hidden_param.mutable_inner_product_param()-> + mutable_weight_filler()->CopyFrom(weight_filler); + + LayerParameter biased_hidden_param(hidden_param); + biased_hidden_param.mutable_inner_product_param()->set_bias_term(true); + biased_hidden_param.mutable_inner_product_param()-> + mutable_bias_filler()->CopyFrom(bias_filler); + + LayerParameter sum_param; + sum_param.set_type("Eltwise"); + sum_param.mutable_eltwise_param()->set_operation( + EltwiseParameter_EltwiseOp_SUM); + + LayerParameter scale_param; + scale_param.set_type("Scale"); + scale_param.mutable_scale_param()->set_axis(0); + + LayerParameter slice_param; + slice_param.set_type("Slice"); + slice_param.mutable_slice_param()->set_axis(0); + + LayerParameter split_param; + split_param.set_type("Split"); + + vector input_shapes; + RecurrentInputShapes(&input_shapes); + CHECK_EQ(2, input_shapes.size()); + + LayerParameter* input_layer_param = net_param->add_layer(); + input_layer_param->set_type("Input"); + InputParameter* input_param = input_layer_param->mutable_input_param(); + + input_layer_param->add_top("c_0"); + input_param->add_shape()->CopyFrom(input_shapes[0]); + + input_layer_param->add_top("h_0"); + input_param->add_shape()->CopyFrom(input_shapes[1]); + + LayerParameter* cont_slice_param = net_param->add_layer(); + cont_slice_param->CopyFrom(slice_param); + cont_slice_param->set_name("cont_slice"); + cont_slice_param->add_bottom("cont"); + cont_slice_param->mutable_slice_param()->set_axis(0); + + // Add layer to transform all timesteps of x to the hidden state dimension. + // W_xc_x = W_xc * x + b_c + { + LayerParameter* x_transform_param = net_param->add_layer(); + x_transform_param->CopyFrom(biased_hidden_param); + x_transform_param->set_name("x_transform"); + x_transform_param->add_param()->set_name("W_xc"); + x_transform_param->add_param()->set_name("b_c"); + x_transform_param->add_bottom("x"); + x_transform_param->add_top("W_xc_x"); + x_transform_param->add_propagate_down(true); + } + + if (this->static_input_) { + // Add layer to transform x_static to the gate dimension. + // W_xc_x_static = W_xc_static * x_static + LayerParameter* x_static_transform_param = net_param->add_layer(); + x_static_transform_param->CopyFrom(hidden_param); + x_static_transform_param->mutable_inner_product_param()->set_axis(1); + x_static_transform_param->set_name("W_xc_x_static"); + x_static_transform_param->add_param()->set_name("W_xc_static"); + x_static_transform_param->add_bottom("x_static"); + x_static_transform_param->add_top("W_xc_x_static_preshape"); + x_static_transform_param->add_propagate_down(true); + + LayerParameter* reshape_param = net_param->add_layer(); + reshape_param->set_type("Reshape"); + BlobShape* new_shape = + reshape_param->mutable_reshape_param()->mutable_shape(); + new_shape->add_dim(1); // One timestep. + // Should infer this->N as the dimension so we can reshape on batch size. + new_shape->add_dim(-1); + new_shape->add_dim( + x_static_transform_param->inner_product_param().num_output()); + reshape_param->set_name("W_xc_x_static_reshape"); + reshape_param->add_bottom("W_xc_x_static_preshape"); + reshape_param->add_top("W_xc_x_static"); + } + + LayerParameter* x_slice_param = net_param->add_layer(); + x_slice_param->CopyFrom(slice_param); + x_slice_param->add_bottom("W_xc_x"); + x_slice_param->set_name("W_xc_x_slice"); + + LayerParameter output_concat_layer; + output_concat_layer.set_name("h_concat"); + output_concat_layer.set_type("Concat"); + output_concat_layer.add_top("h"); + output_concat_layer.mutable_concat_param()->set_axis(0); + + for (int t = 1; t <= this->T_; ++t) { + string tm1s = format_int(t - 1); + string ts = format_int(t); + + cont_slice_param->add_top("cont_" + ts); + x_slice_param->add_top("W_xc_x_" + ts); + + // Add layers to flush the hidden state when beginning a new + // sequence, as indicated by cont_t. + // h_conted_{t-1} := cont_t * h_{t-1} + // + // Normally, cont_t is binary (i.e., 0 or 1), so: + // h_conted_{t-1} := h_{t-1} if cont_t == 1 + // 0 otherwise + { + LayerParameter* cont_h_param = net_param->add_layer(); + cont_h_param->CopyFrom(scale_param); + cont_h_param->set_name("h_conted_" + tm1s); + cont_h_param->add_bottom("h_" + tm1s); + cont_h_param->add_bottom("cont_" + ts); + cont_h_param->add_top("h_conted_" + tm1s); + } + + // Add layer to compute + // W_hc_h_{t-1} := W_hc * h_conted_{t-1} + { + LayerParameter* w_param = net_param->add_layer(); + w_param->CopyFrom(hidden_param); + w_param->set_name("transform_" + ts); + w_param->add_param()->set_name("W_hc"); + w_param->add_bottom("h_conted_" + tm1s); + w_param->add_top("W_hc_h_" + tm1s); + w_param->mutable_inner_product_param()->set_axis(2); + } + + // Add the outputs of the linear transformations to compute the gate input. + // gate_input_t := W_hc * h_conted_{t-1} + W_xc * x_t + b_c + // = W_hc_h_{t-1} + W_xc_x_t + b_c + { + LayerParameter* input_sum_layer = net_param->add_layer(); + input_sum_layer->CopyFrom(sum_param); + input_sum_layer->set_name("gate_input_" + ts); + input_sum_layer->add_bottom("W_hc_h_" + tm1s); + input_sum_layer->add_bottom("W_xc_x_" + ts); + if (this->static_input_) { + input_sum_layer->add_bottom("W_xc_x_static"); + } + input_sum_layer->add_top("gate_input_" + ts); + } + + // Add LSTMUnit layer to compute the cell & hidden vectors c_t and h_t. + // Inputs: c_{t-1}, gate_input_t = (i_t, f_t, o_t, g_t), cont_t + // Outputs: c_t, h_t + // [ i_t' ] + // [ f_t' ] := gate_input_t + // [ o_t' ] + // [ g_t' ] + // i_t := \sigmoid[i_t'] + // f_t := \sigmoid[f_t'] + // o_t := \sigmoid[o_t'] + // g_t := \tanh[g_t'] + // c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t) + // h_t := o_t .* \tanh[c_t] + { + LayerParameter* lstm_unit_param = net_param->add_layer(); + lstm_unit_param->set_type("LSTMUnit"); + lstm_unit_param->add_bottom("c_" + tm1s); + lstm_unit_param->add_bottom("gate_input_" + ts); + lstm_unit_param->add_bottom("cont_" + ts); + lstm_unit_param->add_top("c_" + ts); + lstm_unit_param->add_top("h_" + ts); + lstm_unit_param->set_name("unit_" + ts); + } + output_concat_layer.add_bottom("h_" + ts); + } // for (int t = 1; t <= this->T_; ++t) + + { + LayerParameter* c_T_copy_param = net_param->add_layer(); + c_T_copy_param->CopyFrom(split_param); + c_T_copy_param->add_bottom("c_" + format_int(this->T_)); + c_T_copy_param->add_top("c_T"); + } + net_param->add_layer()->CopyFrom(output_concat_layer); +} + +INSTANTIATE_CLASS(LSTMLayer); +REGISTER_LAYER_CLASS(LSTM); + +} // namespace caffe diff --git a/src/caffe/layers/lstm_unit_layer.cpp b/src/caffe/layers/lstm_unit_layer.cpp new file mode 100644 index 000000000..277c031ad --- /dev/null +++ b/src/caffe/layers/lstm_unit_layer.cpp @@ -0,0 +1,131 @@ +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/lstm_layer.hpp" + +namespace caffe { + +template +inline Dtype sigmoid(Dtype x) { + return 1. / (1. + exp(-x)); +} + +template +inline Dtype tanh(Dtype x) { + return 2. * sigmoid(2. * x) - 1.; +} + +template +void LSTMUnitLayer::Reshape(const vector*>& bottom, + const vector*>& top) { + const int num_instances = bottom[0]->shape(1); + for (int i = 0; i < bottom.size(); ++i) { + if (i == 2) { + CHECK_EQ(2, bottom[i]->num_axes()); + } else { + CHECK_EQ(3, bottom[i]->num_axes()); + } + CHECK_EQ(1, bottom[i]->shape(0)); + CHECK_EQ(num_instances, bottom[i]->shape(1)); + } + hidden_dim_ = bottom[0]->shape(2); + CHECK_EQ(num_instances, bottom[1]->shape(1)); + CHECK_EQ(4 * hidden_dim_, bottom[1]->shape(2)); + top[0]->ReshapeLike(*bottom[0]); + top[1]->ReshapeLike(*bottom[0]); + X_acts_.ReshapeLike(*bottom[1]); +} + +template +void LSTMUnitLayer::Forward_cpu(const vector*>& bottom, + const vector*>& top) { + const int num = bottom[0]->shape(1); + const int x_dim = hidden_dim_ * 4; + const Dtype* C_prev = bottom[0]->cpu_data(); + const Dtype* X = bottom[1]->cpu_data(); + const Dtype* cont = bottom[2]->cpu_data(); + Dtype* C = top[0]->mutable_cpu_data(); + Dtype* H = top[1]->mutable_cpu_data(); + for (int n = 0; n < num; ++n) { + for (int d = 0; d < hidden_dim_; ++d) { + const Dtype i = sigmoid(X[d]); + const Dtype f = (*cont == 0) ? 0 : + (*cont * sigmoid(X[1 * hidden_dim_ + d])); + const Dtype o = sigmoid(X[2 * hidden_dim_ + d]); + const Dtype g = tanh(X[3 * hidden_dim_ + d]); + const Dtype c_prev = C_prev[d]; + const Dtype c = f * c_prev + i * g; + C[d] = c; + const Dtype tanh_c = tanh(c); + H[d] = o * tanh_c; + } + C_prev += hidden_dim_; + X += x_dim; + C += hidden_dim_; + H += hidden_dim_; + ++cont; + } +} + +template +void LSTMUnitLayer::Backward_cpu(const vector*>& top, + const vector& propagate_down, const vector*>& bottom) { + CHECK(!propagate_down[2]) << "Cannot backpropagate to sequence indicators."; + if (!propagate_down[0] && !propagate_down[1]) { return; } + + const int num = bottom[0]->shape(1); + const int x_dim = hidden_dim_ * 4; + const Dtype* C_prev = bottom[0]->cpu_data(); + const Dtype* X = bottom[1]->cpu_data(); + const Dtype* cont = bottom[2]->cpu_data(); + const Dtype* C = top[0]->cpu_data(); + const Dtype* H = top[1]->cpu_data(); + const Dtype* C_diff = top[0]->cpu_diff(); + const Dtype* H_diff = top[1]->cpu_diff(); + Dtype* C_prev_diff = bottom[0]->mutable_cpu_diff(); + Dtype* X_diff = bottom[1]->mutable_cpu_diff(); + for (int n = 0; n < num; ++n) { + for (int d = 0; d < hidden_dim_; ++d) { + const Dtype i = sigmoid(X[d]); + const Dtype f = (*cont == 0) ? 0 : + (*cont * sigmoid(X[1 * hidden_dim_ + d])); + const Dtype o = sigmoid(X[2 * hidden_dim_ + d]); + const Dtype g = tanh(X[3 * hidden_dim_ + d]); + const Dtype c_prev = C_prev[d]; + const Dtype c = C[d]; + const Dtype tanh_c = tanh(c); + Dtype* c_prev_diff = C_prev_diff + d; + Dtype* i_diff = X_diff + d; + Dtype* f_diff = X_diff + 1 * hidden_dim_ + d; + Dtype* o_diff = X_diff + 2 * hidden_dim_ + d; + Dtype* g_diff = X_diff + 3 * hidden_dim_ + d; + const Dtype c_term_diff = + C_diff[d] + H_diff[d] * o * (1 - tanh_c * tanh_c); + *c_prev_diff = c_term_diff * f; + *i_diff = c_term_diff * g * i * (1 - i); + *f_diff = c_term_diff * c_prev * f * (1 - f); + *o_diff = H_diff[d] * tanh_c * o * (1 - o); + *g_diff = c_term_diff * i * (1 - g * g); + } + C_prev += hidden_dim_; + X += x_dim; + C += hidden_dim_; + H += hidden_dim_; + C_diff += hidden_dim_; + H_diff += hidden_dim_; + X_diff += x_dim; + C_prev_diff += hidden_dim_; + ++cont; + } +} + +#ifdef CPU_ONLY +STUB_GPU(LSTMUnitLayer); +#endif + +INSTANTIATE_CLASS(LSTMUnitLayer); +REGISTER_LAYER_CLASS(LSTMUnit); + +} // namespace caffe diff --git a/src/caffe/layers/lstm_unit_layer.cu b/src/caffe/layers/lstm_unit_layer.cu new file mode 100644 index 000000000..15bb451d9 --- /dev/null +++ b/src/caffe/layers/lstm_unit_layer.cu @@ -0,0 +1,154 @@ +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/layers/lstm_layer.hpp" + +namespace caffe { + +template +__device__ Dtype sigmoid(const Dtype x) { + return Dtype(1) / (Dtype(1) + exp(-x)); +} + +template +__device__ Dtype tanh(const Dtype x) { + return Dtype(2) * sigmoid(Dtype(2) * x) - Dtype(1); +} + +template +__global__ void LSTMActsForward(const int nthreads, const int dim, + const Dtype* X, Dtype* X_acts) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int x_dim = 4 * dim; + const int d = index % x_dim; + if (d < 3 * dim) { + X_acts[index] = sigmoid(X[index]); + } else { + X_acts[index] = tanh(X[index]); + } + } +} + +template +__global__ void LSTMUnitForward(const int nthreads, const int dim, + const Dtype* C_prev, const Dtype* X, const Dtype* cont, + Dtype* C, Dtype* H) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int n = index / dim; + const int d = index % dim; + const Dtype* X_offset = X + 4 * dim * n; + const Dtype i = X_offset[d]; + const Dtype f = X_offset[1 * dim + d]; + const Dtype o = X_offset[2 * dim + d]; + const Dtype g = X_offset[3 * dim + d]; + const Dtype c_prev = C_prev[index]; + const Dtype c = cont[n] * f * c_prev + i * g; + C[index] = c; + const Dtype tanh_c = tanh(c); + H[index] = o * tanh_c; + } +} + +template +void LSTMUnitLayer::Forward_gpu(const vector*>& bottom, + const vector*>& top) { + const int count = top[1]->count(); + const Dtype* C_prev = bottom[0]->gpu_data(); + const Dtype* X = bottom[1]->gpu_data(); + const Dtype* cont = bottom[2]->gpu_data(); + Dtype* X_acts = X_acts_.mutable_gpu_data(); + Dtype* C = top[0]->mutable_gpu_data(); + Dtype* H = top[1]->mutable_gpu_data(); + const int X_count = bottom[1]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + LSTMActsForward<<>>( + X_count, hidden_dim_, X, X_acts); + CUDA_POST_KERNEL_CHECK; + // NOLINT_NEXT_LINE(whitespace/operators) + LSTMUnitForward<<>>( + count, hidden_dim_, C_prev, X_acts, cont, C, H); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void LSTMUnitBackward(const int nthreads, const int dim, + const Dtype* C_prev, const Dtype* X, const Dtype* C, const Dtype* H, + const Dtype* cont, const Dtype* C_diff, const Dtype* H_diff, + Dtype* C_prev_diff, Dtype* X_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int n = index / dim; + const int d = index % dim; + const Dtype* X_offset = X + 4 * dim * n; + const Dtype i = X_offset[d]; + const Dtype f = X_offset[1 * dim + d]; + const Dtype o = X_offset[2 * dim + d]; + const Dtype g = X_offset[3 * dim + d]; + const Dtype c_prev = C_prev[index]; + const Dtype c = C[index]; + const Dtype tanh_c = tanh(c); + Dtype* c_prev_diff = C_prev_diff + index; + Dtype* X_diff_offset = X_diff + 4 * dim * n; + Dtype* i_diff = X_diff_offset + d; + Dtype* f_diff = X_diff_offset + 1 * dim + d; + Dtype* o_diff = X_diff_offset + 2 * dim + d; + Dtype* g_diff = X_diff_offset + 3 * dim + d; + const Dtype c_term_diff = + C_diff[index] + H_diff[index] * o * (1 - tanh_c * tanh_c); + const Dtype cont_n = cont[n]; + *c_prev_diff = cont_n * c_term_diff * f; + *i_diff = c_term_diff * g; + *f_diff = cont_n * c_term_diff * c_prev; + *o_diff = H_diff[index] * tanh_c; + *g_diff = c_term_diff * i; + } +} + +template +__global__ void LSTMActsBackward(const int nthreads, const int dim, + const Dtype* X_acts, const Dtype* X_acts_diff, Dtype* X_diff) { + CUDA_KERNEL_LOOP(index, nthreads) { + const int x_dim = 4 * dim; + const int d = index % x_dim; + const Dtype X_act = X_acts[index]; + if (d < 3 * dim) { + X_diff[index] = X_acts_diff[index] * X_act * (Dtype(1) - X_act); + } else { + X_diff[index] = X_acts_diff[index] * (Dtype(1) - X_act * X_act); + } + } +} + +template +void LSTMUnitLayer::Backward_gpu(const vector*>& top, + const vector& propagate_down, + const vector*>& bottom) { + CHECK(!propagate_down[2]) << "Cannot backpropagate to sequence indicators."; + if (!propagate_down[0] && !propagate_down[1]) { return; } + + const int count = top[1]->count(); + const Dtype* C_prev = bottom[0]->gpu_data(); + const Dtype* X_acts = X_acts_.gpu_data(); + const Dtype* cont = bottom[2]->gpu_data(); + const Dtype* C = top[0]->gpu_data(); + const Dtype* H = top[1]->gpu_data(); + const Dtype* C_diff = top[0]->gpu_diff(); + const Dtype* H_diff = top[1]->gpu_diff(); + Dtype* C_prev_diff = bottom[0]->mutable_gpu_diff(); + Dtype* X_acts_diff = X_acts_.mutable_gpu_diff(); + LSTMUnitBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>(count, hidden_dim_, + C_prev, X_acts, C, H, cont, C_diff, H_diff, C_prev_diff, X_acts_diff); + CUDA_POST_KERNEL_CHECK; + const int X_count = bottom[1]->count(); + Dtype* X_diff = bottom[1]->mutable_gpu_diff(); + LSTMActsBackward // NOLINT_NEXT_LINE(whitespace/operators) + <<>>( + X_count, hidden_dim_, X_acts, X_acts_diff, X_diff); + CUDA_POST_KERNEL_CHECK; +} + +INSTANTIATE_LAYER_GPU_FUNCS(LSTMUnitLayer); + +} // namespace caffe diff --git a/src/caffe/test/test_lstm_layer.cpp b/src/caffe/test/test_lstm_layer.cpp new file mode 100644 index 000000000..51905baaf --- /dev/null +++ b/src/caffe/test/test_lstm_layer.cpp @@ -0,0 +1,288 @@ +#include +#include + +#include "gtest/gtest.h" + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layers/lstm_layer.hpp" + +#include "caffe/test/test_caffe_main.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +namespace caffe { + +template +class LSTMLayerTest : public MultiDeviceTest { + typedef typename TypeParam::Dtype Dtype; + + protected: + LSTMLayerTest() : num_output_(7) { + blob_bottom_vec_.push_back(&blob_bottom_); + blob_bottom_vec_.push_back(&blob_bottom_cont_); + blob_top_vec_.push_back(&blob_top_); + unit_blob_bottom_vec_.push_back(&unit_blob_bottom_c_prev_); + unit_blob_bottom_vec_.push_back(&unit_blob_bottom_x_); + unit_blob_bottom_vec_.push_back(&unit_blob_bottom_cont_); + unit_blob_top_vec_.push_back(&unit_blob_top_c_); + unit_blob_top_vec_.push_back(&unit_blob_top_h_); + + ReshapeBlobs(1, 3); + + layer_param_.mutable_recurrent_param()->set_num_output(num_output_); + FillerParameter* weight_filler = + layer_param_.mutable_recurrent_param()->mutable_weight_filler(); + weight_filler->set_type("gaussian"); + weight_filler->set_std(0.2); + FillerParameter* bias_filler = + layer_param_.mutable_recurrent_param()->mutable_bias_filler(); + bias_filler->set_type("gaussian"); + bias_filler->set_std(0.1); + + layer_param_.set_phase(TEST); + } + + void ReshapeBlobs(int num_timesteps, int num_instances) { + blob_bottom_.Reshape(num_timesteps, num_instances, 3, 2); + blob_bottom_static_.Reshape(num_instances, 2, 3, 4); + vector shape(2); + shape[0] = num_timesteps; + shape[1] = num_instances; + blob_bottom_cont_.Reshape(shape); + shape.push_back(num_output_); + + shape[0] = 1; shape[1] = num_instances; shape[2] = 4 * num_output_; + unit_blob_bottom_x_.Reshape(shape); + shape[0] = 1; shape[1] = num_instances; shape[2] = num_output_; + unit_blob_bottom_c_prev_.Reshape(shape); + shape.resize(2); + shape[0] = 1; shape[1] = num_instances; + unit_blob_bottom_cont_.Reshape(shape); + + FillerParameter filler_param; + filler_param.set_min(-1); + filler_param.set_max(1); + UniformFiller filler(filler_param); + filler.Fill(&blob_bottom_); + filler.Fill(&unit_blob_bottom_c_prev_); + filler.Fill(&unit_blob_bottom_x_); + } + + int num_output_; + LayerParameter layer_param_; + Blob blob_bottom_; + Blob blob_bottom_cont_; + Blob blob_bottom_static_; + Blob blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; + + Blob unit_blob_bottom_cont_; + Blob unit_blob_bottom_c_prev_; + Blob unit_blob_bottom_x_; + Blob unit_blob_top_c_; + Blob unit_blob_top_h_; + vector*> unit_blob_bottom_vec_; + vector*> unit_blob_top_vec_; +}; + +TYPED_TEST_CASE(LSTMLayerTest, TestDtypesAndDevices); + +TYPED_TEST(LSTMLayerTest, TestSetUp) { + typedef typename TypeParam::Dtype Dtype; + LSTMLayer layer(this->layer_param_); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + vector expected_top_shape = this->blob_bottom_.shape(); + expected_top_shape.resize(3); + expected_top_shape[2] = this->num_output_; + EXPECT_TRUE(this->blob_top_.shape() == expected_top_shape); +} + +TYPED_TEST(LSTMLayerTest, TestForward) { + typedef typename TypeParam::Dtype Dtype; + const int kNumTimesteps = 3; + const int num = this->blob_bottom_.shape(1); + this->ReshapeBlobs(kNumTimesteps, num); + + // Fill the cont blob with <0, 1, 1, ..., 1>, + // indicating a sequence that begins at the first timestep + // then continues for the rest of the sequence. + for (int t = 0; t < kNumTimesteps; ++t) { + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[t * num + n] = t > 0; + } + } + + // Process the full sequence in a single batch. + FillerParameter filler_param; + filler_param.set_mean(0); + filler_param.set_std(1); + GaussianFiller sequence_filler(filler_param); + Caffe::set_random_seed(1); + sequence_filler.Fill(&this->blob_bottom_); + shared_ptr > layer(new LSTMLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + LOG(INFO) << "Calling forward for full sequence LSTM"; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + + // Copy the inputs and outputs to reuse/check them later. + Blob bottom_copy(this->blob_bottom_.shape()); + bottom_copy.CopyFrom(this->blob_bottom_); + Blob top_copy(this->blob_top_.shape()); + top_copy.CopyFrom(this->blob_top_); + + // Process the batch one timestep at a time; + // check that we get the same result. + this->ReshapeBlobs(1, num); + layer.reset(new LSTMLayer(this->layer_param_)); + Caffe::set_random_seed(1701); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + const int bottom_count = this->blob_bottom_.count(); + const int top_count = this->blob_top_.count(); + const Dtype kEpsilon = 1e-5; + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = t > 0; + } + LOG(INFO) << "Calling forward for LSTM timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + ASSERT_LT(t * top_count + i, top_copy.count()); + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } + } + + // Process the batch one timestep at a time with all cont blobs set to 0. + // Check that we get a different result, except in the first timestep. + Caffe::set_random_seed(1701); + layer.reset(new LSTMLayer(this->layer_param_)); + layer->SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + for (int t = 0; t < kNumTimesteps; ++t) { + caffe_copy(bottom_count, bottom_copy.cpu_data() + t * bottom_count, + this->blob_bottom_.mutable_cpu_data()); + for (int n = 0; n < num; ++n) { + this->blob_bottom_cont_.mutable_cpu_data()[n] = 0; + } + LOG(INFO) << "Calling forward for LSTM timestep " << t; + layer->Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < top_count; ++i) { + if (t == 0) { + EXPECT_NEAR(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i], kEpsilon) + << "t = " << t << "; i = " << i; + } else { + EXPECT_NE(this->blob_top_.cpu_data()[i], + top_copy.cpu_data()[t * top_count + i]) + << "t = " << t << "; i = " << i; + } + } + } +} + +TYPED_TEST(LSTMLayerTest, TestLSTMUnitSetUp) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LSTMUnitLayer layer(layer_param); + layer.SetUp(this->unit_blob_bottom_vec_, this->unit_blob_top_vec_); + const int num_axes = this->unit_blob_bottom_c_prev_.num_axes(); + ASSERT_EQ(num_axes, this->unit_blob_top_c_.num_axes()); + ASSERT_EQ(num_axes, this->unit_blob_top_h_.num_axes()); + for (int i = 0; i < num_axes; ++i) { + EXPECT_EQ(this->unit_blob_bottom_c_prev_.shape(i), + this->unit_blob_top_c_.shape(i)); + EXPECT_EQ(this->unit_blob_bottom_c_prev_.shape(i), + this->unit_blob_top_h_.shape(i)); + } +} + +TYPED_TEST(LSTMLayerTest, TestLSTMUnitGradient) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LSTMUnitLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + Dtype* cont_data = this->blob_bottom_cont_.mutable_cpu_data(); + cont_data[0] = 0; + cont_data[1] = 0; + cont_data[2] = 0; + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 1); +} + +TYPED_TEST(LSTMLayerTest, TestLSTMUnitGradientNonZeroCont) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter layer_param; + LSTMUnitLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + Dtype* cont_data = this->blob_bottom_cont_.mutable_cpu_data(); + cont_data[0] = 1; + cont_data[1] = 0; + cont_data[2] = 1; + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->unit_blob_bottom_vec_, + this->unit_blob_top_vec_, 1); +} + +TYPED_TEST(LSTMLayerTest, TestGradient) { + typedef typename TypeParam::Dtype Dtype; + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(LSTMLayerTest, TestGradientNonZeroCont) { + typedef typename TypeParam::Dtype Dtype; + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(LSTMLayerTest, TestGradientNonZeroContBufferSize2) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); +} + +TYPED_TEST(LSTMLayerTest, TestGradientNonZeroContBufferSize2WithStaticInput) { + typedef typename TypeParam::Dtype Dtype; + this->ReshapeBlobs(2, 2); + FillerParameter filler_param; + UniformFiller filler(filler_param); + filler.Fill(&this->blob_bottom_); + filler.Fill(&this->blob_bottom_static_); + this->blob_bottom_vec_.push_back(&this->blob_bottom_static_); + LSTMLayer layer(this->layer_param_); + GradientChecker checker(1e-2, 1e-3); + for (int i = 0; i < this->blob_bottom_cont_.count(); ++i) { + this->blob_bottom_cont_.mutable_cpu_data()[i] = i > 2; + } + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 0); + checker.CheckGradientExhaustive(&layer, this->blob_bottom_vec_, + this->blob_top_vec_, 2); +} + + +} // namespace caffe From 7e7631f27e4145b9838b17d46bb1ffc42279b1e4 Mon Sep 17 00:00:00 2001 From: Chuck Cho Date: Thu, 2 Jun 2016 14:35:14 -0400 Subject: [PATCH 275/458] Fixing a typo --- tools/extract_features.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/extract_features.cpp b/tools/extract_features.cpp index 704467250..51c791e40 100644 --- a/tools/extract_features.cpp +++ b/tools/extract_features.cpp @@ -130,7 +130,7 @@ int feature_extraction_pipeline(int argc, char** argv) { txns.push_back(txn); } - LOG(ERROR)<< "Extacting Features"; + LOG(ERROR)<< "Extracting Features"; Datum datum; std::vector image_indices(num_features, 0); From 742c93f31be4c874aa5fd0103f25f8a2f8d4d63d Mon Sep 17 00:00:00 2001 From: philkr Date: Mon, 23 May 2016 20:09:45 -0700 Subject: [PATCH 276/458] Exposing load_hdf5 and save_hdf5 to python --- python/caffe/_caffe.cpp | 12 +++++++++++- python/caffe/test/test_net.py | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 32b5d9210..48a0c8f2e 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -114,6 +114,14 @@ void Net_Save(const Net& net, string filename) { WriteProtoToBinaryFile(net_param, filename.c_str()); } +void Net_SaveHDF5(const Net& net, string filename) { + net.ToHDF5(filename); +} + +void Net_LoadHDF5(Net* net, string filename) { + net->CopyTrainedLayersFromHDF5(filename.c_str()); +} + void Net_SetInputArrays(Net* net, bp::object data_obj, bp::object labels_obj) { // check that this network has an input MemoryDataLayer @@ -267,7 +275,9 @@ BOOST_PYTHON_MODULE(_caffe) { bp::return_value_policy())) .def("_set_input_arrays", &Net_SetInputArrays, bp::with_custodian_and_ward<1, 2, bp::with_custodian_and_ward<1, 3> >()) - .def("save", &Net_Save); + .def("save", &Net_Save) + .def("save_hdf5", &Net_SaveHDF5) + .def("load_hdf5", &Net_LoadHDF5); BP_REGISTER_SHARED_PTR_TO_PYTHON(Net); bp::class_, shared_ptr >, boost::noncopyable>( diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index aad828aa8..4cacfcd05 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -79,3 +79,17 @@ def test_save_and_read(self): for i in range(len(self.net.params[name])): self.assertEqual(abs(self.net.params[name][i].data - net2.params[name][i].data).sum(), 0) + + def test_save_hdf5(self): + f = tempfile.NamedTemporaryFile(mode='w+', delete=False) + f.close() + self.net.save_hdf5(f.name) + net_file = simple_net_file(self.num_output) + net2 = caffe.Net(net_file, caffe.TRAIN) + net2.load_hdf5(f.name) + os.remove(net_file) + os.remove(f.name) + for name in self.net.params: + for i in range(len(self.net.params[name])): + self.assertEqual(abs(self.net.params[name][i].data + - net2.params[name][i].data).sum(), 0) From d167e61a23a54de529d51731fbe543ff4cec0d3c Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 1 Jun 2016 09:50:57 -0700 Subject: [PATCH 277/458] Add level and stages to Net constructor This internal functionality will be exposed through the various interfaces in subsequent commits Also adds C++ tests for all-in-one nets --- include/caffe/net.hpp | 1 + src/caffe/net.cpp | 11 +++- src/caffe/test/test_net.cpp | 128 ++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 1 deletion(-) diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 0addb3c2a..493bdf294 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -25,6 +25,7 @@ class Net { public: explicit Net(const NetParameter& param, const Net* root_net = NULL); explicit Net(const string& param_file, Phase phase, + const int level = 0, const vector* stages = NULL, const Net* root_net = NULL); virtual ~Net() {} diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index f0bf59493..644cb7e97 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -28,11 +28,20 @@ Net::Net(const NetParameter& param, const Net* root_net) } template -Net::Net(const string& param_file, Phase phase, const Net* root_net) +Net::Net(const string& param_file, Phase phase, + const int level, const vector* stages, + const Net* root_net) : root_net_(root_net) { NetParameter param; ReadNetParamsFromTextFileOrDie(param_file, ¶m); + // Set phase, stages and level param.mutable_state()->set_phase(phase); + if (stages != NULL) { + for (int i = 0; i < stages->size(); i++) { + param.mutable_state()->add_stage((*stages)[i]); + } + } + param.mutable_state()->set_level(level); Init(param); } diff --git a/src/caffe/test/test_net.cpp b/src/caffe/test/test_net.cpp index 92fd317fe..24b957f2a 100644 --- a/src/caffe/test/test_net.cpp +++ b/src/caffe/test/test_net.cpp @@ -9,6 +9,7 @@ #include "caffe/common.hpp" #include "caffe/filler.hpp" #include "caffe/net.hpp" +#include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/test/test_caffe_main.hpp" @@ -29,6 +30,17 @@ class NetTest : public MultiDeviceTest { net_.reset(new Net(param)); } + virtual void InitNetFromProtoFileWithState(const string& proto, + Phase phase = caffe::TRAIN, const int level = 0, + const vector* stages = NULL) { + NetParameter param; + CHECK(google::protobuf::TextFormat::ParseFromString(proto, ¶m)); + string param_file; + MakeTempFilename(¶m_file); + WriteProtoToTextFile(param, param_file); + net_.reset(new Net(param_file, phase, level, stages)); + } + virtual void CopyNetBlobs(const bool copy_diff, vector > >* blobs_copy) { CHECK(net_); @@ -771,6 +783,62 @@ class NetTest : public MultiDeviceTest { InitNetFromProtoString(proto); } + virtual void InitAllInOneNet(Phase phase = caffe::TRAIN, + const int level = 0, const vector* stages = NULL) { + string proto = + "name: 'All-in-one Network'" + "layer { " + " name: 'train-data' " + " type: 'DummyData' " + " top: 'data' " + " top: 'label' " + " dummy_data_param { " + " shape { dim: 1 dim: 10 } " + " shape { dim: 1 dim: 1 } " + " } " + " include { phase: TRAIN stage: 'train' } " + "} " + "layer { " + " name: 'val-data' " + " type: 'DummyData' " + " top: 'data' " + " top: 'label' " + " dummy_data_param { " + " shape { dim: 1 dim: 10 } " + " shape { dim: 1 dim: 1 } " + " } " + " include { phase: TEST stage: 'val' } " + "} " + "layer { " + " name: 'deploy-data' " + " type: 'Input' " + " top: 'data' " + " input_param { " + " shape { dim: 1 dim: 10 } " + " } " + " include { phase: TEST stage: 'deploy' } " + "} " + "layer { " + " name: 'ip' " + " type: 'InnerProduct' " + " bottom: 'data' " + " top: 'ip' " + " inner_product_param { " + " num_output: 2 " + " } " + "} " + "layer { " + " name: 'loss' " + " type: 'SoftmaxWithLoss' " + " bottom: 'ip' " + " bottom: 'label' " + " top: 'loss' " + " include { phase: TRAIN stage: 'train' } " + " include { phase: TEST stage: 'val' } " + "} "; + InitNetFromProtoFileWithState(proto, phase, level, stages); + } + int seed_; shared_ptr > net_; }; @@ -2473,4 +2541,64 @@ TYPED_TEST(NetTest, TestForcePropagateDown) { } } +TYPED_TEST(NetTest, TestAllInOneNetTrain) { + vector stages; + stages.push_back("train"); + this->InitAllInOneNet(caffe::TRAIN, 0, &stages); + bool found_data = false; + bool found_loss = false; + for (int i = 0; i < this->net_->layers().size(); ++i) { + const string& layer_name = this->net_->layer_names()[i]; + if (layer_name == "train-data") { + found_data = true; + } else if (layer_name == "loss") { + found_loss = true; + } else { + ASSERT_NE(layer_name, "val-data"); + ASSERT_NE(layer_name, "deploy-data"); + } + } + ASSERT_TRUE(found_data); + ASSERT_TRUE(found_loss); +} + +TYPED_TEST(NetTest, TestAllInOneNetVal) { + vector stages; + stages.push_back("val"); + this->InitAllInOneNet(caffe::TEST, 0, &stages); + bool found_data = false; + bool found_loss = false; + for (int i = 0; i < this->net_->layers().size(); ++i) { + const string& layer_name = this->net_->layer_names()[i]; + if (layer_name == "val-data") { + found_data = true; + } else if (layer_name == "loss") { + found_loss = true; + } else { + ASSERT_NE(layer_name, "train-data"); + ASSERT_NE(layer_name, "deploy-data"); + } + } + ASSERT_TRUE(found_data); + ASSERT_TRUE(found_loss); +} + +TYPED_TEST(NetTest, TestAllInOneNetDeploy) { + vector stages; + stages.push_back("deploy"); + this->InitAllInOneNet(caffe::TEST, 0, &stages); + bool found_data = false; + for (int i = 0; i < this->net_->layers().size(); ++i) { + const string& layer_name = this->net_->layer_names()[i]; + if (layer_name == "deploy-data") { + found_data = true; + } else { + ASSERT_NE(layer_name, "train-data"); + ASSERT_NE(layer_name, "val-data"); + ASSERT_NE(layer_name, "loss"); + } + } + ASSERT_TRUE(found_data); +} + } // namespace caffe From 66e84d785a72d66511bffe30c0f016af9103deb8 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 1 Jun 2016 09:56:51 -0700 Subject: [PATCH 278/458] Add phase, level and stages to tools/caffe Adds command-line flags for phase, level and stage train -- override level and stages for test_state from solver test -- set level and stages time -- set phase, level and stages --- tools/caffe.cpp | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 5bb60eb16..9bf4214ad 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -34,6 +34,13 @@ DEFINE_string(solver, "", "The solver definition protocol buffer text file."); DEFINE_string(model, "", "The model definition protocol buffer text file."); +DEFINE_string(phase, "", + "Optional; network phase (TRAIN or TEST). Only used for 'time'."); +DEFINE_int32(level, 0, + "Optional; network level."); +DEFINE_string(stage, "", + "Optional; network stages (not to be confused with phase), " + "separated by ','."); DEFINE_string(snapshot, "", "Optional; the snapshot solver state to resume training."); DEFINE_string(weights, "", @@ -101,6 +108,25 @@ static void get_gpus(vector* gpus) { } } +// Parse phase from flags +caffe::Phase get_phase_from_flags(caffe::Phase default_value) { + if (FLAGS_phase == "") + return default_value; + if (FLAGS_phase == "TRAIN") + return caffe::TRAIN; + if (FLAGS_phase == "TEST") + return caffe::TEST; + LOG(FATAL) << "phase must be \"TRAIN\" or \"TEST\""; + return caffe::TRAIN; // Avoid warning +} + +// Parse stages from flags +vector get_stages_from_flags() { + vector stages; + boost::split(stages, FLAGS_stage, boost::is_any_of(",")); + return stages; +} + // caffe commands to call by // caffe // @@ -156,10 +182,16 @@ int train() { CHECK(!FLAGS_snapshot.size() || !FLAGS_weights.size()) << "Give a snapshot to resume training or weights to finetune " "but not both."; + vector stages = get_stages_from_flags(); caffe::SolverParameter solver_param; caffe::ReadSolverParamsFromTextFileOrDie(FLAGS_solver, &solver_param); + solver_param.mutable_train_state()->set_level(FLAGS_level); + for (int i = 0; i < stages.size(); i++) { + solver_param.mutable_train_state()->add_stage(stages[i]); + } + // If the gpus flag is not provided, allow the mode and device to be set // in the solver prototxt. if (FLAGS_gpu.size() == 0 @@ -229,6 +261,7 @@ RegisterBrewFunction(train); int test() { CHECK_GT(FLAGS_model.size(), 0) << "Need a model definition to score."; CHECK_GT(FLAGS_weights.size(), 0) << "Need model weights to score."; + vector stages = get_stages_from_flags(); // Set device id and mode vector gpus; @@ -247,7 +280,7 @@ int test() { Caffe::set_mode(Caffe::CPU); } // Instantiate the caffe net. - Net caffe_net(FLAGS_model, caffe::TEST); + Net caffe_net(FLAGS_model, caffe::TEST, FLAGS_level, &stages); caffe_net.CopyTrainedLayersFrom(FLAGS_weights); LOG(INFO) << "Running for " << FLAGS_iterations << " iterations."; @@ -300,6 +333,8 @@ RegisterBrewFunction(test); // Time: benchmark the execution time of a model. int time() { CHECK_GT(FLAGS_model.size(), 0) << "Need a model definition to time."; + caffe::Phase phase = get_phase_from_flags(caffe::TRAIN); + vector stages = get_stages_from_flags(); // Set device id and mode vector gpus; @@ -313,7 +348,7 @@ int time() { Caffe::set_mode(Caffe::CPU); } // Instantiate the caffe net. - Net caffe_net(FLAGS_model, caffe::TRAIN); + Net caffe_net(FLAGS_model, phase, FLAGS_level, &stages); // Do a clean forward and backward pass, so that memory allocation are done // and future iterations will be more stable. From 19adc7a79e3acacc777076143357cc0569781cd3 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 1 Jun 2016 10:02:41 -0700 Subject: [PATCH 279/458] Add level and stages to pycaffe Uses Boost.Python's pattern matching to differentiate between constructors Also adds Python tests for all-in-one nets --- python/caffe/_caffe.cpp | 44 +++++-- python/caffe/test/test_net.py | 228 +++++++++++++++++++++++++++++++++- 2 files changed, 263 insertions(+), 9 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 48a0c8f2e..e2726286d 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -86,19 +86,42 @@ void CheckContiguousArray(PyArrayObject* arr, string name, } } -// Net constructor for passing phase as int -shared_ptr > Net_Init( - string param_file, int phase) { - CheckFile(param_file); +// Net constructor +shared_ptr > Net_Init(string network_file, int phase, + const int level, const bp::object& stages, + const bp::object& weights) { + CheckFile(network_file); + + // Convert stages from list to vector + vector stages_vector; + if (!stages.is_none()) { + for (int i = 0; i < len(stages); i++) { + stages_vector.push_back(bp::extract(stages[i])); + } + } + + // Initialize net + shared_ptr > net(new Net(network_file, + static_cast(phase), level, &stages_vector)); + + // Load weights + if (!weights.is_none()) { + std::string weights_file_str = bp::extract(weights); + CheckFile(weights_file_str); + net->CopyTrainedLayersFrom(weights_file_str); + } - shared_ptr > net(new Net(param_file, - static_cast(phase))); return net; } -// Net construct-and-load convenience constructor +// Legacy Net construct-and-load convenience constructor shared_ptr > Net_Init_Load( string param_file, string pretrained_param_file, int phase) { + LOG(WARNING) << "DEPRECATION WARNING - deprecated use of Python interface"; + LOG(WARNING) << "Use this instead (with the named \"weights\"" + << " parameter):"; + LOG(WARNING) << "Net('" << param_file << "', " << phase + << ", weights='" << pretrained_param_file << "')"; CheckFile(param_file); CheckFile(pretrained_param_file); @@ -245,7 +268,12 @@ BOOST_PYTHON_MODULE(_caffe) { bp::class_, shared_ptr >, boost::noncopyable >("Net", bp::no_init) - .def("__init__", bp::make_constructor(&Net_Init)) + // Constructor + .def("__init__", bp::make_constructor(&Net_Init, + bp::default_call_policies(), (bp::arg("network_file"), "phase", + bp::arg("level")=0, bp::arg("stages")=bp::object(), + bp::arg("weights")=bp::object()))) + // Legacy constructor .def("__init__", bp::make_constructor(&Net_Init_Load)) .def("_forward", &Net::ForwardFromTo) .def("_backward", &Net::BackwardFromTo) diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index 4cacfcd05..300aabdee 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -72,7 +72,11 @@ def test_save_and_read(self): f.close() self.net.save(f.name) net_file = simple_net_file(self.num_output) - net2 = caffe.Net(net_file, f.name, caffe.TRAIN) + # Test legacy constructor + # should print deprecation warning + caffe.Net(net_file, f.name, caffe.TRAIN) + # Test named constructor + net2 = caffe.Net(net_file, caffe.TRAIN, weights=f.name) os.remove(net_file) os.remove(f.name) for name in self.net.params: @@ -93,3 +97,225 @@ def test_save_hdf5(self): for i in range(len(self.net.params[name])): self.assertEqual(abs(self.net.params[name][i].data - net2.params[name][i].data).sum(), 0) + +class TestLevels(unittest.TestCase): + + TEST_NET = """ +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { shape { dim: 1 dim: 1 dim: 10 dim: 10 } } +} +layer { + name: "NoLevel" + type: "InnerProduct" + bottom: "data" + top: "NoLevel" + inner_product_param { num_output: 1 } +} +layer { + name: "Level0Only" + type: "InnerProduct" + bottom: "data" + top: "Level0Only" + include { min_level: 0 max_level: 0 } + inner_product_param { num_output: 1 } +} +layer { + name: "Level1Only" + type: "InnerProduct" + bottom: "data" + top: "Level1Only" + include { min_level: 1 max_level: 1 } + inner_product_param { num_output: 1 } +} +layer { + name: "Level>=0" + type: "InnerProduct" + bottom: "data" + top: "Level>=0" + include { min_level: 0 } + inner_product_param { num_output: 1 } +} +layer { + name: "Level>=1" + type: "InnerProduct" + bottom: "data" + top: "Level>=1" + include { min_level: 1 } + inner_product_param { num_output: 1 } +} +""" + + def setUp(self): + self.f = tempfile.NamedTemporaryFile(mode='w+') + self.f.write(self.TEST_NET) + self.f.flush() + + def tearDown(self): + self.f.close() + + def check_net(self, net, blobs): + net_blobs = [b for b in net.blobs.keys() if 'data' not in b] + self.assertEqual(net_blobs, blobs) + + def test_0(self): + net = caffe.Net(self.f.name, caffe.TEST) + self.check_net(net, ['NoLevel', 'Level0Only', 'Level>=0']) + + def test_1(self): + net = caffe.Net(self.f.name, caffe.TEST, level=1) + self.check_net(net, ['NoLevel', 'Level1Only', 'Level>=0', 'Level>=1']) + + +class TestStages(unittest.TestCase): + + TEST_NET = """ +layer { + name: "data" + type: "DummyData" + top: "data" + dummy_data_param { shape { dim: 1 dim: 1 dim: 10 dim: 10 } } +} +layer { + name: "A" + type: "InnerProduct" + bottom: "data" + top: "A" + include { stage: "A" } + inner_product_param { num_output: 1 } +} +layer { + name: "B" + type: "InnerProduct" + bottom: "data" + top: "B" + include { stage: "B" } + inner_product_param { num_output: 1 } +} +layer { + name: "AorB" + type: "InnerProduct" + bottom: "data" + top: "AorB" + include { stage: "A" } + include { stage: "B" } + inner_product_param { num_output: 1 } +} +layer { + name: "AandB" + type: "InnerProduct" + bottom: "data" + top: "AandB" + include { stage: "A" stage: "B" } + inner_product_param { num_output: 1 } +} +""" + + def setUp(self): + self.f = tempfile.NamedTemporaryFile(mode='w+') + self.f.write(self.TEST_NET) + self.f.flush() + + def tearDown(self): + self.f.close() + + def check_net(self, net, blobs): + net_blobs = [b for b in net.blobs.keys() if 'data' not in b] + self.assertEqual(net_blobs, blobs) + + def test_A(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['A']) + self.check_net(net, ['A', 'AorB']) + + def test_B(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['B']) + self.check_net(net, ['B', 'AorB']) + + def test_AandB(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['A', 'B']) + self.check_net(net, ['A', 'B', 'AorB', 'AandB']) + + +class TestAllInOne(unittest.TestCase): + + TEST_NET = """ +layer { + name: "train_data" + type: "DummyData" + top: "data" + top: "label" + dummy_data_param { + shape { dim: 1 dim: 1 dim: 10 dim: 10 } + shape { dim: 1 dim: 1 dim: 1 dim: 1 } + } + include { phase: TRAIN stage: "train" } +} +layer { + name: "val_data" + type: "DummyData" + top: "data" + top: "label" + dummy_data_param { + shape { dim: 1 dim: 1 dim: 10 dim: 10 } + shape { dim: 1 dim: 1 dim: 1 dim: 1 } + } + include { phase: TEST stage: "val" } +} +layer { + name: "deploy_data" + type: "Input" + top: "data" + input_param { shape { dim: 1 dim: 1 dim: 10 dim: 10 } } + include { phase: TEST stage: "deploy" } +} +layer { + name: "ip" + type: "InnerProduct" + bottom: "data" + top: "ip" + inner_product_param { num_output: 2 } +} +layer { + name: "loss" + type: "SoftmaxWithLoss" + bottom: "ip" + bottom: "label" + top: "loss" + include: { phase: TRAIN stage: "train" } + include: { phase: TEST stage: "val" } +} +layer { + name: "pred" + type: "Softmax" + bottom: "ip" + top: "pred" + include: { phase: TEST stage: "deploy" } +} +""" + + def setUp(self): + self.f = tempfile.NamedTemporaryFile(mode='w+') + self.f.write(self.TEST_NET) + self.f.flush() + + def tearDown(self): + self.f.close() + + def check_net(self, net, outputs): + self.assertEqual(list(net.blobs['data'].shape), [1,1,10,10]) + self.assertEqual(net.outputs, outputs) + + def test_train(self): + net = caffe.Net(self.f.name, caffe.TRAIN, stages=['train']) + self.check_net(net, ['loss']) + + def test_val(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['val']) + self.check_net(net, ['loss']) + + def test_deploy(self): + net = caffe.Net(self.f.name, caffe.TEST, stages=['deploy']) + self.check_net(net, ['pred']) + From dec2381cc8d6465f0997cd29b143b3c6e13416ef Mon Sep 17 00:00:00 2001 From: philkr Date: Thu, 3 Sep 2015 14:28:55 -0700 Subject: [PATCH 280/458] Exposing solver callbacks to python --- python/caffe/_caffe.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 48a0c8f2e..334088e8a 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -228,6 +228,27 @@ bp::object BlobVec_add_blob(bp::tuple args, bp::dict kwargs) { return bp::object(); } +template +class PythonCallback: public Solver::Callback { + protected: + bp::object on_start_, on_gradients_ready_; + + public: + PythonCallback(bp::object on_start, bp::object on_gradients_ready) + : on_start_(on_start), on_gradients_ready_(on_gradients_ready) { } + virtual void on_gradients_ready() { + on_gradients_ready_(); + } + virtual void on_start() { + on_start_(); + } +}; +template +void Solver_add_callback(Solver * solver, bp::object on_start, + bp::object on_gradients_ready) { + solver->add_callback(new PythonCallback(on_start, on_gradients_ready)); +} + BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(SolveOverloads, Solve, 0, 1); BOOST_PYTHON_MODULE(_caffe) { @@ -317,6 +338,7 @@ BOOST_PYTHON_MODULE(_caffe) { .add_property("test_nets", bp::make_function(&Solver::test_nets, bp::return_internal_reference<>())) .add_property("iter", &Solver::iter) + .def("add_callback", &Solver_add_callback) .def("solve", static_cast::*)(const char*)>( &Solver::Solve), SolveOverloads()) .def("step", &Solver::Step) From 9f1855273fa27d106b3675d32ec01acb658a80f0 Mon Sep 17 00:00:00 2001 From: Raffi Enficiaud Date: Tue, 21 Jun 2016 13:41:06 +0200 Subject: [PATCH 281/458] Fix glog upstream autoconf --- cmake/External/glog.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/External/glog.cmake b/cmake/External/glog.cmake index a44672f27..f9d0549cd 100644 --- a/cmake/External/glog.cmake +++ b/cmake/External/glog.cmake @@ -37,6 +37,7 @@ if (NOT __GLOG_INCLUDED) GIT_TAG "v0.3.4" UPDATE_COMMAND "" INSTALL_DIR ${gflags_INSTALL} + PATCH_COMMAND autoreconf -i ${glog_PREFIX}/src/glog CONFIGURE_COMMAND env "CFLAGS=${GLOG_C_FLAGS}" "CXXFLAGS=${GLOG_CXX_FLAGS}" ${glog_PREFIX}/src/glog/configure --prefix=${glog_INSTALL} --enable-shared=no --enable-static=yes --with-gflags=${GFLAGS_LIBRARY_DIRS}/.. LOG_DOWNLOAD 1 LOG_CONFIGURE 1 From b29d271b8cd679588618d502add8a4eae2beb853 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 21 Jun 2016 16:22:20 -0700 Subject: [PATCH 282/458] add layer_dict to the python interface --- python/caffe/pycaffe.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index ca6d050e2..4f84605ba 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -43,6 +43,16 @@ def _Net_blob_loss_weights(self): self._blob_loss_weights)) return self._blob_loss_weights_dict +@property +def _Net_layer_dict(self): + """ + An OrderedDict (bottom to top, i.e., input to output) of network + layers indexed by name + """ + if not hasattr(self, '_layer_dict'): + self._layer_dict = OrderedDict(zip(self._layer_names, self.layers)) + return self._layer_dict + @property def _Net_params(self): @@ -311,6 +321,7 @@ def __getitem__(self, name): # Attach methods to Net. Net.blobs = _Net_blobs Net.blob_loss_weights = _Net_blob_loss_weights +Net.layer_dict = _Net_layer_dict Net.params = _Net_params Net.forward = _Net_forward Net.backward = _Net_backward From 118c97ff5890e92b9aa603d925d947d45086b330 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 21 Jun 2016 17:37:55 -0700 Subject: [PATCH 283/458] add clear_param_diffs to the python net interface --- python/caffe/_caffe.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 334088e8a..a7fb886aa 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -271,6 +271,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("_forward", &Net::ForwardFromTo) .def("_backward", &Net::BackwardFromTo) .def("reshape", &Net::Reshape) + .def("clear_param_diffs", &Net::ClearParamDiffs) // The cast is to select a particular overload. .def("copy_from", static_cast::*)(const string)>( &Net::CopyTrainedLayersFrom)) From 892c78dd7833f1818a76d4025076b34946200fa0 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 21 Jun 2016 17:42:31 -0700 Subject: [PATCH 284/458] add unit test for clear_param_diffs --- python/caffe/test/test_net.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index 4cacfcd05..7fb9f475d 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -63,6 +63,17 @@ def test_forward_backward(self): self.net.forward() self.net.backward() + def test_clear_param_diffs(self): + # Run a forward/backward step to have non-zero diffs + self.net.forward() + self.net.backward() + diff = self.net.params["conv"][0].diff + # Check that we have non-zero diffs + self.assertTrue(diff.max() > 0) + self.net.clear_param_diffs() + # Check that the diffs are now 0 + self.assertTrue((diff == 0).all()) + def test_inputs_outputs(self): self.assertEqual(self.net.inputs, []) self.assertEqual(self.net.outputs, ['loss']) From 5417f106c14c782865e2a5484020b8e45a8b2b80 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 21 Jun 2016 16:39:30 -0700 Subject: [PATCH 285/458] add tests for pycaffe's layer_dict --- python/caffe/test/test_net.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index 4cacfcd05..546bd5faa 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -59,6 +59,13 @@ def test_memory(self): for bl in blobs: total += bl.data.sum() + bl.diff.sum() + def test_layer_dict(self): + layer_dict = self.net.layer_dict + self.assertEqual(list(layer_dict.keys()), list(self.net._layer_names)) + for i, name in enumerate(self.net._layer_names): + self.assertEqual(layer_dict[name].type, + self.net.layers[i].type) + def test_forward_backward(self): self.net.forward() self.net.backward() From bdb94577d97da5cf5b6ec046952dbe79e9c886bf Mon Sep 17 00:00:00 2001 From: Alican Bozkurt Date: Tue, 28 Jun 2016 16:28:33 -0400 Subject: [PATCH 286/458] add default value for rms_decay --- src/caffe/proto/caffe.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 1556781cb..6940a705e 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -219,7 +219,7 @@ message SolverParameter { // RMSProp decay value // MeanSquare(t) = rms_decay*MeanSquare(t-1) + (1-rms_decay)*SquareGradient(t) - optional float rms_decay = 38; + optional float rms_decay = 38 [default = 0.99]; // If true, print information about the state of the net that may help with // debugging learning problems. From 80f60dae071fca4457d7a439960385a4579f489d Mon Sep 17 00:00:00 2001 From: Alican Bozkurt Date: Tue, 28 Jun 2016 16:59:36 -0400 Subject: [PATCH 287/458] corrected rmsprop documentation --- docs/tutorial/solver.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/docs/tutorial/solver.md b/docs/tutorial/solver.md index b719f715a..81c626386 100644 --- a/docs/tutorial/solver.md +++ b/docs/tutorial/solver.md @@ -209,18 +209,11 @@ What distinguishes the method from SGD is the weight setting $$ W $$ on which we The **RMSprop** (`type: "RMSProp"`), suggested by Tieleman in a Coursera course lecture, is a gradient-based optimization method (like SGD). The update formulas are $$ -(v_t)_i = -\begin{cases} -(v_{t-1})_i + \delta, &(\nabla L(W_t))_i(\nabla L(W_{t-1}))_i > 0\\ -(v_{t-1})_i \cdot (1-\delta), & \text{else} -\end{cases} +\operatorname{MS}((W_t)_i)= \delta\operatorname{MS}((W_{t-1})_i)+ (1-\delta)(\nabla L(W_t))_i^2 \\ +(W_{t+1})_i= (W_{t})_i -\alpha\frac{(\nabla L(W_t))_i}{\sqrt{\operatorname{MS}((W_t)_i)}} $$ -$$ -(W_{t+1})_i =(W_t)_i - \alpha (v_t)_i, -$$ - -If the gradient updates results in oscillations the gradient is reduced by times $$1-\delta$$. Otherwise it will be increased by $$\delta$$. The default value of $$\delta$$ (`rms_decay`) is set to $$\delta = 0.02$$. +The default value of $$\delta$$ (`rms_decay`) is set to $$\delta=0.99$$. [1] T. Tieleman, and G. Hinton. [RMSProp: Divide the gradient by a running average of its recent magnitude](http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf). From f0b1a9e770594f93fecda9e876faaafaede2b496 Mon Sep 17 00:00:00 2001 From: Carl Doersch Date: Sun, 3 Jul 2016 12:32:19 -0700 Subject: [PATCH 288/458] Add phase support for draw net --- python/caffe/draw.py | 32 +++++++++++++++++++++++++++----- python/draw_net.py | 15 ++++++++++++++- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index 61205ca9f..9eecf6d7b 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -127,7 +127,7 @@ def choose_color_by_layertype(layertype): return color -def get_pydot_graph(caffe_net, rankdir, label_edges=True): +def get_pydot_graph(caffe_net, rankdir, label_edges=True, phase=None): """Create a data structure which represents the `caffe_net`. Parameters @@ -137,6 +137,9 @@ def get_pydot_graph(caffe_net, rankdir, label_edges=True): Direction of graph layout. label_edges : boolean, optional Label the edges (default is True). + phase : {caffe_pb2.Phase.TRAIN, caffe_pb2.Phase.TEST, None} optional + Include layers from this network phase. If None, include all layers. + (the default is None) Returns ------- @@ -148,6 +151,19 @@ def get_pydot_graph(caffe_net, rankdir, label_edges=True): pydot_nodes = {} pydot_edges = [] for layer in caffe_net.layer: + if phase is not None: + included = False + if len(layer.include) == 0: + included = True + if len(layer.include) > 0 and len(layer.exclude) > 0: + raise ValueError('layer ' + layer.name + ' has both include ' + 'and exclude specified.') + for layer_phase in layer.include: + included = included or layer_phase.phase == phase + for layer_phase in layer.exclude: + included = included and not layer_phase.phase == phase + if not included: + continue node_label = get_layer_label(layer, rankdir) node_name = "%s_%s" % (layer.name, layer.type) if (len(layer.bottom) == 1 and len(layer.top) == 1 and @@ -186,7 +202,7 @@ def get_pydot_graph(caffe_net, rankdir, label_edges=True): return pydot_graph -def draw_net(caffe_net, rankdir, ext='png'): +def draw_net(caffe_net, rankdir, ext='png', phase=None): """Draws a caffe net and returns the image string encoded using the given extension. @@ -195,16 +211,19 @@ def draw_net(caffe_net, rankdir, ext='png'): caffe_net : a caffe.proto.caffe_pb2.NetParameter protocol buffer. ext : string, optional The image extension (the default is 'png'). + phase : {caffe_pb2.Phase.TRAIN, caffe_pb2.Phase.TEST, None} optional + Include layers from this network phase. If None, include all layers. + (the default is None) Returns ------- string : Postscript representation of the graph. """ - return get_pydot_graph(caffe_net, rankdir).create(format=ext) + return get_pydot_graph(caffe_net, rankdir, phase=phase).create(format=ext) -def draw_net_to_file(caffe_net, filename, rankdir='LR'): +def draw_net_to_file(caffe_net, filename, rankdir='LR', phase=None): """Draws a caffe net, and saves it to file using the format given as the file extension. Use '.raw' to output raw text that you can manually feed to graphviz to draw graphs. @@ -216,7 +235,10 @@ def draw_net_to_file(caffe_net, filename, rankdir='LR'): The path to a file where the networks visualization will be stored. rankdir : {'LR', 'TB', 'BT'} Direction of graph layout. + phase : {caffe_pb2.Phase.TRAIN, caffe_pb2.Phase.TEST, None} optional + Include layers from this network phase. If None, include all layers. + (the default is None) """ ext = filename[filename.rfind('.')+1:] with open(filename, 'wb') as fid: - fid.write(draw_net(caffe_net, rankdir, ext)) + fid.write(draw_net(caffe_net, rankdir, ext, phase)) diff --git a/python/draw_net.py b/python/draw_net.py index ec76a744d..dfe70d26a 100755 --- a/python/draw_net.py +++ b/python/draw_net.py @@ -28,6 +28,11 @@ def parse_args(): 'http://www.graphviz.org/doc/info/' 'attrs.html#k:rankdir'), default='LR') + parser.add_argument('--phase', + help=('Which network phase to draw: can be TRAIN, ' + 'TEST, or ALL. If ALL, then all layers are drawn ' + 'regardless of phase.'), + default="ALL") args = parser.parse_args() return args @@ -38,7 +43,15 @@ def main(): net = caffe_pb2.NetParameter() text_format.Merge(open(args.input_net_proto_file).read(), net) print('Drawing net to %s' % args.output_image_file) - caffe.draw.draw_net_to_file(net, args.output_image_file, args.rankdir) + phase=None; + if args.phase == "TRAIN": + phase = caffe.TRAIN + elif args.phase == "TEST": + phase = caffe.TEST + elif args.phase != "ALL": + raise ValueError("Unknown phase: " + args.phase) + caffe.draw.draw_net_to_file(net, args.output_image_file, args.rankdir, + phase) if __name__ == '__main__': From f9fd20ea3893c515b19cae6fa3693b1649fb9487 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 8 Jul 2016 12:05:17 -0700 Subject: [PATCH 289/458] Fix Python installation with CMake install target --- python/CMakeLists.txt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index a22641401..bf492a24b 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -22,13 +22,19 @@ if(UNIX OR APPLE) endif() # ---[ Install -file(GLOB files1 *.py requirements.txt) -install(FILES ${files1} DESTINATION python) - -file(GLOB files2 caffe/*.py) -install(FILES ${files2} DESTINATION python/caffe) +# scripts +file(GLOB python_files *.py requirements.txt) +install(FILES ${python_files} DESTINATION python) + +# module +install(DIRECTORY caffe + DESTINATION python + FILES_MATCHING + PATTERN "*.py" + PATTERN "ilsvrc_2012_mean.npy" + PATTERN "test" EXCLUDE + ) + +# _caffe.so install(TARGETS pycaffe DESTINATION python/caffe) -install(DIRECTORY caffe/imagenet caffe/proto caffe/test DESTINATION python/caffe) - - From f1a8470aa21e35a5b2bb83007f8fb7680a354815 Mon Sep 17 00:00:00 2001 From: Nishidha Panpaliya Date: Tue, 17 May 2016 01:14:53 -0500 Subject: [PATCH 290/458] Fix for a random failure in this test due to floating point comparison. So, instead of exact match, used EXPECT_FLOAT_EQ that tolerates some precision while comparing two floats --- src/caffe/test/test_embed_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/test/test_embed_layer.cpp b/src/caffe/test/test_embed_layer.cpp index dc7f5c4aa..13f13a878 100644 --- a/src/caffe/test/test_embed_layer.cpp +++ b/src/caffe/test/test_embed_layer.cpp @@ -124,7 +124,7 @@ TYPED_TEST(EmbedLayerTest, TestForwardWithBias) { top_offset[4] = 0; bias_offset[0] = 0; for (int j = 0; j < kNumOutput; ++j) { - EXPECT_EQ(layer->blobs()[0]->data_at(weight_offset) + + EXPECT_FLOAT_EQ(layer->blobs()[0]->data_at(weight_offset) + layer->blobs()[1]->data_at(bias_offset), this->blob_top_->data_at(top_offset)); ++top_offset[4]; From 35a9a075cdc65c86021dde4d11e3b1c05e27971b Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Wed, 22 Jun 2016 15:13:54 -0700 Subject: [PATCH 291/458] add set_random_seed to the python interface --- python/caffe/__init__.py | 2 +- python/caffe/_caffe.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index e2881b89c..35868a403 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,5 @@ from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver -from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list +from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 334088e8a..3db55ea43 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -51,6 +51,8 @@ const int NPY_DTYPE = NPY_FLOAT32; void set_mode_cpu() { Caffe::set_mode(Caffe::CPU); } void set_mode_gpu() { Caffe::set_mode(Caffe::GPU); } +void set_random_seed(unsigned int seed) { Caffe::set_random_seed(seed); } + // For convenience, check that input files can be opened, and raise an // exception that boost will send to Python if not (caffe could still crash // later if the input files are disturbed before they are actually used, but @@ -260,6 +262,7 @@ BOOST_PYTHON_MODULE(_caffe) { // Caffe utility functions bp::def("set_mode_cpu", &set_mode_cpu); bp::def("set_mode_gpu", &set_mode_gpu); + bp::def("set_random_seed", &set_random_seed); bp::def("set_device", &Caffe::SetDevice); bp::def("layer_type_list", &LayerRegistry::LayerTypeList); From a64cfbd08591db0b061ad7ad39c54cd45c0e252a Mon Sep 17 00:00:00 2001 From: Alessandro Giusti Date: Mon, 11 Jul 2016 20:33:16 +0200 Subject: [PATCH 292/458] Update parse_log.py Aligned output description in docstring with actual output returned by parse_log --- tools/extra/parse_log.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/extra/parse_log.py b/tools/extra/parse_log.py index bb9b65ad6..375b0db73 100755 --- a/tools/extra/parse_log.py +++ b/tools/extra/parse_log.py @@ -16,13 +16,10 @@ def parse_log(path_to_log): """Parse log file - Returns (train_dict_list, train_dict_names, test_dict_list, test_dict_names) + Returns (train_dict_list, test_dict_list) train_dict_list and test_dict_list are lists of dicts that define the table rows - - train_dict_names and test_dict_names are ordered tuples of the column names - for the two dict_lists """ regex_iteration = re.compile('Iteration (\d+)') From 12c74460d3e7c416b869e6b4afa0e5c2e84ec29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20St=C3=A6r=20Nissen?= Date: Tue, 12 Jul 2016 13:17:52 +0200 Subject: [PATCH 293/458] Support for spaces in directories when downloading cifar10 --- data/cifar10/get_cifar10.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/cifar10/get_cifar10.sh b/data/cifar10/get_cifar10.sh index 623c84851..423f10989 100755 --- a/data/cifar10/get_cifar10.sh +++ b/data/cifar10/get_cifar10.sh @@ -2,7 +2,7 @@ # This scripts downloads the CIFAR10 (binary version) data and unzips it. DIR="$( cd "$(dirname "$0")" ; pwd -P )" -cd $DIR +cd "$DIR" echo "Downloading..." From e14b7f7ea597afe532bf1c4d4013f2c63494d7a6 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 21 Jun 2016 14:58:43 -0700 Subject: [PATCH 294/458] improve top_names and bottom_names in pycaffe --- python/caffe/pycaffe.py | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index ca6d050e2..5bae18d9a 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -292,21 +292,31 @@ def _Net_batch(self, blobs): padding]) yield padded_batch - -class _Net_IdNameWrapper: - """ - A simple wrapper that allows the ids propery to be accessed as a dict - indexed by names. Used for top and bottom names +def _Net_get_id_name(func, field): """ - def __init__(self, net, func): - self.net, self.func = net, func + Generic property that maps func to the layer names into an OrderedDict. + + Used for top_names and bottom_names. - def __getitem__(self, name): - # Map the layer name to id - ids = self.func(self.net, list(self.net._layer_names).index(name)) - # Map the blob id to name - id_to_name = list(self.net.blobs) - return [id_to_name[i] for i in ids] + Parameters + ---------- + func: function id -> [id] + field: implementation field name (cache) + + Returns + ------ + A one-parameter function that can be set as a property. + """ + @property + def get_id_name(self): + if not hasattr(self, field): + id_to_name = list(self.blobs) + res = OrderedDict([(self._layer_names[i], + [id_to_name[j] for j in func(self, i)]) + for i in range(len(self.layers))]) + setattr(self, field, res) + return getattr(self, field) + return get_id_name # Attach methods to Net. Net.blobs = _Net_blobs @@ -320,5 +330,5 @@ def __getitem__(self, name): Net._batch = _Net_batch Net.inputs = _Net_inputs Net.outputs = _Net_outputs -Net.top_names = property(lambda n: _Net_IdNameWrapper(n, Net._top_ids)) -Net.bottom_names = property(lambda n: _Net_IdNameWrapper(n, Net._bottom_ids)) +Net.top_names = _Net_get_id_name(Net._top_ids, "_top_names") +Net.bottom_names = _Net_get_id_name(Net._bottom_ids, "_bottom_names") From 7c50a2cb87c6b044f85ced87273d302fb21394f7 Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Tue, 21 Jun 2016 17:17:05 -0700 Subject: [PATCH 295/458] add test for top/bottom names --- python/caffe/test/test_net.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index 4cacfcd05..96821e40c 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -3,6 +3,7 @@ import os import numpy as np import six +from collections import OrderedDict import caffe @@ -67,6 +68,18 @@ def test_inputs_outputs(self): self.assertEqual(self.net.inputs, []) self.assertEqual(self.net.outputs, ['loss']) + def test_top_bottom_names(self): + self.assertEqual(self.net.top_names, + OrderedDict([('data', ['data', 'label']), + ('conv', ['conv']), + ('ip', ['ip']), + ('loss', ['loss'])])) + self.assertEqual(self.net.bottom_names, + OrderedDict([('data', []), + ('conv', ['data']), + ('ip', ['conv']), + ('loss', ['ip', 'label'])])) + def test_save_and_read(self): f = tempfile.NamedTemporaryFile(mode='w+', delete=False) f.close() From d9ad2ef90a1cbaa2b22b229539a14341efe59ee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20St=C3=A6r=20Nissen?= Date: Wed, 13 Jul 2016 11:17:54 +0200 Subject: [PATCH 296/458] Support spaces in path when downloading ILSVRC12 and MNIST --- data/ilsvrc12/get_ilsvrc_aux.sh | 2 +- data/mnist/get_mnist.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/ilsvrc12/get_ilsvrc_aux.sh b/data/ilsvrc12/get_ilsvrc_aux.sh index 90935f250..dc0d0a727 100755 --- a/data/ilsvrc12/get_ilsvrc_aux.sh +++ b/data/ilsvrc12/get_ilsvrc_aux.sh @@ -8,7 +8,7 @@ # - the training splits with labels DIR="$( cd "$(dirname "$0")" ; pwd -P )" -cd $DIR +cd "$DIR" echo "Downloading..." diff --git a/data/mnist/get_mnist.sh b/data/mnist/get_mnist.sh index 6d8752194..ecadffa44 100755 --- a/data/mnist/get_mnist.sh +++ b/data/mnist/get_mnist.sh @@ -2,7 +2,7 @@ # This scripts downloads the mnist data and unzips it. DIR="$( cd "$(dirname "$0")" ; pwd -P )" -cd $DIR +cd "$DIR" echo "Downloading..." From 93d321227f0681165b126d9ca47b211f5d2c1909 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Wed, 13 Jul 2016 15:58:29 -0700 Subject: [PATCH 297/458] Add "set -e" and $@ to example scripts --- examples/cifar10/create_cifar10.sh | 1 + examples/cifar10/train_full.sh | 7 ++++--- examples/cifar10/train_full_sigmoid.sh | 3 ++- examples/cifar10/train_full_sigmoid_bn.sh | 3 ++- examples/cifar10/train_quick.sh | 5 +++-- examples/imagenet/create_imagenet.sh | 1 + examples/imagenet/resume_training.sh | 4 +++- examples/imagenet/train_caffenet.sh | 3 ++- examples/mnist/create_mnist.sh | 1 + examples/mnist/train_lenet.sh | 3 ++- examples/mnist/train_lenet_adam.sh | 3 ++- examples/mnist/train_lenet_consolidated.sh | 3 ++- examples/mnist/train_lenet_rmsprop.sh | 4 +++- examples/mnist/train_mnist_autoencoder.sh | 3 ++- examples/mnist/train_mnist_autoencoder_adadelta.sh | 3 ++- examples/mnist/train_mnist_autoencoder_adagrad.sh | 3 ++- examples/mnist/train_mnist_autoencoder_nesterov.sh | 3 ++- examples/siamese/create_mnist_siamese.sh | 1 + examples/siamese/train_mnist_siamese.sh | 3 ++- 19 files changed, 39 insertions(+), 18 deletions(-) diff --git a/examples/cifar10/create_cifar10.sh b/examples/cifar10/create_cifar10.sh index a42725cb6..7ee1d6ad0 100755 --- a/examples/cifar10/create_cifar10.sh +++ b/examples/cifar10/create_cifar10.sh @@ -1,5 +1,6 @@ #!/usr/bin/env sh # This script converts the cifar data into leveldb format. +set -e EXAMPLE=examples/cifar10 DATA=data/cifar10 diff --git a/examples/cifar10/train_full.sh b/examples/cifar10/train_full.sh index ef112e1f6..06ecc2dcc 100755 --- a/examples/cifar10/train_full.sh +++ b/examples/cifar10/train_full.sh @@ -1,16 +1,17 @@ #!/usr/bin/env sh +set -e TOOLS=./build/tools $TOOLS/caffe train \ - --solver=examples/cifar10/cifar10_full_solver.prototxt + --solver=examples/cifar10/cifar10_full_solver.prototxt $@ # reduce learning rate by factor of 10 $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_full_solver_lr1.prototxt \ - --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate.h5 + --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate.h5 $@ # reduce learning rate by factor of 10 $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_full_solver_lr2.prototxt \ - --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate.h5 + --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate.h5 $@ diff --git a/examples/cifar10/train_full_sigmoid.sh b/examples/cifar10/train_full_sigmoid.sh index 9cff06d3e..9b5d5213b 100755 --- a/examples/cifar10/train_full_sigmoid.sh +++ b/examples/cifar10/train_full_sigmoid.sh @@ -1,7 +1,8 @@ #!/usr/bin/env sh +set -e TOOLS=./build/tools $TOOLS/caffe train \ - --solver=examples/cifar10/cifar10_full_sigmoid_solver.prototxt + --solver=examples/cifar10/cifar10_full_sigmoid_solver.prototxt $@ diff --git a/examples/cifar10/train_full_sigmoid_bn.sh b/examples/cifar10/train_full_sigmoid_bn.sh index 011387c99..05547f3a1 100755 --- a/examples/cifar10/train_full_sigmoid_bn.sh +++ b/examples/cifar10/train_full_sigmoid_bn.sh @@ -1,7 +1,8 @@ #!/usr/bin/env sh +set -e TOOLS=./build/tools $TOOLS/caffe train \ - --solver=examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt + --solver=examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt $@ diff --git a/examples/cifar10/train_quick.sh b/examples/cifar10/train_quick.sh index 6b7d22887..d2b875340 100755 --- a/examples/cifar10/train_quick.sh +++ b/examples/cifar10/train_quick.sh @@ -1,11 +1,12 @@ #!/usr/bin/env sh +set -e TOOLS=./build/tools $TOOLS/caffe train \ - --solver=examples/cifar10/cifar10_quick_solver.prototxt + --solver=examples/cifar10/cifar10_quick_solver.prototxt $@ # reduce learning rate by factor of 10 after 8 epochs $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \ - --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate.h5 + --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate.h5 $@ diff --git a/examples/imagenet/create_imagenet.sh b/examples/imagenet/create_imagenet.sh index e912ac43c..1bf08b1aa 100755 --- a/examples/imagenet/create_imagenet.sh +++ b/examples/imagenet/create_imagenet.sh @@ -1,6 +1,7 @@ #!/usr/bin/env sh # Create the imagenet lmdb inputs # N.B. set the path to the imagenet train + val data dirs +set -e EXAMPLE=examples/imagenet DATA=data/ilsvrc12 diff --git a/examples/imagenet/resume_training.sh b/examples/imagenet/resume_training.sh index bf7945c0f..4aef20436 100755 --- a/examples/imagenet/resume_training.sh +++ b/examples/imagenet/resume_training.sh @@ -1,5 +1,7 @@ #!/usr/bin/env sh +set -e ./build/tools/caffe train \ --solver=models/bvlc_reference_caffenet/solver.prototxt \ - --snapshot=models/bvlc_reference_caffenet/caffenet_train_10000.solverstate.h5 + --snapshot=models/bvlc_reference_caffenet/caffenet_train_10000.solverstate.h5 \ + $@ diff --git a/examples/imagenet/train_caffenet.sh b/examples/imagenet/train_caffenet.sh index 94558ec54..a5094d44a 100755 --- a/examples/imagenet/train_caffenet.sh +++ b/examples/imagenet/train_caffenet.sh @@ -1,4 +1,5 @@ #!/usr/bin/env sh +set -e ./build/tools/caffe train \ - --solver=models/bvlc_reference_caffenet/solver.prototxt + --solver=models/bvlc_reference_caffenet/solver.prototxt $@ diff --git a/examples/mnist/create_mnist.sh b/examples/mnist/create_mnist.sh index 06ecc27de..f5e2e7960 100755 --- a/examples/mnist/create_mnist.sh +++ b/examples/mnist/create_mnist.sh @@ -1,6 +1,7 @@ #!/usr/bin/env sh # This script converts the mnist data into lmdb/leveldb format, # depending on the value assigned to $BACKEND. +set -e EXAMPLE=examples/mnist DATA=data/mnist diff --git a/examples/mnist/train_lenet.sh b/examples/mnist/train_lenet.sh index 1b6bf7d97..f7f9b8619 100755 --- a/examples/mnist/train_lenet.sh +++ b/examples/mnist/train_lenet.sh @@ -1,3 +1,4 @@ #!/usr/bin/env sh +set -e -./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt +./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt $@ diff --git a/examples/mnist/train_lenet_adam.sh b/examples/mnist/train_lenet_adam.sh index a32ecf2d9..7b4e90568 100755 --- a/examples/mnist/train_lenet_adam.sh +++ b/examples/mnist/train_lenet_adam.sh @@ -1,3 +1,4 @@ #!/usr/bin/env sh +set -e -./build/tools/caffe train --solver=examples/mnist/lenet_solver_adam.prototxt +./build/tools/caffe train --solver=examples/mnist/lenet_solver_adam.prototxt $@ diff --git a/examples/mnist/train_lenet_consolidated.sh b/examples/mnist/train_lenet_consolidated.sh index c85546789..c5f026668 100755 --- a/examples/mnist/train_lenet_consolidated.sh +++ b/examples/mnist/train_lenet_consolidated.sh @@ -1,4 +1,5 @@ #!/usr/bin/env sh +set -e ./build/tools/caffe train \ - --solver=examples/mnist/lenet_consolidated_solver.prototxt + --solver=examples/mnist/lenet_consolidated_solver.prototxt $@ diff --git a/examples/mnist/train_lenet_rmsprop.sh b/examples/mnist/train_lenet_rmsprop.sh index 621cab238..adfa7ab0f 100755 --- a/examples/mnist/train_lenet_rmsprop.sh +++ b/examples/mnist/train_lenet_rmsprop.sh @@ -1,3 +1,5 @@ #!/usr/bin/env sh +set -e -./build/tools/caffe train --solver=examples/mnist/lenet_solver_rmsprop.prototxt +./build/tools/caffe train \ + --solver=examples/mnist/lenet_solver_rmsprop.prototxt $@ diff --git a/examples/mnist/train_mnist_autoencoder.sh b/examples/mnist/train_mnist_autoencoder.sh index cfd67e82f..724a0f14a 100755 --- a/examples/mnist/train_mnist_autoencoder.sh +++ b/examples/mnist/train_mnist_autoencoder.sh @@ -1,4 +1,5 @@ #!/usr/bin/env sh +set -e ./build/tools/caffe train \ - --solver=examples/mnist/mnist_autoencoder_solver.prototxt + --solver=examples/mnist/mnist_autoencoder_solver.prototxt $@ diff --git a/examples/mnist/train_mnist_autoencoder_adadelta.sh b/examples/mnist/train_mnist_autoencoder_adadelta.sh index 4be0ebdde..a660dbb9e 100755 --- a/examples/mnist/train_mnist_autoencoder_adadelta.sh +++ b/examples/mnist/train_mnist_autoencoder_adadelta.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e ./build/tools/caffe train \ - --solver=examples/mnist/mnist_autoencoder_solver_adadelta.prototxt + --solver=examples/mnist/mnist_autoencoder_solver_adadelta.prototxt $@ diff --git a/examples/mnist/train_mnist_autoencoder_adagrad.sh b/examples/mnist/train_mnist_autoencoder_adagrad.sh index 95fe1b17b..4c11dfa67 100755 --- a/examples/mnist/train_mnist_autoencoder_adagrad.sh +++ b/examples/mnist/train_mnist_autoencoder_adagrad.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e ./build/tools/caffe train \ - --solver=examples/mnist/mnist_autoencoder_solver_adagrad.prototxt + --solver=examples/mnist/mnist_autoencoder_solver_adagrad.prototxt $@ diff --git a/examples/mnist/train_mnist_autoencoder_nesterov.sh b/examples/mnist/train_mnist_autoencoder_nesterov.sh index cf19ea749..fd0559d24 100755 --- a/examples/mnist/train_mnist_autoencoder_nesterov.sh +++ b/examples/mnist/train_mnist_autoencoder_nesterov.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e ./build/tools/caffe train \ - --solver=examples/mnist/mnist_autoencoder_solver_nesterov.prototxt + --solver=examples/mnist/mnist_autoencoder_solver_nesterov.prototxt $@ diff --git a/examples/siamese/create_mnist_siamese.sh b/examples/siamese/create_mnist_siamese.sh index 43ad6b184..03adce54d 100755 --- a/examples/siamese/create_mnist_siamese.sh +++ b/examples/siamese/create_mnist_siamese.sh @@ -1,5 +1,6 @@ #!/usr/bin/env sh # This script converts the mnist data into leveldb format. +set -e EXAMPLES=./build/examples/siamese DATA=./data/mnist diff --git a/examples/siamese/train_mnist_siamese.sh b/examples/siamese/train_mnist_siamese.sh index 84a30a8ac..e01ac2cee 100755 --- a/examples/siamese/train_mnist_siamese.sh +++ b/examples/siamese/train_mnist_siamese.sh @@ -1,5 +1,6 @@ #!/usr/bin/env sh +set -e TOOLS=./build/tools -$TOOLS/caffe train --solver=examples/siamese/mnist_siamese_solver.prototxt +$TOOLS/caffe train --solver=examples/siamese/mnist_siamese_solver.prototxt $@ From a110ac7c2ad9e0966a02ba360327907cd2646dd4 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 15 Jul 2016 14:12:01 -0700 Subject: [PATCH 298/458] Stop setting cache timeout in TravisCI It refers to the caching command timeout, not how long before the caches expire as I had thought. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4849a7ac2..329795475 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,6 @@ env: - BUILD_NAME="cudnn-cmake" WITH_CMAKE=true WITH_CUDA=true WITH_CUDNN=true cache: - timeout: 604800 # 1 week apt: true directories: - ~/protobuf3 From 9376bde1beba649e4c522b742064223ac9d2cab4 Mon Sep 17 00:00:00 2001 From: jasjuang Date: Thu, 21 Jul 2016 12:04:41 -0700 Subject: [PATCH 299/458] add in sudo make uninstall for cmake --- CMakeLists.txt | 11 +++++++++++ cmake/Uninstall.cmake.in | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 cmake/Uninstall.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index da7142c9b..7b8dab2bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,8 +85,19 @@ if(BUILD_python) add_dependencies(pytest pycaffe) endif() +# ---[ uninstall target +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Uninstall.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake + IMMEDIATE @ONLY) + +add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_BINARY_DIR}/cmake/Uninstall.cmake) + # ---[ Configuration summary caffe_print_configuration_summary() # ---[ Export configs generation caffe_generate_export_configs() + diff --git a/cmake/Uninstall.cmake.in b/cmake/Uninstall.cmake.in new file mode 100644 index 000000000..bb8e2964e --- /dev/null +++ b/cmake/Uninstall.cmake.in @@ -0,0 +1,26 @@ +if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") +endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +if (NOT DEFINED CMAKE_INSTALL_PREFIX) + set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") +endif () + message(${CMAKE_INSTALL_PREFIX}) + +file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + exec_program( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") + endif(NOT "${rm_retval}" STREQUAL 0) + else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") +endforeach(file) \ No newline at end of file From 0ad1284bf6af4ee59f782b72cdf4af0fd194af29 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Mon, 25 Jul 2016 09:01:24 +0300 Subject: [PATCH 300/458] CMake: link with ${HDF5_HL_LIBRARIES} Fixes issue #3224. --- cmake/Dependencies.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index c7b6a17aa..d7eb59e33 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -26,7 +26,7 @@ include(cmake/ProtoBuf.cmake) # ---[ HDF5 find_package(HDF5 COMPONENTS HL REQUIRED) include_directories(SYSTEM ${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) -list(APPEND Caffe_LINKER_LIBS ${HDF5_LIBRARIES}) +list(APPEND Caffe_LINKER_LIBS ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) # ---[ LMDB if(USE_LMDB) From c62e06bccafa57f5b21f90b49e81a988d50a4620 Mon Sep 17 00:00:00 2001 From: Hans Gaiser Date: Tue, 26 Jul 2016 11:44:44 +0200 Subject: [PATCH 301/458] Fix search for Atlas on arch. --- cmake/Modules/FindAtlas.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/FindAtlas.cmake b/cmake/Modules/FindAtlas.cmake index 6e1564351..9c665a47b 100644 --- a/cmake/Modules/FindAtlas.cmake +++ b/cmake/Modules/FindAtlas.cmake @@ -26,9 +26,9 @@ set(Atlas_LIB_SEARCH_PATHS find_path(Atlas_CBLAS_INCLUDE_DIR NAMES cblas.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS}) find_path(Atlas_CLAPACK_INCLUDE_DIR NAMES clapack.h PATHS ${Atlas_INCLUDE_SEARCH_PATHS}) -find_library(Atlas_CBLAS_LIBRARY NAMES ptcblas_r ptcblas cblas_r cblas PATHS ${Atlas_LIB_SEARCH_PATHS}) -find_library(Atlas_BLAS_LIBRARY NAMES atlas_r atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) -find_library(Atlas_LAPACK_LIBRARY NAMES alapack_r alapack lapack_atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) +find_library(Atlas_CBLAS_LIBRARY NAMES ptcblas_r ptcblas cblas_r cblas PATHS ${Atlas_LIB_SEARCH_PATHS}) +find_library(Atlas_BLAS_LIBRARY NAMES atlas_r atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) +find_library(Atlas_LAPACK_LIBRARY NAMES lapack alapack_r alapack lapack_atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) set(LOOKED_FOR Atlas_CBLAS_INCLUDE_DIR From 61e01654d2054531133a6d154a69b872a4479099 Mon Sep 17 00:00:00 2001 From: Fisher Yu Date: Sat, 6 Aug 2016 23:01:45 -0400 Subject: [PATCH 302/458] num in blob is deprecated --- src/caffe/layers/loss_layer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/layers/loss_layer.cpp b/src/caffe/layers/loss_layer.cpp index c0b7a8621..afb1ce948 100644 --- a/src/caffe/layers/loss_layer.cpp +++ b/src/caffe/layers/loss_layer.cpp @@ -16,8 +16,8 @@ void LossLayer::LayerSetUp( template void LossLayer::Reshape( const vector*>& bottom, const vector*>& top) { - CHECK_EQ(bottom[0]->num(), bottom[1]->num()) - << "The data and label should have the same number."; + CHECK_EQ(bottom[0]->shape(0), bottom[1]->shape(0)) + << "The data and label should have the same first dimension."; vector loss_shape(0); // Loss layers output a scalar; 0 axes. top[0]->Reshape(loss_shape); } From d607858b90b645d8177c3970d782f0ab5c529558 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Tue, 9 Aug 2016 15:13:47 +0000 Subject: [PATCH 303/458] Fix more float comparison precision issue With reference to this commit: f1a8470aa21e35a5b2bb83007f8fb7680a354815 This fix changes some EXPECT_EQ into EXPECT_FLOAT_EQ . --- src/caffe/test/test_convolution_layer.cpp | 2 +- src/caffe/test/test_gradient_based_solver.cpp | 8 ++++---- src/caffe/test/test_neuron_layer.cpp | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index 9bb19d135..85c10a294 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -695,7 +695,7 @@ TYPED_TEST(ConvolutionLayerTest, TestNDAgainst2D) { } ASSERT_EQ(backward_result_nd.count(), backward_result_2d.count()); for (int i = 0; i < backward_result_2d.count(); ++i) { - EXPECT_EQ(backward_result_2d.cpu_diff()[i], + EXPECT_FLOAT_EQ(backward_result_2d.cpu_diff()[i], backward_result_nd.cpu_diff()[i]); } ASSERT_EQ(backward_weight_result_nd.count(), diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 975a8f0f8..9395f4e95 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -538,9 +538,9 @@ class GradientBasedSolverTest : public MultiDeviceTest { const vector*>& params = solver_->net()->learnable_params(); for (int i = 0; i < params.size(); ++i) { for (int j = 0; j < params[i]->count(); ++j) { - EXPECT_EQ(param_copies[i]->cpu_data()[j], params[i]->cpu_data()[j]) + EXPECT_FLOAT_EQ(param_copies[i]->cpu_data()[j], params[i]->cpu_data()[j]) << "param " << i << " data differed at dim " << j; - EXPECT_EQ(param_copies[i]->cpu_diff()[j], params[i]->cpu_diff()[j]) + EXPECT_FLOAT_EQ(param_copies[i]->cpu_diff()[j], params[i]->cpu_diff()[j]) << "param " << i << " diff differed at dim " << j; } } @@ -549,9 +549,9 @@ class GradientBasedSolverTest : public MultiDeviceTest { const vector > >& history = solver_->history(); for (int i = 0; i < history.size(); ++i) { for (int j = 0; j < history[i]->count(); ++j) { - EXPECT_EQ(history_copies[i]->cpu_data()[j], history[i]->cpu_data()[j]) + EXPECT_FLOAT_EQ(history_copies[i]->cpu_data()[j], history[i]->cpu_data()[j]) << "history blob " << i << " data differed at dim " << j; - EXPECT_EQ(history_copies[i]->cpu_diff()[j], history[i]->cpu_diff()[j]) + EXPECT_FLOAT_EQ(history_copies[i]->cpu_diff()[j], history[i]->cpu_diff()[j]) << "history blob " << i << " diff differed at dim " << j; } } diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index 342f825ce..57bd47b3a 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -791,16 +791,16 @@ TYPED_TEST(NeuronLayerTest, TestPReLUInPlace) { ip2.Backward(blob_middle_vec_2, propagate_down, blob_bottom_vec_2); // Check numbers for (int s = 0; s < blob_bottom_2->count(); ++s) { - EXPECT_EQ(this->blob_bottom_->cpu_diff()[s], blob_bottom_2->cpu_diff()[s]); + EXPECT_FLOAT_EQ(this->blob_bottom_->cpu_diff()[s], blob_bottom_2->cpu_diff()[s]); } for (int s = 0; s < ip.blobs()[0]->count(); ++s) { - EXPECT_EQ(ip.blobs()[0]->cpu_diff()[s], ip2.blobs()[0]->cpu_diff()[s]); + EXPECT_FLOAT_EQ(ip.blobs()[0]->cpu_diff()[s], ip2.blobs()[0]->cpu_diff()[s]); } for (int s = 0; s < ip.blobs()[1]->count(); ++s) { - EXPECT_EQ(ip.blobs()[1]->cpu_diff()[s], ip2.blobs()[1]->cpu_diff()[s]); + EXPECT_FLOAT_EQ(ip.blobs()[1]->cpu_diff()[s], ip2.blobs()[1]->cpu_diff()[s]); } for (int s = 0; s < prelu.blobs()[0]->count(); ++s) { - EXPECT_EQ(prelu.blobs()[0]->cpu_diff()[s], + EXPECT_FLOAT_EQ(prelu.blobs()[0]->cpu_diff()[s], prelu2.blobs()[0]->cpu_diff()[s]); } } From 42d20fe21eeb8067b09ef5e935bb4c235dbf9f3f Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Wed, 10 Aug 2016 14:36:33 +0000 Subject: [PATCH 304/458] Import bash completion script for caffe from Debian Package. Imported from Debian Package caffe (1.0.0~rc3+20160715-g42cd785-2). --- scripts/caffe | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 scripts/caffe diff --git a/scripts/caffe b/scripts/caffe new file mode 100644 index 000000000..8a0b22af6 --- /dev/null +++ b/scripts/caffe @@ -0,0 +1,73 @@ +# bash completion for Caffe's command line utility -*- shell-script -*- +# COPYRIGHT (C) 2015,2016 Zhou Mo +# License: BSD-2-Clause +# Originally appeard at https://github.com/BVLC/caffe/issues/3149 + +# Updated for caffe (1.0.0~rc3+20160715-g42cd785) +_caffe() +{ + local cur prev words cword + _init_completion -s || return + + local prototxts='@(prototxt)' + local caffemodels='@(caffemodel,binaryproto)' + local solverstates='@(solverstate)' + local caffefiles='@(prototxt|caffemodel|solverstate)' + + local flags='-gpu -iterations -model -snapshot -solver -weights -sighup_effect -sigint_effect -level -stage -phase' + + if [[ $cword -eq 1 ]]; then + COMPREPLY=( $( compgen -W 'train test time device_query' -- "$cur" ) ) + return 0 + fi + + if [[ $cword -eq 2 ]]; then + case ${words[1]} in + train|test|device_query|time) + COMPREPLY=( $( compgen -W "$flags" -- "$cur") ) + return 0 + ;; + *) + return 0 + ;; + esac + fi + + case $prev in + -gpu|-iterations|-version|-level|-stage) + return 0 + ;; + -solver|-model) + _filedir $prototxts + return 0 + ;; + -weights) + _filedir $caffemodels + return 0 + ;; + -snapshot) + _filedir $solverstates + return 0 + ;; + -sighup_effect|-sigint_effect) + COMPREPLY=( $( compgen -W 'snapshot stop none' -- "$cur") ) + return 0 + ;; + -phase) + COMPREPLY=( $( compgen -W 'TRAIN TEST' -- "$cur") ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$flags" -- "$cur") ) + return 0 + ;; + esac + + # file completion on relevant files + _filedir "$caffefiles" + + return 0 +} +complete -F _caffe caffe + +# vim From 6382d67da1d2b5d9ebe92df8a20a8ac1947366ea Mon Sep 17 00:00:00 2001 From: An Tran Date: Fri, 12 Aug 2016 16:39:11 +0800 Subject: [PATCH 305/458] small improments in compute_image_mean --- tools/compute_image_mean.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index 2035d5151..417f5e4c6 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -22,9 +22,11 @@ DEFINE_string(backend, "lmdb", "The backend {leveldb, lmdb} containing the images"); int main(int argc, char** argv) { +#ifdef USE_OPENCV ::google::InitGoogleLogging(argv[0]); + // Print output to stderr (while still logging) + FLAGS_alsologtostderr = 1; -#ifdef USE_OPENCV #ifndef GFLAGS_GFLAGS_H_ namespace gflags = google; #endif @@ -65,7 +67,7 @@ int main(int argc, char** argv) { for (int i = 0; i < size_in_datum; ++i) { sum_blob.add_data(0.); } - LOG(INFO) << "Starting Iteration"; + LOG(INFO) << "Starting iteration"; while (cursor->valid()) { Datum datum; datum.ParseFromString(cursor->value()); @@ -114,7 +116,7 @@ int main(int argc, char** argv) { for (int i = 0; i < dim; ++i) { mean_values[c] += sum_blob.data(dim * c + i); } - LOG(INFO) << "mean_value channel [" << c << "]:" << mean_values[c] / dim; + LOG(INFO) << "mean_value channel [" << c << "]: " << mean_values[c] / dim; } #else LOG(FATAL) << "This tool requires OpenCV; compile with USE_OPENCV."; From d4a413cbf56f43a9d5a6ea3a5568447117cefff0 Mon Sep 17 00:00:00 2001 From: Sungjun HONG Date: Sun, 14 Aug 2016 17:51:56 +0900 Subject: [PATCH 306/458] Correct a mistake on math notation --- examples/net_surgery.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/net_surgery.ipynb b/examples/net_surgery.ipynb index d50d503bf..217c2d1a7 100644 --- a/examples/net_surgery.ipynb +++ b/examples/net_surgery.ipynb @@ -5479,7 +5479,7 @@ "\n", "Let's take the standard Caffe Reference ImageNet model \"CaffeNet\" and transform it into a fully convolutional net for efficient, dense inference on large inputs. This model generates a classification map that covers a given input size instead of a single classification. In particular a 8 $\\times$ 8 classification map on a 451 $\\times$ 451 input gives 64x the output in only 3x the time. The computation exploits a natural efficiency of convolutional network (convnet) structure by amortizing the computation of overlapping receptive fields.\n", "\n", - "To do so we translate the `InnerProduct` matrix multiplication layers of CaffeNet into `Convolutional` layers. This is the only change: the other layer types are agnostic to spatial size. Convolution is translation-invariant, activations are elementwise operations, and so on. The `fc6` inner product when carried out as convolution by `fc6-conv` turns into a 6 \\times 6 filter with stride 1 on `pool5`. Back in image space this gives a classification for each 227 $\\times$ 227 box with stride 32 in pixels. Remember the equation for output map / receptive field size, output = (input - kernel_size) / stride + 1, and work out the indexing details for a clear understanding." + "To do so we translate the `InnerProduct` matrix multiplication layers of CaffeNet into `Convolutional` layers. This is the only change: the other layer types are agnostic to spatial size. Convolution is translation-invariant, activations are elementwise operations, and so on. The `fc6` inner product when carried out as convolution by `fc6-conv` turns into a 6 $\\times$ 6 filter with stride 1 on `pool5`. Back in image space this gives a classification for each 227 $\\times$ 227 box with stride 32 in pixels. Remember the equation for output map / receptive field size, output = (input - kernel_size) / stride + 1, and work out the indexing details for a clear understanding." ] }, { From 5d594806aed7d44feb36cae12bacbaabfabf6fa8 Mon Sep 17 00:00:00 2001 From: Nitish Keskar Date: Mon, 15 Aug 2016 19:47:34 -0500 Subject: [PATCH 307/458] Fixing Typo In Sigmoid CIFAR-10 Examples There was a mismatch between the iterations interval in the comment and the actual code. --- examples/cifar10/cifar10_full_sigmoid_solver.prototxt | 2 +- examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/cifar10/cifar10_full_sigmoid_solver.prototxt b/examples/cifar10/cifar10_full_sigmoid_solver.prototxt index 7dd3ecb9d..a8e553993 100644 --- a/examples/cifar10/cifar10_full_sigmoid_solver.prototxt +++ b/examples/cifar10/cifar10_full_sigmoid_solver.prototxt @@ -17,7 +17,7 @@ momentum: 0.9 lr_policy: "step" gamma: 1 stepsize: 5000 -# Display every 200 iterations +# Display every 100 iterations display: 100 # The maximum number of iterations max_iter: 60000 diff --git a/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt b/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt index a57b280fd..a4dabd67c 100644 --- a/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt +++ b/examples/cifar10/cifar10_full_sigmoid_solver_bn.prototxt @@ -17,7 +17,7 @@ momentum: 0.9 lr_policy: "step" gamma: 1 stepsize: 5000 -# Display every 200 iterations +# Display every 100 iterations display: 100 # The maximum number of iterations max_iter: 60000 From 9029695ee358caa82116fc192cb4d505ea936274 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 18 Aug 2016 11:03:42 -0700 Subject: [PATCH 308/458] [build] set default BLAS include for OS X 10.11 the latest hunt for the ever-elusive vecLib/Accelerate --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 403e00a38..24894062a 100644 --- a/Makefile +++ b/Makefile @@ -382,8 +382,11 @@ else LIBRARIES += cblas # 10.10 has accelerate while 10.9 has veclib XCODE_CLT_VER := $(shell pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep 'version' | sed 's/[^0-9]*\([0-9]\).*/\1/') + XCODE_CLT_GEQ_7 := $(shell [ $(XCODE_CLT_VER) -gt 6 ] && echo 1) XCODE_CLT_GEQ_6 := $(shell [ $(XCODE_CLT_VER) -gt 5 ] && echo 1) - ifeq ($(XCODE_CLT_GEQ_6), 1) + ifeq ($(XCODE_CLT_GEQ_7), 1) + BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers + else ifeq ($(XCODE_CLT_GEQ_6), 1) BLAS_INCLUDE ?= /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ LDFLAGS += -framework Accelerate else From 1110d2ba7b52c35f898da8febdd53524761ecb97 Mon Sep 17 00:00:00 2001 From: Tianwei Shen Date: Tue, 26 Jul 2016 00:19:35 +0800 Subject: [PATCH 309/458] make cmake find cuDNN on Mac OS dylib instead of so on OS X --- cmake/Cuda.cmake | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index 286a42802..eeeb7325f 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -174,11 +174,18 @@ function(detect_cuDNN) PATHS ${CUDNN_ROOT} $ENV{CUDNN_ROOT} ${CUDA_TOOLKIT_INCLUDE} DOC "Path to cuDNN include directory." ) - get_filename_component(__libpath_hist ${CUDA_CUDART_LIBRARY} PATH) - find_library(CUDNN_LIBRARY NAMES libcudnn.so # libcudnn_static.a - PATHS ${CUDNN_ROOT} $ENV{CUDNN_ROOT} ${CUDNN_INCLUDE} ${__libpath_hist} - DOC "Path to cuDNN library.") + # dynamic libs have different suffix in mac and linux + if(APPLE) + set(CUDNN_LIB_NAME "libcudnn.dylib") + else() + set(CUDNN_LIB_NAME "libcudnn.so") + endif() + get_filename_component(__libpath_hist ${CUDA_CUDART_LIBRARY} PATH) + find_library(CUDNN_LIBRARY NAMES ${CUDNN_LIB_NAME} + PATHS ${CUDNN_ROOT} $ENV{CUDNN_ROOT} ${CUDNN_INCLUDE} ${__libpath_hist} ${__libpath_hist}/../lib + DOC "Path to cuDNN library.") + if(CUDNN_INCLUDE AND CUDNN_LIBRARY) set(HAVE_CUDNN TRUE PARENT_SCOPE) set(CUDNN_FOUND TRUE PARENT_SCOPE) From 51c39b87738962c323c8bd05aa4c23ac97e1c030 Mon Sep 17 00:00:00 2001 From: Preston Parry Date: Sun, 28 Aug 2016 14:32:41 -0700 Subject: [PATCH 310/458] updates tense in docs "could" seems to imply for some reason that something is blocking one from calling the registered layers. "can" lays out more directly that a user can choose to do this. --- include/caffe/layer_factory.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/caffe/layer_factory.hpp b/include/caffe/layer_factory.hpp index f385afccf..2369c1329 100644 --- a/include/caffe/layer_factory.hpp +++ b/include/caffe/layer_factory.hpp @@ -1,6 +1,6 @@ /** * @brief A layer factory that allows one to register layers. - * During runtime, registered layers could be called by passing a LayerParameter + * During runtime, registered layers can be called by passing a LayerParameter * protobuffer to the CreateLayer function: * * LayerRegistry::CreateLayer(param); From 8797e7b3720d97afea24ad6f78b7811c57a3919d Mon Sep 17 00:00:00 2001 From: Preston Parry Date: Sun, 28 Aug 2016 14:34:42 -0700 Subject: [PATCH 311/458] fixes typo- duplicate "a a" --- include/caffe/solver.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index 38259edad..eafcee329 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -12,7 +12,7 @@ namespace caffe { /** * @brief Enumeration of actions that a client of the Solver may request by * implementing the Solver's action request function, which a - * a client may optionally provide in order to request early termination + * client may optionally provide in order to request early termination * or saving a snapshot without exiting. In the executable caffe, this * mechanism is used to allow the snapshot to be saved when stopping * execution with a SIGINT (Ctrl-C). From cd54d9e0f96df65a4972306f29d042bc34c63077 Mon Sep 17 00:00:00 2001 From: Preston Parry Date: Sun, 28 Aug 2016 14:42:57 -0700 Subject: [PATCH 312/458] changes "c++" to "C++" for consistency --- include/caffe/solver_factory.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/caffe/solver_factory.hpp b/include/caffe/solver_factory.hpp index cfff721af..a5b160739 100644 --- a/include/caffe/solver_factory.hpp +++ b/include/caffe/solver_factory.hpp @@ -15,7 +15,7 @@ * and its type is its C++ class name, but without the "Solver" at the end * ("MyAwesomeSolver" -> "MyAwesome"). * - * If the solver is going to be created simply by its constructor, in your c++ + * If the solver is going to be created simply by its constructor, in your C++ * file, add the following line: * * REGISTER_SOLVER_CLASS(MyAwesome); From 4024b82c7c8e9f12898becf7b3947e603a4dd0bb Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Mon, 29 Aug 2016 11:14:17 -0700 Subject: [PATCH 313/458] [TravisCI] - build protobuf3 GA --- scripts/travis/install-deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index ee16d36a7..4e86ac739 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -56,7 +56,7 @@ else dh-autoreconf \ unzip - wget https://github.com/google/protobuf/archive/v3.0.0-beta-3.tar.gz -O protobuf3.tar.gz + wget https://github.com/google/protobuf/archive/3.0.0-GA.tar.gz -O protobuf3.tar.gz tar -xzf protobuf3.tar.gz -C $PROTOBUF3_DIR --strip 1 rm protobuf3.tar.gz cd $PROTOBUF3_DIR From b9c3c06c28dafce67c89603e8b73cf18057264eb Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Sun, 14 Aug 2016 04:52:25 +0300 Subject: [PATCH 314/458] cmake: fix usage of INCLUDE_DIR/INCLUDE_DIRS in Dependencies.cmake --- cmake/Dependencies.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index ae9ce8e43..bf882ce96 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -3,7 +3,7 @@ set(Caffe_LINKER_LIBS "") # ---[ Boost find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem) -include_directories(SYSTEM ${Boost_INCLUDE_DIR}) +include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) list(APPEND Caffe_LINKER_LIBS ${Boost_LIBRARIES}) # ---[ Threads @@ -25,7 +25,7 @@ include(cmake/ProtoBuf.cmake) # ---[ HDF5 find_package(HDF5 COMPONENTS HL REQUIRED) -include_directories(SYSTEM ${HDF5_INCLUDE_DIRS} ${HDF5_HL_INCLUDE_DIR}) +include_directories(SYSTEM ${HDF5_INCLUDE_DIRS}) list(APPEND Caffe_LINKER_LIBS ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) # ---[ LMDB @@ -42,7 +42,7 @@ endif() # ---[ LevelDB if(USE_LEVELDB) find_package(LevelDB REQUIRED) - include_directories(SYSTEM ${LevelDB_INCLUDE}) + include_directories(SYSTEM ${LevelDB_INCLUDES}) list(APPEND Caffe_LINKER_LIBS ${LevelDB_LIBRARIES}) add_definitions(-DUSE_LEVELDB) endif() From a59e647117705236d8bcef46cc6d4e0c72b42804 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Mon, 15 Aug 2016 20:19:09 +0300 Subject: [PATCH 315/458] cmake/Templates: properly spell OpenCV CMake config file name --- cmake/Templates/CaffeConfig.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Templates/CaffeConfig.cmake.in b/cmake/Templates/CaffeConfig.cmake.in index 73f57ac2d..b58124aa3 100644 --- a/cmake/Templates/CaffeConfig.cmake.in +++ b/cmake/Templates/CaffeConfig.cmake.in @@ -27,7 +27,7 @@ if(@USE_OPENCV@) if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core) message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}") - include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake) + include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVConfig.cmake) endif() else() From ba189d907d60b17cc24b54d1a22cb68ce6c11193 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Sat, 20 Aug 2016 00:59:05 +0300 Subject: [PATCH 316/458] cmake: refactor deps detection, specify all dependencies in the exported caffe target This is the first step towards "modern" IMPORTED-targets-only CMake setup. The find_package modules still need to be rewritten and upstreamed in form of config exports where possible. --- CMakeLists.txt | 24 +++++++-- cmake/ConfigGen.cmake | 65 +--------------------- cmake/Cuda.cmake | 12 ++--- cmake/Dependencies.cmake | 81 +++++++++++++++------------- cmake/ProtoBuf.cmake | 4 +- cmake/Templates/CaffeConfig.cmake.in | 13 ++--- python/CMakeLists.txt | 6 +-- src/caffe/CMakeLists.txt | 13 +++-- src/gtest/CMakeLists.txt | 3 ++ 9 files changed, 94 insertions(+), 127 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da7142c9b..cb25b43a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,8 +54,6 @@ if(USE_libstdcpp) message("-- Warning: forcing libstdc++ (controlled by USE_libstdcpp option in cmake)") endif() -add_definitions(-DGTEST_USE_OWN_TR1_TUPLE) - # ---[ Warnings caffe_warnings_disable(CMAKE_CXX_FLAGS -Wno-sign-compare -Wno-uninitialized) @@ -64,8 +62,26 @@ configure_file(cmake/Templates/caffe_config.h.in "${PROJECT_BINARY_DIR}/caffe_co # ---[ Includes set(Caffe_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include) -include_directories(${Caffe_INCLUDE_DIR} ${PROJECT_BINARY_DIR}) -include_directories(BEFORE src) # This is needed for gtest. +set(Caffe_SRC_DIR ${PROJECT_SOURCE_DIR}/src) +include_directories(${PROJECT_BINARY_DIR}) + +# ---[ Includes & defines for CUDA + +# cuda_compile() does not have per-call dependencies or include pathes +# (cuda_compile() has per-call flags, but we set them here too for clarity) +# +# list(REMOVE_ITEM ...) invocations remove PRIVATE and PUBLIC keywords from collected definitions and include pathes +if(HAVE_CUDA) + # pass include pathes to cuda_include_directories() + set(Caffe_ALL_INCLUDE_DIRS ${Caffe_INCLUDE_DIRS}) + list(REMOVE_ITEM Caffe_ALL_INCLUDE_DIRS PRIVATE PUBLIC) + cuda_include_directories(${Caffe_INCLUDE_DIR} ${Caffe_SRC_DIR} ${Caffe_ALL_INCLUDE_DIRS}) + + # add definitions to nvcc flags directly + set(Caffe_ALL_DEFINITIONS ${Caffe_DEFINITIONS}) + list(REMOVE_ITEM Caffe_ALL_DEFINITIONS PRIVATE PUBLIC) + list(APPEND CUDA_NVCC_FLAGS ${Caffe_ALL_DEFINITIONS}) +endif() # ---[ Subdirectories add_subdirectory(src/gtest) diff --git a/cmake/ConfigGen.cmake b/cmake/ConfigGen.cmake index 056371110..077d5b283 100644 --- a/cmake/ConfigGen.cmake +++ b/cmake/ConfigGen.cmake @@ -1,31 +1,4 @@ -################################################################################################ -# Helper function to fetch caffe includes which will be passed to dependent projects -# Usage: -# caffe_get_current_includes() -function(caffe_get_current_includes includes_variable) - get_property(current_includes DIRECTORY PROPERTY INCLUDE_DIRECTORIES) - caffe_convert_absolute_paths(current_includes) - - # remove at most one ${PROJECT_BINARY_DIR} include added for caffe_config.h - list(FIND current_includes ${PROJECT_BINARY_DIR} __index) - list(REMOVE_AT current_includes ${__index}) - - # removing numpy includes (since not required for client libs) - set(__toremove "") - foreach(__i ${current_includes}) - if(${__i} MATCHES "python") - list(APPEND __toremove ${__i}) - endif() - endforeach() - if(__toremove) - list(REMOVE_ITEM current_includes ${__toremove}) - endif() - - caffe_list_unique(current_includes) - set(${includes_variable} ${current_includes} PARENT_SCOPE) -endfunction() - ################################################################################################ # Helper function to get all list items that begin with given prefix # Usage: @@ -47,39 +20,15 @@ endfunction() function(caffe_generate_export_configs) set(install_cmake_suffix "share/Caffe") - # ---[ Configure build-tree CaffeConfig.cmake file ]--- - caffe_get_current_includes(Caffe_INCLUDE_DIRS) - - set(Caffe_DEFINITIONS "") if(NOT HAVE_CUDA) set(HAVE_CUDA FALSE) - list(APPEND Caffe_DEFINITIONS -DCPU_ONLY) - endif() - - if(USE_OPENCV) - list(APPEND Caffe_DEFINITIONS -DUSE_OPENCV) - endif() - - if(USE_LMDB) - list(APPEND Caffe_DEFINITIONS -DUSE_LMDB) - if (ALLOW_LMDB_NOLOCK) - list(APPEND Caffe_DEFINITIONS -DALLOW_LMDB_NOLOCK) - endif() - endif() - - if(USE_LEVELDB) - list(APPEND Caffe_DEFINITIONS -DUSE_LEVELDB) endif() if(NOT HAVE_CUDNN) set(HAVE_CUDNN FALSE) - else() - list(APPEND DEFINITIONS -DUSE_CUDNN) endif() - if(BLAS STREQUAL "MKL" OR BLAS STREQUAL "mkl") - list(APPEND Caffe_DEFINITIONS -DUSE_MKL) - endif() + # ---[ Configure build-tree CaffeConfig.cmake file ]--- configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/CaffeConfig.cmake" @ONLY) @@ -89,18 +38,6 @@ function(caffe_generate_export_configs) # ---[ Configure install-tree CaffeConfig.cmake file ]--- - # remove source and build dir includes - caffe_get_items_with_prefix(${PROJECT_SOURCE_DIR} Caffe_INCLUDE_DIRS __insource) - caffe_get_items_with_prefix(${PROJECT_BINARY_DIR} Caffe_INCLUDE_DIRS __inbinary) - list(REMOVE_ITEM Caffe_INCLUDE_DIRS ${__insource} ${__inbinary}) - - # add `install` include folder - set(lines - "get_filename_component(__caffe_include \"\${Caffe_CMAKE_DIR}/../../include\" ABSOLUTE)\n" - "list(APPEND Caffe_INCLUDE_DIRS \${__caffe_include})\n" - "unset(__caffe_include)\n") - string(REPLACE ";" "" Caffe_INSTALL_INCLUDE_DIR_APPEND_COMMAND ${lines}) - configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/cmake/CaffeConfig.cmake" @ONLY) # Install the CaffeConfig.cmake and export set to use with install-tree diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index eeeb7325f..c6b0de8c7 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -238,17 +238,17 @@ endif() set(HAVE_CUDA TRUE) message(STATUS "CUDA detected: " ${CUDA_VERSION}) -include_directories(SYSTEM ${CUDA_INCLUDE_DIRS}) -list(APPEND Caffe_LINKER_LIBS ${CUDA_CUDART_LIBRARY} - ${CUDA_curand_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${CUDA_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${CUDA_CUDART_LIBRARY} + ${CUDA_curand_LIBRARY} ${CUDA_CUBLAS_LIBRARIES}) # cudnn detection if(USE_CUDNN) detect_cuDNN() if(HAVE_CUDNN) - add_definitions(-DUSE_CUDNN) - include_directories(SYSTEM ${CUDNN_INCLUDE}) - list(APPEND Caffe_LINKER_LIBS ${CUDNN_LIBRARY}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_CUDNN) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${CUDNN_INCLUDE}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${CUDNN_LIBRARY}) endif() endif() diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index bf882ce96..6a1275923 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -1,57 +1,67 @@ # This list is required for static linking and exported to CaffeConfig.cmake set(Caffe_LINKER_LIBS "") +set(Caffe_INCLUDE_DIRS "") +set(Caffe_DEFINITIONS "") # ---[ Boost find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem) -include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) -list(APPEND Caffe_LINKER_LIBS ${Boost_LIBRARIES}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Boost_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${Boost_LIBRARIES}) # ---[ Threads find_package(Threads REQUIRED) -list(APPEND Caffe_LINKER_LIBS ${CMAKE_THREAD_LIBS_INIT}) +list(APPEND Caffe_LINKER_LIBS PRIVATE ${CMAKE_THREAD_LIBS_INIT}) + +# ---[ OpenMP +if(USE_OPENMP) + # TODO: use something exportable here + find_package(OpenMP REQUIRED) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") +endif() # ---[ Google-glog include("cmake/External/glog.cmake") -include_directories(SYSTEM ${GLOG_INCLUDE_DIRS}) -list(APPEND Caffe_LINKER_LIBS ${GLOG_LIBRARIES}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${GLOG_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${GLOG_LIBRARIES}) # ---[ Google-gflags include("cmake/External/gflags.cmake") -include_directories(SYSTEM ${GFLAGS_INCLUDE_DIRS}) -list(APPEND Caffe_LINKER_LIBS ${GFLAGS_LIBRARIES}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${GFLAGS_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${GFLAGS_LIBRARIES}) # ---[ Google-protobuf include(cmake/ProtoBuf.cmake) # ---[ HDF5 find_package(HDF5 COMPONENTS HL REQUIRED) -include_directories(SYSTEM ${HDF5_INCLUDE_DIRS}) -list(APPEND Caffe_LINKER_LIBS ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${HDF5_INCLUDE_DIRS}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) # ---[ LMDB if(USE_LMDB) find_package(LMDB REQUIRED) - include_directories(SYSTEM ${LMDB_INCLUDE_DIR}) - list(APPEND Caffe_LINKER_LIBS ${LMDB_LIBRARIES}) - add_definitions(-DUSE_LMDB) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${LMDB_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${LMDB_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_LMDB) if(ALLOW_LMDB_NOLOCK) - add_definitions(-DALLOW_LMDB_NOLOCK) + list(APPEND Caffe_DEFINITIONS PRIVATE -DALLOW_LMDB_NOLOCK) endif() endif() # ---[ LevelDB if(USE_LEVELDB) find_package(LevelDB REQUIRED) - include_directories(SYSTEM ${LevelDB_INCLUDES}) - list(APPEND Caffe_LINKER_LIBS ${LevelDB_LIBRARIES}) - add_definitions(-DUSE_LEVELDB) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${LevelDB_INCLUDES}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${LevelDB_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_LEVELDB) endif() # ---[ Snappy if(USE_LEVELDB) find_package(Snappy REQUIRED) - include_directories(SYSTEM ${Snappy_INCLUDE_DIR}) - list(APPEND Caffe_LINKER_LIBS ${Snappy_LIBRARIES}) + list(APPEND Caffe_INCLUDE_DIRS PRIVATE ${Snappy_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PRIVATE ${Snappy_LIBRARIES}) endif() # ---[ CUDA @@ -63,8 +73,7 @@ if(NOT HAVE_CUDA) message(WARNING "-- CUDA is not detected by cmake. Building without it...") endif() - # TODO: remove this not cross platform define in future. Use caffe_config.h instead. - add_definitions(-DCPU_ONLY) + list(APPEND Caffe_DEFINITIONS PUBLIC -DCPU_ONLY) endif() # ---[ OpenCV @@ -73,10 +82,10 @@ if(USE_OPENCV) if(NOT OpenCV_FOUND) # if not OpenCV 3.x, then imgcodecs are not found find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc) endif() - include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS}) - list(APPEND Caffe_LINKER_LIBS ${OpenCV_LIBS}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${OpenCV_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${OpenCV_LIBS}) message(STATUS "OpenCV found (${OpenCV_CONFIG_PATH})") - add_definitions(-DUSE_OPENCV) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_OPENCV) endif() # ---[ BLAS @@ -86,26 +95,26 @@ if(NOT APPLE) if(BLAS STREQUAL "Atlas" OR BLAS STREQUAL "atlas") find_package(Atlas REQUIRED) - include_directories(SYSTEM ${Atlas_INCLUDE_DIR}) - list(APPEND Caffe_LINKER_LIBS ${Atlas_LIBRARIES}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Atlas_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${Atlas_LIBRARIES}) elseif(BLAS STREQUAL "Open" OR BLAS STREQUAL "open") find_package(OpenBLAS REQUIRED) - include_directories(SYSTEM ${OpenBLAS_INCLUDE_DIR}) - list(APPEND Caffe_LINKER_LIBS ${OpenBLAS_LIB}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${OpenBLAS_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${OpenBLAS_LIB}) elseif(BLAS STREQUAL "MKL" OR BLAS STREQUAL "mkl") find_package(MKL REQUIRED) - include_directories(SYSTEM ${MKL_INCLUDE_DIR}) - list(APPEND Caffe_LINKER_LIBS ${MKL_LIBRARIES}) - add_definitions(-DUSE_MKL) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${MKL_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${MKL_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_MKL) endif() elseif(APPLE) find_package(vecLib REQUIRED) - include_directories(SYSTEM ${vecLib_INCLUDE_DIR}) - list(APPEND Caffe_LINKER_LIBS ${vecLib_LINKER_LIBS}) + list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${vecLib_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS PUBLIC ${vecLib_LINKER_LIBS}) if(VECLIB_FOUND) if(NOT vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*") - add_definitions(-DUSE_ACCELERATE) + list(APPEND Caffe_DEFINITIONS PUBLIC -DUSE_ACCELERATE) endif() endif() endif() @@ -149,9 +158,9 @@ if(BUILD_python) if(PYTHONLIBS_FOUND AND NUMPY_FOUND AND Boost_PYTHON_FOUND) set(HAVE_PYTHON TRUE) if(BUILD_python_layer) - add_definitions(-DWITH_PYTHON_LAYER) - include_directories(SYSTEM ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}) - list(APPEND Caffe_LINKER_LIBS ${PYTHON_LIBRARIES} ${Boost_LIBRARIES}) + list(APPEND Caffe_DEFINITIONS PRIVATE -DWITH_PYTHON_LAYER) + list(APPEND Caffe_INCLUDE_DIRS PRIVATE ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR} PUBLIC ${Boost_INCLUDE_DIRS}) + list(APPEND Caffe_LINKER_LIBS PRIVATE ${PYTHON_LIBRARIES} PUBLIC ${Boost_LIBRARIES}) endif() endif() endif() diff --git a/cmake/ProtoBuf.cmake b/cmake/ProtoBuf.cmake index 73f647f5f..8005b4487 100644 --- a/cmake/ProtoBuf.cmake +++ b/cmake/ProtoBuf.cmake @@ -2,8 +2,8 @@ # the standard cmake script with version and python generation support find_package( Protobuf REQUIRED ) -include_directories(SYSTEM ${PROTOBUF_INCLUDE_DIR}) -list(APPEND Caffe_LINKER_LIBS ${PROTOBUF_LIBRARIES}) +list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${PROTOBUF_INCLUDE_DIR}) +list(APPEND Caffe_LINKER_LIBS PUBLIC ${PROTOBUF_LIBRARIES}) # As of Ubuntu 14.04 protoc is no longer a part of libprotobuf-dev package # and should be installed separately as in: sudo apt-get install protobuf-compiler diff --git a/cmake/Templates/CaffeConfig.cmake.in b/cmake/Templates/CaffeConfig.cmake.in index b58124aa3..77c4059e5 100644 --- a/cmake/Templates/CaffeConfig.cmake.in +++ b/cmake/Templates/CaffeConfig.cmake.in @@ -9,9 +9,9 @@ # After successful configuration the following variables # will be defined: # -# Caffe_INCLUDE_DIRS - Caffe include directories -# Caffe_LIBRARIES - libraries to link against -# Caffe_DEFINITIONS - a list of definitions to pass to compiler +# Caffe_LIBRARIES - IMPORTED targets to link against +# (There is no Caffe_INCLUDE_DIRS and Caffe_DEFINITIONS +# because they are specified in the IMPORTED target interface.) # # Caffe_HAVE_CUDA - signals about CUDA support # Caffe_HAVE_CUDNN - signals about cuDNN support @@ -39,9 +39,6 @@ endif() # Compute paths get_filename_component(Caffe_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(Caffe_INCLUDE_DIRS "@Caffe_INCLUDE_DIRS@") - -@Caffe_INSTALL_INCLUDE_DIR_APPEND_COMMAND@ # Our library dependencies if(NOT TARGET caffe AND NOT caffe_BINARY_DIR) @@ -49,11 +46,9 @@ if(NOT TARGET caffe AND NOT caffe_BINARY_DIR) endif() # List of IMPORTED libs created by CaffeTargets.cmake +# These targets already specify all needed definitions and include pathes set(Caffe_LIBRARIES caffe) -# Definitions -set(Caffe_DEFINITIONS "@Caffe_DEFINITIONS@") - # Cuda support variables set(Caffe_CPU_ONLY @CPU_ONLY@) set(Caffe_HAVE_CUDA @HAVE_CUDA@) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index bf492a24b..c53299d26 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -3,13 +3,13 @@ if(NOT HAVE_PYTHON) return() endif() -include_directories(${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR} ${Boost_INCLUDE_DIRS}) file(GLOB_RECURSE python_srcs ${PROJECT_SOURCE_DIR}/python/*.cpp) add_library(pycaffe SHARED ${python_srcs}) -target_link_libraries(pycaffe ${Caffe_LINK} ${PYTHON_LIBRARIES} ${Boost_LIBRARIES}) -set_target_properties(pycaffe PROPERTIES PREFIX "" OUTPUT_NAME "_caffe") caffe_default_properties(pycaffe) +set_target_properties(pycaffe PROPERTIES PREFIX "" OUTPUT_NAME "_caffe") +target_include_directories(pycaffe PUBLIC ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR}) +target_link_libraries(pycaffe PUBLIC ${Caffe_LINK} ${PYTHON_LIBRARIES}) if(UNIX OR APPLE) set(__linkname "${PROJECT_SOURCE_DIR}/python/caffe/_caffe.so") diff --git a/src/caffe/CMakeLists.txt b/src/caffe/CMakeLists.txt index 8a80c9404..ed4d50bed 100644 --- a/src/caffe/CMakeLists.txt +++ b/src/caffe/CMakeLists.txt @@ -4,8 +4,11 @@ caffe_protobuf_generate_cpp_py(${proto_gen_folder} proto_srcs proto_hdrs proto_p # include python files either to force generation add_library(proto STATIC ${proto_hdrs} ${proto_srcs} ${proto_python}) -set(Caffe_LINKER_LIBS proto ${Caffe_LINKER_LIBS}) # note, crucial to prepend! caffe_default_properties(proto) +target_link_libraries(proto PUBLIC ${PROTOBUF_LIBRARIES}) +target_include_directories(proto PUBLIC ${PROTOBUF_INCLUDE_DIR}) + +list(INSERT Caffe_LINKER_LIBS 0 PUBLIC proto) # note, crucial to prepend! # --[ Caffe library @@ -18,8 +21,13 @@ if(HAVE_CUDA) endif() add_library(caffe ${srcs}) -target_link_libraries(caffe proto ${Caffe_LINKER_LIBS}) caffe_default_properties(caffe) +target_link_libraries(caffe ${Caffe_LINKER_LIBS}) +target_include_directories(caffe ${Caffe_INCLUDE_DIRS} + PUBLIC + $ + $) +target_compile_definitions(caffe ${Caffe_DEFINITIONS}) set_target_properties(caffe PROPERTIES VERSION ${CAFFE_TARGET_VERSION} SOVERSION ${CAFFE_TARGET_SOVERSION} @@ -37,4 +45,3 @@ file(WRITE ${PROJECT_BINARY_DIR}/__init__.py) list(APPEND proto_python ${PROJECT_BINARY_DIR}/__init__.py) install(PROGRAMS ${proto_python} DESTINATION python/caffe/proto) - diff --git a/src/gtest/CMakeLists.txt b/src/gtest/CMakeLists.txt index ef7ff7ed1..e98254af1 100644 --- a/src/gtest/CMakeLists.txt +++ b/src/gtest/CMakeLists.txt @@ -1,5 +1,8 @@ add_library(gtest STATIC EXCLUDE_FROM_ALL gtest.h gtest-all.cpp) caffe_default_properties(gtest) +target_include_directories(gtest PUBLIC ${Caffe_SRC_DIR}) +target_compile_definitions(gtest PUBLIC -DGTEST_USE_OWN_TR1_TUPLE) + #add_library(gtest_main gtest_main.cc) #target_link_libraries(gtest_main gtest) From 6200b915601e1f7b2ec6d4746dc143114722ec38 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Sat, 20 Aug 2016 01:08:26 +0300 Subject: [PATCH 317/458] net.cpp: do not include test/test_caffe_main.hpp --- src/caffe/net.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 644cb7e97..a3408734c 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -17,8 +17,6 @@ #include "caffe/util/math_functions.hpp" #include "caffe/util/upgrade_proto.hpp" -#include "caffe/test/test_caffe_main.hpp" - namespace caffe { template From f1b9da54598923c531e1a98c4f1546169165e441 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Sun, 14 Aug 2016 04:57:22 +0300 Subject: [PATCH 318/458] cmake: add option to link with OpenMP Despite Caffe itself does not use OpenMP, explicitly linking to OpenMP should be done when one statically links to a BLAS library which uses OpenMP internally and does not provide proper CMake imported targets with proper dependencies (nobody this so far). --- CMakeLists.txt | 1 + cmake/Dependencies.cmake | 17 +++++++++++++---- src/caffe/CMakeLists.txt | 3 +++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cb25b43a4..378b285c9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ caffe_option(USE_OPENCV "Build with OpenCV support" ON) caffe_option(USE_LEVELDB "Build with levelDB" ON) caffe_option(USE_LMDB "Build with lmdb" ON) caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only if necessary)" OFF) +caffe_option(USE_OPENMP "Link with OpenMP (when your BLAS wants OpenMP and you get linker errors)" OFF) # ---[ Dependencies include(cmake/Dependencies.cmake) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 6a1275923..290c161b8 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -1,7 +1,8 @@ -# This list is required for static linking and exported to CaffeConfig.cmake +# These lists are later turned into target properties on main caffe library target set(Caffe_LINKER_LIBS "") set(Caffe_INCLUDE_DIRS "") set(Caffe_DEFINITIONS "") +set(Caffe_COMPILE_OPTIONS "") # ---[ Boost find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem) @@ -14,10 +15,18 @@ list(APPEND Caffe_LINKER_LIBS PRIVATE ${CMAKE_THREAD_LIBS_INIT}) # ---[ OpenMP if(USE_OPENMP) - # TODO: use something exportable here + # Ideally, this should be provided by the BLAS library IMPORTED target. However, + # nobody does this, so we need to link to OpenMP explicitly and have the maintainer + # to flick the switch manually as needed. + # + # Moreover, OpenMP package does not provide an IMPORTED target as well, and the + # suggested way of linking to OpenMP is to append to CMAKE_{C,CXX}_FLAGS. + # However, this naïve method will force any user of Caffe to add the same kludge + # into their buildsystem again, so we put these options into per-target PUBLIC + # compile options and link flags, so that they will be exported properly. find_package(OpenMP REQUIRED) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + list(APPEND Caffe_LINKER_LIBS PRIVATE ${OpenMP_CXX_FLAGS}) + list(APPEND Caffe_COMPILE_OPTIONS PRIVATE ${OpenMP_CXX_FLAGS}) endif() # ---[ Google-glog diff --git a/src/caffe/CMakeLists.txt b/src/caffe/CMakeLists.txt index ed4d50bed..7b25a98aa 100644 --- a/src/caffe/CMakeLists.txt +++ b/src/caffe/CMakeLists.txt @@ -28,6 +28,9 @@ target_include_directories(caffe ${Caffe_INCLUDE_DIRS} $ $) target_compile_definitions(caffe ${Caffe_DEFINITIONS}) +if(Caffe_COMPILE_OPTIONS) + target_compile_options(caffe ${Caffe_COMPILE_OPTIONS}) +endif() set_target_properties(caffe PROPERTIES VERSION ${CAFFE_TARGET_VERSION} SOVERSION ${CAFFE_TARGET_SOVERSION} From 6ed799cb206c6b70bdd260d62e8ff3e077f5b635 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Wed, 24 Aug 2016 06:28:41 +0300 Subject: [PATCH 319/458] cmake/Templates: remove duplicated #cmakedefines from caffe_config.h.in Rationale: these are duplicated in CMakeLists code, and they cannot be removed from there because many definitions need to be exported to the library clients. See issue #4625. --- cmake/Templates/caffe_config.h.in | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/cmake/Templates/caffe_config.h.in b/cmake/Templates/caffe_config.h.in index 8a31b43ca..45465b983 100644 --- a/cmake/Templates/caffe_config.h.in +++ b/cmake/Templates/caffe_config.h.in @@ -4,16 +4,6 @@ /* Binaries directory */ #define BINARY_FOLDER "${PROJECT_BINARY_DIR}" -/* NVIDA Cuda */ -#cmakedefine HAVE_CUDA - -/* NVIDA cuDNN */ -#cmakedefine HAVE_CUDNN -#cmakedefine USE_CUDNN - -/* NVIDA cuDNN */ -#cmakedefine CPU_ONLY - /* Test device */ #define CUDA_TEST_DEVICE ${CUDA_TEST_DEVICE} @@ -27,12 +17,3 @@ #define EXAMPLES_SOURCE_DIR "examples/" #define CMAKE_EXT "" #endif - -/* Matlab */ -#cmakedefine HAVE_MATLAB - -/* IO libraries */ -#cmakedefine USE_OPENCV -#cmakedefine USE_LEVELDB -#cmakedefine USE_LMDB -#cmakedefine ALLOW_LMDB_NOLOCK From 9bc83e32b39e2c9bbf4bf20d69d4f215d73a414e Mon Sep 17 00:00:00 2001 From: Benedikt Wilbertz Date: Fri, 12 Aug 2016 22:33:06 +0200 Subject: [PATCH 320/458] fix layerSetUp of scale_layer to not add bias blob when already present --- src/caffe/layers/scale_layer.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/caffe/layers/scale_layer.cpp b/src/caffe/layers/scale_layer.cpp index ecdbb123e..e652dad6e 100644 --- a/src/caffe/layers/scale_layer.cpp +++ b/src/caffe/layers/scale_layer.cpp @@ -56,9 +56,17 @@ void ScaleLayer::LayerSetUp(const vector*>& bottom, bias_bottom_vec_.resize(1); bias_bottom_vec_[0] = bottom[0]; bias_layer_->SetUp(bias_bottom_vec_, top); - bias_param_id_ = this->blobs_.size(); - this->blobs_.resize(bias_param_id_ + 1); - this->blobs_[bias_param_id_] = bias_layer_->blobs()[0]; + if (this->blobs_.size() + bottom.size() < 3) { + // case: blobs.size == 1 && bottom.size == 1 + // or blobs.size == 0 && bottom.size == 2 + bias_param_id_ = this->blobs_.size(); + this->blobs_.resize(bias_param_id_ + 1); + this->blobs_[bias_param_id_] = bias_layer_->blobs()[0]; + } else { + // bias param already initialized + bias_param_id_ = this->blobs_.size() - 1; + bias_layer_->blobs()[0] = this->blobs_[bias_param_id_]; + } bias_propagate_down_.resize(1, false); } this->param_propagate_down_.resize(this->blobs_.size(), true); From cdcf2e07dba951774be7feb9d486b7f84ef0c0b1 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Fri, 9 Sep 2016 12:49:35 -0700 Subject: [PATCH 321/458] Benchmarking should not impact perf until timer is read --- src/caffe/util/benchmark.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/caffe/util/benchmark.cpp b/src/caffe/util/benchmark.cpp index 1d269c351..d994225f9 100644 --- a/src/caffe/util/benchmark.cpp +++ b/src/caffe/util/benchmark.cpp @@ -44,7 +44,6 @@ void Timer::Stop() { if (Caffe::mode() == Caffe::GPU) { #ifndef CPU_ONLY CUDA_CHECK(cudaEventRecord(stop_gpu_, 0)); - CUDA_CHECK(cudaEventSynchronize(stop_gpu_)); #else NO_GPU; #endif @@ -66,6 +65,7 @@ float Timer::MicroSeconds() { } if (Caffe::mode() == Caffe::GPU) { #ifndef CPU_ONLY + CUDA_CHECK(cudaEventSynchronize(stop_gpu_)); CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, stop_gpu_)); // Cuda only measure milliseconds @@ -89,6 +89,7 @@ float Timer::MilliSeconds() { } if (Caffe::mode() == Caffe::GPU) { #ifndef CPU_ONLY + CUDA_CHECK(cudaEventSynchronize(stop_gpu_)); CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, stop_gpu_)); #else From 50b5697a0e0b85921e3ea38e961984ea08f014c3 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Fri, 9 Sep 2016 12:57:09 -0700 Subject: [PATCH 322/458] Avoids missing return values during build. --- src/caffe/layer_factory.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index e967bd618..f14253a51 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -67,6 +67,7 @@ shared_ptr > GetConvolutionLayer( #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } @@ -104,6 +105,7 @@ shared_ptr > GetPoolingLayer(const LayerParameter& param) { #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } @@ -141,6 +143,7 @@ shared_ptr > GetLRNLayer(const LayerParameter& param) { #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } @@ -164,6 +167,7 @@ shared_ptr > GetReLULayer(const LayerParameter& param) { #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } @@ -187,6 +191,7 @@ shared_ptr > GetSigmoidLayer(const LayerParameter& param) { #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } @@ -210,6 +215,7 @@ shared_ptr > GetSoftmaxLayer(const LayerParameter& param) { #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } @@ -233,6 +239,7 @@ shared_ptr > GetTanHLayer(const LayerParameter& param) { #endif } else { LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; + throw; // Avoids missing return warning } } From 04f9a77801af3233bacadcca178ee7d7a6406bd5 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 27 Aug 2016 20:19:00 -0700 Subject: [PATCH 323/458] [docs] clarify handling of bias and scaling by BiasLayer, ScaleLayer A bias/scaling can be applied wherever desired by defining the respective layers, and `ScaleLayer` can handle both as a memory optimization. --- include/caffe/layers/batch_norm_layer.hpp | 8 +++----- include/caffe/layers/bias_layer.hpp | 10 +++++----- include/caffe/layers/scale_layer.hpp | 12 +++++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/caffe/layers/batch_norm_layer.hpp b/include/caffe/layers/batch_norm_layer.hpp index 9b2d5126e..c38c84106 100644 --- a/include/caffe/layers/batch_norm_layer.hpp +++ b/include/caffe/layers/batch_norm_layer.hpp @@ -27,11 +27,9 @@ namespace caffe { * param {lr_mult: 0} three times in the layer definition. * * Note that the original paper also included a per-channel learned bias and - * scaling factor. It is possible (though a bit cumbersome) to implement - * this in caffe using a single-channel DummyDataLayer filled with zeros, - * followed by a Convolution layer with output the same size as the current. - * This produces a channel-specific value that can be added or multiplied by - * the BatchNorm layer's output. + * scaling factor. To implement this in Caffe, define a `ScaleLayer` configured + * with `bias_term: true` after each `BatchNormLayer` to handle both the bias + * and scaling factor. * * [1] S. Ioffe and C. Szegedy, "Batch Normalization: Accelerating Deep Network * Training by Reducing Internal Covariate Shift." arXiv preprint diff --git a/include/caffe/layers/bias_layer.hpp b/include/caffe/layers/bias_layer.hpp index eedc3aaa3..9639c9cdc 100644 --- a/include/caffe/layers/bias_layer.hpp +++ b/include/caffe/layers/bias_layer.hpp @@ -10,13 +10,13 @@ namespace caffe { /** - * @brief Computes a sum of two input Blobs, with the shape of the - * latter Blob "broadcast" to match the shape of the former. - * Equivalent to tiling the latter Blob, then computing the elementwise - * sum. + * @brief Computes a sum of two input Blobs, with the shape of the latter Blob + * "broadcast" to match the shape of the former. Equivalent to tiling + * the latter Blob, then computing the elementwise sum. * * The second input may be omitted, in which case it's learned as a parameter - * of the layer. + * of the layer. Note: in case bias and scaling are desired, both operations can + * be handled by `ScaleLayer` configured with `bias_term: true`. */ template class BiasLayer : public Layer { diff --git a/include/caffe/layers/scale_layer.hpp b/include/caffe/layers/scale_layer.hpp index 924df2e51..45b714d40 100644 --- a/include/caffe/layers/scale_layer.hpp +++ b/include/caffe/layers/scale_layer.hpp @@ -12,13 +12,15 @@ namespace caffe { /** - * @brief Computes a product of two input Blobs, with the shape of the - * latter Blob "broadcast" to match the shape of the former. + * @brief Computes the elementwise product of two input Blobs, with the shape of + * the latter Blob "broadcast" to match the shape of the former. * Equivalent to tiling the latter Blob, then computing the elementwise - * product. + * product. Note: for efficiency and convenience, this layer can + * additionally perform a "broadcast" sum too when `bias_term: true` + * is set. * - * The second input may be omitted, in which case it's learned as a parameter - * of the layer. + * The latter, scale input may be omitted, in which case it's learned as + * parameter of the layer (as is the bias, if it is included). */ template class ScaleLayer: public Layer { From d195e605de5f6964eadeba467f5ad85d46841c87 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 9 Sep 2016 19:46:41 -0700 Subject: [PATCH 324/458] [docs] note CUDA 8 requirement for Ubuntu 16.04 --- docs/install_apt.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/install_apt.md b/docs/install_apt.md index 2976e3cd0..3de5a494e 100644 --- a/docs/install_apt.md +++ b/docs/install_apt.md @@ -9,14 +9,19 @@ title: Installation: Ubuntu sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev -**CUDA**: Install via the NVIDIA package instead of `apt-get` to be certain of the library and driver versions. -Install the library and latest driver separately; the driver bundled with the library is usually out-of-date. +**CUDA**: Install by `apt-get` or the NVIDIA `.run` package. +The NVIDIA package tends to follow more recent library and driver versions, but the installation is more manual. +If installing from packages, install the library and latest driver separately; the driver bundled with the library is usually out-of-date. This can be skipped for CPU-only installation. **BLAS**: install ATLAS by `sudo apt-get install libatlas-base-dev` or install OpenBLAS or MKL for better CPU performance. **Python** (optional): if you use the default Python you will need to `sudo apt-get install` the `python-dev` package to have the Python headers for building the pycaffe interface. +**Compatibility notes, 16.04** + +CUDA 8 is required on Ubuntu 16.04. + **Remaining dependencies, 14.04** Everything is packaged in 14.04. From 3b6fd1d95b374b0484f32a4f86380714c456a293 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 27 Aug 2016 20:23:13 -0700 Subject: [PATCH 325/458] [docs] identify batch norm layer blobs --- include/caffe/layers/batch_norm_layer.hpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/include/caffe/layers/batch_norm_layer.hpp b/include/caffe/layers/batch_norm_layer.hpp index c38c84106..a26ad1a42 100644 --- a/include/caffe/layers/batch_norm_layer.hpp +++ b/include/caffe/layers/batch_norm_layer.hpp @@ -13,18 +13,19 @@ namespace caffe { * @brief Normalizes the input to have 0-mean and/or unit (1) variance across * the batch. * - * This layer computes Batch Normalization described in [1]. For - * each channel in the data (i.e. axis 1), it subtracts the mean and divides - * by the variance, where both statistics are computed across both spatial - * dimensions and across the different examples in the batch. + * This layer computes Batch Normalization as described in [1]. For each channel + * in the data (i.e. axis 1), it subtracts the mean and divides by the variance, + * where both statistics are computed across both spatial dimensions and across + * the different examples in the batch. * - * By default, during training time, the network is computing global mean/ - * variance statistics via a running average, which is then used at test - * time to allow deterministic outputs for each input. You can manually - * toggle whether the network is accumulating or using the statistics via the - * use_global_stats option. IMPORTANT: for this feature to work, you MUST - * set the learning rate to zero for all three parameter blobs, i.e., - * param {lr_mult: 0} three times in the layer definition. + * By default, during training time, the network is computing global + * mean/variance statistics via a running average, which is then used at test + * time to allow deterministic outputs for each input. You can manually toggle + * whether the network is accumulating or using the statistics via the + * use_global_stats option. IMPORTANT: for this feature to work, you MUST set + * the learning rate to zero for all three blobs, i.e., param {lr_mult: 0} three + * times in the layer definition. For reference, these three blobs are (0) + * mean, (1) variance, and (2) the moving average factor. * * Note that the original paper also included a per-channel learned bias and * scaling factor. To implement this in Caffe, define a `ScaleLayer` configured From c8f446f640b12b0577063eca8fab004e73c0aefc Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 29 Aug 2016 23:42:58 -0700 Subject: [PATCH 326/458] batch norm: hide statistics from solver, simplifying layer definition batch norm statistics are not learnable parameters subject to solver updates, so they must be shielded from the solver. `BatchNorm` layer now masks its statistics for itself by zeroing parameter learning rates instead of relying on the layer definition. n.b. declaring `param`s for batch norm layers is no longer allowed. --- include/caffe/layers/batch_norm_layer.hpp | 6 ++---- src/caffe/layers/batch_norm_layer.cpp | 8 ++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/caffe/layers/batch_norm_layer.hpp b/include/caffe/layers/batch_norm_layer.hpp index a26ad1a42..43f7b28be 100644 --- a/include/caffe/layers/batch_norm_layer.hpp +++ b/include/caffe/layers/batch_norm_layer.hpp @@ -22,10 +22,8 @@ namespace caffe { * mean/variance statistics via a running average, which is then used at test * time to allow deterministic outputs for each input. You can manually toggle * whether the network is accumulating or using the statistics via the - * use_global_stats option. IMPORTANT: for this feature to work, you MUST set - * the learning rate to zero for all three blobs, i.e., param {lr_mult: 0} three - * times in the layer definition. For reference, these three blobs are (0) - * mean, (1) variance, and (2) the moving average factor. + * use_global_stats option. For reference, these statistics are kept in the + * layer's three blobs: (0) mean, (1) variance, and (2) moving average factor. * * Note that the original paper also included a per-channel learned bias and * scaling factor. To implement this in Caffe, define a `ScaleLayer` configured diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index a69d8f993..0b1037edc 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -34,6 +34,14 @@ void BatchNormLayer::LayerSetUp(const vector*>& bottom, this->blobs_[i]->mutable_cpu_data()); } } + // Mask statistics from optimization by setting local learning rates + // for mean, variance, and the bias correction to zero. + CHECK_EQ(this->layer_param_.param_size(), 0) + << "Cannot configure batch normalization statistics as layer parameters."; + for (int i = 0; i < this->blobs_.size(); ++i) { + ParamSpec* fixed_param_spec = this->layer_param_.add_param(); + fixed_param_spec->set_lr_mult(0.); + } } template From a8ec123c00723df0d0ad897e1eea32a29201c81b Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 9 Sep 2016 16:49:31 -0700 Subject: [PATCH 327/458] batch norm: auto-upgrade old layer definitions w/ param messages automatically strip old batch norm layer definitions including `param` messages. the batch norm layer used to require manually masking its state from the solver by setting `param { lr_mult: 0 }` messages for each of its statistics. this is now handled automatically by the layer. --- include/caffe/util/upgrade_proto.hpp | 6 +++++ src/caffe/util/upgrade_proto.cpp | 34 +++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/include/caffe/util/upgrade_proto.hpp b/include/caffe/util/upgrade_proto.hpp index 14e1936a8..b145822af 100644 --- a/include/caffe/util/upgrade_proto.hpp +++ b/include/caffe/util/upgrade_proto.hpp @@ -65,6 +65,12 @@ bool NetNeedsInputUpgrade(const NetParameter& net_param); // Perform all necessary transformations to upgrade input fields into layers. void UpgradeNetInput(NetParameter* net_param); +// Return true iff the Net contains batch norm layers with manual local LRs. +bool NetNeedsBatchNormUpgrade(const NetParameter& net_param); + +// Perform all necessary transformations to upgrade batch norm layers. +void UpgradeNetBatchNorm(NetParameter* net_param); + // Return true iff the solver contains any old solver_type specified as enums bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param); diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index 9e186915b..a0aacbe92 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -14,7 +14,8 @@ namespace caffe { bool NetNeedsUpgrade(const NetParameter& net_param) { return NetNeedsV0ToV1Upgrade(net_param) || NetNeedsV1ToV2Upgrade(net_param) - || NetNeedsDataUpgrade(net_param) || NetNeedsInputUpgrade(net_param); + || NetNeedsDataUpgrade(net_param) || NetNeedsInputUpgrade(net_param) + || NetNeedsBatchNormUpgrade(net_param); } bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { @@ -71,6 +72,14 @@ bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param) { LOG(WARNING) << "Note that future Caffe releases will only support " << "input layers and not input fields."; } + // NetParameter uses old style batch norm layers; try to upgrade it. + if (NetNeedsBatchNormUpgrade(*param)) { + LOG(INFO) << "Attempting to upgrade batch norm layers using deprecated " + << "params: " << param_file; + UpgradeNetBatchNorm(param); + LOG(INFO) << "Successfully upgraded batch norm layers using deprecated " + << "params."; + } return success; } @@ -991,6 +1000,29 @@ void UpgradeNetInput(NetParameter* net_param) { net_param->clear_input_dim(); } +bool NetNeedsBatchNormUpgrade(const NetParameter& net_param) { + for (int i = 0; i < net_param.layer_size(); ++i) { + // Check if BatchNorm layers declare three parameters, as required by + // the previous BatchNorm layer definition. + if (net_param.layer(i).type() == "BatchNorm" + && net_param.layer(i).param_size() == 3) { + return true; + } + } + return false; +} + +void UpgradeNetBatchNorm(NetParameter* net_param) { + for (int i = 0; i < net_param->layer_size(); ++i) { + // Check if BatchNorm layers declare three parameters, as required by + // the previous BatchNorm layer definition. + if (net_param->layer(i).type() == "BatchNorm" + && net_param->layer(i).param_size() == 3) { + net_param->mutable_layer(i)->clear_param(); + } + } +} + // Return true iff the solver contains any old solver_type specified as enums bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param) { if (solver_param.has_solver_type()) { From fc8f3eba6fa06be2f55d1b576f46664e07f5d0a6 Mon Sep 17 00:00:00 2001 From: Youssef Kashef Date: Tue, 13 Sep 2016 15:52:39 +0200 Subject: [PATCH 328/458] fix comments in matlab classification demo --- matlab/demo/classification_demo.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/matlab/demo/classification_demo.m b/matlab/demo/classification_demo.m index 2b6033297..435c07784 100644 --- a/matlab/demo/classification_demo.m +++ b/matlab/demo/classification_demo.m @@ -8,7 +8,7 @@ % % **************************************************************************** % For detailed documentation and usage on Caffe's Matlab interface, please -% refer to Caffe Interface Tutorial at +% refer to the Caffe Interface Tutorial at % http://caffe.berkeleyvision.org/tutorial/interfaces.html#matlab % **************************************************************************** % @@ -24,6 +24,7 @@ % $ export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:/usr/local/cuda-5.5/lib64 % $ export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 % Or the equivalent based on where things are installed on your system +% and what versions are installed. % % Usage: % im = imread('../../examples/images/cat.jpg'); @@ -39,7 +40,7 @@ % Data coming in from matlab needs to be in the order % [width, height, channels, images] % where width is the fastest dimension. -% Here is the rough matlab for putting image data into the correct +% Here is the rough matlab code for putting image data into the correct % format in W x H x C with BGR channels: % % permute channels from RGB to BGR % im_data = im(:, :, [3, 2, 1]); @@ -54,7 +55,7 @@ % If you have multiple images, cat them with cat(4, ...) -% Add caffe/matlab to you Matlab search PATH to use matcaffe +% Add caffe/matlab to your Matlab search PATH in order to use matcaffe if exist('../+caffe', 'dir') addpath('..'); else From eee3be15589e81b5385c7d0d02a151c789134905 Mon Sep 17 00:00:00 2001 From: Miguel Lloreda Date: Thu, 15 Sep 2016 17:28:02 -0400 Subject: [PATCH 329/458] Fixed typos in examples/cpp_classification/readme --- examples/cpp_classification/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/cpp_classification/readme.md b/examples/cpp_classification/readme.md index 0de2885b5..4f683aa62 100644 --- a/examples/cpp_classification/readme.md +++ b/examples/cpp_classification/readme.md @@ -10,7 +10,7 @@ priority: 10 Caffe, at its core, is written in C++. It is possible to use the C++ API of Caffe to implement an image classification application similar -to the Python code presented in one of the Notebook example. To look +to the Python code presented in one of the Notebook examples. To look at a more general-purpose example of the Caffe C++ API, you should study the source code of the command line tool `caffe` in `tools/caffe.cpp`. @@ -19,7 +19,7 @@ study the source code of the command line tool `caffe` in `tools/caffe.cpp`. A simple C++ code is proposed in `examples/cpp_classification/classification.cpp`. For the sake of simplicity, this example does not support oversampling of a single -sample nor batching of multiple independant samples. This example is +sample nor batching of multiple independent samples. This example is not trying to reach the maximum possible classification throughput on a system, but special care was given to avoid unnecessary pessimization while keeping the code readable. From 2f55f42cff9147e69b1f5dff9232058d7b654eba Mon Sep 17 00:00:00 2001 From: Rok Mandeljc Date: Mon, 29 Jun 2015 15:48:43 +0200 Subject: [PATCH 330/458] matcaffe: allow destruction of individual networks and solvers --- matlab/+caffe/Net.m | 3 +++ matlab/+caffe/Solver.m | 3 +++ matlab/+caffe/private/caffe_.cpp | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/matlab/+caffe/Net.m b/matlab/+caffe/Net.m index e6295bba1..349e060eb 100644 --- a/matlab/+caffe/Net.m +++ b/matlab/+caffe/Net.m @@ -68,6 +68,9 @@ self.layer_names = self.attributes.layer_names; self.blob_names = self.attributes.blob_names; end + function delete (self) + caffe_('delete_net', self.hNet_self); + end function layer = layers(self, layer_name) CHECK(ischar(layer_name), 'layer_name must be a string'); layer = self.layer_vec(self.name2layer_index(layer_name)); diff --git a/matlab/+caffe/Solver.m b/matlab/+caffe/Solver.m index f8bdc4e22..2d3c98b2a 100644 --- a/matlab/+caffe/Solver.m +++ b/matlab/+caffe/Solver.m @@ -36,6 +36,9 @@ self.test_nets(n) = caffe.Net(self.attributes.hNet_test_nets(n)); end end + function delete (self) + caffe_('delete_solver', self.hSolver_self); + end function iter = iter(self) iter = caffe_('solver_get_iter', self.hSolver_self); end diff --git a/matlab/+caffe/private/caffe_.cpp b/matlab/+caffe/private/caffe_.cpp index 1b1b2bff8..bc04f4171 100644 --- a/matlab/+caffe/private/caffe_.cpp +++ b/matlab/+caffe/private/caffe_.cpp @@ -197,6 +197,17 @@ static void get_solver(MEX_ARGS) { mxFree(solver_file); } +// Usage: caffe_('delete_solver', hSolver) +static void delete_solver(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('delete_solver', hSolver)"); + Solver* solver = handle_to_ptr >(prhs[0]); + solvers_.erase(std::remove_if(solvers_.begin(), solvers_.end(), + [solver] (const shared_ptr< Solver > &solverPtr) { + return solverPtr.get() == solver; + }), solvers_.end()); +} + // Usage: caffe_('solver_get_attr', hSolver) static void solver_get_attr(MEX_ARGS) { mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), @@ -271,6 +282,17 @@ static void get_net(MEX_ARGS) { mxFree(phase_name); } +// Usage: caffe_('delete_solver', hSolver) +static void delete_net(MEX_ARGS) { + mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), + "Usage: caffe_('delete_solver', hNet)"); + Net* net = handle_to_ptr >(prhs[0]); + nets_.erase(std::remove_if(nets_.begin(), nets_.end(), + [net] (const shared_ptr< Net > &netPtr) { + return netPtr.get() == net; + }), nets_.end()); +} + // Usage: caffe_('net_get_attr', hNet) static void net_get_attr(MEX_ARGS) { mxCHECK(nrhs == 1 && mxIsStruct(prhs[0]), @@ -522,12 +544,14 @@ struct handler_registry { static handler_registry handlers[] = { // Public API functions { "get_solver", get_solver }, + { "delete_solver", delete_solver }, { "solver_get_attr", solver_get_attr }, { "solver_get_iter", solver_get_iter }, { "solver_restore", solver_restore }, { "solver_solve", solver_solve }, { "solver_step", solver_step }, { "get_net", get_net }, + { "delete_net", delete_net }, { "net_get_attr", net_get_attr }, { "net_forward", net_forward }, { "net_backward", net_backward }, From f96ccea124314d4ea1374e906fbd709d1dc43585 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 23 Sep 2016 11:22:48 -0700 Subject: [PATCH 331/458] [TravisCI] google/protobuf renamed the 3.0 branch --- scripts/travis/install-deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index 4e86ac739..daef5c4a0 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -56,7 +56,7 @@ else dh-autoreconf \ unzip - wget https://github.com/google/protobuf/archive/3.0.0-GA.tar.gz -O protobuf3.tar.gz + wget https://github.com/google/protobuf/archive/3.0.x.tar.gz -O protobuf3.tar.gz tar -xzf protobuf3.tar.gz -C $PROTOBUF3_DIR --strip 1 rm protobuf3.tar.gz cd $PROTOBUF3_DIR From 79a8c5210846f70108e5a2be1bedc95d9f8aea30 Mon Sep 17 00:00:00 2001 From: Ken Yu Date: Wed, 21 Sep 2016 16:19:17 +0800 Subject: [PATCH 332/458] Ignore Visual Studio Code files. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 53c1fb056..281ef3266 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,9 @@ # PyCharm files .idea +# Visual Studio Code files +.vscode + # OSX dir files .DS_Store From ce6ac831b96725bd770eaec5c0f743e423e355fd Mon Sep 17 00:00:00 2001 From: Benedikt Wilbertz Date: Thu, 29 Sep 2016 21:55:58 +0200 Subject: [PATCH 333/458] slightly relax batch norm check --- src/caffe/layers/batch_norm_layer.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index 0b1037edc..e661abb11 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -36,11 +36,15 @@ void BatchNormLayer::LayerSetUp(const vector*>& bottom, } // Mask statistics from optimization by setting local learning rates // for mean, variance, and the bias correction to zero. - CHECK_EQ(this->layer_param_.param_size(), 0) - << "Cannot configure batch normalization statistics as layer parameters."; for (int i = 0; i < this->blobs_.size(); ++i) { - ParamSpec* fixed_param_spec = this->layer_param_.add_param(); - fixed_param_spec->set_lr_mult(0.); + if (this->layer_param_.param_size() == i) { + ParamSpec* fixed_param_spec = this->layer_param_.add_param(); + fixed_param_spec->set_lr_mult(0.f); + } else { + CHECK_EQ(this->layer_param_.param(i).lr_mult(), 0.f) + << "Cannot configure batch normalization statistics as layer " + << "parameters."; + } } } From 08ca70326966ad24b012ca8084c8baba5b1a23b5 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Fri, 30 Sep 2016 18:18:47 -0700 Subject: [PATCH 334/458] NV changed path to cudnn --- scripts/travis/install-deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index daef5c4a0..1900b16df 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -84,7 +84,7 @@ if $WITH_CUDA ; then rm $CUDA_REPO_PKG if $WITH_CUDNN ; then - ML_REPO_PKG=nvidia-machine-learning-repo_4.0-2_amd64.deb + ML_REPO_PKG=nvidia-machine-learning-repo-ubuntu1404_4.0-2_amd64.deb wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/$ML_REPO_PKG dpkg -i $ML_REPO_PKG fi From c97a964a23f0ddd455c619537e208f117ae77743 Mon Sep 17 00:00:00 2001 From: Kun Wang Date: Wed, 5 Oct 2016 18:59:07 +0800 Subject: [PATCH 335/458] fix typo in pascal_multilabel_datalayers.py --- examples/pycaffe/layers/pascal_multilabel_datalayers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/pycaffe/layers/pascal_multilabel_datalayers.py b/examples/pycaffe/layers/pascal_multilabel_datalayers.py index 68e4fa796..9420cb328 100644 --- a/examples/pycaffe/layers/pascal_multilabel_datalayers.py +++ b/examples/pycaffe/layers/pascal_multilabel_datalayers.py @@ -20,7 +20,7 @@ class PascalMultilabelDataLayerSync(caffe.Layer): """ - This is a simple syncronous datalayer for training a multilabel model on + This is a simple synchronous datalayer for training a multilabel model on PASCAL. """ @@ -33,7 +33,7 @@ def setup(self, bottom, top): # params is a python dictionary with layer parameters. params = eval(self.param_str) - # Check the paramameters for validity. + # Check the parameters for validity. check_params(params) # store input as class variables @@ -207,7 +207,7 @@ def check_params(params): def print_info(name, params): """ - Ouput some info regarding the class + Output some info regarding the class """ print "{} initialized for split: {}, with bs: {}, im_shape: {}.".format( name, From cdd2d0ee9ed42200b6ab8b52c0213bb5916b46c4 Mon Sep 17 00:00:00 2001 From: Vincent Date: Wed, 5 Oct 2016 13:12:04 +0100 Subject: [PATCH 336/458] Fix: docs/yum_install.md glog broken link fixes the broken glog link in yum_install.md which is currently returning a 404. --- docs/install_yum.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install_yum.md b/docs/install_yum.md index 2104912e4..38bf7255c 100644 --- a/docs/install_yum.md +++ b/docs/install_yum.md @@ -15,7 +15,7 @@ title: Installation: RHEL / Fedora / CentOS **Remaining dependencies, if not found** # glog - wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz + wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/google-glog/glog-0.3.3.tar.gz tar zxvf glog-0.3.3.tar.gz cd glog-0.3.3 ./configure From 553a645f1d6f950bf1a36284bb13b5fc7c3bacdc Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Thu, 13 Oct 2016 22:29:56 -0400 Subject: [PATCH 337/458] pytest fix: Files created with NamedTemporary files cannot be opened on Windows --- python/caffe/test/test_net.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index e1090934d..a0739fbac 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -173,12 +173,12 @@ class TestLevels(unittest.TestCase): """ def setUp(self): - self.f = tempfile.NamedTemporaryFile(mode='w+') + self.f = tempfile.NamedTemporaryFile(mode='w+', delete=False) self.f.write(self.TEST_NET) - self.f.flush() + self.f.close() def tearDown(self): - self.f.close() + os.remove(self.f.name) def check_net(self, net, blobs): net_blobs = [b for b in net.blobs.keys() if 'data' not in b] @@ -238,12 +238,12 @@ class TestStages(unittest.TestCase): """ def setUp(self): - self.f = tempfile.NamedTemporaryFile(mode='w+') + self.f = tempfile.NamedTemporaryFile(mode='w+', delete=False) self.f.write(self.TEST_NET) - self.f.flush() + self.f.close() def tearDown(self): - self.f.close() + os.remove(self.f.name) def check_net(self, net, blobs): net_blobs = [b for b in net.blobs.keys() if 'data' not in b] @@ -320,12 +320,12 @@ class TestAllInOne(unittest.TestCase): """ def setUp(self): - self.f = tempfile.NamedTemporaryFile(mode='w+') + self.f = tempfile.NamedTemporaryFile(mode='w+', delete=False) self.f.write(self.TEST_NET) - self.f.flush() + self.f.close() def tearDown(self): - self.f.close() + os.remove(self.f.name) def check_net(self, net, outputs): self.assertEqual(list(net.blobs['data'].shape), [1,1,10,10]) From 95a436c601a04af620a0e166393d3ff695905bc4 Mon Sep 17 00:00:00 2001 From: max argus Date: Thu, 25 Aug 2016 09:20:24 +0000 Subject: [PATCH 338/458] Fix: made load_hd5 check blob dims by default. Size checks are needed for loading parameters to avoid strange bugs when loading data we continue to reshape. --- include/caffe/util/hdf5.hpp | 4 +-- src/caffe/layers/hdf5_data_layer.cpp | 3 +- src/caffe/test/test_hdf5_output_layer.cpp | 10 ++++--- src/caffe/test/test_hdf5data_layer.cpp | 2 +- src/caffe/util/hdf5.cpp | 34 +++++++++++++++++++---- 5 files changed, 39 insertions(+), 14 deletions(-) diff --git a/include/caffe/util/hdf5.hpp b/include/caffe/util/hdf5.hpp index ce568c5eb..71549c1cc 100644 --- a/include/caffe/util/hdf5.hpp +++ b/include/caffe/util/hdf5.hpp @@ -13,12 +13,12 @@ namespace caffe { template void hdf5_load_nd_dataset_helper( hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, - Blob* blob); + Blob* blob, bool reshape); template void hdf5_load_nd_dataset( hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, - Blob* blob); + Blob* blob, bool reshape = false); template void hdf5_save_nd_dataset( diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 2f13dc641..009912900 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -39,8 +39,9 @@ void HDF5DataLayer::LoadHDF5FileData(const char* filename) { for (int i = 0; i < top_size; ++i) { hdf_blobs_[i] = shared_ptr >(new Blob()); + // Allow reshape here, as we are loading data not params hdf5_load_nd_dataset(file_id, this->layer_param_.top(i).c_str(), - MIN_DATA_DIM, MAX_DATA_DIM, hdf_blobs_[i].get()); + MIN_DATA_DIM, MAX_DATA_DIM, hdf_blobs_[i].get(), true); } herr_t status = H5Fclose(file_id); diff --git a/src/caffe/test/test_hdf5_output_layer.cpp b/src/caffe/test/test_hdf5_output_layer.cpp index 3833ebff7..2bc2de1e6 100644 --- a/src/caffe/test/test_hdf5_output_layer.cpp +++ b/src/caffe/test/test_hdf5_output_layer.cpp @@ -77,10 +77,12 @@ TYPED_TEST(HDF5OutputLayerTest, TestForward) { H5P_DEFAULT); ASSERT_GE(file_id, 0)<< "Failed to open HDF5 file" << this->input_file_name_; + // Allow reshape here as we are loading data not params + bool reshape = true; hdf5_load_nd_dataset(file_id, HDF5_DATA_DATASET_NAME, 0, 4, - this->blob_data_); + this->blob_data_, reshape); hdf5_load_nd_dataset(file_id, HDF5_DATA_LABEL_NAME, 0, 4, - this->blob_label_); + this->blob_label_, reshape); herr_t status = H5Fclose(file_id); EXPECT_GE(status, 0)<< "Failed to close HDF5 file " << this->input_file_name_; @@ -105,12 +107,12 @@ TYPED_TEST(HDF5OutputLayerTest, TestForward) { Blob* blob_data = new Blob(); hdf5_load_nd_dataset(file_id, HDF5_DATA_DATASET_NAME, 0, 4, - blob_data); + blob_data, reshape); this->CheckBlobEqual(*(this->blob_data_), *blob_data); Blob* blob_label = new Blob(); hdf5_load_nd_dataset(file_id, HDF5_DATA_LABEL_NAME, 0, 4, - blob_label); + blob_label, reshape); this->CheckBlobEqual(*(this->blob_label_), *blob_label); status = H5Fclose(file_id); diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 8884ce95a..e0fd62134 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -70,7 +70,7 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { int height = 6; int width = 5; - // Test that the layer setup got the correct parameters. + // Test that the layer setup gives correct parameters. HDF5DataLayer layer(param); layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); EXPECT_EQ(this->blob_top_data_->num(), batch_size); diff --git a/src/caffe/util/hdf5.cpp b/src/caffe/util/hdf5.cpp index 7730e76ab..0003f1b39 100644 --- a/src/caffe/util/hdf5.cpp +++ b/src/caffe/util/hdf5.cpp @@ -9,7 +9,7 @@ namespace caffe { template void hdf5_load_nd_dataset_helper( hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, - Blob* blob) { + Blob* blob, bool reshape) { // Verify that the dataset exists. CHECK(H5LTfind_dataset(file_id, dataset_name_)) << "Failed to find HDF5 dataset " << dataset_name_; @@ -56,17 +56,38 @@ void hdf5_load_nd_dataset_helper( LOG(FATAL) << "Datatype class unknown"; } + vector blob_dims(dims.size()); for (int i = 0; i < dims.size(); ++i) { blob_dims[i] = dims[i]; } - blob->Reshape(blob_dims); + + if (reshape) { + blob->Reshape(blob_dims); + } else { + if (blob_dims != blob->shape()) { + // create shape string for error message + ostringstream stream; + int count = 1; + for (int i = 0; i < blob_dims.size(); ++i) { + stream << blob_dims[i] << " "; + count = count * blob_dims[i]; + } + stream << "(" << count << ")"; + string source_shape_string = stream.str(); + + CHECK(blob_dims == blob->shape()) << "Cannot load blob from hdf5; shape " + << "mismatch. Source shape is " << source_shape_string + << " target shape is " << blob->shape_string(); + } + } } template <> void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, - int min_dim, int max_dim, Blob* blob) { - hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob); + int min_dim, int max_dim, Blob* blob, bool reshape) { + hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob, + reshape); herr_t status = H5LTread_dataset_float( file_id, dataset_name_, blob->mutable_cpu_data()); CHECK_GE(status, 0) << "Failed to read float dataset " << dataset_name_; @@ -74,8 +95,9 @@ void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, template <> void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, - int min_dim, int max_dim, Blob* blob) { - hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob); + int min_dim, int max_dim, Blob* blob, bool reshape) { + hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob, + reshape); herr_t status = H5LTread_dataset_double( file_id, dataset_name_, blob->mutable_cpu_data()); CHECK_GE(status, 0) << "Failed to read double dataset " << dataset_name_; From 197d11a0e1be7ad35714eb38d9b391e1cd39af39 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 27 Oct 2016 00:41:03 -0700 Subject: [PATCH 339/458] sigmoid cross-entropy loss: add GPU forward for full GPU mode close #3004 --- .../sigmoid_cross_entropy_loss_layer.hpp | 2 ++ .../sigmoid_cross_entropy_loss_layer.cpp | 2 +- .../sigmoid_cross_entropy_loss_layer.cu | 36 +++++++++++++++++-- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp index 598dca5ff..6452ea510 100644 --- a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp +++ b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp @@ -59,6 +59,8 @@ class SigmoidCrossEntropyLossLayer : public LossLayer { /// @copydoc SigmoidCrossEntropyLossLayer virtual void Forward_cpu(const vector*>& bottom, const vector*>& top); + virtual void Forward_gpu(const vector*>& bottom, + const vector*>& top); /** * @brief Computes the sigmoid cross-entropy loss error gradient w.r.t. the diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp index 10ac94708..eb77a9c2c 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp @@ -68,7 +68,7 @@ void SigmoidCrossEntropyLossLayer::Backward_cpu( } #ifdef CPU_ONLY -STUB_GPU_BACKWARD(SigmoidCrossEntropyLossLayer, Backward); +STUB_GPU(SigmoidCrossEntropyLossLayer); #endif INSTANTIATE_CLASS(SigmoidCrossEntropyLossLayer); diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu index 046cb9d3a..7cb982d2d 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu @@ -5,6 +5,39 @@ namespace caffe { +template +__global__ void SigmoidCrossEntropyLossForwardGPU(const int nthreads, + const Dtype* input_data, const Dtype* target, Dtype* loss) { + CUDA_KERNEL_LOOP(i, nthreads) { + loss[i] = input_data[i] * (target[i] - (input_data[i] >= 0)) - + log(1 + exp(input_data[i] - 2 * input_data[i] * (input_data[i] >= 0))); + } +} + +template +void SigmoidCrossEntropyLossLayer::Forward_gpu( + const vector*>& bottom, const vector*>& top) { + // The forward pass computes the sigmoid outputs. + sigmoid_bottom_vec_[0] = bottom[0]; + sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); + // Compute the loss (negative log likelihood) + const int count = bottom[0]->count(); + const int num = bottom[0]->num(); + // Stable version of loss computation from input data + const Dtype* input_data = bottom[0]->gpu_data(); + const Dtype* target = bottom[1]->gpu_data(); + // Since this memory is not used for anything until it is overwritten + // on the backward pass, we use it here to avoid having to allocate new GPU + // memory to accumulate intermediate results in the kernel. + Dtype* loss_data = bottom[0]->mutable_gpu_diff(); + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidCrossEntropyLossForwardGPU<<>>(count, input_data, target, loss_data); + Dtype loss; + caffe_gpu_asum(count, loss_data, &loss); + top[0]->mutable_cpu_data()[0] = loss / num; +} + template void SigmoidCrossEntropyLossLayer::Backward_gpu( const vector*>& top, const vector& propagate_down, @@ -28,7 +61,6 @@ void SigmoidCrossEntropyLossLayer::Backward_gpu( } } -INSTANTIATE_LAYER_GPU_BACKWARD(SigmoidCrossEntropyLossLayer); - +INSTANTIATE_LAYER_GPU_FUNCS(SigmoidCrossEntropyLossLayer); } // namespace caffe From f59dc97b090259f54801d620b6b10ad1fb1542e2 Mon Sep 17 00:00:00 2001 From: nihui Date: Tue, 1 Nov 2016 14:02:52 +0800 Subject: [PATCH 340/458] add the missing star in comment a trival commit which adds the missing star ;) --- src/caffe/layers/rnn_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/layers/rnn_layer.cpp b/src/caffe/layers/rnn_layer.cpp index f62ae8c77..8c2fa22e5 100644 --- a/src/caffe/layers/rnn_layer.cpp +++ b/src/caffe/layers/rnn_layer.cpp @@ -215,7 +215,7 @@ void RNNLayer::FillUnrolledNet(NetParameter* net_param) const { } // Add layers to compute - // o_t := \tanh( W_ho h_t + b_o) + // o_t := \tanh( W_ho * h_t + b_o) // = \tanh( W_ho_h_t ) { LayerParameter* o_neuron_param = net_param->add_layer(); From 0d20df51901550f1b7eb2d56e0a84df5d6e2f029 Mon Sep 17 00:00:00 2001 From: baecchi Date: Tue, 1 Nov 2016 16:15:51 +0100 Subject: [PATCH 341/458] corrected typo in accuracy_layer.hpp: MaxTopBlos -> MaxTopBlobs --- include/caffe/layers/accuracy_layer.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/caffe/layers/accuracy_layer.hpp b/include/caffe/layers/accuracy_layer.hpp index fe2adb939..a9ad32251 100644 --- a/include/caffe/layers/accuracy_layer.hpp +++ b/include/caffe/layers/accuracy_layer.hpp @@ -39,7 +39,7 @@ class AccuracyLayer : public Layer { // If there are two top blobs, then the second blob will contain // accuracies per class. virtual inline int MinTopBlobs() const { return 1; } - virtual inline int MaxTopBlos() const { return 2; } + virtual inline int MaxTopBlobs() const { return 2; } protected: /** From 3b443eacb30d8f4b3e551707faeebeeb15e77960 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Fri, 28 Oct 2016 10:39:44 +0200 Subject: [PATCH 342/458] Add Github issue template to curb misuse. For information on Github issue templates, see: https://github.com/blog/2111-issue-and-pull-request-templates The template has been revised according to discussion with @shelhamer and @willyd on pull request BVLC/caffe#4914. --- .github/ISSUE_TEMPLATE.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..d78a3dc34 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,19 @@ +Please use the [caffe-users list](https://groups.google.com/forum/#!forum/caffe-users) for usage, installation, or modeling questions, or other requests for help. +_Do not post such requests to Issues._ Doing so interferes with the development of Caffe. + +Please read the [guidelines for contributing](https://github.com/BVLC/caffe/blob/master/CONTRIBUTING.md) before submitting this issue. + +### Issue summary + + +### Steps to reproduce + +If you are having difficulty building Caffe or training a model, please ask the caffe-users mailing list. If you are reporting a build error that seems to be due to a bug in Caffe, please attach your build configuration (either Makefile.config or CMakeCache.txt) and the output of the make (or cmake) command. + +### Your system configuration +Operating system: +Compiler: +CUDA version (if applicable): +CUDNN version (if applicable): +BLAS: +Python or MATLAB version (for pycaffe and matcaffe respectively): From 20feab5771ae5cbb257cfec85e0b98da06269068 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Fri, 11 Nov 2016 07:38:14 +0000 Subject: [PATCH 343/458] Put quotes around titles in YAML front matter. The colon produces errors unless the title is in quotes. This causes the minor issue of the HTML title not being set. See: https://github.com/jekyll/jekyll/issues/549 --- docs/install_apt.md | 2 +- docs/install_osx.md | 2 +- docs/install_yum.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/install_apt.md b/docs/install_apt.md index 3de5a494e..e95b02276 100644 --- a/docs/install_apt.md +++ b/docs/install_apt.md @@ -1,5 +1,5 @@ --- -title: Installation: Ubuntu +title: "Installation: Ubuntu" --- # Ubuntu Installation diff --git a/docs/install_osx.md b/docs/install_osx.md index 6405d8ad0..a2da82f0f 100644 --- a/docs/install_osx.md +++ b/docs/install_osx.md @@ -1,5 +1,5 @@ --- -title: Installation: OS X +title: "Installation: OS X" --- # OS X Installation diff --git a/docs/install_yum.md b/docs/install_yum.md index 38bf7255c..842fbd641 100644 --- a/docs/install_yum.md +++ b/docs/install_yum.md @@ -1,5 +1,5 @@ --- -title: Installation: RHEL / Fedora / CentOS +title: "Installation: RHEL / Fedora / CentOS" --- # RHEL / Fedora / CentOS Installation From aaf7b6b17fdded6f6489eaf84a4d336b3344c356 Mon Sep 17 00:00:00 2001 From: davidbrai Date: Mon, 14 Nov 2016 22:10:27 +0200 Subject: [PATCH 344/458] support solver resumes in parse_log.py Currently parse_log.py skips all non timestamped lines only once. When resuming a solver and appending to the same log file, it creates more non timestamped log lines. This change allows the script to silently skip those lines. --- tools/extra/parse_log.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/extra/parse_log.py b/tools/extra/parse_log.py index 375b0db73..017306b50 100755 --- a/tools/extra/parse_log.py +++ b/tools/extra/parse_log.py @@ -48,8 +48,13 @@ def parse_log(path_to_log): # iteration continue - time = extract_seconds.extract_datetime_from_line(line, - logfile_year) + try: + time = extract_seconds.extract_datetime_from_line(line, + logfile_year) + except ValueError: + # Skip lines with bad formatting, for example when resuming solver + continue + seconds = (time - start_time).total_seconds() learning_rate_match = regex_learning_rate.search(line) From c6ab96596d9eae01c2c403487dc8be8e3edc8fbb Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Tue, 15 Nov 2016 11:19:37 -0800 Subject: [PATCH 345/458] sigmoid cross-entropy loss: ignore selected targets by `ignore_label` sig-ce learns to ignore by zeroing out the loss/diff at targets equal to the configured `ignore_label`. n.b. as of now the loss/diff are not properly normalized when there are ignored targets. sig-ce loss should adopt the same normalization options as softmax loss. --- .../sigmoid_cross_entropy_loss_layer.hpp | 5 ++++ .../sigmoid_cross_entropy_loss_layer.cpp | 19 +++++++++++++ .../sigmoid_cross_entropy_loss_layer.cu | 23 +++++++++++++++ .../test_sigmoid_cross_entropy_loss_layer.cpp | 28 +++++++++++++++++++ 4 files changed, 75 insertions(+) diff --git a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp index 6452ea510..a9fe33c8e 100644 --- a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp +++ b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp @@ -105,6 +105,11 @@ class SigmoidCrossEntropyLossLayer : public LossLayer { vector*> sigmoid_bottom_vec_; /// top vector holder to call the underlying SigmoidLayer::Forward vector*> sigmoid_top_vec_; + + /// Whether to ignore instances with a certain label. + bool has_ignore_label_; + /// The label indicating that an instance should be ignored. + int ignore_label_; }; } // namespace caffe diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp index eb77a9c2c..21b64c280 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp @@ -14,6 +14,12 @@ void SigmoidCrossEntropyLossLayer::LayerSetUp( sigmoid_top_vec_.clear(); sigmoid_top_vec_.push_back(sigmoid_output_.get()); sigmoid_layer_->SetUp(sigmoid_bottom_vec_, sigmoid_top_vec_); + + has_ignore_label_ = + this->layer_param_.loss_param().has_ignore_label(); + if (has_ignore_label_) { + ignore_label_ = this->layer_param_.loss_param().ignore_label(); + } } template @@ -39,6 +45,10 @@ void SigmoidCrossEntropyLossLayer::Forward_cpu( const Dtype* target = bottom[1]->cpu_data(); Dtype loss = 0; for (int i = 0; i < count; ++i) { + const int target_value = static_cast(target[i]); + if (has_ignore_label_ && target_value == ignore_label_) { + continue; + } loss -= input_data[i] * (target[i] - (input_data[i] >= 0)) - log(1 + exp(input_data[i] - 2 * input_data[i] * (input_data[i] >= 0))); } @@ -64,6 +74,15 @@ void SigmoidCrossEntropyLossLayer::Backward_cpu( // Scale down gradient const Dtype loss_weight = top[0]->cpu_diff()[0]; caffe_scal(count, loss_weight / num, bottom_diff); + // Zero out gradient of ignored targets. + if (has_ignore_label_) { + for (int i = 0; i < count; ++i) { + const int target_value = static_cast(target[i]); + if (target_value == ignore_label_) { + bottom_diff[i] = 0; + } + } + } } } diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu index 7cb982d2d..39eb05066 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu @@ -14,6 +14,17 @@ __global__ void SigmoidCrossEntropyLossForwardGPU(const int nthreads, } } +template +__global__ void SigmoidCrossEntropyLossIgnoreGPU(const int count, + const int ignore_label, const Dtype* target, Dtype* reference) { + CUDA_KERNEL_LOOP(index, count) { + const int target_value = static_cast(target[index]); + if (target_value == ignore_label) { + reference[index] = 0; + } + } +} + template void SigmoidCrossEntropyLossLayer::Forward_gpu( const vector*>& bottom, const vector*>& top) { @@ -33,6 +44,12 @@ void SigmoidCrossEntropyLossLayer::Forward_gpu( // NOLINT_NEXT_LINE(whitespace/operators) SigmoidCrossEntropyLossForwardGPU<<>>(count, input_data, target, loss_data); + // Zero out loss of ignored targets. + if (has_ignore_label_) { + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidCrossEntropyLossIgnoreGPU<<>>(count, ignore_label_, target, loss_data); + } Dtype loss; caffe_gpu_asum(count, loss_data, &loss); top[0]->mutable_cpu_data()[0] = loss / num; @@ -58,6 +75,12 @@ void SigmoidCrossEntropyLossLayer::Backward_gpu( // Scale down gradient const Dtype loss_weight = top[0]->cpu_diff()[0]; caffe_gpu_scal(count, loss_weight / num, bottom_diff); + // Zero out gradient of ignored targets. + if (has_ignore_label_) { + // NOLINT_NEXT_LINE(whitespace/operators) + SigmoidCrossEntropyLossIgnoreGPU<<>>(count, ignore_label_, target, bottom_diff); + } } } diff --git a/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp index 5dfd7656d..1bd5f9379 100644 --- a/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp @@ -116,5 +116,33 @@ TYPED_TEST(SigmoidCrossEntropyLossLayerTest, TestGradient) { this->blob_top_vec_, 0); } +TYPED_TEST(SigmoidCrossEntropyLossLayerTest, TestIgnoreGradient) { + typedef typename TypeParam::Dtype Dtype; + FillerParameter data_filler_param; + data_filler_param.set_std(1); + GaussianFiller data_filler(data_filler_param); + data_filler.Fill(this->blob_bottom_data_); + LayerParameter layer_param; + LossParameter* loss_param = layer_param.mutable_loss_param(); + loss_param->set_ignore_label(-1); + Dtype* target = this->blob_bottom_targets_->mutable_cpu_data(); + const int count = this->blob_bottom_targets_->count(); + // Ignore half of targets, then check that diff of this half is zero, + // while the other half is nonzero. + caffe_set(count / 2, Dtype(-1), target); + SigmoidCrossEntropyLossLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + vector propagate_down(2); + propagate_down[0] = true; + propagate_down[1] = false; + layer.Backward(this->blob_top_vec_, propagate_down, this->blob_bottom_vec_); + const Dtype* diff = this->blob_bottom_data_->cpu_diff(); + for (int i = 0; i < count / 2; ++i) { + EXPECT_FLOAT_EQ(diff[i], 0.); + EXPECT_NE(diff[i + count / 2], 0.); + } +} + } // namespace caffe From 6486a7b795b70fa9a6597e975577d3ec9cc146bd Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 16 Nov 2016 13:15:06 -0800 Subject: [PATCH 346/458] docs: Guillaume Dumont is the Windows maintainer --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 4aac7c42d..edfddcfbb 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -14,7 +14,7 @@ The official Makefile and `Makefile.config` build are complemented by a [communi - [Ubuntu installation](install_apt.html) *the standard platform* - [OS X installation](install_osx.html) - [RHEL / CentOS / Fedora installation](install_yum.html) -- [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Microsoft* +- [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Guillaume Dumont* - [OpenCL](https://github.com/BVLC/caffe/tree/opencl) *see the OpenCL branch led by Fabian Tschopp* **Overview**: From abcb973f5840c7b97ee3c7c910556ef0c5910baf Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 16 Nov 2016 13:26:37 -0800 Subject: [PATCH 347/458] docs: include AWS AMI pointer --- docs/installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/installation.md b/docs/installation.md index edfddcfbb..3254be3df 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -16,6 +16,7 @@ The official Makefile and `Makefile.config` build are complemented by a [communi - [RHEL / CentOS / Fedora installation](install_yum.html) - [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Guillaume Dumont* - [OpenCL](https://github.com/BVLC/caffe/tree/opencl) *see the OpenCL branch led by Fabian Tschopp* +- [AWS AMI](https://github.com/bitfusionio/amis/tree/master/awsmrkt-bfboost-ubuntu14-cuda75-caffe) *pre-configured for AWS* **Overview**: From 3d62e3cc9da66dbf3328567d0f30d5183b318d81 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 16 Nov 2016 20:39:42 -0800 Subject: [PATCH 348/458] sigmoid cross-entropy loss: normalize loss by different schemes sig-ce loss handles all the same normalizations as the softmax loss; refer to #3296 for more detail. this preserves the default normalization for sig-ce loss: batch size. --- .../sigmoid_cross_entropy_loss_layer.hpp | 11 ++++ .../sigmoid_cross_entropy_loss_layer.cpp | 60 ++++++++++++++++--- .../sigmoid_cross_entropy_loss_layer.cu | 57 +++++++++++------- src/caffe/proto/caffe.proto | 4 +- 4 files changed, 102 insertions(+), 30 deletions(-) diff --git a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp index a9fe33c8e..3d9252442 100644 --- a/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp +++ b/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp @@ -97,6 +97,13 @@ class SigmoidCrossEntropyLossLayer : public LossLayer { virtual void Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); + /// Read the normalization mode parameter and compute the normalizer based + /// on the blob size. If normalization_mode is VALID, the count of valid + /// outputs will be read from valid_count, unless it is -1 in which case + /// all outputs are assumed to be valid. + virtual Dtype get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count); + /// The internal SigmoidLayer used to map predictions to probabilities. shared_ptr > sigmoid_layer_; /// sigmoid_output stores the output of the SigmoidLayer. @@ -110,6 +117,10 @@ class SigmoidCrossEntropyLossLayer : public LossLayer { bool has_ignore_label_; /// The label indicating that an instance should be ignored. int ignore_label_; + /// How to normalize the loss. + LossParameter_NormalizationMode normalization_; + Dtype normalizer_; + int outer_num_, inner_num_; }; } // namespace caffe diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp index 21b64c280..99fa3eb64 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp @@ -1,3 +1,4 @@ +#include #include #include "caffe/layers/sigmoid_cross_entropy_loss_layer.hpp" @@ -20,17 +21,60 @@ void SigmoidCrossEntropyLossLayer::LayerSetUp( if (has_ignore_label_) { ignore_label_ = this->layer_param_.loss_param().ignore_label(); } + if (this->layer_param_.loss_param().has_normalization()) { + normalization_ = this->layer_param_.loss_param().normalization(); + } else if (this->layer_param_.loss_param().has_normalize()) { + normalization_ = this->layer_param_.loss_param().normalize() ? + LossParameter_NormalizationMode_VALID : + LossParameter_NormalizationMode_BATCH_SIZE; + } else { + normalization_ = LossParameter_NormalizationMode_BATCH_SIZE; + } } template void SigmoidCrossEntropyLossLayer::Reshape( const vector*>& bottom, const vector*>& top) { LossLayer::Reshape(bottom, top); + outer_num_ = bottom[0]->shape(0); // batch size + inner_num_ = bottom[0]->count(1); // instance size: |output| == |target| CHECK_EQ(bottom[0]->count(), bottom[1]->count()) << "SIGMOID_CROSS_ENTROPY_LOSS layer inputs must have the same count."; sigmoid_layer_->Reshape(sigmoid_bottom_vec_, sigmoid_top_vec_); } +// TODO(shelhamer) loss normalization should be pulled up into LossLayer, +// instead of duplicated here and in SoftMaxWithLossLayer +template +Dtype SigmoidCrossEntropyLossLayer::get_normalizer( + LossParameter_NormalizationMode normalization_mode, int valid_count) { + Dtype normalizer; + switch (normalization_mode) { + case LossParameter_NormalizationMode_FULL: + normalizer = Dtype(outer_num_ * inner_num_); + break; + case LossParameter_NormalizationMode_VALID: + if (valid_count == -1) { + normalizer = Dtype(outer_num_ * inner_num_); + } else { + normalizer = Dtype(valid_count); + } + break; + case LossParameter_NormalizationMode_BATCH_SIZE: + normalizer = Dtype(outer_num_); + break; + case LossParameter_NormalizationMode_NONE: + normalizer = Dtype(1); + break; + default: + LOG(FATAL) << "Unknown normalization mode: " + << LossParameter_NormalizationMode_Name(normalization_mode); + } + // Some users will have no labels for some examples in order to 'turn off' a + // particular loss in a multi-task setup. The max prevents NaNs in that case. + return std::max(Dtype(1.0), normalizer); +} + template void SigmoidCrossEntropyLossLayer::Forward_cpu( const vector*>& bottom, const vector*>& top) { @@ -38,21 +82,22 @@ void SigmoidCrossEntropyLossLayer::Forward_cpu( sigmoid_bottom_vec_[0] = bottom[0]; sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); // Compute the loss (negative log likelihood) - const int count = bottom[0]->count(); - const int num = bottom[0]->num(); // Stable version of loss computation from input data const Dtype* input_data = bottom[0]->cpu_data(); const Dtype* target = bottom[1]->cpu_data(); + int valid_count = 0; Dtype loss = 0; - for (int i = 0; i < count; ++i) { + for (int i = 0; i < bottom[0]->count(); ++i) { const int target_value = static_cast(target[i]); if (has_ignore_label_ && target_value == ignore_label_) { continue; } loss -= input_data[i] * (target[i] - (input_data[i] >= 0)) - log(1 + exp(input_data[i] - 2 * input_data[i] * (input_data[i] >= 0))); + ++valid_count; } - top[0]->mutable_cpu_data()[0] = loss / num; + normalizer_ = get_normalizer(normalization_, valid_count); + top[0]->mutable_cpu_data()[0] = loss / normalizer_; } template @@ -66,14 +111,10 @@ void SigmoidCrossEntropyLossLayer::Backward_cpu( if (propagate_down[0]) { // First, compute the diff const int count = bottom[0]->count(); - const int num = bottom[0]->num(); const Dtype* sigmoid_output_data = sigmoid_output_->cpu_data(); const Dtype* target = bottom[1]->cpu_data(); Dtype* bottom_diff = bottom[0]->mutable_cpu_diff(); caffe_sub(count, sigmoid_output_data, target, bottom_diff); - // Scale down gradient - const Dtype loss_weight = top[0]->cpu_diff()[0]; - caffe_scal(count, loss_weight / num, bottom_diff); // Zero out gradient of ignored targets. if (has_ignore_label_) { for (int i = 0; i < count; ++i) { @@ -83,6 +124,9 @@ void SigmoidCrossEntropyLossLayer::Backward_cpu( } } } + // Scale down gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / normalizer_; + caffe_scal(count, loss_weight, bottom_diff); } } diff --git a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu index 39eb05066..b9877e6a3 100644 --- a/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu +++ b/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu @@ -5,26 +5,38 @@ namespace caffe { + template __global__ void SigmoidCrossEntropyLossForwardGPU(const int nthreads, - const Dtype* input_data, const Dtype* target, Dtype* loss) { + const Dtype* input_data, const Dtype* target, Dtype* loss, + const bool has_ignore_label_, const int ignore_label_, + Dtype* counts) { CUDA_KERNEL_LOOP(i, nthreads) { - loss[i] = input_data[i] * (target[i] - (input_data[i] >= 0)) - - log(1 + exp(input_data[i] - 2 * input_data[i] * (input_data[i] >= 0))); + const int target_value = static_cast(target[i]); + if (has_ignore_label_ && target_value == ignore_label_) { + loss[i] = 0; + counts[i] = 0; + } else { + loss[i] = input_data[i] * (target[i] - (input_data[i] >= 0)) - + log(1 + exp(input_data[i] - 2 * input_data[i] * + (input_data[i] >= 0))); + counts[i] = 1; + } } } template -__global__ void SigmoidCrossEntropyLossIgnoreGPU(const int count, - const int ignore_label, const Dtype* target, Dtype* reference) { - CUDA_KERNEL_LOOP(index, count) { - const int target_value = static_cast(target[index]); +__global__ void SigmoidCrossEntropyLossIgnoreDiffGPU(const int count, + const int ignore_label, const Dtype* target, Dtype* diff) { + CUDA_KERNEL_LOOP(i, count) { + const int target_value = static_cast(target[i]); if (target_value == ignore_label) { - reference[index] = 0; + diff[i] = 0; } } } + template void SigmoidCrossEntropyLossLayer::Forward_gpu( const vector*>& bottom, const vector*>& top) { @@ -33,7 +45,6 @@ void SigmoidCrossEntropyLossLayer::Forward_gpu( sigmoid_layer_->Forward(sigmoid_bottom_vec_, sigmoid_top_vec_); // Compute the loss (negative log likelihood) const int count = bottom[0]->count(); - const int num = bottom[0]->num(); // Stable version of loss computation from input data const Dtype* input_data = bottom[0]->gpu_data(); const Dtype* target = bottom[1]->gpu_data(); @@ -41,18 +52,23 @@ void SigmoidCrossEntropyLossLayer::Forward_gpu( // on the backward pass, we use it here to avoid having to allocate new GPU // memory to accumulate intermediate results in the kernel. Dtype* loss_data = bottom[0]->mutable_gpu_diff(); + Dtype* count_data = bottom[1]->mutable_gpu_diff(); + Dtype valid_count; // NOLINT_NEXT_LINE(whitespace/operators) SigmoidCrossEntropyLossForwardGPU<<>>(count, input_data, target, loss_data); - // Zero out loss of ignored targets. - if (has_ignore_label_) { - // NOLINT_NEXT_LINE(whitespace/operators) - SigmoidCrossEntropyLossIgnoreGPU<<>>(count, ignore_label_, target, loss_data); + CAFFE_CUDA_NUM_THREADS>>>(count, input_data, target, loss_data, + has_ignore_label_, ignore_label_, count_data); + // Only launch another CUDA kernel if we actually need the valid count. + if (normalization_ == LossParameter_NormalizationMode_VALID && + has_ignore_label_) { + caffe_gpu_asum(count, count_data, &valid_count); + } else { + valid_count = count; } Dtype loss; caffe_gpu_asum(count, loss_data, &loss); - top[0]->mutable_cpu_data()[0] = loss / num; + normalizer_ = get_normalizer(normalization_, valid_count); + top[0]->mutable_cpu_data()[0] = loss / normalizer_; } template @@ -66,21 +82,20 @@ void SigmoidCrossEntropyLossLayer::Backward_gpu( if (propagate_down[0]) { // First, compute the diff const int count = bottom[0]->count(); - const int num = bottom[0]->num(); const Dtype* sigmoid_output_data = sigmoid_output_->gpu_data(); const Dtype* target = bottom[1]->gpu_data(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); caffe_copy(count, sigmoid_output_data, bottom_diff); caffe_gpu_axpy(count, Dtype(-1), target, bottom_diff); - // Scale down gradient - const Dtype loss_weight = top[0]->cpu_diff()[0]; - caffe_gpu_scal(count, loss_weight / num, bottom_diff); // Zero out gradient of ignored targets. if (has_ignore_label_) { // NOLINT_NEXT_LINE(whitespace/operators) - SigmoidCrossEntropyLossIgnoreGPU<<<<>>(count, ignore_label_, target, bottom_diff); } + // Scale down gradient + Dtype loss_weight = top[0]->cpu_diff()[0] / normalizer_; + caffe_gpu_scal(count, loss_weight, bottom_diff); } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 6940a705e..0b2768b77 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -434,7 +434,7 @@ message LossParameter { optional int32 ignore_label = 1; // How to normalize the loss for loss layers that aggregate across batches, // spatial dimensions, or other dimensions. Currently only implemented in - // SoftmaxWithLoss layer. + // SoftmaxWithLoss and SigmoidCrossEntropyLoss layers. enum NormalizationMode { // Divide by the number of examples in the batch times spatial dimensions. // Outputs that receive the ignore label will NOT be ignored in computing @@ -448,6 +448,8 @@ message LossParameter { // Do not normalize the loss. NONE = 3; } + // For historical reasons, the default normalization for + // SigmoidCrossEntropyLoss is BATCH_SIZE and *not* VALID. optional NormalizationMode normalization = 3 [default = VALID]; // Deprecated. Ignored if normalization is specified. If normalization // is not specified, then setting this to false will be equivalent to From 2cf9dd3750073ce8a119f4a71cc41eeef63e0748 Mon Sep 17 00:00:00 2001 From: chenzy Date: Fri, 18 Nov 2016 10:28:13 +0800 Subject: [PATCH 349/458] Add missing spaces besides equal signs in batch_norm_layer.cpp --- src/caffe/layers/batch_norm_layer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index e661abb11..0a08ed4cb 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -27,7 +27,7 @@ void BatchNormLayer::LayerSetUp(const vector*>& bottom, sz.push_back(channels_); this->blobs_[0].reset(new Blob(sz)); this->blobs_[1].reset(new Blob(sz)); - sz[0]=1; + sz[0] = 1; this->blobs_[2].reset(new Blob(sz)); for (int i = 0; i < 3; ++i) { caffe_set(this->blobs_[i]->count(), Dtype(0), @@ -61,7 +61,7 @@ void BatchNormLayer::Reshape(const vector*>& bottom, variance_.Reshape(sz); temp_.ReshapeLike(*bottom[0]); x_norm_.ReshapeLike(*bottom[0]); - sz[0]=bottom[0]->shape(0); + sz[0] = bottom[0]->shape(0); batch_sum_multiplier_.Reshape(sz); int spatial_dim = bottom[0]->count()/(channels_*bottom[0]->shape(0)); From e52451de914312b80a83459cb160c2f72a5b4fea Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 21 Nov 2016 09:35:57 -0800 Subject: [PATCH 350/458] solver: check and set type to reconcile class and proto the solver checks its proto type (SolverParameter.type) on instantiation: - if the proto type is unspecified it's set according to the class type `Solver::type()` - if the proto type and class type conflict, the solver dies loudly this helps avoid accidental instantiation of a different solver type than intended when the solver def and class differ. guaranteed type information in the SolverParameter will simplify multi-solver coordination too. --- include/caffe/solver.hpp | 2 ++ src/caffe/solver.cpp | 12 ++++++++++++ src/caffe/test/test_gradient_based_solver.cpp | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index eafcee329..ef38d6e45 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -108,6 +108,8 @@ class Solver { virtual void RestoreSolverStateFromBinaryProto(const string& state_file) = 0; void DisplayOutputBlobs(const int net_id); void UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss); + /// Harmonize solver class type with configured proto type. + void CheckType(SolverParameter* param); SolverParameter param_; int iter_; diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index ece3913e8..ae6a5a364 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -38,9 +38,21 @@ Solver::Solver(const string& param_file, const Solver* root_solver) requested_early_exit_(false) { SolverParameter param; ReadSolverParamsFromTextFileOrDie(param_file, ¶m); + CheckType(¶m); Init(param); } +template +void Solver::CheckType(SolverParameter* param) { + // Harmonize solver class type with configured type to avoid confusion. + if (param->has_type()) { + CHECK_EQ(param->type(), this->type()) + << "Solver type must agree with instantiated solver class."; + } else { + param->set_type(this->type()); + } +} + template void Solver::Init(const SolverParameter& param) { CHECK(Caffe::root_solver() || root_solver_) diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 975a8f0f8..e81caea25 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -694,6 +694,11 @@ TYPED_TEST(SGDSolverTest, TestSnapshotShare) { } } +TYPED_TEST(SGDSolverTest, TestSolverType) { + this->TestLeastSquaresUpdate(); + EXPECT_NE(this->solver_->type(), string("")); + EXPECT_EQ(this->solver_->type(), this->solver_->param().type()); +} template class AdaGradSolverTest : public GradientBasedSolverTest { From 48e73c780295e56699ad71232a24c8b459c8fe01 Mon Sep 17 00:00:00 2001 From: Zylphrex Date: Mon, 21 Nov 2016 13:11:34 -0500 Subject: [PATCH 351/458] Checks inside Xcode for latest OSX SDK (#4840) OS X: build with latest SDK by default --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 24894062a..ccc4d8b9e 100644 --- a/Makefile +++ b/Makefile @@ -192,12 +192,12 @@ ifeq ($(USE_LMDB), 1) LIBRARIES += lmdb endif ifeq ($(USE_OPENCV), 1) - LIBRARIES += opencv_core opencv_highgui opencv_imgproc + LIBRARIES += opencv_core opencv_highgui opencv_imgproc ifeq ($(OPENCV_VERSION), 3) LIBRARIES += opencv_imgcodecs endif - + endif PYTHON_LIBRARIES ?= boost_python python2.7 WARNINGS := -Wall -Wno-sign-compare @@ -385,7 +385,7 @@ else XCODE_CLT_GEQ_7 := $(shell [ $(XCODE_CLT_VER) -gt 6 ] && echo 1) XCODE_CLT_GEQ_6 := $(shell [ $(XCODE_CLT_VER) -gt 5 ] && echo 1) ifeq ($(XCODE_CLT_GEQ_7), 1) - BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers + BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/$(shell ls /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ | sort | tail -1)/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers else ifeq ($(XCODE_CLT_GEQ_6), 1) BLAS_INCLUDE ?= /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ LDFLAGS += -framework Accelerate From db6cf0a728cad63c93b345f2203f3ad1f5d5c2f4 Mon Sep 17 00:00:00 2001 From: Nico Galoppo Date: Mon, 21 Nov 2016 11:03:52 -0800 Subject: [PATCH 352/458] Fix Python net drawing script --- python/caffe/draw.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index 9eecf6d7b..e4fd7aacc 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -104,11 +104,11 @@ def get_layer_label(layer, rankdir): pooling_types_dict[layer.pooling_param.pool], layer.type, separator, - layer.pooling_param.kernel_size, + layer.pooling_param.kernel_size[0] if len(layer.pooling_param.kernel_size._values) else 1, separator, - layer.pooling_param.stride, + layer.pooling_param.stride[0] if len(layer.pooling_param.stride._values) else 1, separator, - layer.pooling_param.pad) + layer.pooling_param.pad[0] if len(layer.pooling_param.pad._values) else 0) else: node_label = '"%s%s(%s)"' % (layer.name, separator, layer.type) return node_label From 2e59864d4f35bf60ddf859185f4e0d8fd940f238 Mon Sep 17 00:00:00 2001 From: hmybmny Date: Thu, 24 Nov 2016 18:17:13 +0800 Subject: [PATCH 353/458] fix error link --- docs/install_apt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install_apt.md b/docs/install_apt.md index e95b02276..bc1566b0b 100644 --- a/docs/install_apt.md +++ b/docs/install_apt.md @@ -33,8 +33,8 @@ Everything is packaged in 14.04. These dependencies need manual installation in 12.04. # glog - wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz - tar zxvf glog-0.3.3.tar.gz + wget https://github.com/google/glog/archive/v0.3.3.tar.gz + tar zxvf v0.3.3.tar.gz cd glog-0.3.3 ./configure make && make install From b644a87c842702de8291c97fa0e418797092fe41 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 25 Nov 2016 12:49:53 -0800 Subject: [PATCH 354/458] Revert "solver: check and set type to reconcile class and proto" as pointed out by #5028 this does not achieve what it intended, and furthermore causes trouble with direct solver instantiation. revert commit e52451de914312b80a83459cb160c2f72a5b4fea --- include/caffe/solver.hpp | 2 -- src/caffe/solver.cpp | 12 ------------ src/caffe/test/test_gradient_based_solver.cpp | 5 ----- 3 files changed, 19 deletions(-) diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index ef38d6e45..eafcee329 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -108,8 +108,6 @@ class Solver { virtual void RestoreSolverStateFromBinaryProto(const string& state_file) = 0; void DisplayOutputBlobs(const int net_id); void UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss); - /// Harmonize solver class type with configured proto type. - void CheckType(SolverParameter* param); SolverParameter param_; int iter_; diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index ae6a5a364..ece3913e8 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -38,21 +38,9 @@ Solver::Solver(const string& param_file, const Solver* root_solver) requested_early_exit_(false) { SolverParameter param; ReadSolverParamsFromTextFileOrDie(param_file, ¶m); - CheckType(¶m); Init(param); } -template -void Solver::CheckType(SolverParameter* param) { - // Harmonize solver class type with configured type to avoid confusion. - if (param->has_type()) { - CHECK_EQ(param->type(), this->type()) - << "Solver type must agree with instantiated solver class."; - } else { - param->set_type(this->type()); - } -} - template void Solver::Init(const SolverParameter& param) { CHECK(Caffe::root_solver() || root_solver_) diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index e81caea25..975a8f0f8 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -694,11 +694,6 @@ TYPED_TEST(SGDSolverTest, TestSnapshotShare) { } } -TYPED_TEST(SGDSolverTest, TestSolverType) { - this->TestLeastSquaresUpdate(); - EXPECT_NE(this->solver_->type(), string("")); - EXPECT_EQ(this->solver_->type(), this->solver_->param().type()); -} template class AdaGradSolverTest : public GradientBasedSolverTest { From db6643232cc95ba79f2a21ad98ef15725ee576d6 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Sun, 27 Nov 2016 09:13:42 +0000 Subject: [PATCH 355/458] fix many typos by using codespell --- cmake/Targets.cmake | 2 +- examples/02-fine-tuning.ipynb | 2 +- examples/mnist/train_lenet_docker.sh | 2 +- examples/pycaffe/tools.py | 4 ++-- matlab/+caffe/private/caffe_.cpp | 2 +- matlab/CMakeLists.txt | 2 +- scripts/cpp_lint.py | 6 +++--- src/caffe/layers/crop_layer.cpp | 2 +- src/caffe/layers/crop_layer.cu | 2 +- src/caffe/layers/hdf5_data_layer.cpp | 4 ++-- src/caffe/proto/caffe.proto | 4 ++-- src/caffe/test/CMakeLists.txt | 2 +- src/caffe/test/test_euclidean_loss_layer.cpp | 2 +- src/gtest/gtest-all.cpp | 4 ++-- src/gtest/gtest.h | 2 +- tools/extra/plot_log.gnuplot.example | 2 +- 16 files changed, 22 insertions(+), 22 deletions(-) diff --git a/cmake/Targets.cmake b/cmake/Targets.cmake index a796d0054..2cb11584a 100644 --- a/cmake/Targets.cmake +++ b/cmake/Targets.cmake @@ -94,7 +94,7 @@ function(caffe_pickup_caffe_sources root) caffe_convert_absolute_paths(test_srcs) caffe_convert_absolute_paths(test_cuda) - # propogate to parent scope + # propagate to parent scope set(srcs ${srcs} PARENT_SCOPE) set(cuda ${cuda} PARENT_SCOPE) set(test_srcs ${test_srcs} PARENT_SCOPE) diff --git a/examples/02-fine-tuning.ipynb b/examples/02-fine-tuning.ipynb index 07ca8df4d..f44eaf9a4 100644 --- a/examples/02-fine-tuning.ipynb +++ b/examples/02-fine-tuning.ipynb @@ -1141,7 +1141,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "So we did finetuning and it is awesome. Let's take a look at what kind of results we are able to get with a longer, more complete run of the style recognition dataset. Note: the below URL might be occassionally down because it is run on a research machine.\n", + "So we did finetuning and it is awesome. Let's take a look at what kind of results we are able to get with a longer, more complete run of the style recognition dataset. Note: the below URL might be occasionally down because it is run on a research machine.\n", "\n", "http://demo.vislab.berkeleyvision.org/" ] diff --git a/examples/mnist/train_lenet_docker.sh b/examples/mnist/train_lenet_docker.sh index 32cf1c8e4..e946ba0f4 100755 --- a/examples/mnist/train_lenet_docker.sh +++ b/examples/mnist/train_lenet_docker.sh @@ -25,7 +25,7 @@ set -e # executed. # # In order to provide additional flexibility, the following shell (environment) -# variables can be used to controll the execution of each of the phases: +# variables can be used to control the execution of each of the phases: # # DOWNLOAD_DATA: Enable (1) or disable (0) the downloading of the MNIST dataset # CREATE_LMDB: Enable (1) or disable (0) the creation of the LMDB database diff --git a/examples/pycaffe/tools.py b/examples/pycaffe/tools.py index 88b1834af..7f6c2d835 100644 --- a/examples/pycaffe/tools.py +++ b/examples/pycaffe/tools.py @@ -26,7 +26,7 @@ def set_scale(self, scale): def preprocess(self, im): """ - preprocess() emulate the pre-processing occuring in the vgg16 caffe + preprocess() emulate the pre-processing occurring in the vgg16 caffe prototxt. """ @@ -75,7 +75,7 @@ def __init__(self, testnet_prototxt_path="testnet.prototxt", # looks: self.sp['display'] = '25' self.sp['snapshot'] = '2500' - self.sp['snapshot_prefix'] = '"snapshot"' # string withing a string! + self.sp['snapshot_prefix'] = '"snapshot"' # string within a string! # learning rate policy self.sp['lr_policy'] = '"fixed"' diff --git a/matlab/+caffe/private/caffe_.cpp b/matlab/+caffe/private/caffe_.cpp index 1b1b2bff8..4e466e660 100644 --- a/matlab/+caffe/private/caffe_.cpp +++ b/matlab/+caffe/private/caffe_.cpp @@ -44,7 +44,7 @@ void mxCHECK_FILE_EXIST(const char* file) { // The pointers to caffe::Solver and caffe::Net instances static vector > > solvers_; static vector > > nets_; -// init_key is generated at the beginning and everytime you call reset +// init_key is generated at the beginning and every time you call reset static double init_key = static_cast(caffe_rng_rand()); /** ----------------------------------------------------------------- diff --git a/matlab/CMakeLists.txt b/matlab/CMakeLists.txt index f420df8d4..987730d9b 100644 --- a/matlab/CMakeLists.txt +++ b/matlab/CMakeLists.txt @@ -20,7 +20,7 @@ if(NOT BUILD_SHARED_LIBS AND build_using MATCHES Matlab) message(FATAL_ERROR "Matlab MEX interface (with default mex options file) can only be built if caffe is compiled as shared library. Please enable 'BUILD_SHARED_LIBS' in CMake. Aternativelly you can switch to Octave compiler.") endif() -# helper function to set proper mex file extention +# helper function to set proper mex file extension function(caffe_fetch_and_set_proper_mexext mexfile_variable) execute_process(COMMAND ${Matlab_mexext} OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE res OUTPUT_VARIABLE ext) if(res MATCHES 0) diff --git a/scripts/cpp_lint.py b/scripts/cpp_lint.py index 14c76ecd6..6ec4fb76e 100755 --- a/scripts/cpp_lint.py +++ b/scripts/cpp_lint.py @@ -4460,7 +4460,7 @@ def UpdateIncludeState(filename, include_state, io=codecs): io: The io factory to use to read the file. Provided for testability. Returns: - True if a header was succesfully added. False otherwise. + True if a header was successfully added. False otherwise. """ headerfile = None try: @@ -4532,7 +4532,7 @@ def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, # Let's copy the include_state so it is only messed up within this function. include_state = include_state.copy() - # Did we find the header for this file (if any) and succesfully load it? + # Did we find the header for this file (if any) and successfully load it? header_found = False # Use the absolute path so that matching works properly. @@ -4833,7 +4833,7 @@ def ParseArguments(args): try: _valid_extensions = set(val.split(',')) except ValueError: - PrintUsage('Extensions must be comma seperated list.') + PrintUsage('Extensions must be comma separated list.') if not filenames: PrintUsage('No files were specified.') diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index aecdcd631..d36b61ca0 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -85,7 +85,7 @@ void CropLayer::crop_copy(const vector*>& bottom, src_data, dest_data, is_forward); } } else { - // We are at the last dimensions, which is stored continously in memory + // We are at the last dimensions, which is stored continuously in memory for (int i = 0; i < top[0]->shape(cur_dim); ++i) { // prepare index vector reduced(red) and with offsets(off) std::vector ind_red(cur_dim, 0); diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index f78cecbbe..6ea32d21c 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -39,7 +39,7 @@ void CropLayer::crop_copy_gpu(const vector*>& bottom, src_data, dest_data, is_forward); } } else { - // We are at the last two dimensions, which are stored continously in memory + // We are at the last two dimensions, which are stored continuously in memory // With (N,C,H,W) // (0,1,2,3) cur_dim -> H // cur_dim+1 -> W diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 2f13dc641..c957451ae 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -61,10 +61,10 @@ void HDF5DataLayer::LoadHDF5FileData(const char* filename) { // Shuffle if needed. if (this->layer_param_.hdf5_data_param().shuffle()) { std::random_shuffle(data_permutation_.begin(), data_permutation_.end()); - DLOG(INFO) << "Successully loaded " << hdf_blobs_[0]->shape(0) + DLOG(INFO) << "Successfully loaded " << hdf_blobs_[0]->shape(0) << " rows (shuffled)"; } else { - DLOG(INFO) << "Successully loaded " << hdf_blobs_[0]->shape(0) << " rows"; + DLOG(INFO) << "Successfully loaded " << hdf_blobs_[0]->shape(0) << " rows"; } } diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 0b2768b77..430a0dea1 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -418,7 +418,7 @@ message TransformationParameter { optional uint32 crop_size = 3 [default = 0]; // mean_file and mean_value cannot be specified at the same time optional string mean_file = 4; - // if specified can be repeated once (would substract it from all the channels) + // if specified can be repeated once (would subtract it from all the channels) // or can be repeated the same number of times as channels // (would subtract them from the corresponding channel) repeated float mean_value = 5; @@ -1396,6 +1396,6 @@ message PReLUParameter { // Initial value of a_i. Default is a_i=0.25 for all i. optional FillerParameter filler = 1; - // Whether or not slope paramters are shared across channels. + // Whether or not slope parameters are shared across channels. optional bool channel_shared = 2 [default = false]; } diff --git a/src/caffe/test/CMakeLists.txt b/src/caffe/test/CMakeLists.txt index 35a803f2f..d8afc30b7 100644 --- a/src/caffe/test/CMakeLists.txt +++ b/src/caffe/test/CMakeLists.txt @@ -1,7 +1,7 @@ # The option allows to include in build only selected test files and exclude all others # Usage example: # cmake -DBUILD_only_tests="common,net,blob,im2col_kernel" -set(BUILD_only_tests "" CACHE STRING "Blank or comma-separated list of test files to build without 'test_' prefix and extention") +set(BUILD_only_tests "" CACHE STRING "Blank or comma-separated list of test files to build without 'test_' prefix and extension") caffe_leave_only_selected_tests(test_srcs ${BUILD_only_tests}) caffe_leave_only_selected_tests(test_cuda ${BUILD_only_tests}) diff --git a/src/caffe/test/test_euclidean_loss_layer.cpp b/src/caffe/test/test_euclidean_loss_layer.cpp index f253f9fd3..b026f5b20 100644 --- a/src/caffe/test/test_euclidean_loss_layer.cpp +++ b/src/caffe/test/test_euclidean_loss_layer.cpp @@ -39,7 +39,7 @@ class EuclideanLossLayerTest : public MultiDeviceTest { void TestForward() { // Get the loss without a specified objective weight -- should be - // equivalent to explicitly specifiying a weight of 1. + // equivalent to explicitly specifying a weight of 1. LayerParameter layer_param; EuclideanLossLayer layer_weight_1(layer_param); layer_weight_1.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); diff --git a/src/gtest/gtest-all.cpp b/src/gtest/gtest-all.cpp index 926197419..81cdb578c 100644 --- a/src/gtest/gtest-all.cpp +++ b/src/gtest/gtest-all.cpp @@ -2697,7 +2697,7 @@ AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT // Utility functions for encoding Unicode text (wide strings) in // UTF-8. -// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8 +// A Unicode code-point can have up to 21 bits, and is encoded in UTF-8 // like this: // // Code-point length Encoding @@ -7550,7 +7550,7 @@ FilePath FilePath::RemoveExtension(const char* extension) const { return *this; } -// Returns a pointer to the last occurence of a valid path separator in +// Returns a pointer to the last occurrence of a valid path separator in // the FilePath. On Windows, for example, both '/' and '\' are valid path // separators. Returns NULL if no path separator was found. const char* FilePath::FindLastPathSeparator() const { diff --git a/src/gtest/gtest.h b/src/gtest/gtest.h index 3143bd679..124fb2321 100644 --- a/src/gtest/gtest.h +++ b/src/gtest/gtest.h @@ -3395,7 +3395,7 @@ class GTEST_API_ FilePath { void Normalize(); - // Returns a pointer to the last occurence of a valid path separator in + // Returns a pointer to the last occurrence of a valid path separator in // the FilePath. On Windows, for example, both '/' and '\' are valid path // separators. Returns NULL if no path separator was found. const char* FindLastPathSeparator() const; diff --git a/tools/extra/plot_log.gnuplot.example b/tools/extra/plot_log.gnuplot.example index 748b96e69..02c68e1d2 100644 --- a/tools/extra/plot_log.gnuplot.example +++ b/tools/extra/plot_log.gnuplot.example @@ -4,7 +4,7 @@ # Be warned that the fields in the training log may change in the future. # You had better check the data files before designing your own plots. -# Please generate the neccessary data files with +# Please generate the necessary data files with # /path/to/caffe/tools/extra/parse_log.sh before plotting. # Example usage: # ./parse_log.sh mnist.log From fa7fda78661fa795e3f6d3bbe7040e5d5d02e732 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Mon, 28 Nov 2016 01:20:58 +0000 Subject: [PATCH 356/458] Make lint happy (> 80 characters) --- src/caffe/layers/crop_layer.cu | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 6ea32d21c..9ad401264 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -39,10 +39,10 @@ void CropLayer::crop_copy_gpu(const vector*>& bottom, src_data, dest_data, is_forward); } } else { - // We are at the last two dimensions, which are stored continuously in memory - // With (N,C,H,W) - // (0,1,2,3) cur_dim -> H - // cur_dim+1 -> W + // We are at the last two dimensions, which are stored continuously in + // memory With (N,C,H,W) + // (0,1,2,3) cur_dim -> H + // cur_dim+1 -> W const int lines = top[0]->shape(cur_dim); const int height = top[0]->shape(cur_dim); const int width = top[0]->shape(cur_dim+1); From cd681ecdd9383a0f84b854e6fefeb05966babce0 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Mon, 28 Nov 2016 02:17:25 +0000 Subject: [PATCH 357/458] Add the missing period --- src/caffe/layers/crop_layer.cu | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 9ad401264..1ea132531 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -40,9 +40,9 @@ void CropLayer::crop_copy_gpu(const vector*>& bottom, } } else { // We are at the last two dimensions, which are stored continuously in - // memory With (N,C,H,W) - // (0,1,2,3) cur_dim -> H - // cur_dim+1 -> W + // memory. With (N,C,H,W) + // (0,1,2,3) cur_dim -> H + // cur_dim+1 -> W const int lines = top[0]->shape(cur_dim); const int height = top[0]->shape(cur_dim); const int width = top[0]->shape(cur_dim+1); From 8cd5c3df98734f4c43e1b7f43c05401fda0a94ac Mon Sep 17 00:00:00 2001 From: Max Ehrlich Date: Fri, 2 Dec 2016 10:13:50 -0500 Subject: [PATCH 358/458] Add Pascal to all cuda architectures The known gpu architectures were missing the Pascal sm_60 and sm_61 compute capabilities. When building for this GPU, but on a separate machine, like a CI server or inside a docker image, caffe would be built for at most capability sm_50 and crash when run on the Pascal GPU. --- cmake/Cuda.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index eeeb7325f..7146a2445 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -4,7 +4,7 @@ endif() # Known NVIDIA GPU achitectures Caffe can be compiled for. # This list will be used for CUDA_ARCH_NAME = All option -set(Caffe_known_gpu_archs "20 21(20) 30 35 50") +set(Caffe_known_gpu_archs "20 21(20) 30 35 50 60 61") ################################################################################################ # A function for automatic detection of GPUs installed (if autodetection is enabled) @@ -56,7 +56,7 @@ endfunction() # caffe_select_nvcc_arch_flags(out_variable) function(caffe_select_nvcc_arch_flags out_variable) # List of arch names - set(__archs_names "Fermi" "Kepler" "Maxwell" "All" "Manual") + set(__archs_names "Fermi" "Kepler" "Maxwell" "Pascal" "All" "Manual") set(__archs_name_default "All") if(NOT CMAKE_CROSSCOMPILING) list(APPEND __archs_names "Auto") @@ -89,6 +89,8 @@ function(caffe_select_nvcc_arch_flags out_variable) set(__cuda_arch_bin "30 35") elseif(${CUDA_ARCH_NAME} STREQUAL "Maxwell") set(__cuda_arch_bin "50") + elseif(${CUDA_ARCH_NAME} STREQUAL "Pascal") + set(__cuda_arch_bin "60 61") elseif(${CUDA_ARCH_NAME} STREQUAL "All") set(__cuda_arch_bin ${Caffe_known_gpu_archs}) elseif(${CUDA_ARCH_NAME} STREQUAL "Auto") From de3a12f46217dcac8aae467931e6d5ffb5fbc4e2 Mon Sep 17 00:00:00 2001 From: "Young H. Oh" Date: Thu, 8 Dec 2016 06:54:46 +0900 Subject: [PATCH 359/458] fix wrongly used marker hash --- tools/extra/plot_training_log.py.example | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index 79924ae5a..8caca6b8a 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -90,9 +90,9 @@ def load_data(data_file, field_idx0, field_idx1): def random_marker(): markers = mks.MarkerStyle.markers - num = len(markers.values()) + num = len(markers.keys()) idx = random.randint(0, num - 1) - return markers.values()[idx] + return markers.keys()[idx] def get_data_label(path_to_log): label = path_to_log[path_to_log.rfind('/')+1 : path_to_log.rfind( @@ -126,16 +126,9 @@ def plot_chart(chart_type, path_to_png, path_to_log_list): plt.plot(data[0], data[1], label = label, color = color, linewidth = linewidth) else: - ok = False - ## Some markers throw ValueError: Unrecognized marker style - while not ok: - try: - marker = random_marker() - plt.plot(data[0], data[1], label = label, color = color, - marker = marker, linewidth = linewidth) - ok = True - except: - pass + marker = random_marker() + plt.plot(data[0], data[1], label = label, color = color, + marker = marker, linewidth = linewidth) legend_loc = get_legend_loc(chart_type) plt.legend(loc = legend_loc, ncol = 1) # ajust ncol to fit the space plt.title(get_chart_type_description(chart_type)) From 57a5bbde4ede19c545c5932334782e3a755b2265 Mon Sep 17 00:00:00 2001 From: liyangguang Date: Fri, 16 Dec 2016 11:54:49 +0000 Subject: [PATCH 360/458] check leveldb iterator status for snappy format. --- include/caffe/util/db_leveldb.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/caffe/util/db_leveldb.hpp b/include/caffe/util/db_leveldb.hpp index e9fa0d32b..4cdb6db95 100644 --- a/include/caffe/util/db_leveldb.hpp +++ b/include/caffe/util/db_leveldb.hpp @@ -14,7 +14,10 @@ namespace caffe { namespace db { class LevelDBCursor : public Cursor { public: explicit LevelDBCursor(leveldb::Iterator* iter) - : iter_(iter) { SeekToFirst(); } + : iter_(iter) { + SeekToFirst(); + CHECK(iter_->status().ok()) << iter_->status().ToString(); + } ~LevelDBCursor() { delete iter_; } virtual void SeekToFirst() { iter_->SeekToFirst(); } virtual void Next() { iter_->Next(); } From b55fe84ca13cb7d9971505ea4d160aa5d7b6be50 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Wed, 21 Dec 2016 09:00:15 +0000 Subject: [PATCH 361/458] docs: add debian installation guide --- docs/install_apt_debian.md | 105 +++++++++++++++++++++++++++++++++++++ docs/installation.md | 1 + 2 files changed, 106 insertions(+) create mode 100644 docs/install_apt_debian.md diff --git a/docs/install_apt_debian.md b/docs/install_apt_debian.md new file mode 100644 index 000000000..745a6f4fa --- /dev/null +++ b/docs/install_apt_debian.md @@ -0,0 +1,105 @@ +--- +title: "Installation: Debian" +--- + +# Debian Installation + +Caffe packages are available for `Debian/unstable`. Debian/stable users +should take a look at Ubuntu installation instruction. + +Only experienced linux users are recommended to try Debian/unstable (Sid). + +Last update: Dec.21 2016 + +## Debian/unstable + +Apart from the installation methods based on source, Debian/unstable +users can install pre-compiled Caffe packages via the official archive. + +### Binary installation + +Make sure that there is something like the follows in your `/etc/apt/sources.list`: +``` +deb http://ftp2.cn.debian.org/debian sid main contrib non-free +``` +Then we update APT cache and directly install Caffe. Note, the cpu version and +the cuda version cannot be installed at the same time. +``` +# apt update +# apt install [ caffe-cpu | caffe-cuda ] +``` +It should work out of box. + +#### Customizing caffe packages + +Some users may need to customize the Caffe package. Here is a brief +guide of producing the customized `.deb` packages. + +Make sure that there is something like this in your `/etc/apt/sources.list`: +``` +deb http://ftp2.cn.debian.org/debian sid main contrib non-free +deb-src http://ftp2.cn.debian.org/debian sid main contrib non-free +``` + +Then we build caffe deb files with the following commands: +``` +$ sudo apt update +$ sudo apt install build-essential debhelper devscripts # standard package building tools +$ sudo apt build-dep [ caffe-cpu | caffe-cuda ] # the most elegant way to pull caffe build dependencies +$ apt source [ caffe-cpu | caffe-cuda ] # download the source tarball and extract +$ cd caffe-XXXX +[ ... optional, customize caffe code/build ... ] +$ debuild -B -j4 # build caffe with 4 parallel jobs (similar to make -j4) +[ ... building ...] +$ debc # optional, if you want to check the package contents +$ sudo debi # optional, install the generated packages +``` +The resulting deb packages can be found under the parent directory of the source tree. + +### Source installation + +Source installation under Debian/unstable is similar to that of Ubuntu, but +here is a more elegant way to pull caffe build dependencies: +``` +$ sudo apt build-dep [ caffe-cpu | caffe-cuda ] +``` +Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. + +### Notes + +* Consider re-compiling OpenBLAS locally with optimization flags for sake of +performance. This is highly recommended if you are writing a paper. + +* If you are installing `caffe-cuda`, APT will automatically pull some of the +CUDA packages and the nvidia driver packages. Please take care if you have +manually installed or hacked nvidia driver or CUDA toolkit or any other +related stuff, because in this case it may fail. + +* If you encountered any problem when installing `caffe-*`, please report bug +to Debian via Debian's bug tracking system. See https://www.debian.org/Bugs/ . + +* Additionally, a manpage (`man caffe`) and a bash complementation script +(`caffe `, `caffe train `) are provided. +Both of the two files are still not merged into caffe master. + +* The python interface is Python 3 version: `python3-caffe-{cpu,cuda}`. +No plan to support python2. + +## FAQ + +* where is caffe-cudnn? + +CUDNN library seems not redistributable currently. If you really want the +caffe-cudnn deb packages, the workaround is to install cudnn by yourself, +and hack the packaging scripts, then build your customized package. + +* I installed the CPU version, How can I switch to the CUDA version? + +`sudo apt install caffe-cuda`, apt's dependency resolver is smart enough to deal with this. + +* Where is the examples, the models and other documentation stuff? + +``` +sudo apt install caffe-doc +dpkg -L caffe-doc +``` diff --git a/docs/installation.md b/docs/installation.md index 3254be3df..14ec46742 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -12,6 +12,7 @@ The official Makefile and `Makefile.config` build are complemented by a [communi - [Docker setup](https://github.com/BVLC/caffe/tree/master/docker) *out-of-the-box brewing* - [Ubuntu installation](install_apt.html) *the standard platform* +- [Debian installation](install_apt_debian.html) *deploy caffe with a single command* - [OS X installation](install_osx.html) - [RHEL / CentOS / Fedora installation](install_yum.html) - [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Guillaume Dumont* From 2fac0d61afe290564f09067d3efa53d07ba0736f Mon Sep 17 00:00:00 2001 From: Tomasz Socha Date: Thu, 8 Dec 2016 14:51:30 +0100 Subject: [PATCH 362/458] Use mkl_malloc when use mkl --- include/caffe/syncedmem.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/caffe/syncedmem.hpp b/include/caffe/syncedmem.hpp index 38ee46640..6474a6969 100644 --- a/include/caffe/syncedmem.hpp +++ b/include/caffe/syncedmem.hpp @@ -3,6 +3,10 @@ #include +#ifdef USE_MKL + #include "mkl.h" +#endif + #include "caffe/common.hpp" namespace caffe { @@ -20,7 +24,11 @@ inline void CaffeMallocHost(void** ptr, size_t size, bool* use_cuda) { return; } #endif +#ifdef USE_MKL + *ptr = mkl_malloc(size ? size:1, 64); +#else *ptr = malloc(size); +#endif *use_cuda = false; CHECK(*ptr) << "host allocation of size " << size << " failed"; } @@ -32,7 +40,11 @@ inline void CaffeFreeHost(void* ptr, bool use_cuda) { return; } #endif +#ifdef USE_MKL + mkl_free(ptr); +#else free(ptr); +#endif } From 775f5b05dba28867f609c0e2b097e62176b4904a Mon Sep 17 00:00:00 2001 From: Yagnesh Date: Wed, 21 Dec 2016 17:05:30 -0800 Subject: [PATCH 363/458] Fixed a typo --- examples/02-fine-tuning.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/02-fine-tuning.ipynb b/examples/02-fine-tuning.ipynb index f44eaf9a4..90803c989 100644 --- a/examples/02-fine-tuning.ipynb +++ b/examples/02-fine-tuning.ipynb @@ -70,7 +70,7 @@ "\n", "- `get_ilsvrc_aux.sh` to download the ImageNet data mean, labels, etc.\n", "- `download_model_binary.py` to download the pretrained reference model\n", - "- `finetune_flickr_style/assemble_data.py` downloadsd the style training and testing data\n", + "- `finetune_flickr_style/assemble_data.py` downloads the style training and testing data\n", "\n", "We'll download just a small subset of the full dataset for this exercise: just 2000 of the 80K images, from 5 of the 20 style categories. (To download the full dataset, set `full_dataset = True` in the cell below.)" ] From 5693f3149688a2cb035858a9a9efde567763ebe7 Mon Sep 17 00:00:00 2001 From: Yagnesh Date: Fri, 23 Dec 2016 15:31:21 -0800 Subject: [PATCH 364/458] Join path using "os.path.join" instead of "+" (Needless to say it's much clearer, less error prone, and portable) --- examples/02-fine-tuning.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/02-fine-tuning.ipynb b/examples/02-fine-tuning.ipynb index 90803c989..422259de4 100644 --- a/examples/02-fine-tuning.ipynb +++ b/examples/02-fine-tuning.ipynb @@ -146,7 +146,7 @@ "outputs": [], "source": [ "import os\n", - "weights = caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'\n", + "weights = os.path.join(caffe_root, 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel')\n", "assert os.path.exists(weights)" ] }, From 1fd8bd0b4a842aa5a9d7ea1ec88d4cdd7eaf3b99 Mon Sep 17 00:00:00 2001 From: Fyodor Tokarev Date: Fri, 30 Dec 2016 17:47:20 +0300 Subject: [PATCH 365/458] Typos in test_inner_product_layer.cpp --- src/caffe/test/test_inner_product_layer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/caffe/test/test_inner_product_layer.cpp b/src/caffe/test/test_inner_product_layer.cpp index f1ec2333f..6d84d292b 100644 --- a/src/caffe/test/test_inner_product_layer.cpp +++ b/src/caffe/test/test_inner_product_layer.cpp @@ -60,9 +60,9 @@ TYPED_TEST(InnerProductLayerTest, TestSetUp) { EXPECT_EQ(this->blob_top_->channels(), 10); } -/** @brief TestSetUp while toggling tranpose flag +/** @brief TestSetUp while toggling transpose flag */ -TYPED_TEST(InnerProductLayerTest, TestSetUpTranposeFalse) { +TYPED_TEST(InnerProductLayerTest, TestSetUpTransposeFalse) { typedef typename TypeParam::Dtype Dtype; this->blob_bottom_vec_.push_back(this->blob_bottom_); LayerParameter layer_param; @@ -82,9 +82,9 @@ TYPED_TEST(InnerProductLayerTest, TestSetUpTranposeFalse) { EXPECT_EQ(60, layer->blobs()[0]->shape(1)); } -/** @brief TestSetUp while toggling tranpose flag +/** @brief TestSetUp while toggling transpose flag */ -TYPED_TEST(InnerProductLayerTest, TestSetUpTranposeTrue) { +TYPED_TEST(InnerProductLayerTest, TestSetUpTransposeTrue) { typedef typename TypeParam::Dtype Dtype; this->blob_bottom_vec_.push_back(this->blob_bottom_); LayerParameter layer_param; @@ -339,7 +339,7 @@ TYPED_TEST(InnerProductLayerTest, TestBackwardTranspose) { // copy bottom diffs Blob* const bottom_diff = new Blob(); bottom_diff->CopyFrom(*this->blob_bottom_vec_[0], true, true); - // repeat original top with tranposed ip + // repeat original top with transposed ip this->blob_top_vec_.clear(); this->blob_top_vec_.push_back(new Blob()); inner_product_param->set_transpose(true); From 4f0eb52a7ecd1bfb2c2d5906d368823eb312693c Mon Sep 17 00:00:00 2001 From: Xiaojie Deng Date: Sat, 31 Dec 2016 20:22:17 +0800 Subject: [PATCH 366/458] Fix parse_log.py and parse_log.sh for negative time duration if datetime in log across year boundary --- tools/extra/extract_seconds.py | 8 ++++++++ tools/extra/parse_log.py | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/tools/extra/extract_seconds.py b/tools/extra/extract_seconds.py index 591a51f96..68af69a27 100755 --- a/tools/extra/extract_seconds.py +++ b/tools/extra/extract_seconds.py @@ -48,11 +48,19 @@ def extract_seconds(input_file, output_file): start_datetime = get_start_time(lines, log_created_year) assert start_datetime, 'Start time not found' + last_dt = start_datetime out = open(output_file, 'w') for line in lines: line = line.strip() if line.find('Iteration') != -1: dt = extract_datetime_from_line(line, log_created_year) + + # if it's another year + if dt.month < last_dt.month: + log_created_year += 1 + dt = extract_datetime_from_line(line, log_created_year) + last_dt = dt + elapsed_seconds = (dt - start_datetime).total_seconds() out.write('%f\n' % elapsed_seconds) out.close() diff --git a/tools/extra/parse_log.py b/tools/extra/parse_log.py index 017306b50..b47ffd0d8 100755 --- a/tools/extra/parse_log.py +++ b/tools/extra/parse_log.py @@ -38,6 +38,7 @@ def parse_log(path_to_log): logfile_year = extract_seconds.get_log_created_year(path_to_log) with open(path_to_log) as f: start_time = extract_seconds.get_start_time(f, logfile_year) + last_time = start_time for line in f: iteration_match = regex_iteration.search(line) @@ -55,6 +56,12 @@ def parse_log(path_to_log): # Skip lines with bad formatting, for example when resuming solver continue + # if it's another year + if time.month < last_time.month: + logfile_year += 1 + time = extract_seconds.extract_datetime_from_line(line, logfile_year) + last_time = time + seconds = (time - start_time).total_seconds() learning_rate_match = regex_learning_rate.search(line) From bae06073864dbe86970429d53e35335304626a70 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Sun, 1 Jan 2017 18:22:09 +0000 Subject: [PATCH 367/458] Overhaul layer catalogue documentation. Create scripts/split_caffe_proto.py file for splitting up the caffe.proto file, so that parts of the file can be included from the layer help pages. Create separate pages for each layer and link each page from layers.md. --- docs/tutorial/layers.md | 562 +++--------------- docs/tutorial/layers/absval.md | 22 + docs/tutorial/layers/accuracy.md | 21 + docs/tutorial/layers/argmax.md | 19 + docs/tutorial/layers/batchnorm.md | 20 + docs/tutorial/layers/batchreindex.md | 16 + docs/tutorial/layers/bias.md | 19 + docs/tutorial/layers/bnll.md | 25 + docs/tutorial/layers/concat.md | 40 ++ docs/tutorial/layers/contrastiveloss.md | 20 + docs/tutorial/layers/convolution.md | 63 ++ docs/tutorial/layers/crop.md | 20 + docs/tutorial/layers/data.md | 29 + docs/tutorial/layers/deconvolution.md | 22 + docs/tutorial/layers/dropout.md | 20 + docs/tutorial/layers/dummydata.md | 20 + docs/tutorial/layers/eltwise.md | 20 + docs/tutorial/layers/elu.md | 25 + docs/tutorial/layers/embed.md | 20 + docs/tutorial/layers/euclideanloss.md | 16 + docs/tutorial/layers/exp.md | 24 + docs/tutorial/layers/filter.md | 15 + docs/tutorial/layers/flatten.md | 21 + docs/tutorial/layers/hdf5data.md | 20 + docs/tutorial/layers/hdf5output.md | 25 + docs/tutorial/layers/hingeloss.md | 19 + docs/tutorial/layers/im2col.md | 16 + docs/tutorial/layers/imagedata.md | 27 + docs/tutorial/layers/infogainloss.md | 24 + docs/tutorial/layers/innerproduct.md | 59 ++ docs/tutorial/layers/input.md | 19 + docs/tutorial/layers/log.md | 20 + docs/tutorial/layers/lrn.md | 28 + docs/tutorial/layers/lstm.md | 21 + docs/tutorial/layers/memorydata.md | 25 + .../layers/multinomiallogisticloss.md | 19 + docs/tutorial/layers/mvn.md | 20 + docs/tutorial/layers/parameter.md | 21 + docs/tutorial/layers/pooling.md | 47 ++ docs/tutorial/layers/power.md | 46 ++ docs/tutorial/layers/prelu.md | 20 + docs/tutorial/layers/python.md | 27 + docs/tutorial/layers/recurrent.md | 20 + docs/tutorial/layers/reduction.md | 20 + docs/tutorial/layers/relu.md | 32 + docs/tutorial/layers/reshape.md | 51 ++ docs/tutorial/layers/rnn.md | 19 + docs/tutorial/layers/scale.md | 20 + docs/tutorial/layers/sigmoid.md | 20 + .../layers/sigmoidcrossentropyloss.md | 13 + docs/tutorial/layers/silence.md | 23 + docs/tutorial/layers/slice.md | 42 ++ docs/tutorial/layers/softmax.md | 24 + docs/tutorial/layers/softmaxwithloss.md | 33 + docs/tutorial/layers/split.md | 17 + docs/tutorial/layers/spp.md | 20 + docs/tutorial/layers/tanh.md | 18 + docs/tutorial/layers/threshold.md | 18 + docs/tutorial/layers/tile.md | 20 + docs/tutorial/layers/windowdata.md | 19 + scripts/build_docs.sh | 3 + scripts/split_caffe_proto.py | 35 ++ 62 files changed, 1573 insertions(+), 476 deletions(-) create mode 100644 docs/tutorial/layers/absval.md create mode 100644 docs/tutorial/layers/accuracy.md create mode 100644 docs/tutorial/layers/argmax.md create mode 100644 docs/tutorial/layers/batchnorm.md create mode 100644 docs/tutorial/layers/batchreindex.md create mode 100644 docs/tutorial/layers/bias.md create mode 100644 docs/tutorial/layers/bnll.md create mode 100644 docs/tutorial/layers/concat.md create mode 100644 docs/tutorial/layers/contrastiveloss.md create mode 100644 docs/tutorial/layers/convolution.md create mode 100644 docs/tutorial/layers/crop.md create mode 100644 docs/tutorial/layers/data.md create mode 100644 docs/tutorial/layers/deconvolution.md create mode 100644 docs/tutorial/layers/dropout.md create mode 100644 docs/tutorial/layers/dummydata.md create mode 100644 docs/tutorial/layers/eltwise.md create mode 100644 docs/tutorial/layers/elu.md create mode 100644 docs/tutorial/layers/embed.md create mode 100644 docs/tutorial/layers/euclideanloss.md create mode 100644 docs/tutorial/layers/exp.md create mode 100644 docs/tutorial/layers/filter.md create mode 100644 docs/tutorial/layers/flatten.md create mode 100644 docs/tutorial/layers/hdf5data.md create mode 100644 docs/tutorial/layers/hdf5output.md create mode 100644 docs/tutorial/layers/hingeloss.md create mode 100644 docs/tutorial/layers/im2col.md create mode 100644 docs/tutorial/layers/imagedata.md create mode 100644 docs/tutorial/layers/infogainloss.md create mode 100644 docs/tutorial/layers/innerproduct.md create mode 100644 docs/tutorial/layers/input.md create mode 100644 docs/tutorial/layers/log.md create mode 100644 docs/tutorial/layers/lrn.md create mode 100644 docs/tutorial/layers/lstm.md create mode 100644 docs/tutorial/layers/memorydata.md create mode 100644 docs/tutorial/layers/multinomiallogisticloss.md create mode 100644 docs/tutorial/layers/mvn.md create mode 100644 docs/tutorial/layers/parameter.md create mode 100644 docs/tutorial/layers/pooling.md create mode 100644 docs/tutorial/layers/power.md create mode 100644 docs/tutorial/layers/prelu.md create mode 100644 docs/tutorial/layers/python.md create mode 100644 docs/tutorial/layers/recurrent.md create mode 100644 docs/tutorial/layers/reduction.md create mode 100644 docs/tutorial/layers/relu.md create mode 100644 docs/tutorial/layers/reshape.md create mode 100644 docs/tutorial/layers/rnn.md create mode 100644 docs/tutorial/layers/scale.md create mode 100644 docs/tutorial/layers/sigmoid.md create mode 100644 docs/tutorial/layers/sigmoidcrossentropyloss.md create mode 100644 docs/tutorial/layers/silence.md create mode 100644 docs/tutorial/layers/slice.md create mode 100644 docs/tutorial/layers/softmax.md create mode 100644 docs/tutorial/layers/softmaxwithloss.md create mode 100644 docs/tutorial/layers/split.md create mode 100644 docs/tutorial/layers/spp.md create mode 100644 docs/tutorial/layers/tanh.md create mode 100644 docs/tutorial/layers/threshold.md create mode 100644 docs/tutorial/layers/tile.md create mode 100644 docs/tutorial/layers/windowdata.md create mode 100755 scripts/split_caffe_proto.py diff --git a/docs/tutorial/layers.md b/docs/tutorial/layers.md index 7362aac29..a903d5ac9 100644 --- a/docs/tutorial/layers.md +++ b/docs/tutorial/layers.md @@ -1,186 +1,77 @@ --- title: Layer Catalogue --- + # Layers To create a Caffe model you need to define the model architecture in a protocol buffer definition file (prototxt). Caffe layers and their parameters are defined in the protocol buffer definitions for the project in [caffe.proto](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto). -### Vision Layers - -* Header: `./include/caffe/vision_layers.hpp` - -Vision layers usually take *images* as input and produce other *images* as output. -A typical "image" in the real-world may have one color channel ($$c = 1$$), as in a grayscale image, or three color channels ($$c = 3$$) as in an RGB (red, green, blue) image. -But in this context, the distinguishing characteristic of an image is its spatial structure: usually an image has some non-trivial height $$h > 1$$ and width $$w > 1$$. -This 2D geometry naturally lends itself to certain decisions about how to process the input. -In particular, most of the vision layers work by applying a particular operation to some region of the input to produce a corresponding region of the output. -In contrast, other layers (with few exceptions) ignore the spatial structure of the input, effectively treating it as "one big vector" with dimension $$chw$$. - - -#### Convolution - -* Layer type: `Convolution` -* CPU implementation: `./src/caffe/layers/convolution_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/convolution_layer.cu` -* Parameters (`ConvolutionParameter convolution_param`) - - Required - - `num_output` (`c_o`): the number of filters - - `kernel_size` (or `kernel_h` and `kernel_w`): specifies height and width of each filter - - Strongly Recommended - - `weight_filler` [default `type: 'constant' value: 0`] - - Optional - - `bias_term` [default `true`]: specifies whether to learn and apply a set of additive biases to the filter outputs - - `pad` (or `pad_h` and `pad_w`) [default 0]: specifies the number of pixels to (implicitly) add to each side of the input - - `stride` (or `stride_h` and `stride_w`) [default 1]: specifies the intervals at which to apply the filters to the input - - `group` (g) [default 1]: If g > 1, we restrict the connectivity of each filter to a subset of the input. Specifically, the input and output channels are separated into g groups, and the $$i$$th output group channels will be only connected to the $$i$$th input group channels. -* Input - - `n * c_i * h_i * w_i` -* Output - - `n * c_o * h_o * w_o`, where `h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1` and `w_o` likewise. -* Sample (as seen in `./models/bvlc_reference_caffenet/train_val.prototxt`) - - layer { - name: "conv1" - type: "Convolution" - bottom: "data" - top: "conv1" - # learning rate and decay multipliers for the filters - param { lr_mult: 1 decay_mult: 1 } - # learning rate and decay multipliers for the biases - param { lr_mult: 2 decay_mult: 0 } - convolution_param { - num_output: 96 # learn 96 filters - kernel_size: 11 # each filter is 11x11 - stride: 4 # step 4 pixels between each filter application - weight_filler { - type: "gaussian" # initialize the filters from a Gaussian - std: 0.01 # distribution with stdev 0.01 (default mean: 0) - } - bias_filler { - type: "constant" # initialize the biases to zero (0) - value: 0 - } - } - } - -The `Convolution` layer convolves the input image with a set of learnable filters, each producing one feature map in the output image. - -#### Pooling - -* Layer type: `Pooling` -* CPU implementation: `./src/caffe/layers/pooling_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/pooling_layer.cu` -* Parameters (`PoolingParameter pooling_param`) - - Required - - `kernel_size` (or `kernel_h` and `kernel_w`): specifies height and width of each filter - - Optional - - `pool` [default MAX]: the pooling method. Currently MAX, AVE, or STOCHASTIC - - `pad` (or `pad_h` and `pad_w`) [default 0]: specifies the number of pixels to (implicitly) add to each side of the input - - `stride` (or `stride_h` and `stride_w`) [default 1]: specifies the intervals at which to apply the filters to the input -* Input - - `n * c * h_i * w_i` -* Output - - `n * c * h_o * w_o`, where h_o and w_o are computed in the same way as convolution. -* Sample (as seen in `./models/bvlc_reference_caffenet/train_val.prototxt`) - - layer { - name: "pool1" - type: "Pooling" - bottom: "conv1" - top: "pool1" - pooling_param { - pool: MAX - kernel_size: 3 # pool over a 3x3 region - stride: 2 # step two pixels (in the bottom blob) between pooling regions - } - } - -#### Local Response Normalization (LRN) - -* Layer type: `LRN` -* CPU Implementation: `./src/caffe/layers/lrn_layer.cpp` -* CUDA GPU Implementation: `./src/caffe/layers/lrn_layer.cu` -* Parameters (`LRNParameter lrn_param`) - - Optional - - `local_size` [default 5]: the number of channels to sum over (for cross channel LRN) or the side length of the square region to sum over (for within channel LRN) - - `alpha` [default 1]: the scaling parameter (see below) - - `beta` [default 5]: the exponent (see below) - - `norm_region` [default `ACROSS_CHANNELS`]: whether to sum over adjacent channels (`ACROSS_CHANNELS`) or nearby spatial locaitons (`WITHIN_CHANNEL`) +## Data Layers -The local response normalization layer performs a kind of "lateral inhibition" by normalizing over local input regions. In `ACROSS_CHANNELS` mode, the local regions extend across nearby channels, but have no spatial extent (i.e., they have shape `local_size x 1 x 1`). In `WITHIN_CHANNEL` mode, the local regions extend spatially, but are in separate channels (i.e., they have shape `1 x local_size x local_size`). Each input value is divided by $$(1 + (\alpha/n) \sum_i x_i^2)^\beta$$, where $$n$$ is the size of each local region, and the sum is taken over the region centered at that value (zero padding is added where necessary). - -#### im2col - -`Im2col` is a helper for doing the image-to-column transformation that you most likely do not need to know about. This is used in Caffe's original convolution to do matrix multiplication by laying out all patches into a matrix. - -### Loss Layers +Data enters Caffe through data layers: they lie at the bottom of nets. Data can come from efficient databases (LevelDB or LMDB), directly from memory, or, when efficiency is not critical, from files on disk in HDF5 or common image formats. -Loss drives learning by comparing an output to a target and assigning cost to minimize. The loss itself is computed by the forward pass and the gradient w.r.t. to the loss is computed by the backward pass. +Common input preprocessing (mean subtraction, scaling, random cropping, and mirroring) is available by specifying `TransformationParameter`s by some of the layers. +The [bias](layers/bias.html), [scale](layers/scale.html), and [crop](layers/crop.html) layers can be helpful with transforming the inputs, when `TransformationParameter` isn't available. -#### Softmax +Layers: -* Layer type: `SoftmaxWithLoss` +* [Image Data](layers/imagedata.html) - read raw images. +* [Database](layers/data.html) - read data from LEVELDB or LMDB. +* [HDF5 Input](layers/hdf5data.html) - read HDF5 data, allows data of arbitrary dimensions. +* [HDF5 Output](layers/hdf5output.html) - write data as HDF5. +* [Input](layers/input.html) - typically used for networks that are being deployed. +* [Window Data](layers/windowdata.html) - read window data file. +* [Memory Data](layers/memorydata.html) - read data directly from memory. +* [Dummy Data](layers/dummydata.html) - for static data and debugging. -The softmax loss layer computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient. +Note that the [Python](layers/python.html) Layer can be useful for create custom data layers. -#### Sum-of-Squares / Euclidean +## Vision Layers -* Layer type: `EuclideanLoss` +Vision layers usually take *images* as input and produce other *images* as output, although they can take data of other types and dimensions. +A typical "image" in the real-world may have one color channel ($$c = 1$$), as in a grayscale image, or three color channels ($$c = 3$$) as in an RGB (red, green, blue) image. +But in this context, the distinguishing characteristic of an image is its spatial structure: usually an image has some non-trivial height $$h > 1$$ and width $$w > 1$$. +This 2D geometry naturally lends itself to certain decisions about how to process the input. +In particular, most of the vision layers work by applying a particular operation to some region of the input to produce a corresponding region of the output. +In contrast, other layers (with few exceptions) ignore the spatial structure of the input, effectively treating it as "one big vector" with dimension $$chw$$. -The Euclidean loss layer computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$. +Layers: -#### Hinge / Margin +* [Convolution Layer](layers/convolution.html) - convolves the input image with a set of learnable filters, each producing one feature map in the output image. +* [Pooling Layer](layers/pooling.html) - max, average, or stochastic pooling. +* [Spatial Pyramid Pooling (SPP)](layers/spp.html) +* [Crop](layers/crop.html) - perform cropping transformation. +* [Deconvolution Layer](layers/deconvolution.html) - transposed convolution. -* Layer type: `HingeLoss` -* CPU implementation: `./src/caffe/layers/hinge_loss_layer.cpp` -* CUDA GPU implementation: none yet -* Parameters (`HingeLossParameter hinge_loss_param`) - - Optional - - `norm` [default L1]: the norm used. Currently L1, L2 -* Inputs - - `n * c * h * w` Predictions - - `n * 1 * 1 * 1` Labels -* Output - - `1 * 1 * 1 * 1` Computed Loss -* Samples +* [Im2Col](layers/im2col.html) - relic helper layer that is not used much anymore. - # L1 Norm - layer { - name: "loss" - type: "HingeLoss" - bottom: "pred" - bottom: "label" - } +## Recurrent Layers - # L2 Norm - layer { - name: "loss" - type: "HingeLoss" - bottom: "pred" - bottom: "label" - top: "loss" - hinge_loss_param { - norm: L2 - } - } +Layers: -The hinge loss layer computes a one-vs-all hinge or squared hinge loss. +* [Recurrent](layers/recurrent.html) +* [RNN](layers/rnn.html) +* [Long-Short Term Memory (LSTM)](layers/lstm.html) -#### Sigmoid Cross-Entropy +## Common Layers -`SigmoidCrossEntropyLoss` +Layers: -#### Infogain +* [Inner Product](layers/innerproduct.html) - fully connected layer. +* [Dropout](layers/dropout.html) +* [Embed](layers/embed.html) - for learning embeddings of one-hot encoded vector (takes index as input). -`InfogainLoss` +## Normalization Layers -#### Accuracy and Top-k +* [Local Response Normalization (LRN)](layers/lrn.html) - performs a kind of "lateral inhibition" by normalizing over local input regions. +* [Mean Variance Normalization (MVN)](layers/mvn.html) - performs contrast normalization / instance normalization. +* [Batch Normalization](layers/batchnorm.html) - performs normalization over mini-batches. -`Accuracy` scores the output as the accuracy of output with respect to target -- it is not actually a loss and has no backward step. +The [bias](layers/bias.html) and [scale](layers/scale.html) layers can be helpful in combination with normalization. -### Activation / Neuron Layers +## Activation / Neuron Layers In general, activation / Neuron layers are element-wise operators, taking one bottom blob and producing one top blob of the same size. In the layers below, we will ignore the input and out sizes as they are identical: @@ -189,337 +80,56 @@ In general, activation / Neuron layers are element-wise operators, taking one bo * Output - n * c * h * w -#### ReLU / Rectified-Linear and Leaky-ReLU - -* Layer type: `ReLU` -* CPU implementation: `./src/caffe/layers/relu_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/relu_layer.cu` -* Parameters (`ReLUParameter relu_param`) - - Optional - - `negative_slope` [default 0]: specifies whether to leak the negative part by multiplying it with the slope value rather than setting it to 0. -* Sample (as seen in `./models/bvlc_reference_caffenet/train_val.prototxt`) - - layer { - name: "relu1" - type: "ReLU" - bottom: "conv1" - top: "conv1" - } - -Given an input value x, The `ReLU` layer computes the output as x if x > 0 and negative_slope * x if x <= 0. When the negative slope parameter is not set, it is equivalent to the standard ReLU function of taking max(x, 0). It also supports in-place computation, meaning that the bottom and the top blob could be the same to preserve memory consumption. - -#### Sigmoid - -* Layer type: `Sigmoid` -* CPU implementation: `./src/caffe/layers/sigmoid_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/sigmoid_layer.cu` -* Sample (as seen in `./examples/mnist/mnist_autoencoder.prototxt`) - - layer { - name: "encode1neuron" - bottom: "encode1" - top: "encode1neuron" - type: "Sigmoid" - } - -The `Sigmoid` layer computes the output as sigmoid(x) for each input element x. - -#### TanH / Hyperbolic Tangent - -* Layer type: `TanH` -* CPU implementation: `./src/caffe/layers/tanh_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/tanh_layer.cu` -* Sample - - layer { - name: "layer" - bottom: "in" - top: "out" - type: "TanH" - } - -The `TanH` layer computes the output as tanh(x) for each input element x. - -#### Absolute Value - -* Layer type: `AbsVal` -* CPU implementation: `./src/caffe/layers/absval_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/absval_layer.cu` -* Sample - - layer { - name: "layer" - bottom: "in" - top: "out" - type: "AbsVal" - } - -The `AbsVal` layer computes the output as abs(x) for each input element x. - -#### Power - -* Layer type: `Power` -* CPU implementation: `./src/caffe/layers/power_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/power_layer.cu` -* Parameters (`PowerParameter power_param`) - - Optional - - `power` [default 1] - - `scale` [default 1] - - `shift` [default 0] -* Sample - - layer { - name: "layer" - bottom: "in" - top: "out" - type: "Power" - power_param { - power: 1 - scale: 1 - shift: 0 - } - } - -The `Power` layer computes the output as (shift + scale * x) ^ power for each input element x. - -#### BNLL - -* Layer type: `BNLL` -* CPU implementation: `./src/caffe/layers/bnll_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/bnll_layer.cu` -* Sample - - layer { - name: "layer" - bottom: "in" - top: "out" - type: BNLL - } - -The `BNLL` (binomial normal log likelihood) layer computes the output as log(1 + exp(x)) for each input element x. - - -### Data Layers - -Data enters Caffe through data layers: they lie at the bottom of nets. Data can come from efficient databases (LevelDB or LMDB), directly from memory, or, when efficiency is not critical, from files on disk in HDF5 or common image formats. - -Common input preprocessing (mean subtraction, scaling, random cropping, and mirroring) is available by specifying `TransformationParameter`s. - -#### Database +Layers: -* Layer type: `Data` -* Parameters - - Required - - `source`: the name of the directory containing the database - - `batch_size`: the number of inputs to process at one time - - Optional - - `rand_skip`: skip up to this number of inputs at the beginning; useful for asynchronous sgd - - `backend` [default `LEVELDB`]: choose whether to use a `LEVELDB` or `LMDB` +* [ReLU / Rectified-Linear and Leaky-ReLU](layers/relu.html) - ReLU and Leaky-ReLU rectification. +* [PReLU](layers/prelu.html) - parametric ReLU. +* [ELU](layers/elu.html) - exponential linear rectification. +* [Sigmoid](layers/sigmoid.html) +* [TanH](layers/tanh.html) +* [Absolute Value](layers/abs.html) +* [Power](layers/power.html) - f(x) = (shift + scale * x) ^ power. +* [Exp](layers/exp.html) - f(x) = base ^ (shift + scale * x). +* [Log](layers/log.html) - f(x) = log(x). +* [BNLL](layers/bnll.html) - f(x) = log(1 + exp(x)). +* [Threshold](layers/threshold.html) - performs step function at user defined threshold. +* [Bias](layers/bias.html) - adds a bias to a blob that can either be learned or fixed. +* [Scale](layers/scale.html) - scales a blob by an amount that can either be learned or fixed. +## Utility Layers +Layers: -#### In-Memory +* [Flatten](layers/flatten.html) +* [Reshape](layers/reshape.html) +* [Batch Reindex](layers/batchreindex.html) -* Layer type: `MemoryData` -* Parameters - - Required - - `batch_size`, `channels`, `height`, `width`: specify the size of input chunks to read from memory +* [Split](layers/split.html) +* [Concat](layers/concat.html) +* [Slicing](layers/slice.html) +* [Eltwise](layers/eltwise.html) - element-wise operations such as product or sum between two blobs. +* [Filter / Mask](layers/filter.html) - mask or select output using last blob. +* [Parameter](layers/parameter.html) - enable parameters to be shared between layers. +* [Reduction](layers/reduction.html) - reduce input blob to scalar blob using operations such as sum or mean. +* [Silence](layers/silence.html) - prevent top-level blobs from being printed during training. -The memory data layer reads data directly from memory, without copying it. In order to use it, one must call `MemoryDataLayer::Reset` (from C++) or `Net.set_input_arrays` (from Python) in order to specify a source of contiguous data (as 4D row major array), which is read one batch-sized chunk at a time. +* [ArgMax](layers/argmax.html) +* [Softmax](layers/softmax.html) -#### HDF5 Input +* [Python](layers/python.html) - allows custom Python layers. -* Layer type: `HDF5Data` -* Parameters - - Required - - `source`: the name of the file to read from - - `batch_size` +## Loss Layers -#### HDF5 Output - -* Layer type: `HDF5Output` -* Parameters - - Required - - `file_name`: name of file to write to - -The HDF5 output layer performs the opposite function of the other layers in this section: it writes its input blobs to disk. - -#### Images - -* Layer type: `ImageData` -* Parameters - - Required - - `source`: name of a text file, with each line giving an image filename and label - - `batch_size`: number of images to batch together - - Optional - - `rand_skip` - - `shuffle` [default false] - - `new_height`, `new_width`: if provided, resize all images to this size - -#### Windows - -`WindowData` - -#### Dummy - -`DummyData` is for development and debugging. See `DummyDataParameter`. - -### Common Layers - -#### Inner Product - -* Layer type: `InnerProduct` -* CPU implementation: `./src/caffe/layers/inner_product_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/inner_product_layer.cu` -* Parameters (`InnerProductParameter inner_product_param`) - - Required - - `num_output` (`c_o`): the number of filters - - Strongly recommended - - `weight_filler` [default `type: 'constant' value: 0`] - - Optional - - `bias_filler` [default `type: 'constant' value: 0`] - - `bias_term` [default `true`]: specifies whether to learn and apply a set of additive biases to the filter outputs -* Input - - `n * c_i * h_i * w_i` -* Output - - `n * c_o * 1 * 1` -* Sample - - layer { - name: "fc8" - type: "InnerProduct" - # learning rate and decay multipliers for the weights - param { lr_mult: 1 decay_mult: 1 } - # learning rate and decay multipliers for the biases - param { lr_mult: 2 decay_mult: 0 } - inner_product_param { - num_output: 1000 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - value: 0 - } - } - bottom: "fc7" - top: "fc8" - } - -The `InnerProduct` layer (also usually referred to as the fully connected layer) treats the input as a simple vector and produces an output in the form of a single vector (with the blob's height and width set to 1). - -#### Splitting - -The `Split` layer is a utility layer that splits an input blob to multiple output blobs. This is used when a blob is fed into multiple output layers. - -#### Flattening - -The `Flatten` layer is a utility layer that flattens an input of shape `n * c * h * w` to a simple vector output of shape `n * (c*h*w)` - -#### Reshape - -* Layer type: `Reshape` -* Implementation: `./src/caffe/layers/reshape_layer.cpp` -* Parameters (`ReshapeParameter reshape_param`) - - Optional: (also see detailed description below) - - `shape` - -* Input - - a single blob with arbitrary dimensions -* Output - - the same blob, with modified dimensions, as specified by `reshape_param` - -* Sample - - layer { - name: "reshape" - type: "Reshape" - bottom: "input" - top: "output" - reshape_param { - shape { - dim: 0 # copy the dimension from below - dim: 2 - dim: 3 - dim: -1 # infer it from the other dimensions - } - } - } - -The `Reshape` layer can be used to change the dimensions of its input, without changing its data. Just like the `Flatten` layer, only the dimensions are changed; no data is copied in the process. - -Output dimensions are specified by the `ReshapeParam` proto. Positive numbers are used directly, setting the corresponding dimension of the output blob. In addition, two special values are accepted for any of the target dimension values: - -* **0** means "copy the respective dimension of the bottom layer". That is, if the bottom has 2 as its 1st dimension, the top will have 2 as its 1st dimension as well, given `dim: 0` as the 1st target dimension. -* **-1** stands for "infer this from the other dimensions". This behavior is similar to that of -1 in *numpy*'s or `[]` for *MATLAB*'s reshape: this dimension is calculated to keep the overall element count the same as in the bottom layer. At most one -1 can be used in a reshape operation. - -As another example, specifying `reshape_param { shape { dim: 0 dim: -1 } }` makes the layer behave in exactly the same way as the `Flatten` layer. - -#### Concatenation - -* Layer type: `Concat` -* CPU implementation: `./src/caffe/layers/concat_layer.cpp` -* CUDA GPU implementation: `./src/caffe/layers/concat_layer.cu` -* Parameters (`ConcatParameter concat_param`) - - Optional - - `axis` [default 1]: 0 for concatenation along num and 1 for channels. -* Input - - `n_i * c_i * h * w` for each input blob i from 1 to K. -* Output - - if `axis = 0`: `(n_1 + n_2 + ... + n_K) * c_1 * h * w`, and all input `c_i` should be the same. - - if `axis = 1`: `n_1 * (c_1 + c_2 + ... + c_K) * h * w`, and all input `n_i` should be the same. -* Sample - - layer { - name: "concat" - bottom: "in1" - bottom: "in2" - top: "out" - type: "Concat" - concat_param { - axis: 1 - } - } - -The `Concat` layer is a utility layer that concatenates its multiple input blobs to one single output blob. - -#### Slicing - -The `Slice` layer is a utility layer that slices an input layer to multiple output layers along a given dimension (currently num or channel only) with given slice indices. - -* Sample - - layer { - name: "slicer_label" - type: "Slice" - bottom: "label" - ## Example of label with a shape N x 3 x 1 x 1 - top: "label1" - top: "label2" - top: "label3" - slice_param { - axis: 1 - slice_point: 1 - slice_point: 2 - } - } - -`axis` indicates the target axis; `slice_point` indicates indexes in the selected dimension (the number of indices must be equal to the number of top blobs minus one). - - -#### Elementwise Operations - -`Eltwise` - -#### Argmax - -`ArgMax` - -#### Softmax +Loss drives learning by comparing an output to a target and assigning cost to minimize. The loss itself is computed by the forward pass and the gradient w.r.t. to the loss is computed by the backward pass. -`Softmax` +Layers: -#### Mean-Variance Normalization +* [Multinomial Logistic Loss](layers/multinomiallogisticloss.html) +* [Infogain Loss](layers/infogainloss.html) - a generalization of MultinomialLogisticLossLayer. +* [Softmax with Loss](layers/softmaxwithloss.html) - computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient. +* [Sum-of-Squares / Euclidean](layers/euclideanloss.html) - computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$. +* [Hinge / Margin](layers/hiddenloss.html) - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2). +* [Sigmoid Cross-Entropy Loss](layers/sigmoidcrossentropyloss.html) - computes the cross-entropy (logistic) loss, often used for predicting targets interpreted as probabilities. +* [Accuracy / Top-k layer](layers/accuracy.html) - scores the output as an accuracy with respect to target -- it is not actually a loss and has no backward step. +* [Contrastive Loss](layers/contrastiveloss.html) -`MVN` diff --git a/docs/tutorial/layers/absval.md b/docs/tutorial/layers/absval.md new file mode 100644 index 000000000..220c41189 --- /dev/null +++ b/docs/tutorial/layers/absval.md @@ -0,0 +1,22 @@ +--- +title: Absolute Value Layer +--- + +# Absolute Value Layer + +* Layer type: `AbsVal` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AbsValLayer.html) +* Header: [`./include/caffe/layers/absval_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/absval_layer.hpp) +* CPU implementation: [`./src/caffe/layers/absval_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/absval_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/absval_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/absval_layer.cu) + +* Sample + + layer { + name: "layer" + bottom: "in" + top: "out" + type: "AbsVal" + } + +The `AbsVal` layer computes the output as abs(x) for each input element x. diff --git a/docs/tutorial/layers/accuracy.md b/docs/tutorial/layers/accuracy.md new file mode 100644 index 000000000..ecf84090e --- /dev/null +++ b/docs/tutorial/layers/accuracy.md @@ -0,0 +1,21 @@ +--- +title: Accuracy and Top-k +--- + +# Accuracy and Top-k + +`Accuracy` scores the output as the accuracy of output with respect to target -- it is not actually a loss and has no backward step. + +* Layer type: `Accuracy` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AccuracyLayer.html) +* Header: [`./include/caffe/layers/accuracy_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/accuracy_layer.hpp) +* CPU implementation: [`./src/caffe/layers/accuracy_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/accuracy_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/accuracy_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/accuracy_layer.cu) + +## Parameters +* Parameters (`AccuracyParameter accuracy_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/AccuracyParameter.txt %} +{% endhighlight %} \ No newline at end of file diff --git a/docs/tutorial/layers/argmax.md b/docs/tutorial/layers/argmax.md new file mode 100644 index 000000000..f5f173ac7 --- /dev/null +++ b/docs/tutorial/layers/argmax.md @@ -0,0 +1,19 @@ +--- +title: ArgMax Layer +--- + +# ArgMax Layer + +* Layer type: `ArgMax` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ArgMaxLayer.html) +* Header: [`./include/caffe/layers/argmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/argmax_layer.hpp) +* CPU implementation: [`./src/caffe/layers/argmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/argmax_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/argmax_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/argmax_layer.cu) + +## Parameters +* Parameters (`ArgMaxParameter argmax_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ArgMaxParameter.txt %} +{% endhighlight %} \ No newline at end of file diff --git a/docs/tutorial/layers/batchnorm.md b/docs/tutorial/layers/batchnorm.md new file mode 100644 index 000000000..a5be5ce08 --- /dev/null +++ b/docs/tutorial/layers/batchnorm.md @@ -0,0 +1,20 @@ +--- +title: Batch Norm Layer +--- + +# Batch Norm Layer + +* Layer type: `BatchNorm` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BatchNormLayer.html) +* Header: [`./include/caffe/layers/batch_norm_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_norm_layer.hpp) +* CPU implementation: [`./src/caffe/layers/batch_norm_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_norm_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/batch_norm_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_norm_layer.cu) + +## Parameters + +* Parameters (`BatchNormParameter batch_norm_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/BatchNormParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/batchreindex.md b/docs/tutorial/layers/batchreindex.md new file mode 100644 index 000000000..21b36c39b --- /dev/null +++ b/docs/tutorial/layers/batchreindex.md @@ -0,0 +1,16 @@ +--- +title: Batch Reindex Layer +--- + +# Batch Reindex Layer + +* Layer type: `BatchReindex` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BatchReindexLayer.html) +* Header: [`./include/caffe/layers/batch_reindex_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_reindex_layer.hpp) +* CPU implementation: [`./src/caffe/layers/batch_reindex_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_reindex_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/batch_reindex_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/batch_reindex_layer.cu) + + +## Parameters + +No parameters. diff --git a/docs/tutorial/layers/bias.md b/docs/tutorial/layers/bias.md new file mode 100644 index 000000000..d3a00c2fc --- /dev/null +++ b/docs/tutorial/layers/bias.md @@ -0,0 +1,19 @@ +--- +title: Bias Layer +--- + +# Bias Layer + +* Layer type: `Bias` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BiasLayer.html) +* Header: [`./include/caffe/layers/bias_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/bias_layer.hpp) +* CPU implementation: [`./src/caffe/layers/bias_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bias_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/bias_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bias_layer.cu) + +## Parameters +* Parameters (`BiasParameter bias_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/BiasParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/bnll.md b/docs/tutorial/layers/bnll.md new file mode 100644 index 000000000..2b68b79ff --- /dev/null +++ b/docs/tutorial/layers/bnll.md @@ -0,0 +1,25 @@ +--- +title: BNLL Layer +--- + +# BNLL Layer + +* Layer type: `BNLL` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1BNLLLayer.html) +* Header: [`./include/caffe/layers/bnll_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/bnll_layer.hpp) +* CPU implementation: [`./src/caffe/layers/bnll_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bnll_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/bnll_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/bnll_layer.cu) + +The `BNLL` (binomial normal log likelihood) layer computes the output as log(1 + exp(x)) for each input element x. + +## Parameters +No parameters. + +## Sample + + layer { + name: "layer" + bottom: "in" + top: "out" + type: BNLL + } diff --git a/docs/tutorial/layers/concat.md b/docs/tutorial/layers/concat.md new file mode 100644 index 000000000..c7b253953 --- /dev/null +++ b/docs/tutorial/layers/concat.md @@ -0,0 +1,40 @@ +--- +title: Concat Layer +--- + +# Concat Layer + +* Layer type: `Concat` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ConcatLayer.html) +* Header: [`./include/caffe/layers/concat_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/concat_layer.hpp) +* CPU implementation: [`./src/caffe/layers/concat_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/concat_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/concat_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/concat_layer.cu) +* Input + - `n_i * c_i * h * w` for each input blob i from 1 to K. +* Output + - if `axis = 0`: `(n_1 + n_2 + ... + n_K) * c_1 * h * w`, and all input `c_i` should be the same. + - if `axis = 1`: `n_1 * (c_1 + c_2 + ... + c_K) * h * w`, and all input `n_i` should be the same. +* Sample + + layer { + name: "concat" + bottom: "in1" + bottom: "in2" + top: "out" + type: "Concat" + concat_param { + axis: 1 + } + } + +The `Concat` layer is a utility layer that concatenates its multiple input blobs to one single output blob. + +## Parameters +* Parameters (`ConcatParameter concat_param`) + - Optional + - `axis` [default 1]: 0 for concatenation along num and 1 for channels. +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ConcatParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/contrastiveloss.md b/docs/tutorial/layers/contrastiveloss.md new file mode 100644 index 000000000..bb1859d9f --- /dev/null +++ b/docs/tutorial/layers/contrastiveloss.md @@ -0,0 +1,20 @@ +--- +title: Contrastive Loss Layer +--- + +# Contrastive Loss Layer + +* Layer type: `ContrastiveLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ContrastiveLossLayer.html) +* Header: [`./include/caffe/layers/contrastive_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/contrastive_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/contrastive_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/contrastive_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/contrastive_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/contrastive_loss_layer.cu) + +## Parameters + +* Parameters (`ContrastiveLossParameter contrastive_loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ContrastiveLossParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/convolution.md b/docs/tutorial/layers/convolution.md new file mode 100644 index 000000000..cc9f4fd04 --- /dev/null +++ b/docs/tutorial/layers/convolution.md @@ -0,0 +1,63 @@ +--- +title: Convolution Layer +--- + +# Convolution Layer + +* Layer type: `Convolution` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ConvolutionLayer.html) +* Header: [`./include/caffe/layers/conv_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/conv_layer.hpp) +* CPU implementation: [`./src/caffe/layers/conv_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/conv_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/conv_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/conv_layer.cu) +* Input + - `n * c_i * h_i * w_i` +* Output + - `n * c_o * h_o * w_o`, where `h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1` and `w_o` likewise. + +The `Convolution` layer convolves the input image with a set of learnable filters, each producing one feature map in the output image. + +## Sample + +Sample (as seen in [`./models/bvlc_reference_caffenet/train_val.prototxt`](https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt)): + + layer { + name: "conv1" + type: "Convolution" + bottom: "data" + top: "conv1" + # learning rate and decay multipliers for the filters + param { lr_mult: 1 decay_mult: 1 } + # learning rate and decay multipliers for the biases + param { lr_mult: 2 decay_mult: 0 } + convolution_param { + num_output: 96 # learn 96 filters + kernel_size: 11 # each filter is 11x11 + stride: 4 # step 4 pixels between each filter application + weight_filler { + type: "gaussian" # initialize the filters from a Gaussian + std: 0.01 # distribution with stdev 0.01 (default mean: 0) + } + bias_filler { + type: "constant" # initialize the biases to zero (0) + value: 0 + } + } + } + +## Parameters +* Parameters (`ConvolutionParameter convolution_param`) + - Required + - `num_output` (`c_o`): the number of filters + - `kernel_size` (or `kernel_h` and `kernel_w`): specifies height and width of each filter + - Strongly Recommended + - `weight_filler` [default `type: 'constant' value: 0`] + - Optional + - `bias_term` [default `true`]: specifies whether to learn and apply a set of additive biases to the filter outputs + - `pad` (or `pad_h` and `pad_w`) [default 0]: specifies the number of pixels to (implicitly) add to each side of the input + - `stride` (or `stride_h` and `stride_w`) [default 1]: specifies the intervals at which to apply the filters to the input + - `group` (g) [default 1]: If g > 1, we restrict the connectivity of each filter to a subset of the input. Specifically, the input and output channels are separated into g groups, and the $$i$$th output group channels will be only connected to the $$i$$th input group channels. +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ConvolutionParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/crop.md b/docs/tutorial/layers/crop.md new file mode 100644 index 000000000..28f91241f --- /dev/null +++ b/docs/tutorial/layers/crop.md @@ -0,0 +1,20 @@ +--- +title: Crop Layer +--- + +# Crop Layer + +* Layer type: `Crop` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1CropLayer.html) +* Header: [`./include/caffe/layers/crop_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/crop_layer.hpp) +* CPU implementation: [`./src/caffe/layers/crop_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/crop_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/crop_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/crop_layer.cu) + +## Parameters + +* Parameters (`CropParameter crop_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/CropParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/data.md b/docs/tutorial/layers/data.md new file mode 100644 index 000000000..58e0dcaab --- /dev/null +++ b/docs/tutorial/layers/data.md @@ -0,0 +1,29 @@ +--- +title: Database Layer +--- + +# Database Layer + +* Layer type: `Data` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DataLayer.html) +* Header: [`./include/caffe/layers/data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/data_layer.cpp) + + +## Parameters + +* Parameters (`DataParameter data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/DataParameter.txt %} +{% endhighlight %} + +* Parameters + - Required + - `source`: the name of the directory containing the database + - `batch_size`: the number of inputs to process at one time + - Optional + - `rand_skip`: skip up to this number of inputs at the beginning; useful for asynchronous sgd + - `backend` [default `LEVELDB`]: choose whether to use a `LEVELDB` or `LMDB` + diff --git a/docs/tutorial/layers/deconvolution.md b/docs/tutorial/layers/deconvolution.md new file mode 100644 index 000000000..2eff967d6 --- /dev/null +++ b/docs/tutorial/layers/deconvolution.md @@ -0,0 +1,22 @@ +--- +title: Deconvolution Layer +--- + +# Deconvolution Layer + +* Layer type: `Deconvolution` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DeconvolutionLayer.html) +* Header: [`./include/caffe/layers/deconv_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/deconv_layer.hpp) +* CPU implementation: [`./src/caffe/layers/deconv_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/deconv_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/deconv_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/deconv_layer.cu) + +## Parameters + +Uses the same parameters as the Convolution layer. + +* Parameters (`ConvolutionParameter convolution_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/ConvolutionParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/dropout.md b/docs/tutorial/layers/dropout.md new file mode 100644 index 000000000..d8c6f9556 --- /dev/null +++ b/docs/tutorial/layers/dropout.md @@ -0,0 +1,20 @@ +--- +title: Dropout Layer +--- + +# Dropout Layer + +* Layer type: `Dropout` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DropoutLayer.html) +* Header: [`./include/caffe/layers/dropout_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/dropout_layer.hpp) +* CPU implementation: [`./src/caffe/layers/dropout_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dropout_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/dropout_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dropout_layer.cu) + +## Parameters + +* Parameters (`DropoutParameter dropout_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/DropoutParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/dummydata.md b/docs/tutorial/layers/dummydata.md new file mode 100644 index 000000000..d069f9c59 --- /dev/null +++ b/docs/tutorial/layers/dummydata.md @@ -0,0 +1,20 @@ +--- +title: Dummy Data Layer +--- + +# Dummy Data Layer + +* Layer type: `DummyData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1DummyDataLayer.html) +* Header: [`./include/caffe/layers/dummy_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/dummy_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/dummy_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/dummy_data_layer.cpp) + + +## Parameters + +* Parameters (`DummyDataParameter dummy_data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/DummyDataParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/eltwise.md b/docs/tutorial/layers/eltwise.md new file mode 100644 index 000000000..70fe7910c --- /dev/null +++ b/docs/tutorial/layers/eltwise.md @@ -0,0 +1,20 @@ +--- +title: Eltwise Layer +--- + +# Eltwise Layer + +* Layer type: `Eltwise` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EltwiseLayer.html) +* Header: [`./include/caffe/layers/eltwise_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/eltwise_layer.hpp) +* CPU implementation: [`./src/caffe/layers/eltwise_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/eltwise_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/eltwise_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/eltwise_layer.cu) + +## Parameters + +* Parameters (`EltwiseParameter eltwise_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/EltwiseParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/elu.md b/docs/tutorial/layers/elu.md new file mode 100644 index 000000000..11db0f0e3 --- /dev/null +++ b/docs/tutorial/layers/elu.md @@ -0,0 +1,25 @@ +--- +title: ELU Layer +--- + +# ELU Layer + +* Layer type: `ELU` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ELULayer.html) +* Header: [`./include/caffe/layers/elu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/elu_layer.hpp) +* CPU implementation: [`./src/caffe/layers/elu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/elu_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/elu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/elu_layer.cu) + +## References + +* Clevert, Djork-Arne, Thomas Unterthiner, and Sepp Hochreiter. + "Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)" [arXiv:1511.07289](https://arxiv.org/abs/1511.07289). (2015). + +## Parameters + +* Parameters (`ELUParameter elu_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ELUParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/embed.md b/docs/tutorial/layers/embed.md new file mode 100644 index 000000000..271636d8d --- /dev/null +++ b/docs/tutorial/layers/embed.md @@ -0,0 +1,20 @@ +--- +title: Embed Layer +--- + +# Embed Layer + +* Layer type: `Embed` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EmbedLayer.html) +* Header: [`./include/caffe/layers/embed_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/embed_layer.hpp) +* CPU implementation: [`./src/caffe/layers/embed_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/embed_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/embed_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/embed_layer.cu) + +## Parameters + +* Parameters (`EmbedParameter embed_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/EmbedParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/euclideanloss.md b/docs/tutorial/layers/euclideanloss.md new file mode 100644 index 000000000..c1b72084c --- /dev/null +++ b/docs/tutorial/layers/euclideanloss.md @@ -0,0 +1,16 @@ +--- +title: Euclidean Loss Layer +--- +# Sum-of-Squares / Euclidean Loss Layer + +* Layer type: `EuclideanLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1EuclideanLossLayer.html) +* Header: [`./include/caffe/layers/euclidean_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/euclidean_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/euclidean_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/euclidean_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/euclidean_loss_layer.cu) + +The Euclidean loss layer computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$. + +## Parameters + +Does not take any parameters. diff --git a/docs/tutorial/layers/exp.md b/docs/tutorial/layers/exp.md new file mode 100644 index 000000000..ef2500ec2 --- /dev/null +++ b/docs/tutorial/layers/exp.md @@ -0,0 +1,24 @@ +--- +title: Exponential Layer +--- + +# Exponential Layer + +* Layer type: `Exp` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ExpLayer.html) +* Header: [`./include/caffe/layers/exp_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/exp_layer.hpp) +* CPU implementation: [`./src/caffe/layers/exp_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/exp_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/exp_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/exp_layer.cu) + +## Parameters + +* Parameters (`Parameter exp_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ExpParameter.txt %} +{% endhighlight %} + +## See also + +* [Power layer](power.html) diff --git a/docs/tutorial/layers/filter.md b/docs/tutorial/layers/filter.md new file mode 100644 index 000000000..aeda9ee66 --- /dev/null +++ b/docs/tutorial/layers/filter.md @@ -0,0 +1,15 @@ +--- +title: Filter Layer +--- + +# Filter Layer + +* Layer type: `Filter` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1FilterLayer.html) +* Header: [`./include/caffe/layers/filter_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/filter_layer.hpp) +* CPU implementation: [`./src/caffe/layers/filter_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/filter_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/filter_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/filter_layer.cu) + +## Parameters + +Does not take any parameters. diff --git a/docs/tutorial/layers/flatten.md b/docs/tutorial/layers/flatten.md new file mode 100644 index 000000000..ecf082627 --- /dev/null +++ b/docs/tutorial/layers/flatten.md @@ -0,0 +1,21 @@ +--- +title: Flatten Layer +--- + +# Flatten Layer + +* Layer type: `Flatten` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1FlattenLayer.html) +* Header: [`./include/caffe/layers/flatten_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/flatten_layer.hpp) +* CPU implementation: [`./src/caffe/layers/flatten_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/flatten_layer.cpp) + +The `Flatten` layer is a utility layer that flattens an input of shape `n * c * h * w` to a simple vector output of shape `n * (c*h*w)`. + +## Parameters + +* Parameters (`FlattenParameter flatten_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/FlattenParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/hdf5data.md b/docs/tutorial/layers/hdf5data.md new file mode 100644 index 000000000..d6b7ea24d --- /dev/null +++ b/docs/tutorial/layers/hdf5data.md @@ -0,0 +1,20 @@ +--- +title: HDF5 Data Layer +--- + +# HDF5 Data Layer + +* Layer type: `HDF5Data` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HDF5DataLayer.html) +* Header: [`./include/caffe/layers/hdf5_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hdf5_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/hdf5_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_data_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/hdf5_data_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_data_layer.cu) + +## Parameters + +* Parameters (`HDF5DataParameter hdf5_data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/HDF5DataParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/hdf5output.md b/docs/tutorial/layers/hdf5output.md new file mode 100644 index 000000000..cfbe4ddb7 --- /dev/null +++ b/docs/tutorial/layers/hdf5output.md @@ -0,0 +1,25 @@ +--- +title: HDF5 Output Layer +--- + +# HDF5 Output Layer + +* Layer type: `HDF5Output` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HDF5OutputLayer.html) +* Header: [`./include/caffe/layers/hdf5_output_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hdf5_output_layer.hpp) +* CPU implementation: [`./src/caffe/layers/hdf5_output_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_output_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/hdf5_output_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hdf5_output_layer.cu) + +The HDF5 output layer performs the opposite function of the other layers in this section: it writes its input blobs to disk. + +## Parameters + +* Parameters (`HDF5OutputParameter hdf5_output_param`) + - Required + - `file_name`: name of file to write to + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/HDF5OutputParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/hingeloss.md b/docs/tutorial/layers/hingeloss.md new file mode 100644 index 000000000..ef4fd95e2 --- /dev/null +++ b/docs/tutorial/layers/hingeloss.md @@ -0,0 +1,19 @@ +--- +title: Hinge Loss Layer +--- + +# Hinge (L1, L2) Loss Layer + +* Layer type: `HingeLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1HingeLossLayer.html) +* Header: [`./include/caffe/layers/hinge_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/hinge_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/hinge_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/hinge_loss_layer.cpp) + +## Parameters + +* Parameters (`HingeLossParameter hinge_loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/HingeLossParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/im2col.md b/docs/tutorial/layers/im2col.md new file mode 100644 index 000000000..0badc1cdd --- /dev/null +++ b/docs/tutorial/layers/im2col.md @@ -0,0 +1,16 @@ +--- +title: Im2col Layer +--- + +# im2col + +* File type: `Im2col` +* Header: [`./include/caffe/layers/im2col_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/im2col_layer.hpp) +* CPU implementation: [`./src/caffe/layers/im2col_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/im2col_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/im2col_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/im2col_layer.cu) + +`Im2col` is a helper for doing the image-to-column transformation that you most +likely do not need to know about. This is used in Caffe's original convolution +to do matrix multiplication by laying out all patches into a matrix. + + diff --git a/docs/tutorial/layers/imagedata.md b/docs/tutorial/layers/imagedata.md new file mode 100644 index 000000000..82c8a600b --- /dev/null +++ b/docs/tutorial/layers/imagedata.md @@ -0,0 +1,27 @@ +--- +title: ImageData Layer +--- + +# ImageData Layer + +* Layer type: `ImageData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ImageDataLayer.html) +* Header: [`./include/caffe/layers/image_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/image_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/image_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/image_data_layer.cpp) + +## Parameters + +* Parameters (`ImageDataParameter image_data_parameter`) + - Required + - `source`: name of a text file, with each line giving an image filename and label + - `batch_size`: number of images to batch together + - Optional + - `rand_skip` + - `shuffle` [default false] + - `new_height`, `new_width`: if provided, resize all images to this size + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ImageDataParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/infogainloss.md b/docs/tutorial/layers/infogainloss.md new file mode 100644 index 000000000..86140b6cc --- /dev/null +++ b/docs/tutorial/layers/infogainloss.md @@ -0,0 +1,24 @@ +--- +title: Infogain Loss Layer +--- + +# Infogain Loss Layer + +* Layer type: `InfogainLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InfogainLossLayer.html) +* Header: [`./include/caffe/layers/infogain_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/infogain_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/infogain_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/infogain_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/infogain_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/infogain_loss_layer.cu) + +A generalization of [MultinomialLogisticLossLayer](layers/multinomiallogisticloss.md) that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. + +Equivalent to the [MultinomialLogisticLossLayer](layers/multinomiallogisticloss.md) if the infogain matrix is the identity. + +## Parameters + +* Parameters (`Parameter infogain_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/InfogainLossParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/innerproduct.md b/docs/tutorial/layers/innerproduct.md new file mode 100644 index 000000000..98b9bea81 --- /dev/null +++ b/docs/tutorial/layers/innerproduct.md @@ -0,0 +1,59 @@ +--- +title: Inner Product / Fully Connected Layer +--- + +# Inner Product / Fully Connected Layer + +* Layer type: `InnerProduct` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InnerProductLayer.html) +* Header: [`./include/caffe/layers/inner_product_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/inner_product_layer.hpp) +* CPU implementation: [`./src/caffe/layers/inner_product_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/inner_product_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/inner_product_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/inner_product_layer.cu) + +* Input + - `n * c_i * h_i * w_i` +* Output + - `n * c_o * 1 * 1` +* Sample + + layer { + name: "fc8" + type: "InnerProduct" + # learning rate and decay multipliers for the weights + param { lr_mult: 1 decay_mult: 1 } + # learning rate and decay multipliers for the biases + param { lr_mult: 2 decay_mult: 0 } + inner_product_param { + num_output: 1000 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + value: 0 + } + } + bottom: "fc7" + top: "fc8" + } + +The `InnerProduct` layer (also usually referred to as the fully connected layer) treats the input as a simple vector and produces an output in the form of a single vector (with the blob's height and width set to 1). + + +## Parameters + +* Parameters (`InnerProductParameter inner_product_param`) + - Required + - `num_output` (`c_o`): the number of filters + - Strongly recommended + - `weight_filler` [default `type: 'constant' value: 0`] + - Optional + - `bias_filler` [default `type: 'constant' value: 0`] + - `bias_term` [default `true`]: specifies whether to learn and apply a set of additive biases to the filter outputs +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/InnerProductParameter.txt %} +{% endhighlight %} + diff --git a/docs/tutorial/layers/input.md b/docs/tutorial/layers/input.md new file mode 100644 index 000000000..b74c35d2f --- /dev/null +++ b/docs/tutorial/layers/input.md @@ -0,0 +1,19 @@ +--- +title: Input Layer +--- + +# Input Layer + +* Layer type: `Input` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InputLayer.html) +* Header: [`./include/caffe/layers/input_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/input_layer.hpp) +* CPU implementation: [`./src/caffe/layers/input_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/input_layer.cpp) + +## Parameters + +* Parameters (`InputParameter input_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto)): + +{% highlight Protobuf %} +{% include proto/InputParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/log.md b/docs/tutorial/layers/log.md new file mode 100644 index 000000000..df5203748 --- /dev/null +++ b/docs/tutorial/layers/log.md @@ -0,0 +1,20 @@ +--- +title: Log Layer +--- + +# Log Layer + +* Layer type: `Log` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LogLayer.html) +* Header: [`./include/caffe/layers/log_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/log_layer.hpp) +* CPU implementation: [`./src/caffe/layers/log_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/log_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/log_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/log_layer.cu) + +## Parameters + +* Parameters (`Parameter log_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LogParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/lrn.md b/docs/tutorial/layers/lrn.md new file mode 100644 index 000000000..387311c22 --- /dev/null +++ b/docs/tutorial/layers/lrn.md @@ -0,0 +1,28 @@ +--- +title: Local Response Normalization (LRN) +--- + +# Local Response Normalization (LRN) + +* Layer type: `LRN` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LRNLayer.html) +* Header: [`./include/caffe/layers/lrn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/lrn_layer.hpp) +* CPU Implementation: [`./src/caffe/layers/lrn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lrn_layer.cpp) +* CUDA GPU Implementation: [`./src/caffe/layers/lrn_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lrn_layer.cu) +* Parameters (`LRNParameter lrn_param`) + - Optional + - `local_size` [default 5]: the number of channels to sum over (for cross channel LRN) or the side length of the square region to sum over (for within channel LRN) + - `alpha` [default 1]: the scaling parameter (see below) + - `beta` [default 5]: the exponent (see below) + - `norm_region` [default `ACROSS_CHANNELS`]: whether to sum over adjacent channels (`ACROSS_CHANNELS`) or nearby spatial locaitons (`WITHIN_CHANNEL`) + +The local response normalization layer performs a kind of "lateral inhibition" by normalizing over local input regions. In `ACROSS_CHANNELS` mode, the local regions extend across nearby channels, but have no spatial extent (i.e., they have shape `local_size x 1 x 1`). In `WITHIN_CHANNEL` mode, the local regions extend spatially, but are in separate channels (i.e., they have shape `1 x local_size x local_size`). Each input value is divided by $$(1 + (\alpha/n) \sum_i x_i^2)^\beta$$, where $$n$$ is the size of each local region, and the sum is taken over the region centered at that value (zero padding is added where necessary). + +## Parameters + +* Parameters (`Parameter lrn_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/BatchNormParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/lstm.md b/docs/tutorial/layers/lstm.md new file mode 100644 index 000000000..8e4095e95 --- /dev/null +++ b/docs/tutorial/layers/lstm.md @@ -0,0 +1,21 @@ +--- +title: LSTM Layer +--- + +# LSTM Layer + +* Layer type: `LSTM` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1LSTMLayer.html) +* Header: [`./include/caffe/layers/lstm_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/lstm_layer.hpp) +* CPU implementation: [`./src/caffe/layers/lstm_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_layer.cpp) +* CPU implementation (helper): [`./src/caffe/layers/lstm_unit_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_unit_layer.cpp) +* CUDA GPU implementation (helper): [`./src/caffe/layers/lstm_unit_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/lstm_unit_layer.cu) + +## Parameters + +* Parameters (`Parameter recurrent_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/RecurrentParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/memorydata.md b/docs/tutorial/layers/memorydata.md new file mode 100644 index 000000000..754e62aef --- /dev/null +++ b/docs/tutorial/layers/memorydata.md @@ -0,0 +1,25 @@ +--- +title: Memory Data Layer +--- + +# Memory Data Layer + +* Layer type: `MemoryData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MemoryDataLayer.html) +* Header: [`./include/caffe/layers/memory_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/memory_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/memory_data_layer.cpu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/memory_data_layer.cpu) + +The memory data layer reads data directly from memory, without copying it. In order to use it, one must call `MemoryDataLayer::Reset` (from C++) or `Net.set_input_arrays` (from Python) in order to specify a source of contiguous data (as 4D row major array), which is read one batch-sized chunk at a time. + +# Parameters + +* Parameters (`MemoryDataParameter memory_data_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/MemoryDataParameter.txt %} +{% endhighlight %} + +* Parameters + - Required + - `batch_size`, `channels`, `height`, `width`: specify the size of input chunks to read from memory diff --git a/docs/tutorial/layers/multinomiallogisticloss.md b/docs/tutorial/layers/multinomiallogisticloss.md new file mode 100644 index 000000000..a28ab9148 --- /dev/null +++ b/docs/tutorial/layers/multinomiallogisticloss.md @@ -0,0 +1,19 @@ +--- +title: Multinomial Logistic Loss Layer +--- + +# Multinomial Logistic Loss Layer + +* Layer type: `MultinomialLogisticLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html) +* Header: [`./include/caffe/layers/multinomial_logistic_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/multinomial_logistic_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/multinomial_logistic_loss_layer.cpu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/multinomial_logistic_loss_layer.cpu) + +## Parameters + +* Parameters (`LossParameter loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LossParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/mvn.md b/docs/tutorial/layers/mvn.md new file mode 100644 index 000000000..08e44887d --- /dev/null +++ b/docs/tutorial/layers/mvn.md @@ -0,0 +1,20 @@ +--- +title: Mean-Variance Normalization (MVN) Layer +--- + +# Mean-Variance Normalization (MVN) Layer + +* Layer type: `MVN` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MVNLayer.html) +* Header: [`./include/caffe/layers/mvn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/mvn_layer.hpp) +* CPU implementation: [`./src/caffe/layers/mvn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/mvn_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/mvn_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/mvn_layer.cu) + +## Parameters + +* Parameters (`MVNParameter mvn_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/MVNParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/parameter.md b/docs/tutorial/layers/parameter.md new file mode 100644 index 000000000..b7e85ec5c --- /dev/null +++ b/docs/tutorial/layers/parameter.md @@ -0,0 +1,21 @@ +--- +title: Parameter Layer +--- + +# Parameter Layer + +* Layer type: `Parameter` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ParameterLayer.html) +* Header: [`./include/caffe/layers/parameter_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/parameter_layer.hpp) +* CPU implementation: [`./src/caffe/layers/parameter_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/parameter_layer.cpp) + +See [https://github.com/BVLC/caffe/pull/2079](https://github.com/BVLC/caffe/pull/2079). + +## Parameters + +* Parameters (`ParameterParameter parameter_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ParameterParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/pooling.md b/docs/tutorial/layers/pooling.md new file mode 100644 index 000000000..12669ee8d --- /dev/null +++ b/docs/tutorial/layers/pooling.md @@ -0,0 +1,47 @@ +--- +title: Pooling Layer +--- +# Pooling + +* Layer type: `Pooling` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PoolingLayer.html) +* Header: [`./include/caffe/layers/pooling_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/pooling_layer.hpp) +* CPU implementation: [`./src/caffe/layers/pooling_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/pooling_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/pooling_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/pooling_layer.cu) + +* Input + - `n * c * h_i * w_i` +* Output + - `n * c * h_o * w_o`, where h_o and w_o are computed in the same way as convolution. + +## Parameters + +* Parameters (`PoolingParameter pooling_param`) + - Required + - `kernel_size` (or `kernel_h` and `kernel_w`): specifies height and width of each filter + - Optional + - `pool` [default MAX]: the pooling method. Currently MAX, AVE, or STOCHASTIC + - `pad` (or `pad_h` and `pad_w`) [default 0]: specifies the number of pixels to (implicitly) add to each side of the input + - `stride` (or `stride_h` and `stride_w`) [default 1]: specifies the intervals at which to apply the filters to the input + + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PoolingParameter.txt %} +{% endhighlight %} + +## Sample +* Sample (as seen in [`./models/bvlc_reference_caffenet/train_val.prototxt`](https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt)) + + layer { + name: "pool1" + type: "Pooling" + bottom: "conv1" + top: "pool1" + pooling_param { + pool: MAX + kernel_size: 3 # pool over a 3x3 region + stride: 2 # step two pixels (in the bottom blob) between pooling regions + } + } diff --git a/docs/tutorial/layers/power.md b/docs/tutorial/layers/power.md new file mode 100644 index 000000000..d6617529b --- /dev/null +++ b/docs/tutorial/layers/power.md @@ -0,0 +1,46 @@ +--- +title: Power Layer +--- + +# Power Layer + +* Layer type: `Power` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PowerLayer.html) +* Header: [`./include/caffe/layers/power_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/power_layer.hpp) +* CPU implementation: [`./src/caffe/layers/power_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/power_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/power_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/power_layer.cu) + +The `Power` layer computes the output as (shift + scale * x) ^ power for each input element x. + +## Parameters +* Parameters (`PowerParameter power_param`) + - Optional + - `power` [default 1] + - `scale` [default 1] + - `shift` [default 0] + +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PowerParameter.txt %} +{% endhighlight %} + + + +## Sample + + layer { + name: "layer" + bottom: "in" + top: "out" + type: "Power" + power_param { + power: 1 + scale: 1 + shift: 0 + } + } + +## See also + +* [Exponential layer](exp.html) diff --git a/docs/tutorial/layers/prelu.md b/docs/tutorial/layers/prelu.md new file mode 100644 index 000000000..e7b7b44ac --- /dev/null +++ b/docs/tutorial/layers/prelu.md @@ -0,0 +1,20 @@ +--- +title: PReLU Layer +--- + +# PReLU Layer + +* Layer type: `PReLU` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PReLULayer.html) +* Header: [`./include/caffe/layers/prelu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/prelu_layer.hpp) +* CPU implementation: [`./src/caffe/layers/prelu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/prelu_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/prelu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/prelu_layer.cu) + +## Parameters + +* Parameters (`PReLUParameter prelu_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PReLUParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/python.md b/docs/tutorial/layers/python.md new file mode 100644 index 000000000..2e30b3a79 --- /dev/null +++ b/docs/tutorial/layers/python.md @@ -0,0 +1,27 @@ +--- +title: Python Layer +--- + +# Python Layer + +* Layer type: `Python` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PythonLayer.html) +* Header: [`./include/caffe/layers/python_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/python_layer.hpp) + +The Python layer allows users to add customized layers without modifying the Caffe core code. + +## Parameters + +* Parameters (`PythonParameter python_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/PythonParameter.txt %} +{% endhighlight %} + +## Examples and tutorials + +* Simple Euclidean loss example +** [Python code](https://github.com/BVLC/caffe/blob/master/examples/pycaffe/layers/pyloss.py) +** [Prototxt](https://github.com/BVLC/caffe/blob/master/examples/pycaffe/linreg.prototxt) +* [Tutorial for writing Python layers with DIGITS](https://github.com/NVIDIA/DIGITS/tree/master/examples/python-layer) diff --git a/docs/tutorial/layers/recurrent.md b/docs/tutorial/layers/recurrent.md new file mode 100644 index 000000000..a882b722f --- /dev/null +++ b/docs/tutorial/layers/recurrent.md @@ -0,0 +1,20 @@ +--- +title: Recurrent Layer +--- + +# Recurrent Layer + +* Layer type: `Recurrent` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1RecurrentLayer.html) +* Header: [`./include/caffe/layers/recurrent_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/recurrent_layer.hpp) +* CPU implementation: [`./src/caffe/layers/recurrent_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/recurrent_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/recurrent_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/recurrent_layer.cu) + +## Parameters + +* Parameters (`RecurrentParameter recurrent_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/RecurrentParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/reduction.md b/docs/tutorial/layers/reduction.md new file mode 100644 index 000000000..db55414b0 --- /dev/null +++ b/docs/tutorial/layers/reduction.md @@ -0,0 +1,20 @@ +--- +title: Reduction Layer +--- + +# Reduction Layer + +* Layer type: `Reduction` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReductionLayer.html) +* Header: [`./include/caffe/layers/reduction_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/reduction_layer.hpp) +* CPU implementation: [`./src/caffe/layers/reduction_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reduction_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/reduction_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reduction_layer.cu) + +## Parameters + +* Parameters (`ReductionParameter reduction_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ReductionParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/relu.md b/docs/tutorial/layers/relu.md new file mode 100644 index 000000000..01aab0af4 --- /dev/null +++ b/docs/tutorial/layers/relu.md @@ -0,0 +1,32 @@ +--- +title: ReLU / Rectified-Linear and Leaky-ReLU Layer +--- + +# ReLU / Rectified-Linear and Leaky-ReLU Layer + +* Layer type: `ReLU` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReLULayer.html) +* Header: [`./include/caffe/layers/relu_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/relu_layer.hpp) +* CPU implementation: [`./src/caffe/layers/relu_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/relu_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/relu_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/relu_layer.cu) +* Sample (as seen in [`./models/bvlc_reference_caffenet/train_val.prototxt`](https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt)) + + layer { + name: "relu1" + type: "ReLU" + bottom: "conv1" + top: "conv1" + } + +Given an input value x, The `ReLU` layer computes the output as x if x > 0 and negative_slope * x if x <= 0. When the negative slope parameter is not set, it is equivalent to the standard ReLU function of taking max(x, 0). It also supports in-place computation, meaning that the bottom and the top blob could be the same to preserve memory consumption. + +## Parameters + +* Parameters (`ReLUParameter relu_param`) + - Optional + - `negative_slope` [default 0]: specifies whether to leak the negative part by multiplying it with the slope value rather than setting it to 0. +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ReLUParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/reshape.md b/docs/tutorial/layers/reshape.md new file mode 100644 index 000000000..92d23f2c7 --- /dev/null +++ b/docs/tutorial/layers/reshape.md @@ -0,0 +1,51 @@ +--- +title: Reshape Layer +--- + +# Reshape Layer +* Layer type: `Reshape` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ReshapeLayer.html) +* Header: [`./include/caffe/layers/reshape_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/reshape_layer.hpp) +* Implementation: [`./src/caffe/layers/reshape_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/reshape_layer.cpp) + +* Input + - a single blob with arbitrary dimensions +* Output + - the same blob, with modified dimensions, as specified by `reshape_param` + +* Sample + + layer { + name: "reshape" + type: "Reshape" + bottom: "input" + top: "output" + reshape_param { + shape { + dim: 0 # copy the dimension from below + dim: 2 + dim: 3 + dim: -1 # infer it from the other dimensions + } + } + } + +The `Reshape` layer can be used to change the dimensions of its input, without changing its data. Just like the `Flatten` layer, only the dimensions are changed; no data is copied in the process. + +Output dimensions are specified by the `ReshapeParam` proto. Positive numbers are used directly, setting the corresponding dimension of the output blob. In addition, two special values are accepted for any of the target dimension values: + +* **0** means "copy the respective dimension of the bottom layer". That is, if the bottom has 2 as its 1st dimension, the top will have 2 as its 1st dimension as well, given `dim: 0` as the 1st target dimension. +* **-1** stands for "infer this from the other dimensions". This behavior is similar to that of -1 in *numpy*'s or `[]` for *MATLAB*'s reshape: this dimension is calculated to keep the overall element count the same as in the bottom layer. At most one -1 can be used in a reshape operation. + +As another example, specifying `reshape_param { shape { dim: 0 dim: -1 } }` makes the layer behave in exactly the same way as the `Flatten` layer. + +## Parameters + +* Parameters (`ReshapeParameter reshape_param`) + - Optional: (also see detailed description below) + - `shape` +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ReshapeParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/rnn.md b/docs/tutorial/layers/rnn.md new file mode 100644 index 000000000..b6fcf4713 --- /dev/null +++ b/docs/tutorial/layers/rnn.md @@ -0,0 +1,19 @@ +--- +title: RNN Layer +--- + +# RNN Layer + +* Layer type: `RNN` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1RNNLayer.html) +* Header: [`./include/caffe/layers/rnn_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/rnn_layer.hpp) +* CPU implementation: [`./src/caffe/layers/rnn_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/rnn_layer.cpp) + +## Parameters + +* Parameters (`RecurrentParameter recurrent_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/RecurrentParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/scale.md b/docs/tutorial/layers/scale.md new file mode 100644 index 000000000..0e27549ad --- /dev/null +++ b/docs/tutorial/layers/scale.md @@ -0,0 +1,20 @@ +--- +title: Scale Layer +--- + +# Scale Layer + +* Layer type: `Scale` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ScaleLayer.html) +* Header: [`./include/caffe/layers/scale_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/scale_layer.hpp) +* CPU implementation: [`./src/caffe/layers/scale_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/scale_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/scale_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/scale_layer.cu) + +## Parameters + +* Parameters (`ScaleParameter scale_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ScaleParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/sigmoid.md b/docs/tutorial/layers/sigmoid.md new file mode 100644 index 000000000..505318352 --- /dev/null +++ b/docs/tutorial/layers/sigmoid.md @@ -0,0 +1,20 @@ +--- +title: Sigmoid Layer +--- + +# Sigmoid Layer + +* Layer type: `Sigmoid` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidLayer.html) +* Header: [`./include/caffe/layers/sigmoid_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_layer.hpp) +* CPU implementation: [`./src/caffe/layers/sigmoid_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/sigmoid_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cu) + +## Parameters + +* Parameters (`SigmoidParameter sigmoid_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SigmoidParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/sigmoidcrossentropyloss.md b/docs/tutorial/layers/sigmoidcrossentropyloss.md new file mode 100644 index 000000000..a6e42cadf --- /dev/null +++ b/docs/tutorial/layers/sigmoidcrossentropyloss.md @@ -0,0 +1,13 @@ +--- +title: Sigmoid Cross-Entropy Loss Layer +--- + +# Sigmoid Cross-Entropy Loss Layer + +* Layer type: `SigmoidCrossEntropyLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html) +* Header: [`./include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_cross_entropy_loss_layer.cu) + +To-do. diff --git a/docs/tutorial/layers/silence.md b/docs/tutorial/layers/silence.md new file mode 100644 index 000000000..2c37a9cd6 --- /dev/null +++ b/docs/tutorial/layers/silence.md @@ -0,0 +1,23 @@ +--- +title: Silence Layer +--- + +# Silence Layer + +* Layer type: `Silence` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SilenceLayer.html) +* Header: [`./include/caffe/layers/silence_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/silence_layer.hpp) +* CPU implementation: [`./src/caffe/layers/silence_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/silence_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/silence_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/silence_layer.cu) + +Silences a blob, so that it is not printed. + +## Parameters + +* Parameters (`SilenceParameter silence_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/BatchNormParameter.txt %} +{% endhighlight %} + diff --git a/docs/tutorial/layers/slice.md b/docs/tutorial/layers/slice.md new file mode 100644 index 000000000..a492f1e82 --- /dev/null +++ b/docs/tutorial/layers/slice.md @@ -0,0 +1,42 @@ +--- +title: Slice Layer +--- + +# Slice Layer + +* Layer type: `Slice` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SliceLayer.html) +* Header: [`./include/caffe/layers/slice_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/slice_layer.hpp) +* CPU implementation: [`./src/caffe/layers/slice_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/slice_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/slice_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/slice_layer.cu) + +The `Slice` layer is a utility layer that slices an input layer to multiple output layers along a given dimension (currently num or channel only) with given slice indices. + +* Sample + + layer { + name: "slicer_label" + type: "Slice" + bottom: "label" + ## Example of label with a shape N x 3 x 1 x 1 + top: "label1" + top: "label2" + top: "label3" + slice_param { + axis: 1 + slice_point: 1 + slice_point: 2 + } + } + +`axis` indicates the target axis; `slice_point` indicates indexes in the selected dimension (the number of indices must be equal to the number of top blobs minus one). + +## Parameters + +* Parameters (`SliceParameter slice_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SliceParameter.txt %} +{% endhighlight %} + diff --git a/docs/tutorial/layers/softmax.md b/docs/tutorial/layers/softmax.md new file mode 100644 index 000000000..e5d534251 --- /dev/null +++ b/docs/tutorial/layers/softmax.md @@ -0,0 +1,24 @@ +--- +title: Softmax Layer +--- + +# Softmax Layer + +* Layer type: `Softmax` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SoftmaxLayer.html) +* Header: [`./include/caffe/layers/softmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/softmax_layer.hpp) +* CPU implementation: [`./src/caffe/layers/softmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/softmax_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_layer.cu) + +## Parameters + +* Parameters (`SoftmaxParameter softmax_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SoftmaxParameter.txt %} +{% endhighlight %} + +## See also + +* [Softmax loss layer](softmaxwithloss.html) diff --git a/docs/tutorial/layers/softmaxwithloss.md b/docs/tutorial/layers/softmaxwithloss.md new file mode 100644 index 000000000..d9a6774a0 --- /dev/null +++ b/docs/tutorial/layers/softmaxwithloss.md @@ -0,0 +1,33 @@ +--- +title: Softmax with Loss Layer +--- + +# Softmax with Loss Layer + +* Layer type: `SoftmaxWithLoss` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html) +* Header: [`./include/caffe/layers/softmax_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/softmax_loss_layer.hpp) +* CPU implementation: [`./src/caffe/layers/softmax_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_loss_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/softmax_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/softmax_loss_layer.cu) + +The softmax loss layer computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient. + +## Parameters + +* Parameters (`SoftmaxParameter softmax_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SoftmaxParameter.txt %} +{% endhighlight %} + +* Parameters (`LossParameter loss_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/LossParameter.txt %} +{% endhighlight %} + +## See also + +* [Softmax layer](softmax.html) diff --git a/docs/tutorial/layers/split.md b/docs/tutorial/layers/split.md new file mode 100644 index 000000000..4fb71d1f2 --- /dev/null +++ b/docs/tutorial/layers/split.md @@ -0,0 +1,17 @@ +--- +title: Split Layer +--- + +# Split Layer + +* Layer type: `Split` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SplitLayer.html) +* Header: [`./include/caffe/layers/split_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/split_layer.hpp) +* CPU implementation: [`./src/caffe/layers/split_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/split_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/split_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/split_layer.cu) + +The `Split` layer is a utility layer that splits an input blob to multiple output blobs. This is used when a blob is fed into multiple output layers. + +## Parameters + +Does not take any parameters. diff --git a/docs/tutorial/layers/spp.md b/docs/tutorial/layers/spp.md new file mode 100644 index 000000000..26e586202 --- /dev/null +++ b/docs/tutorial/layers/spp.md @@ -0,0 +1,20 @@ +--- +title: Spatial Pyramid Pooling Layer +--- + +# Spatial Pyramid Pooling Layer + +* Layer type: `SPP` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1SPPLayer.html) +* Header: [`./include/caffe/layers/spp_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/spp_layer.hpp) +* CPU implementation: [`./src/caffe/layers/spp_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/spp_layer.cpp) + + +## Parameters + +* Parameters (`SPPParameter spp_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/SPPParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/tanh.md b/docs/tutorial/layers/tanh.md new file mode 100644 index 000000000..360634596 --- /dev/null +++ b/docs/tutorial/layers/tanh.md @@ -0,0 +1,18 @@ +--- +title: TanH Layer +--- + +# TanH Layer + +* Header: [`./include/caffe/layers/tanh_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/tanh_layer.hpp) +* CPU implementation: [`./src/caffe/layers/tanh_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tanh_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/tanh_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tanh_layer.cu) + +## Parameters + +* Parameters (`TanHParameter tanh_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/TanHParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/threshold.md b/docs/tutorial/layers/threshold.md new file mode 100644 index 000000000..819e9e6f9 --- /dev/null +++ b/docs/tutorial/layers/threshold.md @@ -0,0 +1,18 @@ +--- +title: Threshold Layer +--- + +# Threshold Layer + +* Header: [`./include/caffe/layers/threshold_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/threshold_layer.hpp) +* CPU implementation: [`./src/caffe/layers/threshold_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/threshold_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/threshold_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/threshold_layer.cu) + +## Parameters + +* Parameters (`ThresholdParameter threshold_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/ThresholdParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/tile.md b/docs/tutorial/layers/tile.md new file mode 100644 index 000000000..ea03aaa43 --- /dev/null +++ b/docs/tutorial/layers/tile.md @@ -0,0 +1,20 @@ +--- +title: Tile Layer +--- + +# Tile Layer + +* Layer type: `Tile` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1TileLayer.html) +* Header: [`./include/caffe/layers/tile_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/tile_layer.hpp) +* CPU implementation: [`./src/caffe/layers/tile_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tile_layer.cpp) +* CUDA GPU implementation: [`./src/caffe/layers/tile_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/tile_layer.cu) + +## Parameters + +* Parameters (`TileParameter tile_param`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/TileParameter.txt %} +{% endhighlight %} diff --git a/docs/tutorial/layers/windowdata.md b/docs/tutorial/layers/windowdata.md new file mode 100644 index 000000000..0cb4a8dfe --- /dev/null +++ b/docs/tutorial/layers/windowdata.md @@ -0,0 +1,19 @@ +--- +title: WindowData Layer +--- + +# WindowData Layer + +* Layer type: `WindowData` +* [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1WindowDataLayer.html) +* Header: [`./include/caffe/layers/window_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/window_data_layer.hpp) +* CPU implementation: [`./src/caffe/layers/window_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/window_data_layer.cpp) + +## Parameters + +* Parameters (`WindowDataParameter`) +* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): + +{% highlight Protobuf %} +{% include proto/WindowDataParameter.txt %} +{% endhighlight %} diff --git a/scripts/build_docs.sh b/scripts/build_docs.sh index 0e28bd716..4837587ad 100755 --- a/scripts/build_docs.sh +++ b/scripts/build_docs.sh @@ -12,6 +12,9 @@ cd $ROOT_DIR # Gather docs. scripts/gather_examples.sh +# Split caffe.proto for inclusion by layer catalogue. +scripts/split_caffe_proto.py + # Generate developer docs. make docs diff --git a/scripts/split_caffe_proto.py b/scripts/split_caffe_proto.py new file mode 100755 index 000000000..7e9dc3e7b --- /dev/null +++ b/scripts/split_caffe_proto.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python +import mmap +import re +import os +import errno + +script_path = os.path.dirname(os.path.realpath(__file__)) + +# a regex to match the parameter definitions in caffe.proto +r = re.compile(r'(?://.*\n)*message ([^ ]*) \{\n(?: .*\n|\n)*\}') + +# create directory to put caffe.proto fragments +try: + os.mkdir( + os.path.join(script_path, + '../docs/_includes/')) + os.mkdir( + os.path.join(script_path, + '../docs/_includes/proto/')) +except OSError as exception: + if exception.errno != errno.EEXIST: + raise + +caffe_proto_fn = os.path.join( + script_path, + '../src/caffe/proto/caffe.proto') + +with open(caffe_proto_fn, 'r') as fin: + + for m in r.finditer(fin.read(), re.MULTILINE): + fn = os.path.join( + script_path, + '../docs/_includes/proto/%s.txt' % m.group(1)) + with open(fn, 'w') as fout: + fout.write(m.group(0)) From fb52c7ccd2b21b26621f5abe35e776736aa9db91 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Wed, 21 Dec 2016 11:33:42 +0100 Subject: [PATCH 368/458] Add Debian codenames and make link. Add the Debian codenames / versions, so it is easier to tell which Debian version is which in the future when the releases are promoted. Revise commit according to CDLuminate's comments. Removed rolling release numbers. Mention that Debian/testing can install Caffe using the packages. --- docs/install_apt_debian.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/install_apt_debian.md b/docs/install_apt_debian.md index 745a6f4fa..1580dc43b 100644 --- a/docs/install_apt_debian.md +++ b/docs/install_apt_debian.md @@ -4,10 +4,13 @@ title: "Installation: Debian" # Debian Installation -Caffe packages are available for `Debian/unstable`. Debian/stable users -should take a look at Ubuntu installation instruction. +Caffe packages are available for `Debian/unstable`. Debian/stable +(jessie) users should take a look at [Ubuntu installation instruction]( +install_apt.html). Debian/testing (stretch) users may be able to get Caffe +to work using the packages in Debian/unstable, but it is beyond the scope of +this guide. -Only experienced linux users are recommended to try Debian/unstable (Sid). +Only experienced linux users are recommended to try Debian/unstable (Sid). Last update: Dec.21 2016 From 5c437b13d2afde8f8e961e1e8a50fda060cb4519 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Wed, 4 Jan 2017 02:49:11 +0000 Subject: [PATCH 369/458] docs: update debian installation guide. Thanks to @lukeyeager for comments. --- docs/install_apt_debian.md | 29 +++++++++++++++++++---------- docs/installation.md | 2 +- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/install_apt_debian.md b/docs/install_apt_debian.md index 1580dc43b..3175f6931 100644 --- a/docs/install_apt_debian.md +++ b/docs/install_apt_debian.md @@ -10,9 +10,9 @@ install_apt.html). Debian/testing (stretch) users may be able to get Caffe to work using the packages in Debian/unstable, but it is beyond the scope of this guide. -Only experienced linux users are recommended to try Debian/unstable (Sid). +Only experienced linux users are recommended to try Debian/unstable (Sid). -Last update: Dec.21 2016 +Last update: 2017-01-04 ## Debian/unstable @@ -52,6 +52,7 @@ $ sudo apt build-dep [ caffe-cpu | caffe-cuda ] # the most elegant wa $ apt source [ caffe-cpu | caffe-cuda ] # download the source tarball and extract $ cd caffe-XXXX [ ... optional, customize caffe code/build ... ] +$ dch -llocal "Modified XXX in order to XXX" # write your one-line changelog $ debuild -B -j4 # build caffe with 4 parallel jobs (similar to make -j4) [ ... building ...] $ debc # optional, if you want to check the package contents @@ -59,6 +60,12 @@ $ sudo debi # optional, install the ge ``` The resulting deb packages can be found under the parent directory of the source tree. +Note, the `dch ...` command line above is for bumping the package version number +and adding an entry to the package changelog. If you would like to write +more than one changelog entry, use subsequent `dch` command (see `man 1 dch`) +instead of manually modifing `debian/changelog` unless you know how to keep its format correct. +The changelog will be installed at e.g. `/usr/share/doc/caffe-cpu/changelog.Debian.gz`. + ### Source installation Source installation under Debian/unstable is similar to that of Ubuntu, but @@ -71,15 +78,13 @@ Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. ### Notes * Consider re-compiling OpenBLAS locally with optimization flags for sake of -performance. This is highly recommended if you are writing a paper. +performance. This is highly recommended for any kind of production use, including +academic research. * If you are installing `caffe-cuda`, APT will automatically pull some of the -CUDA packages and the nvidia driver packages. Please take care if you have +CUDA packages and the nvidia driver packages. Please be careful if you have manually installed or hacked nvidia driver or CUDA toolkit or any other -related stuff, because in this case it may fail. - -* If you encountered any problem when installing `caffe-*`, please report bug -to Debian via Debian's bug tracking system. See https://www.debian.org/Bugs/ . +related stuff, because in this case APT may fail. * Additionally, a manpage (`man caffe`) and a bash complementation script (`caffe `, `caffe train `) are provided. @@ -88,6 +93,10 @@ Both of the two files are still not merged into caffe master. * The python interface is Python 3 version: `python3-caffe-{cpu,cuda}`. No plan to support python2. +* If you encountered any problem related to the packaging system (e.g. failed to install `caffe-*`), +please report bug to Debian via Debian's bug tracking system. See https://www.debian.org/Bugs/ . +Patches and suggestions are also welcome. + ## FAQ * where is caffe-cudnn? @@ -96,11 +105,11 @@ CUDNN library seems not redistributable currently. If you really want the caffe-cudnn deb packages, the workaround is to install cudnn by yourself, and hack the packaging scripts, then build your customized package. -* I installed the CPU version, How can I switch to the CUDA version? +* I installed the CPU version. How can I switch to the CUDA version? `sudo apt install caffe-cuda`, apt's dependency resolver is smart enough to deal with this. -* Where is the examples, the models and other documentation stuff? +* Where are the examples, the models and other documentation stuff? ``` sudo apt install caffe-doc diff --git a/docs/installation.md b/docs/installation.md index 14ec46742..6b2cd3bdf 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -12,7 +12,7 @@ The official Makefile and `Makefile.config` build are complemented by a [communi - [Docker setup](https://github.com/BVLC/caffe/tree/master/docker) *out-of-the-box brewing* - [Ubuntu installation](install_apt.html) *the standard platform* -- [Debian installation](install_apt_debian.html) *deploy caffe with a single command* +- [Debian installation](install_apt_debian.html) *install caffe with a single command* - [OS X installation](install_osx.html) - [RHEL / CentOS / Fedora installation](install_yum.html) - [Windows](https://github.com/BVLC/caffe/tree/windows) *see the Windows branch led by Guillaume Dumont* From 369a1f49fa7e40f39827c1dcaede224b78f6c10c Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Thu, 5 Jan 2017 05:00:37 +0000 Subject: [PATCH 370/458] docs: add some tables to debian install guide and misc update docs: change UTF-8 characters --- docs/install_apt_debian.md | 70 +++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 16 deletions(-) diff --git a/docs/install_apt_debian.md b/docs/install_apt_debian.md index 3175f6931..0d39e3ae2 100644 --- a/docs/install_apt_debian.md +++ b/docs/install_apt_debian.md @@ -4,39 +4,51 @@ title: "Installation: Debian" # Debian Installation -Caffe packages are available for `Debian/unstable`. Debian/stable -(jessie) users should take a look at [Ubuntu installation instruction]( -install_apt.html). Debian/testing (stretch) users may be able to get Caffe -to work using the packages in Debian/unstable, but it is beyond the scope of -this guide. +Caffe packages are available for several Debian versions, as shown in the +following chart -Only experienced linux users are recommended to try Debian/unstable (Sid). +``` +Your Distro | CPU_ONLY | CUDA | Alias +----------------+------------+--------+------------------- +Debian/stable | ✘ | ✘ | Debian Jessie +Debian/testing | ✔ | ☐ | Debian Stretch/Sid +Debian/unstable | ✔ | ✔ | Debian Sid +``` -Last update: 2017-01-04 +* `✘ ` You should take a look at [Ubuntu installation instruction](install_apt.html). -## Debian/unstable +* `✔ ` You can install caffe with a single command line following this guide. -Apart from the installation methods based on source, Debian/unstable -users can install pre-compiled Caffe packages via the official archive. +* `☐ ` The same with `✔ `. However it will not work any more when Debian/Stretch becomes the stable branch. -### Binary installation +Last update: 2017-01-05 + +## Binary installation with APT + +Apart from the installation methods based on source, Debian/unstable +and Debian/testing users can install pre-compiled Caffe packages via the official archive. Make sure that there is something like the follows in your `/etc/apt/sources.list`: ``` -deb http://ftp2.cn.debian.org/debian sid main contrib non-free +deb http://MIRROR/debian CODENAME main contrib non-free ``` +where `MIRROR` is your favorate Debian mirror, and `CODENAME ∈ {testing,stretch,sid}`. + Then we update APT cache and directly install Caffe. Note, the cpu version and the cuda version cannot be installed at the same time. ``` # apt update # apt install [ caffe-cpu | caffe-cuda ] +# caffe # command line interface working +# python3 -c 'import caffe; print(caffe.__path__)' # python3 interface working ``` It should work out of box. #### Customizing caffe packages -Some users may need to customize the Caffe package. Here is a brief -guide of producing the customized `.deb` packages. +Some users may need to customize the Caffe package. The way to customize +the package is beyond this guide. Here is only a brief guide of producing +the customized `.deb` packages. Make sure that there is something like this in your `/etc/apt/sources.list`: ``` @@ -66,7 +78,7 @@ more than one changelog entry, use subsequent `dch` command (see `man 1 dch`) instead of manually modifing `debian/changelog` unless you know how to keep its format correct. The changelog will be installed at e.g. `/usr/share/doc/caffe-cpu/changelog.Debian.gz`. -### Source installation +## Source installation Source installation under Debian/unstable is similar to that of Ubuntu, but here is a more elegant way to pull caffe build dependencies: @@ -75,7 +87,27 @@ $ sudo apt build-dep [ caffe-cpu | caffe-cuda ] ``` Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. -### Notes +#### Compiler Combinations + +Some users may find their favorate compiler doesn't work well with CUDA. +``` +CXX compiler | CUDA 7.5 | CUDA 8.0 | +-------------+------------+------------+- +GCC-7 | ? | ? | +GCC-6 | ✘ | ✘ | +GCC-5 | ✔ [1] | ✔ | +CLANG-4.0 | ? | ? | +CLANG-3.9 | ✘ | ✘ | +CLANG-3.8 | ? | ✔ | +``` + +`[1]` CUDA 7.5 's `host_config.h` must be patched before working with GCC-5. + +BTW, please forget the GCC-4.X series, since its `libstdc++` ABI is not compatible with GCC-5's. +You may encounter failure linking GCC-4.X object files against GCC-5 libraries. +(See https://wiki.debian.org/GCC5 ) + +## Notes * Consider re-compiling OpenBLAS locally with optimization flags for sake of performance. This is highly recommended for any kind of production use, including @@ -115,3 +147,9 @@ and hack the packaging scripts, then build your customized package. sudo apt install caffe-doc dpkg -L caffe-doc ``` + +* Where can I find the Debian package status? + +https://tracker.debian.org/pkg/caffe (for the CPU_ONLY version) + +https://tracker.debian.org/pkg/caffe-contrib (for the CUDA version) From 2317fa19d3f5a65cb22adcbd3792ea248996744e Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Tue, 22 Nov 2016 13:14:45 -0800 Subject: [PATCH 371/458] Logging from python, e.g. for lower log level on multi-GPU workers --- python/caffe/__init__.py | 2 +- python/caffe/_caffe.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index 35868a403..5fc6ec9b9 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,5 @@ from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver -from ._caffe import set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed +from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index bdee75acd..0a86045bd 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -51,6 +51,19 @@ const int NPY_DTYPE = NPY_FLOAT32; void set_mode_cpu() { Caffe::set_mode(Caffe::CPU); } void set_mode_gpu() { Caffe::set_mode(Caffe::GPU); } +void InitLog(int level) { + FLAGS_logtostderr = 1; + FLAGS_minloglevel = level; + ::google::InitGoogleLogging(""); + ::google::InstallFailureSignalHandler(); +} +void InitLogInfo() { + InitLog(google::INFO); +} +void Log(const string& s) { + LOG(INFO) << s; +} + void set_random_seed(unsigned int seed) { Caffe::set_random_seed(seed); } // For convenience, check that input files can be opened, and raise an @@ -283,6 +296,9 @@ BOOST_PYTHON_MODULE(_caffe) { bp::scope().attr("__version__") = AS_STRING(CAFFE_VERSION); // Caffe utility functions + bp::def("init_log", &InitLog); + bp::def("init_log", &InitLogInfo); + bp::def("log", &Log); bp::def("set_mode_cpu", &set_mode_cpu); bp::def("set_mode_gpu", &set_mode_gpu); bp::def("set_random_seed", &set_random_seed); From 3ba20549b7f49a76cd023d19f781a6891b2c2122 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Fri, 6 Jan 2017 14:55:12 -0800 Subject: [PATCH 372/458] Switched multi-GPU to NCCL --- CMakeLists.txt | 1 + Makefile | 6 + Makefile.config.example | 4 + cmake/Dependencies.cmake | 15 +- cmake/Modules/FindNCCL.cmake | 26 + cmake/Summary.cmake | 1 + include/caffe/blob.hpp | 1 + include/caffe/common.hpp | 14 +- include/caffe/data_reader.hpp | 82 --- include/caffe/internal_thread.hpp | 4 +- include/caffe/layer.hpp | 43 +- include/caffe/layers/base_data_layer.hpp | 5 +- include/caffe/layers/data_layer.hpp | 7 +- include/caffe/layers/hdf5_data_layer.hpp | 6 +- include/caffe/layers/python_layer.hpp | 4 +- include/caffe/net.hpp | 40 +- include/caffe/parallel.hpp | 96 ++-- include/caffe/solver.hpp | 40 +- include/caffe/syncedmem.hpp | 14 +- include/caffe/util/math_functions.hpp | 5 + include/caffe/util/nccl.hpp | 37 ++ src/caffe/blob.cpp | 18 + src/caffe/common.cpp | 5 +- src/caffe/data_reader.cpp | 119 ---- src/caffe/internal_thread.cpp | 10 +- src/caffe/layer.cpp | 20 - src/caffe/layers/base_data_layer.cpp | 45 +- src/caffe/layers/base_data_layer.cu | 21 +- src/caffe/layers/data_layer.cpp | 82 ++- src/caffe/layers/hdf5_data_layer.cpp | 55 +- src/caffe/layers/hdf5_data_layer.cu | 22 +- src/caffe/layers/image_data_layer.cpp | 13 +- src/caffe/layers/window_data_layer.cpp | 8 +- src/caffe/net.cpp | 47 +- src/caffe/parallel.cpp | 514 ++++++++---------- src/caffe/proto/caffe.proto | 9 +- src/caffe/solver.cpp | 44 +- src/caffe/solvers/adagrad_solver.cpp | 1 - src/caffe/solvers/nesterov_solver.cpp | 1 - src/caffe/solvers/sgd_solver.cpp | 4 +- src/caffe/syncedmem.cpp | 59 +- src/caffe/test/test_data_layer.cpp | 36 ++ src/caffe/test/test_gradient_based_solver.cpp | 34 +- src/caffe/test/test_hdf5data_layer.cpp | 30 + src/caffe/util/blocking_queue.cpp | 5 - src/caffe/util/db_lmdb.cpp | 2 +- src/caffe/util/math_functions.cu | 20 + tools/caffe.cpp | 11 +- 48 files changed, 813 insertions(+), 873 deletions(-) create mode 100644 cmake/Modules/FindNCCL.cmake delete mode 100644 include/caffe/data_reader.hpp create mode 100644 include/caffe/util/nccl.hpp delete mode 100644 src/caffe/data_reader.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index da7142c9b..3af394f7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ include(cmake/ConfigGen.cmake) # ---[ Options caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) # TODO: rename to USE_CUDA caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" ON IF NOT CPU_ONLY) +caffe_option(USE_NCCL "Build Caffe with NCCL library support" OFF) caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON) caffe_option(BUILD_python "Build Python wrapper" ON) set(python_version "2" CACHE STRING "Specify which Python version to use") diff --git a/Makefile b/Makefile index ccc4d8b9e..65d08f7d3 100644 --- a/Makefile +++ b/Makefile @@ -328,6 +328,12 @@ ifeq ($(USE_CUDNN), 1) COMMON_FLAGS += -DUSE_CUDNN endif +# NCCL acceleration configuration +ifeq ($(USE_NCCL), 1) + LIBRARIES += nccl + COMMON_FLAGS += -DUSE_NCCL +endif + # configure IO libraries ifeq ($(USE_OPENCV), 1) COMMON_FLAGS += -DUSE_OPENCV diff --git a/Makefile.config.example b/Makefile.config.example index 07bed63ae..541cf8077 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -94,6 +94,10 @@ LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib # INCLUDE_DIRS += $(shell brew --prefix)/include # LIBRARY_DIRS += $(shell brew --prefix)/lib +# NCCL acceleration switch (uncomment to build with NCCL) +# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0) +# USE_NCCL := 1 + # Uncomment to use `pkg-config` to specify OpenCV library paths. # (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.) # USE_PKG_CONFIG := 1 diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index ae9ce8e43..ba28a128e 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -67,6 +67,13 @@ if(NOT HAVE_CUDA) add_definitions(-DCPU_ONLY) endif() +if(USE_NCCL) + find_package(NCCL REQUIRED) + include_directories(SYSTEM ${NCCL_INCLUDE_DIR}) + list(APPEND Caffe_LINKER_LIBS ${NCCL_LIBRARIES}) + add_definitions(-DUSE_NCCL) +endif() + # ---[ OpenCV if(USE_OPENCV) find_package(OpenCV QUIET COMPONENTS core highgui imgproc imgcodecs) @@ -119,18 +126,18 @@ if(BUILD_python) find_package(NumPy 1.7.1) # Find the matching boost python implementation set(version ${PYTHONLIBS_VERSION_STRING}) - + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) - + while(NOT "${version}" STREQUAL "" AND NOT Boost_PYTHON_FOUND) STRING( REGEX REPLACE "([0-9.]+).[0-9]+" "\\1" version ${version} ) - + STRING( REGEX REPLACE "[^0-9]" "" boost_py_version ${version} ) find_package(Boost 1.46 COMPONENTS "python-py${boost_py_version}") set(Boost_PYTHON_FOUND ${Boost_PYTHON-PY${boost_py_version}_FOUND}) - + STRING( REGEX MATCHALL "([0-9.]+).[0-9]+" has_more_version ${version} ) if("${has_more_version}" STREQUAL "") break() diff --git a/cmake/Modules/FindNCCL.cmake b/cmake/Modules/FindNCCL.cmake new file mode 100644 index 000000000..c88459341 --- /dev/null +++ b/cmake/Modules/FindNCCL.cmake @@ -0,0 +1,26 @@ +set(NCCL_INC_PATHS + /usr/include + /usr/local/include + $ENV{NCCL_DIR}/include + ) + +set(NCCL_LIB_PATHS + /lib + /lib64 + /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + $ENV{NCCL_DIR}/lib + ) + +find_path(NCCL_INCLUDE_DIR NAMES nccl.h PATHS ${NCCL_INC_PATHS}) +find_library(NCCL_LIBRARIES NAMES nccl PATHS ${NCCL_LIB_PATHS}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(NCCL DEFAULT_MSG NCCL_INCLUDE_DIR NCCL_LIBRARIES) + +if (NCCL_FOUND) + message(STATUS "Found NCCL (include: ${NCCL_INCLUDE_DIR}, library: ${NCCL_LIBRARIES})") + mark_as_advanced(NCCL_INCLUDE_DIR NCCL_LIBRARIES) +endif () diff --git a/cmake/Summary.cmake b/cmake/Summary.cmake index ba025cf81..ed8c25268 100644 --- a/cmake/Summary.cmake +++ b/cmake/Summary.cmake @@ -117,6 +117,7 @@ function(caffe_print_configuration_summary) caffe_status(" USE_OPENCV : ${USE_OPENCV}") caffe_status(" USE_LEVELDB : ${USE_LEVELDB}") caffe_status(" USE_LMDB : ${USE_LMDB}") + caffe_status(" USE_NCCL : ${USE_NCCL}") caffe_status(" ALLOW_LMDB_NOLOCK : ${ALLOW_LMDB_NOLOCK}") caffe_status("") caffe_status("Dependencies:") diff --git a/include/caffe/blob.hpp b/include/caffe/blob.hpp index af360ac24..2f59471c2 100644 --- a/include/caffe/blob.hpp +++ b/include/caffe/blob.hpp @@ -220,6 +220,7 @@ class Blob { void set_cpu_data(Dtype* data); const int* gpu_shape() const; const Dtype* gpu_data() const; + void set_gpu_data(Dtype* data); const Dtype* cpu_diff() const; const Dtype* gpu_diff() const; Dtype* mutable_cpu_data(); diff --git a/include/caffe/common.hpp b/include/caffe/common.hpp index 3c6a076ec..4904d1d86 100644 --- a/include/caffe/common.hpp +++ b/include/caffe/common.hpp @@ -158,11 +158,14 @@ class Caffe { // Search from start_id to the highest possible device ordinal, // return the ordinal of the first available device. static int FindDevice(const int start_id = 0); - // Parallel training info + // Parallel training inline static int solver_count() { return Get().solver_count_; } inline static void set_solver_count(int val) { Get().solver_count_ = val; } - inline static bool root_solver() { return Get().root_solver_; } - inline static void set_root_solver(bool val) { Get().root_solver_ = val; } + inline static int solver_rank() { return Get().solver_rank_; } + inline static void set_solver_rank(int val) { Get().solver_rank_ = val; } + inline static bool multiprocess() { return Get().multiprocess_; } + inline static void set_multiprocess(bool val) { Get().multiprocess_ = val; } + inline static bool root_solver() { return Get().solver_rank_ == 0; } protected: #ifndef CPU_ONLY @@ -172,8 +175,11 @@ class Caffe { shared_ptr random_generator_; Brew mode_; + + // Parallel training int solver_count_; - bool root_solver_; + int solver_rank_; + bool multiprocess_; private: // The private constructor to avoid duplicate instantiation. diff --git a/include/caffe/data_reader.hpp b/include/caffe/data_reader.hpp deleted file mode 100644 index 8ed5542cb..000000000 --- a/include/caffe/data_reader.hpp +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef CAFFE_DATA_READER_HPP_ -#define CAFFE_DATA_READER_HPP_ - -#include -#include -#include - -#include "caffe/common.hpp" -#include "caffe/internal_thread.hpp" -#include "caffe/util/blocking_queue.hpp" -#include "caffe/util/db.hpp" - -namespace caffe { - -/** - * @brief Reads data from a source to queues available to data layers. - * A single reading thread is created per source, even if multiple solvers - * are running in parallel, e.g. for multi-GPU training. This makes sure - * databases are read sequentially, and that each solver accesses a different - * subset of the database. Data is distributed to solvers in a round-robin - * way to keep parallel training deterministic. - */ -class DataReader { - public: - explicit DataReader(const LayerParameter& param); - ~DataReader(); - - inline BlockingQueue& free() const { - return queue_pair_->free_; - } - inline BlockingQueue& full() const { - return queue_pair_->full_; - } - - protected: - // Queue pairs are shared between a body and its readers - class QueuePair { - public: - explicit QueuePair(int size); - ~QueuePair(); - - BlockingQueue free_; - BlockingQueue full_; - - DISABLE_COPY_AND_ASSIGN(QueuePair); - }; - - // A single body is created per source - class Body : public InternalThread { - public: - explicit Body(const LayerParameter& param); - virtual ~Body(); - - protected: - void InternalThreadEntry(); - void read_one(db::Cursor* cursor, QueuePair* qp); - - const LayerParameter param_; - BlockingQueue > new_queue_pairs_; - - friend class DataReader; - - DISABLE_COPY_AND_ASSIGN(Body); - }; - - // A source is uniquely identified by its layer name + path, in case - // the same database is read from two different locations in the net. - static inline string source_key(const LayerParameter& param) { - return param.name() + ":" + param.data_param().source(); - } - - const shared_ptr queue_pair_; - shared_ptr body_; - - static map > bodies_; - -DISABLE_COPY_AND_ASSIGN(DataReader); -}; - -} // namespace caffe - -#endif // CAFFE_DATA_READER_HPP_ diff --git a/include/caffe/internal_thread.hpp b/include/caffe/internal_thread.hpp index 6a8c5a028..0ba676650 100644 --- a/include/caffe/internal_thread.hpp +++ b/include/caffe/internal_thread.hpp @@ -42,8 +42,8 @@ class InternalThread { bool must_stop(); private: - void entry(int device, Caffe::Brew mode, int rand_seed, int solver_count, - bool root_solver); + void entry(int device, Caffe::Brew mode, int rand_seed, + int solver_count, int solver_rank, bool multiprocess); shared_ptr thread_; }; diff --git a/include/caffe/layer.hpp b/include/caffe/layer.hpp index 10f353f94..30dbfd537 100644 --- a/include/caffe/layer.hpp +++ b/include/caffe/layer.hpp @@ -38,7 +38,7 @@ class Layer { * layer. */ explicit Layer(const LayerParameter& param) - : layer_param_(param), is_shared_(false) { + : layer_param_(param) { // Set phase and copy blobs (if there are any). phase_ = param.phase(); if (layer_param_.blobs_size() > 0) { @@ -66,7 +66,6 @@ class Layer { */ void SetUp(const vector*>& bottom, const vector*>& top) { - InitMutex(); CheckBlobCounts(bottom, top); LayerSetUp(bottom, top); Reshape(bottom, top); @@ -92,30 +91,6 @@ class Layer { virtual void LayerSetUp(const vector*>& bottom, const vector*>& top) {} - /** - * @brief Whether a layer should be shared by multiple nets during data - * parallelism. By default, all layers except for data layers should - * not be shared. data layers should be shared to ensure each worker - * solver access data sequentially during data parallelism. - */ - virtual inline bool ShareInParallel() const { return false; } - - /** @brief Return whether this layer is actually shared by other nets. - * If ShareInParallel() is true and using more than one GPU and the - * net has TRAIN phase, then this function is expected return true. - */ - inline bool IsShared() const { return is_shared_; } - - /** @brief Set whether this layer is actually shared by other nets - * If ShareInParallel() is true and using more than one GPU and the - * net has TRAIN phase, then is_shared should be set true. - */ - inline void SetShared(bool is_shared) { - CHECK(ShareInParallel() || !is_shared) - << type() << "Layer does not support sharing."; - is_shared_ = is_shared; - } - /** * @brief Adjust the shapes of top blobs and internal buffers to accommodate * the shapes of the bottom blobs. @@ -428,19 +403,6 @@ class Layer { } private: - /** Whether this layer is actually shared by other nets*/ - bool is_shared_; - - /** The mutex for sequential forward if this layer is shared */ - shared_ptr forward_mutex_; - - /** Initialize forward_mutex_ */ - void InitMutex(); - /** Lock forward_mutex_ if this layer is shared */ - void Lock(); - /** Unlock forward_mutex_ if this layer is shared */ - void Unlock(); - DISABLE_COPY_AND_ASSIGN(Layer); }; // class Layer @@ -450,8 +412,6 @@ class Layer { template inline Dtype Layer::Forward(const vector*>& bottom, const vector*>& top) { - // Lock during forward to ensure sequential forward - Lock(); Dtype loss = 0; Reshape(bottom, top); switch (Caffe::mode()) { @@ -482,7 +442,6 @@ inline Dtype Layer::Forward(const vector*>& bottom, default: LOG(FATAL) << "Unknown caffe mode."; } - Unlock(); return loss; } diff --git a/include/caffe/layers/base_data_layer.hpp b/include/caffe/layers/base_data_layer.hpp index 2c49b7318..925b019d4 100644 --- a/include/caffe/layers/base_data_layer.hpp +++ b/include/caffe/layers/base_data_layer.hpp @@ -68,15 +68,16 @@ class BasePrefetchingDataLayer : const vector*>& top); // Prefetches batches (asynchronously if to GPU memory) - static const int PREFETCH_COUNT = 3; + static const int PREFETCH_COUNT = 4; // same as proto protected: virtual void InternalThreadEntry(); virtual void load_batch(Batch* batch) = 0; - Batch prefetch_[PREFETCH_COUNT]; + vector > > prefetch_; BlockingQueue*> prefetch_free_; BlockingQueue*> prefetch_full_; + Batch* prefetch_current_; Blob transformed_data_; }; diff --git a/include/caffe/layers/data_layer.hpp b/include/caffe/layers/data_layer.hpp index 6c361791a..dec581809 100644 --- a/include/caffe/layers/data_layer.hpp +++ b/include/caffe/layers/data_layer.hpp @@ -4,7 +4,6 @@ #include #include "caffe/blob.hpp" -#include "caffe/data_reader.hpp" #include "caffe/data_transformer.hpp" #include "caffe/internal_thread.hpp" #include "caffe/layer.hpp" @@ -29,9 +28,13 @@ class DataLayer : public BasePrefetchingDataLayer { virtual inline int MaxTopBlobs() const { return 2; } protected: + void Next(); + bool Skip(); virtual void load_batch(Batch* batch); - DataReader reader_; + shared_ptr db_; + shared_ptr cursor_; + uint64_t offset_; }; } // namespace caffe diff --git a/include/caffe/layers/hdf5_data_layer.hpp b/include/caffe/layers/hdf5_data_layer.hpp index b04cf8e19..650a3fb0c 100644 --- a/include/caffe/layers/hdf5_data_layer.hpp +++ b/include/caffe/layers/hdf5_data_layer.hpp @@ -23,7 +23,7 @@ template class HDF5DataLayer : public Layer { public: explicit HDF5DataLayer(const LayerParameter& param) - : Layer(param) {} + : Layer(param), offset_() {} virtual ~HDF5DataLayer(); virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); @@ -38,6 +38,9 @@ class HDF5DataLayer : public Layer { virtual inline int MinTopBlobs() const { return 1; } protected: + void Next(); + bool Skip(); + virtual void Forward_cpu(const vector*>& bottom, const vector*>& top); virtual void Forward_gpu(const vector*>& bottom, @@ -55,6 +58,7 @@ class HDF5DataLayer : public Layer { std::vector > > hdf_blobs_; std::vector data_permutation_; std::vector file_permutation_; + uint64_t offset_; }; } // namespace caffe diff --git a/include/caffe/layers/python_layer.hpp b/include/caffe/layers/python_layer.hpp index 66dbbdf13..529b09cb8 100644 --- a/include/caffe/layers/python_layer.hpp +++ b/include/caffe/layers/python_layer.hpp @@ -21,8 +21,8 @@ class PythonLayer : public Layer { // Disallow PythonLayer in MultiGPU training stage, due to GIL issues // Details: https://github.com/BVLC/caffe/issues/2936 if (this->phase_ == TRAIN && Caffe::solver_count() > 1 - && !ShareInParallel()) { - LOG(FATAL) << "PythonLayer is not implemented in Multi-GPU training"; + && !Caffe::root_solver() && !Caffe::multiprocess()) { + LOG(FATAL) << "PythonLayer does not support CLI Multi-GPU, use train.py"; } self_.attr("param_str") = bp::str( this->layer_param_.python_param().param_str()); diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 493bdf294..d3c9306e9 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -23,10 +23,9 @@ namespace caffe { template class Net { public: - explicit Net(const NetParameter& param, const Net* root_net = NULL); + explicit Net(const NetParameter& param); explicit Net(const string& param_file, Phase phase, - const int level = 0, const vector* stages = NULL, - const Net* root_net = NULL); + const int level = 0, const vector* stages = NULL); virtual ~Net() {} /// @brief Initialize a network with a NetParameter. @@ -228,6 +227,31 @@ class Net { static bool StateMeetsRule(const NetState& state, const NetStateRule& rule, const string& layer_name); + // Invoked at specific points during an iteration + class Callback { + protected: + virtual void run(int layer) = 0; + + template + friend class Net; + }; + const vector& before_forward() const { return before_forward_; } + void add_before_forward(Callback* value) { + before_forward_.push_back(value); + } + const vector& after_forward() const { return after_forward_; } + void add_after_forward(Callback* value) { + after_forward_.push_back(value); + } + const vector& before_backward() const { return before_backward_; } + void add_before_backward(Callback* value) { + before_backward_.push_back(value); + } + const vector& after_backward() const { return after_backward_; } + void add_after_backward(Callback* value) { + after_backward_.push_back(value); + } + protected: // Helpers for Init. /// @brief Append a new top blob to the net. @@ -306,9 +330,13 @@ class Net { size_t memory_used_; /// Whether to compute and display debug info for the net. bool debug_info_; - /// The root net that actually holds the shared layers in data parallelism - const Net* const root_net_; - DISABLE_COPY_AND_ASSIGN(Net); + // Callbacks + vector before_forward_; + vector after_forward_; + vector before_backward_; + vector after_backward_; + +DISABLE_COPY_AND_ASSIGN(Net); }; diff --git a/include/caffe/parallel.hpp b/include/caffe/parallel.hpp index 6c496c884..64bb48e6b 100644 --- a/include/caffe/parallel.hpp +++ b/include/caffe/parallel.hpp @@ -1,8 +1,11 @@ #ifndef CAFFE_PARALLEL_HPP_ #define CAFFE_PARALLEL_HPP_ -#include +#ifdef USE_NCCL +#include + +#include #include #include "caffe/blob.hpp" @@ -13,6 +16,7 @@ #include "caffe/solver.hpp" #include "caffe/syncedmem.hpp" #include "caffe/util/blocking_queue.hpp" +#include "caffe/util/nccl.hpp" namespace caffe { @@ -51,7 +55,7 @@ class GPUParams : public Params { GPUParams(shared_ptr > root_solver, int device); virtual ~GPUParams(); - void configure(Solver* solver) const; + void Configure(Solver* solver) const; protected: using Params::size_; @@ -59,58 +63,55 @@ class GPUParams : public Params { using Params::diff_; }; -class DevicePair { - public: - DevicePair(int parent, int device) - : parent_(parent), - device_(device) { - } - inline int parent() { - return parent_; - } - inline int device() { - return device_; - } - - // Group GPUs in pairs, by proximity depending on machine's topology - static void compute(const vector devices, vector* pairs); - - protected: - int parent_; - int device_; -}; - -// Synchronous data parallelism using map-reduce between local GPUs. template -class P2PSync : public GPUParams, public Solver::Callback, - public InternalThread { +class NCCL : public GPUParams, + public Solver::Callback, + public Net::Callback { public: - explicit P2PSync(shared_ptr > root_solver, - P2PSync* parent, const SolverParameter& param); - virtual ~P2PSync(); - - inline const shared_ptr >& solver() const { - return solver_; - } - - void Run(const vector& gpus); - void Prepare(const vector& gpus, - vector > >* syncs); - inline const int initial_iter() const { return initial_iter_; } + /** + * Single process version. + */ + explicit NCCL(shared_ptr > solver); + /** + * In multi-process settings, first create a NCCL id (new_uid), then + * pass it to each process to create connected instances. + */ + NCCL(shared_ptr > solver, const string& uid); + ~NCCL(); + + boost::barrier* barrier(); + void set_barrier(boost::barrier* value); + + /** + * In single process settings, create instances without uids and + * call this to connect them. + */ + static void InitSingleProcess(vector*>* nccls); + + static string new_uid(); + + /** + * Broadcast weights from rank 0 other solvers. + */ + void Broadcast(); + + /** + * Single process multi-GPU. + */ + void Run(const vector& gpus, const char* restore); protected: - void on_start(); + void Init(); + void on_start() {} + void run(int layer); // Net callback void on_gradients_ready(); - void InternalThreadEntry(); + ncclComm_t comm_; + cudaStream_t stream_; - P2PSync* parent_; - vector*> children_; - BlockingQueue*> queue_; - const int initial_iter_; - Dtype* parent_grads_; shared_ptr > solver_; - + // Should not be necessary, https://github.com/NVIDIA/nccl/issues/37 + boost::barrier* barrier_; using Params::size_; using Params::data_; using Params::diff_; @@ -118,4 +119,5 @@ class P2PSync : public GPUParams, public Solver::Callback, } // namespace caffe -#endif +#endif // USE_NCCL +#endif // header diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index eafcee329..a28d8cb89 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -6,6 +6,7 @@ #include "caffe/net.hpp" #include "caffe/solver_factory.hpp" +#include "caffe/util/benchmark.hpp" namespace caffe { @@ -40,9 +41,8 @@ typedef boost::function ActionCallback; template class Solver { public: - explicit Solver(const SolverParameter& param, - const Solver* root_solver = NULL); - explicit Solver(const string& param_file, const Solver* root_solver = NULL); + explicit Solver(const SolverParameter& param); + explicit Solver(const string& param_file); void Init(const SolverParameter& param); void InitTrainNet(); void InitTestNets(); @@ -72,7 +72,7 @@ class Solver { inline const vector > >& test_nets() { return test_nets_; } - int iter() { return iter_; } + int iter() const { return iter_; } // Invoked at specific points during an iteration class Callback { @@ -118,10 +118,6 @@ class Solver { vector losses_; Dtype smoothed_loss_; - // The root solver that holds root nets (actually containing shared layers) - // in data parallelism - const Solver* const root_solver_; - // A function that can be set by a client of the Solver to provide indication // that it wants a snapshot saved and/or to exit early. ActionCallback action_request_function_; @@ -129,31 +125,11 @@ class Solver { // True iff a request to stop early was received. bool requested_early_exit_; - DISABLE_COPY_AND_ASSIGN(Solver); -}; + // Timing information, handy to tune e.g. nbr of GPUs + Timer iteration_timer_; + float iterations_last_; -/** - * @brief Solver that only computes gradients, used as worker - * for multi-GPU training. - */ -template -class WorkerSolver : public Solver { - public: - explicit WorkerSolver(const SolverParameter& param, - const Solver* root_solver = NULL) - : Solver(param, root_solver) {} - - protected: - void ApplyUpdate() {} - void SnapshotSolverState(const string& model_filename) { - LOG(FATAL) << "Should not be called on worker solver."; - } - void RestoreSolverStateFromBinaryProto(const string& state_file) { - LOG(FATAL) << "Should not be called on worker solver."; - } - void RestoreSolverStateFromHDF5(const string& state_file) { - LOG(FATAL) << "Should not be called on worker solver."; - } + DISABLE_COPY_AND_ASSIGN(Solver); }; } // namespace caffe diff --git a/include/caffe/syncedmem.hpp b/include/caffe/syncedmem.hpp index 38ee46640..a41066bac 100644 --- a/include/caffe/syncedmem.hpp +++ b/include/caffe/syncedmem.hpp @@ -44,14 +44,8 @@ inline void CaffeFreeHost(void* ptr, bool use_cuda) { */ class SyncedMemory { public: - SyncedMemory() - : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(UNINITIALIZED), - own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false), - gpu_device_(-1) {} - explicit SyncedMemory(size_t size) - : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(size), head_(UNINITIALIZED), - own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false), - gpu_device_(-1) {} + SyncedMemory(); + explicit SyncedMemory(size_t size); ~SyncedMemory(); const void* cpu_data(); void set_cpu_data(void* data); @@ -68,6 +62,8 @@ class SyncedMemory { #endif private: + void check_device(); + void to_cpu(); void to_gpu(); void* cpu_ptr_; @@ -77,7 +73,7 @@ class SyncedMemory { bool own_cpu_data_; bool cpu_malloc_use_cuda_; bool own_gpu_data_; - int gpu_device_; + int device_; DISABLE_COPY_AND_ASSIGN(SyncedMemory); }; // class SyncedMemory diff --git a/include/caffe/util/math_functions.hpp b/include/caffe/util/math_functions.hpp index 6f6d3feea..51068fe2b 100644 --- a/include/caffe/util/math_functions.hpp +++ b/include/caffe/util/math_functions.hpp @@ -185,6 +185,11 @@ void caffe_gpu_add_scalar(const int N, const Dtype alpha, Dtype *X); template void caffe_gpu_scal(const int N, const Dtype alpha, Dtype *X); +#ifndef CPU_ONLY +template +void caffe_gpu_scal(const int N, const Dtype alpha, Dtype* X, cudaStream_t str); +#endif + template void caffe_gpu_add(const int N, const Dtype* a, const Dtype* b, Dtype* y); diff --git a/include/caffe/util/nccl.hpp b/include/caffe/util/nccl.hpp new file mode 100644 index 000000000..e01fb7451 --- /dev/null +++ b/include/caffe/util/nccl.hpp @@ -0,0 +1,37 @@ +#ifndef CAFFE_UTIL_NCCL_H_ +#define CAFFE_UTIL_NCCL_H_ +#ifdef USE_NCCL + +#include + +#include "caffe/common.hpp" + +#define NCCL_CHECK(condition) \ +{ \ + ncclResult_t result = condition; \ + CHECK_EQ(result, ncclSuccess) << " " \ + << ncclGetErrorString(result); \ +} + +namespace caffe { + +namespace nccl { + +template class dataType; + +template<> class dataType { + public: + static const ncclDataType_t type = ncclFloat; +}; +template<> class dataType { + public: + static const ncclDataType_t type = ncclDouble; +}; + +} // namespace nccl + +} // namespace caffe + +#endif // end USE_NCCL + +#endif // CAFFE_UTIL_NCCL_H_ diff --git a/src/caffe/blob.cpp b/src/caffe/blob.cpp index 4a34e4c58..603e52f70 100644 --- a/src/caffe/blob.cpp +++ b/src/caffe/blob.cpp @@ -89,6 +89,12 @@ const Dtype* Blob::cpu_data() const { template void Blob::set_cpu_data(Dtype* data) { CHECK(data); + // Make sure CPU and GPU sizes remain equal + size_t size = count_ * sizeof(Dtype); + if (data_->size() != size) { + data_.reset(new SyncedMemory(size)); + diff_.reset(new SyncedMemory(size)); + } data_->set_cpu_data(data); } @@ -98,6 +104,18 @@ const Dtype* Blob::gpu_data() const { return (const Dtype*)data_->gpu_data(); } +template +void Blob::set_gpu_data(Dtype* data) { + CHECK(data); + // Make sure CPU and GPU sizes remain equal + size_t size = count_ * sizeof(Dtype); + if (data_->size() != size) { + data_.reset(new SyncedMemory(size)); + diff_.reset(new SyncedMemory(size)); + } + data_->set_gpu_data(data); +} + template const Dtype* Blob::cpu_diff() const { CHECK(diff_); diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp index dee681654..4f6f9bccc 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -53,7 +53,7 @@ void GlobalInit(int* pargc, char*** pargv) { Caffe::Caffe() : random_generator_(), mode_(Caffe::CPU), - solver_count_(1), root_solver_(true) { } + solver_count_(1), solver_rank_(0), multiprocess_(false) { } Caffe::~Caffe() { } @@ -106,7 +106,8 @@ void* Caffe::RNG::generator() { Caffe::Caffe() : cublas_handle_(NULL), curand_generator_(NULL), random_generator_(), - mode_(Caffe::CPU), solver_count_(1), root_solver_(true) { + mode_(Caffe::CPU), + solver_count_(1), solver_rank_(0), multiprocess_(false) { // Try to create a cublas handler, and report an error if failed (but we will // keep the program running as one might just want to run CPU code). if (cublasCreate(&cublas_handle_) != CUBLAS_STATUS_SUCCESS) { diff --git a/src/caffe/data_reader.cpp b/src/caffe/data_reader.cpp deleted file mode 100644 index 9f019bbfc..000000000 --- a/src/caffe/data_reader.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include -#include - -#include "caffe/common.hpp" -#include "caffe/data_reader.hpp" -#include "caffe/layers/data_layer.hpp" -#include "caffe/proto/caffe.pb.h" - -namespace caffe { - -using boost::weak_ptr; - -map > DataReader::bodies_; -static boost::mutex bodies_mutex_; - -DataReader::DataReader(const LayerParameter& param) - : queue_pair_(new QueuePair( // - param.data_param().prefetch() * param.data_param().batch_size())) { - // Get or create a body - boost::mutex::scoped_lock lock(bodies_mutex_); - string key = source_key(param); - weak_ptr& weak = bodies_[key]; - body_ = weak.lock(); - if (!body_) { - body_.reset(new Body(param)); - bodies_[key] = weak_ptr(body_); - } - body_->new_queue_pairs_.push(queue_pair_); -} - -DataReader::~DataReader() { - string key = source_key(body_->param_); - body_.reset(); - boost::mutex::scoped_lock lock(bodies_mutex_); - if (bodies_[key].expired()) { - bodies_.erase(key); - } -} - -// - -DataReader::QueuePair::QueuePair(int size) { - // Initialize the free queue with requested number of datums - for (int i = 0; i < size; ++i) { - free_.push(new Datum()); - } -} - -DataReader::QueuePair::~QueuePair() { - Datum* datum; - while (free_.try_pop(&datum)) { - delete datum; - } - while (full_.try_pop(&datum)) { - delete datum; - } -} - -// - -DataReader::Body::Body(const LayerParameter& param) - : param_(param), - new_queue_pairs_() { - StartInternalThread(); -} - -DataReader::Body::~Body() { - StopInternalThread(); -} - -void DataReader::Body::InternalThreadEntry() { - shared_ptr db(db::GetDB(param_.data_param().backend())); - db->Open(param_.data_param().source(), db::READ); - shared_ptr cursor(db->NewCursor()); - vector > qps; - try { - int solver_count = param_.phase() == TRAIN ? Caffe::solver_count() : 1; - - // To ensure deterministic runs, only start running once all solvers - // are ready. But solvers need to peek on one item during initialization, - // so read one item, then wait for the next solver. - for (int i = 0; i < solver_count; ++i) { - shared_ptr qp(new_queue_pairs_.pop()); - read_one(cursor.get(), qp.get()); - qps.push_back(qp); - } - // Main loop - while (!must_stop()) { - for (int i = 0; i < solver_count; ++i) { - read_one(cursor.get(), qps[i].get()); - } - // Check no additional readers have been created. This can happen if - // more than one net is trained at a time per process, whether single - // or multi solver. It might also happen if two data layers have same - // name and same source. - CHECK_EQ(new_queue_pairs_.size(), 0); - } - } catch (boost::thread_interrupted&) { - // Interrupted exception is expected on shutdown - } -} - -void DataReader::Body::read_one(db::Cursor* cursor, QueuePair* qp) { - Datum* datum = qp->free_.pop(); - // TODO deserialize in-place instead of copy? - datum->ParseFromString(cursor->value()); - qp->full_.push(datum); - - // go to the next iter - cursor->Next(); - if (!cursor->valid()) { - DLOG(INFO) << "Restarting data prefetching from start."; - cursor->SeekToFirst(); - } -} - -} // namespace caffe diff --git a/src/caffe/internal_thread.cpp b/src/caffe/internal_thread.cpp index 104884e02..11de49799 100644 --- a/src/caffe/internal_thread.cpp +++ b/src/caffe/internal_thread.cpp @@ -28,25 +28,27 @@ void InternalThread::StartInternalThread() { Caffe::Brew mode = Caffe::mode(); int rand_seed = caffe_rng_rand(); int solver_count = Caffe::solver_count(); - bool root_solver = Caffe::root_solver(); + int solver_rank = Caffe::solver_rank(); + bool multiprocess = Caffe::multiprocess(); try { thread_.reset(new boost::thread(&InternalThread::entry, this, device, mode, - rand_seed, solver_count, root_solver)); + rand_seed, solver_count, solver_rank, multiprocess)); } catch (std::exception& e) { LOG(FATAL) << "Thread exception: " << e.what(); } } void InternalThread::entry(int device, Caffe::Brew mode, int rand_seed, - int solver_count, bool root_solver) { + int solver_count, int solver_rank, bool multiprocess) { #ifndef CPU_ONLY CUDA_CHECK(cudaSetDevice(device)); #endif Caffe::set_mode(mode); Caffe::set_random_seed(rand_seed); Caffe::set_solver_count(solver_count); - Caffe::set_root_solver(root_solver); + Caffe::set_solver_rank(solver_rank); + Caffe::set_multiprocess(multiprocess); InternalThreadEntry(); } diff --git a/src/caffe/layer.cpp b/src/caffe/layer.cpp index 3b9128986..684ae88bb 100644 --- a/src/caffe/layer.cpp +++ b/src/caffe/layer.cpp @@ -1,27 +1,7 @@ -#include #include "caffe/layer.hpp" namespace caffe { -template -void Layer::InitMutex() { - forward_mutex_.reset(new boost::mutex()); -} - -template -void Layer::Lock() { - if (IsShared()) { - forward_mutex_->lock(); - } -} - -template -void Layer::Unlock() { - if (IsShared()) { - forward_mutex_->unlock(); - } -} - INSTANTIATE_CLASS(Layer); } // namespace caffe diff --git a/src/caffe/layers/base_data_layer.cpp b/src/caffe/layers/base_data_layer.cpp index 989319f1a..9414f6f98 100644 --- a/src/caffe/layers/base_data_layer.cpp +++ b/src/caffe/layers/base_data_layer.cpp @@ -36,9 +36,12 @@ template BasePrefetchingDataLayer::BasePrefetchingDataLayer( const LayerParameter& param) : BaseDataLayer(param), - prefetch_free_(), prefetch_full_() { - for (int i = 0; i < PREFETCH_COUNT; ++i) { - prefetch_free_.push(&prefetch_[i]); + prefetch_(param.has_data_param() ? + param.data_param().prefetch() : PREFETCH_COUNT), + prefetch_free_(), prefetch_full_(), prefetch_current_() { + for (int i = 0; i < prefetch_.size(); ++i) { + prefetch_[i].reset(new Batch()); + prefetch_free_.push(prefetch_[i].get()); } } @@ -46,22 +49,23 @@ template void BasePrefetchingDataLayer::LayerSetUp( const vector*>& bottom, const vector*>& top) { BaseDataLayer::LayerSetUp(bottom, top); + // Before starting the prefetch thread, we make cpu_data and gpu_data // calls so that the prefetch thread does not accidentally make simultaneous // cudaMalloc calls when the main thread is running. In some GPUs this // seems to cause failures if we do not so. - for (int i = 0; i < PREFETCH_COUNT; ++i) { - prefetch_[i].data_.mutable_cpu_data(); + for (int i = 0; i < prefetch_.size(); ++i) { + prefetch_[i]->data_.mutable_cpu_data(); if (this->output_labels_) { - prefetch_[i].label_.mutable_cpu_data(); + prefetch_[i]->label_.mutable_cpu_data(); } } #ifndef CPU_ONLY if (Caffe::mode() == Caffe::GPU) { - for (int i = 0; i < PREFETCH_COUNT; ++i) { - prefetch_[i].data_.mutable_gpu_data(); + for (int i = 0; i < prefetch_.size(); ++i) { + prefetch_[i]->data_.mutable_gpu_data(); if (this->output_labels_) { - prefetch_[i].label_.mutable_gpu_data(); + prefetch_[i]->label_.mutable_gpu_data(); } } } @@ -88,6 +92,9 @@ void BasePrefetchingDataLayer::InternalThreadEntry() { #ifndef CPU_ONLY if (Caffe::mode() == Caffe::GPU) { batch->data_.data().get()->async_gpu_push(stream); + if (this->output_labels_) { + batch->label_.data().get()->async_gpu_push(stream); + } CUDA_CHECK(cudaStreamSynchronize(stream)); } #endif @@ -106,22 +113,18 @@ void BasePrefetchingDataLayer::InternalThreadEntry() { template void BasePrefetchingDataLayer::Forward_cpu( const vector*>& bottom, const vector*>& top) { - Batch* batch = prefetch_full_.pop("Data layer prefetch queue empty"); + if (prefetch_current_) { + prefetch_free_.push(prefetch_current_); + } + prefetch_current_ = prefetch_full_.pop("Waiting for data"); // Reshape to loaded data. - top[0]->ReshapeLike(batch->data_); - // Copy the data - caffe_copy(batch->data_.count(), batch->data_.cpu_data(), - top[0]->mutable_cpu_data()); - DLOG(INFO) << "Prefetch copied"; + top[0]->ReshapeLike(prefetch_current_->data_); + top[0]->set_cpu_data(prefetch_current_->data_.mutable_cpu_data()); if (this->output_labels_) { // Reshape to loaded labels. - top[1]->ReshapeLike(batch->label_); - // Copy the labels. - caffe_copy(batch->label_.count(), batch->label_.cpu_data(), - top[1]->mutable_cpu_data()); + top[1]->ReshapeLike(prefetch_current_->label_); + top[1]->set_cpu_data(prefetch_current_->label_.mutable_cpu_data()); } - - prefetch_free_.push(batch); } #ifdef CPU_ONLY diff --git a/src/caffe/layers/base_data_layer.cu b/src/caffe/layers/base_data_layer.cu index 4056d36a7..64c621a74 100644 --- a/src/caffe/layers/base_data_layer.cu +++ b/src/caffe/layers/base_data_layer.cu @@ -7,23 +7,18 @@ namespace caffe { template void BasePrefetchingDataLayer::Forward_gpu( const vector*>& bottom, const vector*>& top) { - Batch* batch = prefetch_full_.pop("Data layer prefetch queue empty"); + if (prefetch_current_) { + prefetch_free_.push(prefetch_current_); + } + prefetch_current_ = prefetch_full_.pop("Waiting for data"); // Reshape to loaded data. - top[0]->ReshapeLike(batch->data_); - // Copy the data - caffe_copy(batch->data_.count(), batch->data_.gpu_data(), - top[0]->mutable_gpu_data()); + top[0]->ReshapeLike(prefetch_current_->data_); + top[0]->set_gpu_data(prefetch_current_->data_.mutable_gpu_data()); if (this->output_labels_) { // Reshape to loaded labels. - top[1]->ReshapeLike(batch->label_); - // Copy the labels. - caffe_copy(batch->label_.count(), batch->label_.gpu_data(), - top[1]->mutable_gpu_data()); + top[1]->ReshapeLike(prefetch_current_->label_); + top[1]->set_gpu_data(prefetch_current_->label_.mutable_gpu_data()); } - // Ensure the copy is synchronous wrt the host, so that the next batch isn't - // copied in meanwhile. - CUDA_CHECK(cudaStreamSynchronize(cudaStreamDefault)); - prefetch_free_.push(batch); } INSTANTIATE_LAYER_GPU_FORWARD(BasePrefetchingDataLayer); diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index 66e6301fd..0f1296bbc 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -14,7 +14,10 @@ namespace caffe { template DataLayer::DataLayer(const LayerParameter& param) : BasePrefetchingDataLayer(param), - reader_(param) { + offset_() { + db_.reset(db::GetDB(param.data_param().backend())); + db_->Open(param.data_param().source(), db::READ); + cursor_.reset(db_->NewCursor()); } template @@ -27,7 +30,8 @@ void DataLayer::DataLayerSetUp(const vector*>& bottom, const vector*>& top) { const int batch_size = this->layer_param_.data_param().batch_size(); // Read a data point, and use it to initialize the top blob. - Datum& datum = *(reader_.full().peek()); + Datum datum; + datum.ParseFromString(cursor_->value()); // Use data_transformer to infer the expected blob shape from datum. vector top_shape = this->data_transformer_->InferBlobShape(datum); @@ -35,22 +39,44 @@ void DataLayer::DataLayerSetUp(const vector*>& bottom, // Reshape top[0] and prefetch_data according to the batch_size. top_shape[0] = batch_size; top[0]->Reshape(top_shape); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) { - this->prefetch_[i].data_.Reshape(top_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->data_.Reshape(top_shape); } - LOG(INFO) << "output data size: " << top[0]->num() << "," + LOG_IF(INFO, Caffe::root_solver()) + << "output data size: " << top[0]->num() << "," << top[0]->channels() << "," << top[0]->height() << "," << top[0]->width(); // label if (this->output_labels_) { vector label_shape(1, batch_size); top[1]->Reshape(label_shape); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) { - this->prefetch_[i].label_.Reshape(label_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->label_.Reshape(label_shape); } } } +template +bool DataLayer::Skip() { + int size = Caffe::solver_count(); + int rank = Caffe::solver_rank(); + bool keep = (offset_ % size) == rank || + // In test mode, only rank 0 runs, so avoid skipping + this->layer_param_.phase() == TEST; + return !keep; +} + +template +void DataLayer::Next() { + cursor_->Next(); + if (!cursor_->valid()) { + LOG_IF(INFO, Caffe::root_solver()) + << "Restarting data prefetching from start."; + cursor_->SeekToFirst(); + } + offset_++; +} + // This function is called on prefetch thread template void DataLayer::load_batch(Batch* batch) { @@ -61,41 +87,41 @@ void DataLayer::load_batch(Batch* batch) { CPUTimer timer; CHECK(batch->data_.count()); CHECK(this->transformed_data_.count()); - - // Reshape according to the first datum of each batch - // on single input batches allows for inputs of varying dimension. const int batch_size = this->layer_param_.data_param().batch_size(); - Datum& datum = *(reader_.full().peek()); - // Use data_transformer to infer the expected blob shape from datum. - vector top_shape = this->data_transformer_->InferBlobShape(datum); - this->transformed_data_.Reshape(top_shape); - // Reshape batch according to the batch_size. - top_shape[0] = batch_size; - batch->data_.Reshape(top_shape); - - Dtype* top_data = batch->data_.mutable_cpu_data(); - Dtype* top_label = NULL; // suppress warnings about uninitialized variables - if (this->output_labels_) { - top_label = batch->label_.mutable_cpu_data(); - } + Datum datum; for (int item_id = 0; item_id < batch_size; ++item_id) { timer.Start(); - // get a datum - Datum& datum = *(reader_.full().pop("Waiting for data")); + while (Skip()) { + Next(); + } + datum.ParseFromString(cursor_->value()); read_time += timer.MicroSeconds(); - timer.Start(); + + if (item_id == 0) { + // Reshape according to the first datum of each batch + // on single input batches allows for inputs of varying dimension. + // Use data_transformer to infer the expected blob shape from datum. + vector top_shape = this->data_transformer_->InferBlobShape(datum); + this->transformed_data_.Reshape(top_shape); + // Reshape batch according to the batch_size. + top_shape[0] = batch_size; + batch->data_.Reshape(top_shape); + } + // Apply data transformations (mirror, scale, crop...) + timer.Start(); int offset = batch->data_.offset(item_id); + Dtype* top_data = batch->data_.mutable_cpu_data(); this->transformed_data_.set_cpu_data(top_data + offset); this->data_transformer_->Transform(datum, &(this->transformed_data_)); // Copy label. if (this->output_labels_) { + Dtype* top_label = batch->label_.mutable_cpu_data(); top_label[item_id] = datum.label(); } trans_time += timer.MicroSeconds(); - - reader_.free().push(const_cast(&datum)); + Next(); } timer.Stop(); batch_timer.Stop(); diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index c957451ae..b9a071cea 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -124,28 +124,46 @@ void HDF5DataLayer::LayerSetUp(const vector*>& bottom, } } +template +bool HDF5DataLayer::Skip() { + int size = Caffe::solver_count(); + int rank = Caffe::solver_rank(); + bool keep = (offset_ % size) == rank || + // In test mode, only rank 0 runs, so avoid skipping + this->layer_param_.phase() == TEST; + return !keep; +} + +template +void HDF5DataLayer::Next() { + if (++current_row_ == hdf_blobs_[0]->shape(0)) { + if (num_files_ > 1) { + ++current_file_; + if (current_file_ == num_files_) { + current_file_ = 0; + if (this->layer_param_.hdf5_data_param().shuffle()) { + std::random_shuffle(file_permutation_.begin(), + file_permutation_.end()); + } + DLOG(INFO) << "Looping around to first file."; + } + LoadHDF5FileData( + hdf_filenames_[file_permutation_[current_file_]].c_str()); + } + current_row_ = 0; + if (this->layer_param_.hdf5_data_param().shuffle()) + std::random_shuffle(data_permutation_.begin(), data_permutation_.end()); + } + offset_++; +} + template void HDF5DataLayer::Forward_cpu(const vector*>& bottom, const vector*>& top) { const int batch_size = this->layer_param_.hdf5_data_param().batch_size(); - for (int i = 0; i < batch_size; ++i, ++current_row_) { - if (current_row_ == hdf_blobs_[0]->shape(0)) { - if (num_files_ > 1) { - ++current_file_; - if (current_file_ == num_files_) { - current_file_ = 0; - if (this->layer_param_.hdf5_data_param().shuffle()) { - std::random_shuffle(file_permutation_.begin(), - file_permutation_.end()); - } - DLOG(INFO) << "Looping around to first file."; - } - LoadHDF5FileData( - hdf_filenames_[file_permutation_[current_file_]].c_str()); - } - current_row_ = 0; - if (this->layer_param_.hdf5_data_param().shuffle()) - std::random_shuffle(data_permutation_.begin(), data_permutation_.end()); + for (int i = 0; i < batch_size; ++i) { + while (Skip()) { + Next(); } for (int j = 0; j < this->layer_param_.top_size(); ++j) { int data_dim = top[j]->count() / top[j]->shape(0); @@ -153,6 +171,7 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, &hdf_blobs_[j]->cpu_data()[data_permutation_[current_row_] * data_dim], &top[j]->mutable_cpu_data()[i * data_dim]); } + Next(); } } diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index 595d22302..33eebd41d 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -17,24 +17,9 @@ template void HDF5DataLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { const int batch_size = this->layer_param_.hdf5_data_param().batch_size(); - for (int i = 0; i < batch_size; ++i, ++current_row_) { - if (current_row_ == hdf_blobs_[0]->shape(0)) { - if (num_files_ > 1) { - current_file_ += 1; - if (current_file_ == num_files_) { - current_file_ = 0; - if (this->layer_param_.hdf5_data_param().shuffle()) { - std::random_shuffle(file_permutation_.begin(), - file_permutation_.end()); - } - DLOG(INFO) << "Looping around to first file."; - } - LoadHDF5FileData( - hdf_filenames_[file_permutation_[current_file_]].c_str()); - } - current_row_ = 0; - if (this->layer_param_.hdf5_data_param().shuffle()) - std::random_shuffle(data_permutation_.begin(), data_permutation_.end()); + for (int i = 0; i < batch_size; ++i) { + while (Skip()) { + Next(); } for (int j = 0; j < this->layer_param_.top_size(); ++j) { int data_dim = top[j]->count() / top[j]->shape(0); @@ -42,6 +27,7 @@ void HDF5DataLayer::Forward_gpu(const vector*>& bottom, &hdf_blobs_[j]->cpu_data()[data_permutation_[current_row_] * data_dim], &top[j]->mutable_gpu_data()[i * data_dim]); } + Next(); } } diff --git a/src/caffe/layers/image_data_layer.cpp b/src/caffe/layers/image_data_layer.cpp index 7ee7dc407..ec0fc5b03 100644 --- a/src/caffe/layers/image_data_layer.cpp +++ b/src/caffe/layers/image_data_layer.cpp @@ -54,6 +54,11 @@ void ImageDataLayer::DataLayerSetUp(const vector*>& bottom, const unsigned int prefetch_rng_seed = caffe_rng_rand(); prefetch_rng_.reset(new Caffe::RNG(prefetch_rng_seed)); ShuffleImages(); + } else { + if (this->phase_ == TRAIN && Caffe::solver_rank() > 0 && + this->layer_param_.image_data_param().rand_skip() == 0) { + LOG(WARNING) << "Shuffling or skipping recommended for multi-GPU"; + } } LOG(INFO) << "A total of " << lines_.size() << " images."; @@ -77,8 +82,8 @@ void ImageDataLayer::DataLayerSetUp(const vector*>& bottom, const int batch_size = this->layer_param_.image_data_param().batch_size(); CHECK_GT(batch_size, 0) << "Positive batch size required"; top_shape[0] = batch_size; - for (int i = 0; i < this->PREFETCH_COUNT; ++i) { - this->prefetch_[i].data_.Reshape(top_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->data_.Reshape(top_shape); } top[0]->Reshape(top_shape); @@ -88,8 +93,8 @@ void ImageDataLayer::DataLayerSetUp(const vector*>& bottom, // label vector label_shape(1, batch_size); top[1]->Reshape(label_shape); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) { - this->prefetch_[i].label_.Reshape(label_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->label_.Reshape(label_shape); } } diff --git a/src/caffe/layers/window_data_layer.cpp b/src/caffe/layers/window_data_layer.cpp index 103dd4b6a..1bf3760e9 100644 --- a/src/caffe/layers/window_data_layer.cpp +++ b/src/caffe/layers/window_data_layer.cpp @@ -173,8 +173,8 @@ void WindowDataLayer::DataLayerSetUp(const vector*>& bottom, CHECK_GT(crop_size, 0); const int batch_size = this->layer_param_.window_data_param().batch_size(); top[0]->Reshape(batch_size, channels, crop_size, crop_size); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) - this->prefetch_[i].data_.Reshape( + for (int i = 0; i < this->prefetch_.size(); ++i) + this->prefetch_[i]->data_.Reshape( batch_size, channels, crop_size, crop_size); LOG(INFO) << "output data size: " << top[0]->num() << "," @@ -183,8 +183,8 @@ void WindowDataLayer::DataLayerSetUp(const vector*>& bottom, // label vector label_shape(1, batch_size); top[1]->Reshape(label_shape); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) { - this->prefetch_[i].label_.Reshape(label_shape); + for (int i = 0; i < this->prefetch_.size(); ++i) { + this->prefetch_[i]->label_.Reshape(label_shape); } // data mean diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 644cb7e97..aa9e8f2f3 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -22,16 +22,13 @@ namespace caffe { template -Net::Net(const NetParameter& param, const Net* root_net) - : root_net_(root_net) { +Net::Net(const NetParameter& param) { Init(param); } template Net::Net(const string& param_file, Phase phase, - const int level, const vector* stages, - const Net* root_net) - : root_net_(root_net) { + const int level, const vector* stages) { NetParameter param; ReadNetParamsFromTextFileOrDie(param_file, ¶m); // Set phase, stages and level @@ -47,8 +44,6 @@ Net::Net(const string& param_file, Phase phase, template void Net::Init(const NetParameter& in_param) { - CHECK(Caffe::root_solver() || root_net_) - << "root_net_ needs to be set for all non-root solvers"; // Set phase from the state. phase_ = in_param.state().phase(); // Filter layers based on their include/exclude rules and @@ -74,9 +69,6 @@ void Net::Init(const NetParameter& in_param) { top_id_vecs_.resize(param.layer_size()); bottom_need_backward_.resize(param.layer_size()); for (int layer_id = 0; layer_id < param.layer_size(); ++layer_id) { - // For non-root solvers, whether this layer is shared from root_net_. - bool share_from_root = !Caffe::root_solver() - && root_net_->layers_[layer_id]->ShareInParallel(); // Inherit phase from net if unset. if (!param.layer(layer_id).has_phase()) { param.mutable_layer(layer_id)->set_phase(phase_); @@ -89,13 +81,7 @@ void Net::Init(const NetParameter& in_param) { << "propagate_down param must be specified " << "either 0 or bottom_size times "; } - if (share_from_root) { - LOG(INFO) << "Sharing layer " << layer_param.name() << " from root net"; - layers_.push_back(root_net_->layers_[layer_id]); - layers_[layer_id]->SetShared(true); - } else { - layers_.push_back(LayerRegistry::CreateLayer(layer_param)); - } + layers_.push_back(LayerRegistry::CreateLayer(layer_param)); layer_names_.push_back(layer_param.name()); LOG_IF(INFO, Caffe::root_solver()) << "Creating Layer " << layer_param.name(); @@ -134,19 +120,7 @@ void Net::Init(const NetParameter& in_param) { } } // After this layer is connected, set it up. - if (share_from_root) { - // Set up size of top blobs using root_net_ - const vector*>& base_top = root_net_->top_vecs_[layer_id]; - const vector*>& this_top = this->top_vecs_[layer_id]; - for (int top_id = 0; top_id < base_top.size(); ++top_id) { - this_top[top_id]->ReshapeLike(*base_top[top_id]); - LOG(INFO) << "Created top blob " << top_id << " (shape: " - << this_top[top_id]->shape_string() << ") for shared layer " - << layer_param.name(); - } - } else { - layers_[layer_id]->SetUp(bottom_vecs_[layer_id], top_vecs_[layer_id]); - } + layers_[layer_id]->SetUp(bottom_vecs_[layer_id], top_vecs_[layer_id]); LOG_IF(INFO, Caffe::root_solver()) << "Setting up " << layer_names_[layer_id]; for (int top_id = 0; top_id < top_vecs_[layer_id].size(); ++top_id) { @@ -546,10 +520,15 @@ Dtype Net::ForwardFromTo(int start, int end) { CHECK_LT(end, layers_.size()); Dtype loss = 0; for (int i = start; i <= end; ++i) { - // LOG(ERROR) << "Forwarding " << layer_names_[i]; + for (int c = 0; c < before_forward_.size(); ++c) { + before_forward_[c]->run(i); + } Dtype layer_loss = layers_[i]->Forward(bottom_vecs_[i], top_vecs_[i]); loss += layer_loss; if (debug_info_) { ForwardDebugInfo(i); } + for (int c = 0; c < after_forward_.size(); ++c) { + after_forward_[c]->run(i); + } } return loss; } @@ -591,11 +570,17 @@ void Net::BackwardFromTo(int start, int end) { CHECK_GE(end, 0); CHECK_LT(start, layers_.size()); for (int i = start; i >= end; --i) { + for (int c = 0; c < before_backward_.size(); ++c) { + before_backward_[c]->run(i); + } if (layer_need_backward_[i]) { layers_[i]->Backward( top_vecs_[i], bottom_need_backward_[i], bottom_vecs_[i]); if (debug_info_) { BackwardDebugInfo(i); } } + for (int c = 0; c < after_backward_.size(); ++c) { + after_backward_[c]->run(i); + } } } diff --git a/src/caffe/parallel.cpp b/src/caffe/parallel.cpp index 5bc41c6a6..d9433917d 100644 --- a/src/caffe/parallel.cpp +++ b/src/caffe/parallel.cpp @@ -1,16 +1,15 @@ -#ifndef CPU_ONLY +#ifdef USE_NCCL + #include -#endif #include #include - #include #include #include -#include "boost/thread.hpp" #include "caffe/caffe.hpp" #include "caffe/parallel.hpp" +#include "caffe/sgd_solvers.hpp" namespace caffe { @@ -68,15 +67,14 @@ static size_t total_size(const vector*>& params) { template Params::Params(shared_ptr > root_solver) - : size_(total_size(root_solver->net()->learnable_params())), - data_(), - diff_() { + : size_(total_size(root_solver->net()->learnable_params())), + data_(), + diff_() { } template GPUParams::GPUParams(shared_ptr > root_solver, int device) - : Params(root_solver) { -#ifndef CPU_ONLY + : Params(root_solver) { int initial_device; CUDA_CHECK(cudaGetDevice(&initial_device)); @@ -86,358 +84,288 @@ GPUParams::GPUParams(shared_ptr > root_solver, int device) // Copy blob values const vector*>& net = - root_solver->net()->learnable_params(); + root_solver->net()->learnable_params(); apply_buffers(net, data_, size_, copy); CUDA_CHECK(cudaMalloc(&diff_, size_ * sizeof(Dtype))); caffe_gpu_set(size_, Dtype(0), diff_); CUDA_CHECK(cudaSetDevice(initial_device)); -#else - NO_GPU; -#endif } template GPUParams::~GPUParams() { -#ifndef CPU_ONLY CUDA_CHECK(cudaFree(data_)); CUDA_CHECK(cudaFree(diff_)); -#endif } template -void GPUParams::configure(Solver* solver) const { +void GPUParams::Configure(Solver* solver) const { const vector*>& net = - solver->net()->learnable_params(); + solver->net()->learnable_params(); apply_buffers(net, data_, size_, replace_gpu); apply_buffers(net, diff_, size_, replace_gpu_diff); } -void DevicePair::compute(const vector devices, vector* pairs) { -#ifndef CPU_ONLY - vector remaining(devices); - - // Depth for reduction tree - int remaining_depth = static_cast(ceil(log2(remaining.size()))); - - // Group GPUs by board - for (int d = 0; d < remaining_depth; ++d) { - for (int i = 0; i < remaining.size(); ++i) { - for (int j = i + 1; j < remaining.size(); ++j) { - cudaDeviceProp a, b; - CUDA_CHECK(cudaGetDeviceProperties(&a, remaining[i])); - CUDA_CHECK(cudaGetDeviceProperties(&b, remaining[j])); - if (a.isMultiGpuBoard && b.isMultiGpuBoard) { - if (a.multiGpuBoardGroupID == b.multiGpuBoardGroupID) { - pairs->push_back(DevicePair(remaining[i], remaining[j])); - DLOG(INFO) << "GPU board: " << remaining[i] << ":" << remaining[j]; - remaining.erase(remaining.begin() + j); - break; - } - } - } - } - } - ostringstream s; - for (int i = 0; i < remaining.size(); ++i) { - s << (i ? ", " : "") << remaining[i]; - } - DLOG(INFO) << "GPUs paired by boards, remaining: " << s.str(); - - // Group by P2P accessibility - remaining_depth = ceil(log2(remaining.size())); - for (int d = 0; d < remaining_depth; ++d) { - for (int i = 0; i < remaining.size(); ++i) { - for (int j = i + 1; j < remaining.size(); ++j) { - int access; - CUDA_CHECK( - cudaDeviceCanAccessPeer(&access, remaining[i], remaining[j])); - if (access) { - pairs->push_back(DevicePair(remaining[i], remaining[j])); - DLOG(INFO) << "P2P pair: " << remaining[i] << ":" << remaining[j]; - remaining.erase(remaining.begin() + j); - break; - } - } - } - } - s.str(""); - for (int i = 0; i < remaining.size(); ++i) { - s << (i ? ", " : "") << remaining[i]; - } - DLOG(INFO) << "GPUs paired by P2P access, remaining: " << s.str(); - - // Group remaining - remaining_depth = ceil(log2(remaining.size())); - for (int d = 0; d < remaining_depth; ++d) { - for (int i = 0; i < remaining.size(); ++i) { - pairs->push_back(DevicePair(remaining[i], remaining[i + 1])); - DLOG(INFO) << "Remaining pair: " << remaining[i] << ":" - << remaining[i + 1]; - remaining.erase(remaining.begin() + i + 1); - } - } +static int getDevice() { + int device = 0; + CUDA_CHECK(cudaGetDevice(&device)); + return device; +} - // Should only be the parent node remaining - CHECK_EQ(remaining.size(), 1); +template +NCCL::NCCL(shared_ptr > solver) + : GPUParams(solver, getDevice()), + comm_(), solver_(solver), barrier_() { + this->Configure(solver.get()); + Init(); +} - pairs->insert(pairs->begin(), DevicePair(-1, remaining[0])); +template +NCCL::NCCL(shared_ptr > solver, const string& uid) + : GPUParams(solver, getDevice()), + solver_(solver), barrier_() { + this->Configure(solver.get()); + Caffe::set_multiprocess(true); + ncclUniqueId nccl_uid; + memcpy(&nccl_uid, &uid[0], NCCL_UNIQUE_ID_BYTES); // NOLINT(caffe/alt_fn) + NCCL_CHECK(ncclCommInitRank(&comm_, + Caffe::solver_count(), + nccl_uid, + Caffe::solver_rank())); + Init(); +} - CHECK(pairs->size() == devices.size()); - for (int i = 0; i < pairs->size(); ++i) { - CHECK((*pairs)[i].parent() != (*pairs)[i].device()); - for (int j = i + 1; j < pairs->size(); ++j) { - CHECK((*pairs)[i].device() != (*pairs)[j].device()); - } +template +void NCCL::Init() { + if (solver_->param().layer_wise_reduce()) { + CUDA_CHECK(cudaStreamCreateWithFlags(&stream_, cudaStreamNonBlocking)); } -#else - NO_GPU; -#endif } -// - template -P2PSync::P2PSync(shared_ptr > root_solver, - P2PSync* parent, const SolverParameter& param) - : GPUParams(root_solver, param.device_id()), - parent_(parent), - children_(), - queue_(), - initial_iter_(root_solver->iter()), - solver_() { -#ifndef CPU_ONLY - int initial_device; - CUDA_CHECK(cudaGetDevice(&initial_device)); - const int self = param.device_id(); - CUDA_CHECK(cudaSetDevice(self)); - - if (parent == NULL) { - solver_ = root_solver; - } else { - Caffe::set_root_solver(false); - solver_.reset(new WorkerSolver(param, root_solver.get())); - Caffe::set_root_solver(true); +NCCL::~NCCL() { + if (solver_->param().layer_wise_reduce()) { + CUDA_CHECK(cudaStreamDestroy(stream_)); } - this->configure(solver_.get()); - solver_->add_callback(this); - - if (parent) { - // Enable p2p access between devices - const int peer = parent->solver_->param().device_id(); - int access; - CUDA_CHECK(cudaDeviceCanAccessPeer(&access, self, peer)); - if (access) { - CUDA_CHECK(cudaDeviceEnablePeerAccess(peer, 0)); - } else { - LOG(INFO)<< "GPU " << self << " does not have p2p access to GPU " << peer; - } - // Allocate receiving buffer on parent - CUDA_CHECK(cudaSetDevice(peer)); - CUDA_CHECK(cudaMalloc(&parent_grads_, size_ * sizeof(Dtype))); - CUDA_CHECK(cudaSetDevice(self)); + if (comm_) { + ncclCommDestroy(comm_); } - - CUDA_CHECK(cudaSetDevice(initial_device)); -#else - NO_GPU; -#endif } template -P2PSync::~P2PSync() { -#ifndef CPU_ONLY - int initial_device; - CUDA_CHECK(cudaGetDevice(&initial_device)); - const int self = solver_->param().device_id(); - CUDA_CHECK(cudaSetDevice(self)); - - if (parent_) { - CUDA_CHECK(cudaFree(parent_grads_)); - const int peer = parent_->solver_->param().device_id(); - int access; - CUDA_CHECK(cudaDeviceCanAccessPeer(&access, self, peer)); - if (access) { - CUDA_CHECK(cudaDeviceDisablePeerAccess(peer)); - } - } - - CUDA_CHECK(cudaSetDevice(initial_device)); -#endif +boost::barrier* NCCL::barrier() { + return barrier_; +} +template +void NCCL::set_barrier(boost::barrier* value) { + barrier_ = value; } template -void P2PSync::InternalThreadEntry() { - Caffe::SetDevice(solver_->param().device_id()); - CHECK(Caffe::root_solver()); - Caffe::set_root_solver(false); - // See if there is a defined seed and reset random state if so - if (solver_->param().random_seed() >= 0) { - // Fetch random seed and modulate by device ID to make sure - // everyone doesn't have the same seed. We seem to have some - // solver instability if we have everyone with the same seed - Caffe::set_random_seed( - solver_->param().random_seed() + solver_->param().device_id()); +void NCCL::InitSingleProcess(vector*>* nccls) { + ncclComm_t* comms = new ncclComm_t[nccls->size()]; + int* gpu_list = new int[nccls->size()]; + for (int i = 0; i < nccls->size(); ++i) { + gpu_list[i] = (*nccls)[i]->solver_->param().device_id(); + } + NCCL_CHECK(ncclCommInitAll(comms, static_cast(nccls->size()), gpu_list)); + for (int i = 0; i < nccls->size(); ++i) { + (*nccls)[i]->comm_ = comms[i]; } - solver_->Step(solver_->param().max_iter() - initial_iter_); } template -void P2PSync::on_start() { -#ifndef CPU_ONLY -#ifdef DEBUG - int device; - CUDA_CHECK(cudaGetDevice(&device)); - CHECK(device == solver_->param().device_id()); -#else -// CHECK(false); -#endif +string NCCL::new_uid() { + string uid; + uid.resize(NCCL_UNIQUE_ID_BYTES); + ncclUniqueId nccl_uid; + NCCL_CHECK(ncclGetUniqueId(&nccl_uid)); + memcpy(&uid[0], &nccl_uid, NCCL_UNIQUE_ID_BYTES); // NOLINT(caffe/alt_fn) + return uid; +} - // Wait for update from parent - if (parent_) { - P2PSync *parent = queue_.pop(); - CHECK(parent == parent_); +template +void NCCL::Broadcast() { + if (barrier_) { // NULL in multi process case + barrier_->wait(); } - - // Update children - for (int i = children_.size() - 1; i >= 0; i--) { - Dtype* src = data_; - Dtype* dst = children_[i]->data_; - -#ifdef DEBUG - cudaPointerAttributes attributes; - CUDA_CHECK(cudaPointerGetAttributes(&attributes, src)); - CHECK(attributes.device == device); - CUDA_CHECK(cudaPointerGetAttributes(&attributes, dst)); - CHECK(attributes.device == children_[i]->solver_->param().device_id()); -#endif - - CUDA_CHECK(cudaMemcpyAsync(dst, src, size_ * sizeof(Dtype), - cudaMemcpyDeviceToDevice, cudaStreamDefault)); - CUDA_CHECK(cudaStreamSynchronize(cudaStreamDefault)); - children_[i]->queue_.push(this); + NCCL_CHECK(ncclBcast(data_, static_cast(size_), + nccl::dataType::type, 0, + comm_, cudaStreamDefault)); + if (barrier_) { + barrier_->wait(); } -#endif } template -void P2PSync::on_gradients_ready() { -#ifndef CPU_ONLY +void NCCL::run(int layer) { + CHECK(solver_->param().layer_wise_reduce()); + vector > >& blobs = + solver_->net()->layers()[layer]->blobs(); #ifdef DEBUG - int device; - CUDA_CHECK(cudaGetDevice(&device)); - CHECK(device == solver_->param().device_id()); + // Assert blobs are contiguous to reduce in one step (e.g. bias often small) + for (int i = 1; i < blobs.size(); ++i) { + CHECK_EQ(blobs[i - 1]->gpu_diff() + blobs[i - 1]->count(), + blobs[i + 0]->gpu_diff()); + } #endif + if (blobs.size() > 0) { + // Make sure default stream is done computing gradients. Could be + // replaced by cudaEventRecord+cudaStreamWaitEvent to avoid + // blocking the default stream, but it's actually slower. + CUDA_CHECK(cudaStreamSynchronize(cudaStreamDefault)); - // Sum children gradients as they appear in the queue - for (int i = 0; i < children_.size(); ++i) { - P2PSync *child = queue_.pop(); - Dtype* src = child->parent_grads_; - Dtype* dst = diff_; - -#ifdef DEBUG - bool ok = false; - for (int j = 0; j < children_.size(); ++j) { - if (child == children_[j]) { - ok = true; - } + // Reduce asynchronously + int size = 0; + for (int i = 0; i < blobs.size(); ++i) { + size += blobs[i]->count(); } - CHECK(ok); - cudaPointerAttributes attributes; - CUDA_CHECK(cudaPointerGetAttributes(&attributes, src)); - CHECK(attributes.device == device); - CUDA_CHECK(cudaPointerGetAttributes(&attributes, dst)); - CHECK(attributes.device == device); -#endif - - caffe_gpu_add(size_, src, dst, dst); + if (barrier_) { // NULL in multi process case + barrier_->wait(); + } + NCCL_CHECK(ncclAllReduce(blobs[0]->mutable_gpu_diff(), + blobs[0]->mutable_gpu_diff(), + size, + nccl::dataType::type, + ncclSum, comm_, stream_)); + caffe_gpu_scal(size, (Dtype) 1.0 / Caffe::solver_count(), + blobs[0]->mutable_gpu_diff(), stream_); } +} - // Send gradients to parent - if (parent_) { - Dtype* src = diff_; - Dtype* dst = parent_grads_; - -#ifdef DEBUG - cudaPointerAttributes attributes; - CUDA_CHECK(cudaPointerGetAttributes(&attributes, src)); - CHECK(attributes.device == device); - CUDA_CHECK(cudaPointerGetAttributes(&attributes, dst)); - CHECK(attributes.device == parent_->solver_->param().device_id()); -#endif - - CUDA_CHECK(cudaMemcpyAsync(dst, src, size_ * sizeof(Dtype), // - cudaMemcpyDeviceToDevice, cudaStreamDefault)); - CUDA_CHECK(cudaStreamSynchronize(cudaStreamDefault)); - parent_->queue_.push(this); +template +void NCCL::on_gradients_ready() { + if (solver_->param().layer_wise_reduce()) { + CHECK_EQ(solver_->net()->params().size(), + solver_->net()->learnable_params().size()) + << "Layer-wise reduce is not supported for nets with shared weights."; + + // Make sure reduction is done before applying gradients + CUDA_CHECK(cudaStreamSynchronize(stream_)); } else { - // Loss functions divide gradients by the batch size, so to compensate - // for split batch, the root solver divides by number of solvers. - caffe_gpu_scal(size_, Dtype(1.0 / Caffe::solver_count()), diff_); + if (barrier_) { // NULL in multi process case + barrier_->wait(); + } + NCCL_CHECK(ncclAllReduce(diff_, diff_, static_cast(size_), + nccl::dataType::type, ncclSum, comm_, + cudaStreamDefault)); + caffe_gpu_scal(static_cast(size_), + (Dtype) 1.0 / Caffe::solver_count(), diff_); } -#endif } template -void P2PSync::Prepare(const vector& gpus, - vector > >* syncs) { - // Pair devices for map-reduce synchronization - vector pairs; - DevicePair::compute(gpus, &pairs); - ostringstream s; - for (int i = 1; i < pairs.size(); ++i) { - s << (i == 1 ? "" : ", ") << pairs[i].parent() << ":" << pairs[i].device(); +class Worker : public InternalThread { + public: + explicit Worker(shared_ptr > rank0, int device, + boost::barrier* barrier, vector*>* nccls, + const char* restore) + : rank0_(rank0), device_(device), barrier_(barrier), + nccls_(nccls), restore_(restore) { } - LOG(INFO)<< "GPUs pairs " << s.str(); - - SolverParameter param(solver_->param()); - - // Build the GPU tree by finding the parent for each solver - for (int attempts = 0; attempts < pairs.size(); ++attempts) { - for (int i = 1; i < pairs.size(); ++i) { - if (!syncs->at(i).get()) { - P2PSync* parent = NULL; - for (int j = 0; j < syncs->size(); ++j) { - P2PSync* sync = j == 0 ? this : syncs->at(j).get(); - if (sync) { - const SolverParameter& p = sync->solver()->param(); - if (p.device_id() == pairs[i].parent()) { - parent = sync; - } - } - } - if (parent) { - param.set_device_id(pairs[i].device()); - syncs->at(i).reset(new P2PSync(solver_, parent, param)); - parent->children_.push_back((P2PSync*) syncs->at(i).get()); - } + virtual ~Worker() {} + + protected: + void InternalThreadEntry() { + // Create solver and install callbacks + SolverParameter param(rank0_->param()); + param.set_device_id(device_); +#ifdef DEBUG + int device; + CUDA_CHECK(cudaGetDevice(&device)); + CHECK_EQ(device, device_); +#endif + param.set_type(rank0_->type()); + shared_ptr > s(SolverRegistry::CreateSolver(param)); + CHECK_EQ(s->type(), rank0_->type()); + if (restore_) { + // Could not make NCCL broadcast solver state, it seems to crash + // if called in a tight loop, regardless of barriers etc. so + // restore all solvers from file. + s->Restore(restore_); + } + NCCL nccl(s); + nccl.set_barrier(barrier_); + s->add_callback(&nccl); + if (s->param().layer_wise_reduce()) { + s->net()->add_after_backward(&nccl); + } + (*nccls_)[Caffe::solver_rank()] = &nccl; + // Wait for other threads + barrier_->wait(); + // Wait for NCCL init + barrier_->wait(); + // Broadcast rank 0 state + nccl.Broadcast(); + // Solve + s->Step(param.max_iter() - s->iter()); + barrier_->wait(); +#ifdef DEBUG + // Check all solvers have same state + SGDSolver* sa = static_cast*>(rank0_.get()); + SGDSolver* sb = static_cast*>(s.get()); + for (int h = 0; h < sa->history().size(); ++h) { + CUDA_CHECK(cudaSetDevice(sa->param().device_id())); + const Dtype* a = sa->history()[h]->cpu_data(); + CUDA_CHECK(cudaSetDevice(sb->param().device_id())); + const Dtype* b = sb->history()[h]->cpu_data(); + for (int v = 0; v < sa->history()[h]->count(); ++v) { + CHECK_DOUBLE_EQ(a[v], b[v]); } } +#endif } -} - -template -void P2PSync::Run(const vector& gpus) { - vector > > syncs(gpus.size()); - Prepare(gpus, &syncs); - LOG(INFO)<< "Starting Optimization"; + shared_ptr > rank0_; + int device_; + boost::barrier* barrier_; + vector*>* nccls_; + const char* restore_; +}; - for (int i = 1; i < syncs.size(); ++i) { - syncs[i]->StartInternalThread(); +template +void NCCL::Run(const vector& gpus, const char* restore) { + boost::barrier barrier(static_cast(gpus.size())); + vector*> nccls(gpus.size()); + // Create workers + vector > > workers(gpus.size()); + for (int i = 1; i < gpus.size(); ++i) { + CUDA_CHECK(cudaSetDevice(gpus[i])); + Caffe::set_solver_rank(i); + Worker* w = new Worker(solver_, gpus[i], &barrier, + &nccls, restore); + w->StartInternalThread(); + workers[i].reset(w); } - - // Run root solver on current thread + CUDA_CHECK(cudaSetDevice(gpus[0])); + Caffe::set_solver_rank(0); + barrier_ = &barrier; + solver_->add_callback(this); + if (solver_->param().layer_wise_reduce()) { + solver_->net()->add_after_backward(this); + } + nccls[0] = this; + // Wait for workers + barrier.wait(); + // Init NCCL + InitSingleProcess(&nccls); + barrier.wait(); + // Run first solver on current thread + Broadcast(); solver_->Solve(); - - for (int i = 1; i < syncs.size(); ++i) { - syncs[i]->StopInternalThread(); + barrier.wait(); // Hangs without it when running tests + // Wait for shutdown + for (int i = 1; i < gpus.size(); ++i) { + workers[i]->StopInternalThread(); } } INSTANTIATE_CLASS(Params); INSTANTIATE_CLASS(GPUParams); -INSTANTIATE_CLASS(P2PSync); +INSTANTIATE_CLASS(Worker); +INSTANTIATE_CLASS(NCCL); } // namespace caffe + +#endif // USE_NCCL diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 430a0dea1..1c85f6969 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -98,7 +98,7 @@ message NetParameter { // NOTE // Update the next available ID when you add a new SolverParameter field. // -// SolverParameter next available ID: 41 (last added: type) +// SolverParameter next available ID: 42 (last added: layer_wise_reduce) message SolverParameter { ////////////////////////////////////////////////////////////////////////////// // Specifying the train and test networks @@ -239,6 +239,9 @@ message SolverParameter { } // DEPRECATED: use type instead of solver_type optional SolverType solver_type = 30 [default = SGD]; + + // Overlap compute and communication for data parallel training + optional bool layer_wise_reduce = 41 [default = true]; } // A message that stores the solver snapshots @@ -655,8 +658,8 @@ message DataParameter { optional bool mirror = 6 [default = false]; // Force the encoded image to have 3 color channels optional bool force_encoded_color = 9 [default = false]; - // Prefetch queue (Number of batches to prefetch to host memory, increase if - // data access bandwidth varies). + // Prefetch queue (Increase if data feeding bandwidth varies, within the + // limit of device memory for GPU training) optional uint32 prefetch = 10 [default = 4]; } diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index ece3913e8..1c1a9e595 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -26,16 +26,14 @@ SolverAction::Enum Solver::GetRequestedAction() { } template -Solver::Solver(const SolverParameter& param, const Solver* root_solver) - : net_(), callbacks_(), root_solver_(root_solver), - requested_early_exit_(false) { +Solver::Solver(const SolverParameter& param) + : net_(), callbacks_(), requested_early_exit_(false) { Init(param); } template -Solver::Solver(const string& param_file, const Solver* root_solver) - : net_(), callbacks_(), root_solver_(root_solver), - requested_early_exit_(false) { +Solver::Solver(const string& param_file) + : net_(), callbacks_(), requested_early_exit_(false) { SolverParameter param; ReadSolverParamsFromTextFileOrDie(param_file, ¶m); Init(param); @@ -43,15 +41,13 @@ Solver::Solver(const string& param_file, const Solver* root_solver) template void Solver::Init(const SolverParameter& param) { - CHECK(Caffe::root_solver() || root_solver_) - << "root_solver_ needs to be set for all non-root solvers"; LOG_IF(INFO, Caffe::root_solver()) << "Initializing solver from parameters: " << std::endl << param.DebugString(); param_ = param; CHECK_GE(param_.average_loss(), 1) << "average_loss should be non-negative."; CheckSnapshotWritePermissions(); - if (Caffe::root_solver() && param_.random_seed() >= 0) { - Caffe::set_random_seed(param_.random_seed()); + if (param_.random_seed() >= 0) { + Caffe::set_random_seed(param_.random_seed() + Caffe::solver_rank()); } // Scaffolding code InitTrainNet(); @@ -101,11 +97,7 @@ void Solver::InitTrainNet() { net_state.MergeFrom(net_param.state()); net_state.MergeFrom(param_.train_state()); net_param.mutable_state()->CopyFrom(net_state); - if (Caffe::root_solver()) { - net_.reset(new Net(net_param)); - } else { - net_.reset(new Net(net_param, root_solver_->net_.get())); - } + net_.reset(new Net(net_param)); } template @@ -180,12 +172,7 @@ void Solver::InitTestNets() { net_params[i].mutable_state()->CopyFrom(net_state); LOG(INFO) << "Creating test net (#" << i << ") specified by " << sources[i]; - if (Caffe::root_solver()) { - test_nets_[i].reset(new Net(net_params[i])); - } else { - test_nets_[i].reset(new Net(net_params[i], - root_solver_->test_nets_[i].get())); - } + test_nets_[i].reset(new Net(net_params[i])); test_nets_[i]->set_debug_info(param_.debug_info()); } } @@ -197,14 +184,16 @@ void Solver::Step(int iters) { int average_loss = this->param_.average_loss(); losses_.clear(); smoothed_loss_ = 0; + iteration_timer_.Start(); while (iter_ < stop_iter) { // zero-init the params net_->ClearParamDiffs(); if (param_.test_interval() && iter_ % param_.test_interval() == 0 - && (iter_ > 0 || param_.test_initialization()) - && Caffe::root_solver()) { - TestAll(); + && (iter_ > 0 || param_.test_initialization())) { + if (Caffe::root_solver()) { + TestAll(); + } if (requested_early_exit_) { // Break out of the while loop because stop was requested while testing. break; @@ -225,8 +214,13 @@ void Solver::Step(int iters) { // average the loss across iterations for smoothed reporting UpdateSmoothedLoss(loss, start_iter, average_loss); if (display) { + float lapse = iteration_timer_.Seconds(); + float per_s = (iter_ - iterations_last_) / (lapse ? lapse : 1); LOG_IF(INFO, Caffe::root_solver()) << "Iteration " << iter_ - << ", loss = " << smoothed_loss_; + << " (" << per_s << " iter/s, " << lapse << "s/" + << param_.display() << " iters), loss = " << smoothed_loss_; + iteration_timer_.Start(); + iterations_last_ = iter_; const vector*>& result = net_->output_blobs(); int score_index = 0; for (int j = 0; j < result.size(); ++j) { diff --git a/src/caffe/solvers/adagrad_solver.cpp b/src/caffe/solvers/adagrad_solver.cpp index e78eadca1..d8107e1e6 100644 --- a/src/caffe/solvers/adagrad_solver.cpp +++ b/src/caffe/solvers/adagrad_solver.cpp @@ -12,7 +12,6 @@ void adagrad_update_gpu(int N, Dtype* g, Dtype* h, Dtype delta, template void AdaGradSolver::ComputeUpdateValue(int param_id, Dtype rate) { - CHECK(Caffe::root_solver()); const vector*>& net_params = this->net_->learnable_params(); const vector& net_params_lr = this->net_->params_lr(); Dtype delta = this->param_.delta(); diff --git a/src/caffe/solvers/nesterov_solver.cpp b/src/caffe/solvers/nesterov_solver.cpp index 23ab2d436..7c1fac1f8 100644 --- a/src/caffe/solvers/nesterov_solver.cpp +++ b/src/caffe/solvers/nesterov_solver.cpp @@ -12,7 +12,6 @@ void nesterov_update_gpu(int N, Dtype* g, Dtype* h, Dtype momentum, template void NesterovSolver::ComputeUpdateValue(int param_id, Dtype rate) { - CHECK(Caffe::root_solver()); const vector*>& net_params = this->net_->learnable_params(); const vector& net_params_lr = this->net_->params_lr(); Dtype momentum = this->param_.momentum(); diff --git a/src/caffe/solvers/sgd_solver.cpp b/src/caffe/solvers/sgd_solver.cpp index f30f316d1..ad6abe54a 100644 --- a/src/caffe/solvers/sgd_solver.cpp +++ b/src/caffe/solvers/sgd_solver.cpp @@ -100,10 +100,10 @@ void SGDSolver::ClipGradients() { template void SGDSolver::ApplyUpdate() { - CHECK(Caffe::root_solver()); Dtype rate = GetLearningRate(); if (this->param_.display() && this->iter_ % this->param_.display() == 0) { - LOG(INFO) << "Iteration " << this->iter_ << ", lr = " << rate; + LOG_IF(INFO, Caffe::root_solver()) << "Iteration " << this->iter_ + << ", lr = " << rate; } ClipGradients(); for (int param_id = 0; param_id < this->net_->learnable_params().size(); diff --git a/src/caffe/syncedmem.cpp b/src/caffe/syncedmem.cpp index 4d3564172..88d9b7851 100644 --- a/src/caffe/syncedmem.cpp +++ b/src/caffe/syncedmem.cpp @@ -3,26 +3,41 @@ #include "caffe/util/math_functions.hpp" namespace caffe { +SyncedMemory::SyncedMemory() + : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(UNINITIALIZED), + own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false) { +#ifndef CPU_ONLY +#ifdef DEBUG + CUDA_CHECK(cudaGetDevice(&device_)); +#endif +#endif +} + +SyncedMemory::SyncedMemory(size_t size) + : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(size), head_(UNINITIALIZED), + own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false) { +#ifndef CPU_ONLY +#ifdef DEBUG + CUDA_CHECK(cudaGetDevice(&device_)); +#endif +#endif +} SyncedMemory::~SyncedMemory() { + check_device(); if (cpu_ptr_ && own_cpu_data_) { CaffeFreeHost(cpu_ptr_, cpu_malloc_use_cuda_); } #ifndef CPU_ONLY if (gpu_ptr_ && own_gpu_data_) { - int initial_device; - cudaGetDevice(&initial_device); - if (gpu_device_ != -1) { - CUDA_CHECK(cudaSetDevice(gpu_device_)); - } CUDA_CHECK(cudaFree(gpu_ptr_)); - cudaSetDevice(initial_device); } #endif // CPU_ONLY } inline void SyncedMemory::to_cpu() { + check_device(); switch (head_) { case UNINITIALIZED: CaffeMallocHost(&cpu_ptr_, size_, &cpu_malloc_use_cuda_); @@ -49,10 +64,10 @@ inline void SyncedMemory::to_cpu() { } inline void SyncedMemory::to_gpu() { + check_device(); #ifndef CPU_ONLY switch (head_) { case UNINITIALIZED: - CUDA_CHECK(cudaGetDevice(&gpu_device_)); CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_)); caffe_gpu_memset(size_, 0, gpu_ptr_); head_ = HEAD_AT_GPU; @@ -60,7 +75,6 @@ inline void SyncedMemory::to_gpu() { break; case HEAD_AT_CPU: if (gpu_ptr_ == NULL) { - CUDA_CHECK(cudaGetDevice(&gpu_device_)); CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_)); own_gpu_data_ = true; } @@ -77,11 +91,13 @@ inline void SyncedMemory::to_gpu() { } const void* SyncedMemory::cpu_data() { + check_device(); to_cpu(); return (const void*)cpu_ptr_; } void SyncedMemory::set_cpu_data(void* data) { + check_device(); CHECK(data); if (own_cpu_data_) { CaffeFreeHost(cpu_ptr_, cpu_malloc_use_cuda_); @@ -92,6 +108,7 @@ void SyncedMemory::set_cpu_data(void* data) { } const void* SyncedMemory::gpu_data() { + check_device(); #ifndef CPU_ONLY to_gpu(); return (const void*)gpu_ptr_; @@ -102,16 +119,11 @@ const void* SyncedMemory::gpu_data() { } void SyncedMemory::set_gpu_data(void* data) { + check_device(); #ifndef CPU_ONLY CHECK(data); if (own_gpu_data_) { - int initial_device; - cudaGetDevice(&initial_device); - if (gpu_device_ != -1) { - CUDA_CHECK(cudaSetDevice(gpu_device_)); - } CUDA_CHECK(cudaFree(gpu_ptr_)); - cudaSetDevice(initial_device); } gpu_ptr_ = data; head_ = HEAD_AT_GPU; @@ -122,12 +134,14 @@ void SyncedMemory::set_gpu_data(void* data) { } void* SyncedMemory::mutable_cpu_data() { + check_device(); to_cpu(); head_ = HEAD_AT_CPU; return cpu_ptr_; } void* SyncedMemory::mutable_gpu_data() { + check_device(); #ifndef CPU_ONLY to_gpu(); head_ = HEAD_AT_GPU; @@ -140,9 +154,9 @@ void* SyncedMemory::mutable_gpu_data() { #ifndef CPU_ONLY void SyncedMemory::async_gpu_push(const cudaStream_t& stream) { + check_device(); CHECK(head_ == HEAD_AT_CPU); if (gpu_ptr_ == NULL) { - CUDA_CHECK(cudaGetDevice(&gpu_device_)); CUDA_CHECK(cudaMalloc(&gpu_ptr_, size_)); own_gpu_data_ = true; } @@ -153,5 +167,20 @@ void SyncedMemory::async_gpu_push(const cudaStream_t& stream) { } #endif +void SyncedMemory::check_device() { +#ifndef CPU_ONLY +#ifdef DEBUG + int device; + cudaGetDevice(&device); + CHECK(device == device_); + if (gpu_ptr_ && own_gpu_data_) { + cudaPointerAttributes attributes; + CUDA_CHECK(cudaPointerGetAttributes(&attributes, gpu_ptr_)); + CHECK(attributes.device == device_); + } +#endif +#endif +} + } // namespace caffe diff --git a/src/caffe/test/test_data_layer.cpp b/src/caffe/test/test_data_layer.cpp index 3e8d113d9..3835af1f1 100644 --- a/src/caffe/test/test_data_layer.cpp +++ b/src/caffe/test/test_data_layer.cpp @@ -105,6 +105,32 @@ class DataLayerTest : public MultiDeviceTest { } } + void TestSkip() { + LayerParameter param; + param.set_phase(TRAIN); + DataParameter* data_param = param.mutable_data_param(); + int batch_size = 5; + data_param->set_batch_size(batch_size); + data_param->set_source(filename_->c_str()); + data_param->set_backend(backend_); + Caffe::set_solver_count(8); + for (int dev = 0; dev < Caffe::solver_count(); ++dev) { + Caffe::set_solver_rank(dev); + DataLayer layer(param); + layer.SetUp(blob_bottom_vec_, blob_top_vec_); + int label = dev; + for (int iter = 0; iter < 10; ++iter) { + layer.Forward(blob_bottom_vec_, blob_top_vec_); + for (int i = 0; i < batch_size; ++i) { + EXPECT_EQ(label % batch_size, blob_top_label_->cpu_data()[i]); + label += Caffe::solver_count(); + } + } + } + Caffe::set_solver_count(1); + Caffe::set_solver_rank(0); + } + void TestReshape(DataParameter_DB backend) { const int num_inputs = 5; // Save data of varying shapes. @@ -356,6 +382,11 @@ TYPED_TEST(DataLayerTest, TestReadLevelDB) { this->TestRead(); } +TYPED_TEST(DataLayerTest, TestSkipLevelDB) { + this->Fill(false, DataParameter_DB_LEVELDB); + this->TestSkip(); +} + TYPED_TEST(DataLayerTest, TestReshapeLevelDB) { this->TestReshape(DataParameter_DB_LEVELDB); } @@ -396,6 +427,11 @@ TYPED_TEST(DataLayerTest, TestReadLMDB) { this->TestRead(); } +TYPED_TEST(DataLayerTest, TestSkipLMDB) { + this->Fill(false, DataParameter_DB_LMDB); + this->TestSkip(); +} + TYPED_TEST(DataLayerTest, TestReshapeLMDB) { this->TestReshape(DataParameter_DB_LMDB); } diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 975a8f0f8..6ad0d8f65 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -36,7 +36,9 @@ class GradientBasedSolverTest : public MultiDeviceTest { string snapshot_prefix_; shared_ptr > solver_; - shared_ptr > sync_; +#ifdef USE_NCCL + shared_ptr > nccl_; +#endif int seed_; // Dimensions are determined by generate_sample_data.py // TODO this is brittle and the hdf5 file should be checked instead. @@ -85,6 +87,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { "lr_policy: 'fixed' " "iter_size: " << iter_size << " " "device_id: " << device_id << " " + "layer_wise_reduce: " << (!share_) << " " "net_param { " " name: 'TestNetwork' " " layer { " @@ -183,7 +186,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { } Caffe::set_random_seed(this->seed_); this->InitSolverFromProtoString(proto.str()); - if (from_snapshot != NULL) { + if (from_snapshot) { this->solver_->Restore(from_snapshot); for (int i = 0; i < this->solver_->iter(); ++i) { this->solver_->net()->Forward(); @@ -202,9 +205,10 @@ class GradientBasedSolverTest : public MultiDeviceTest { gpus.push_back(i); } Caffe::set_solver_count(gpus.size()); - this->sync_.reset(new P2PSync( - this->solver_, NULL, this->solver_->param())); - this->sync_->Run(gpus); +#ifdef USE_NCCL + this->nccl_.reset(new NCCL(this->solver_)); + this->nccl_->Run(gpus, from_snapshot); +#endif Caffe::set_solver_count(1); } if (snapshot) { @@ -457,12 +461,28 @@ class GradientBasedSolverTest : public MultiDeviceTest { const int kIterSize = 1; // Test over all numbers of devices. int available_devices = 1; -#ifndef CPU_ONLY +#ifdef USE_NCCL if (Caffe::mode() == Caffe::GPU) { CUDA_CHECK(cudaGetDeviceCount(&available_devices)); } #endif - for (int devices = 1; devices <= available_devices; ++devices) { + // Takes a while to test all sizes for each test so sparse + vector sizes; + sizes.push_back(1); + if (available_devices >= 2) { + sizes.push_back(2); + } + if (available_devices >= 3) { + sizes.push_back(3); + } + if (available_devices >= 8) { + sizes.push_back(8); + } + if (available_devices >= 16) { + sizes.push_back(16); + } + for (int i = 0; i < sizes.size(); ++i) { + int devices = sizes[i]; // Configure batch size for single / multi device equivalence. // Constant data is needed for multi device as for accumulation. num_ = kNum * devices; diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 8884ce95a..68e10286d 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -133,4 +133,34 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { } } +TYPED_TEST(HDF5DataLayerTest, TestSkip) { + typedef typename TypeParam::Dtype Dtype; + LayerParameter param; + param.add_top("data"); + param.add_top("label"); + + HDF5DataParameter* hdf5_data_param = param.mutable_hdf5_data_param(); + int batch_size = 5; + hdf5_data_param->set_batch_size(batch_size); + hdf5_data_param->set_source(*(this->filename)); + + Caffe::set_solver_count(8); + for (int dev = 0; dev < Caffe::solver_count(); ++dev) { + Caffe::set_solver_rank(dev); + + HDF5DataLayer layer(param); + layer.SetUp(this->blob_bottom_vec_, this->blob_top_vec_); + int label = dev; + for (int iter = 0; iter < 1; ++iter) { + layer.Forward(this->blob_bottom_vec_, this->blob_top_vec_); + for (int i = 0; i < batch_size; ++i) { + EXPECT_EQ(1 + label, this->blob_top_label_->cpu_data()[i]); + label = (label + Caffe::solver_count()) % (batch_size * 2); + } + } + } + Caffe::set_solver_count(1); + Caffe::set_solver_rank(0); +} + } // namespace caffe diff --git a/src/caffe/util/blocking_queue.cpp b/src/caffe/util/blocking_queue.cpp index 058668fe2..f69d21045 100644 --- a/src/caffe/util/blocking_queue.cpp +++ b/src/caffe/util/blocking_queue.cpp @@ -1,7 +1,6 @@ #include #include -#include "caffe/data_reader.hpp" #include "caffe/layers/base_data_layer.hpp" #include "caffe/parallel.hpp" #include "caffe/util/blocking_queue.hpp" @@ -88,9 +87,5 @@ size_t BlockingQueue::size() const { template class BlockingQueue*>; template class BlockingQueue*>; -template class BlockingQueue; -template class BlockingQueue >; -template class BlockingQueue*>; -template class BlockingQueue*>; } // namespace caffe diff --git a/src/caffe/util/db_lmdb.cpp b/src/caffe/util/db_lmdb.cpp index fb1d4956a..491a9bd03 100644 --- a/src/caffe/util/db_lmdb.cpp +++ b/src/caffe/util/db_lmdb.cpp @@ -32,7 +32,7 @@ void LMDB::Open(const string& source, Mode mode) { MDB_CHECK(rc); } #endif - LOG(INFO) << "Opened lmdb " << source; + LOG_IF(INFO, Caffe::root_solver()) << "Opened lmdb " << source; } LMDBCursor* LMDB::NewCursor() { diff --git a/src/caffe/util/math_functions.cu b/src/caffe/util/math_functions.cu index 4c5875374..6d0010260 100644 --- a/src/caffe/util/math_functions.cu +++ b/src/caffe/util/math_functions.cu @@ -90,6 +90,26 @@ void caffe_gpu_scal(const int N, const double alpha, double *X) { CUBLAS_CHECK(cublasDscal(Caffe::cublas_handle(), N, &alpha, X, 1)); } +template <> +void caffe_gpu_scal(const int N, const float alpha, float* X, + cudaStream_t str) { + cudaStream_t initial_stream; + CUBLAS_CHECK(cublasGetStream(Caffe::cublas_handle(), &initial_stream)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), str)); + CUBLAS_CHECK(cublasSscal(Caffe::cublas_handle(), N, &alpha, X, 1)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), initial_stream)); +} + +template <> +void caffe_gpu_scal(const int N, const double alpha, double* X, + cudaStream_t str) { + cudaStream_t initial_stream; + CUBLAS_CHECK(cublasGetStream(Caffe::cublas_handle(), &initial_stream)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), str)); + CUBLAS_CHECK(cublasDscal(Caffe::cublas_handle(), N, &alpha, X, 1)); + CUBLAS_CHECK(cublasSetStream(Caffe::cublas_handle(), initial_stream)); +} + template <> void caffe_gpu_axpby(const int N, const float alpha, const float* X, const float beta, float* Y) { diff --git a/tools/caffe.cpp b/tools/caffe.cpp index 9bf4214ad..3587d8aa1 100644 --- a/tools/caffe.cpp +++ b/tools/caffe.cpp @@ -195,6 +195,7 @@ int train() { // If the gpus flag is not provided, allow the mode and device to be set // in the solver prototxt. if (FLAGS_gpu.size() == 0 + && solver_param.has_solver_mode() && solver_param.solver_mode() == caffe::SolverParameter_SolverMode_GPU) { if (solver_param.has_device_id()) { FLAGS_gpu = "" + @@ -244,11 +245,15 @@ int train() { CopyLayers(solver.get(), FLAGS_weights); } + LOG(INFO) << "Starting Optimization"; if (gpus.size() > 1) { - caffe::P2PSync sync(solver, NULL, solver->param()); - sync.Run(gpus); +#ifdef USE_NCCL + caffe::NCCL nccl(solver); + nccl.Run(gpus, FLAGS_snapshot.size() > 0 ? FLAGS_snapshot.c_str() : NULL); +#else + LOG(FATAL) << "Multi-GPU execution not available - rebuild with USE_NCCL"; +#endif } else { - LOG(INFO) << "Starting Optimization"; solver->Solve(); } LOG(INFO) << "Optimization Done."; From e21b42004001879b232daed8f142fbc5a7e0b75d Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Tue, 22 Nov 2016 16:46:55 -0800 Subject: [PATCH 373/458] Python Multi-GPU --- python/caffe/__init__.py | 4 +- python/caffe/_caffe.cpp | 96 ++++++++++++++++++++++++++++++++++++-- python/caffe/pycaffe.py | 2 +- python/train.py | 99 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 193 insertions(+), 8 deletions(-) create mode 100644 python/train.py diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index 5fc6ec9b9..dde2e9863 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,5 @@ -from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver -from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed +from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer +from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, Layer, get_solver from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 0a86045bd..04dac2344 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -267,12 +267,12 @@ bp::object BlobVec_add_blob(bp::tuple args, bp::dict kwargs) { } template -class PythonCallback: public Solver::Callback { +class SolverCallback: public Solver::Callback { protected: bp::object on_start_, on_gradients_ready_; public: - PythonCallback(bp::object on_start, bp::object on_gradients_ready) + SolverCallback(bp::object on_start, bp::object on_gradients_ready) : on_start_(on_start), on_gradients_ready_(on_gradients_ready) { } virtual void on_gradients_ready() { on_gradients_ready_(); @@ -284,9 +284,61 @@ class PythonCallback: public Solver::Callback { template void Solver_add_callback(Solver * solver, bp::object on_start, bp::object on_gradients_ready) { - solver->add_callback(new PythonCallback(on_start, on_gradients_ready)); + solver->add_callback(new SolverCallback(on_start, on_gradients_ready)); } +// Seems boost cannot call the base method directly +void Solver_add_nccl(SGDSolver* solver +#ifdef USE_NCCL + , NCCL* nccl +#endif +) { +#ifdef USE_NCCL + solver->add_callback(nccl); +#endif +} + +template +class NetCallback: public Net::Callback { + public: + explicit NetCallback(bp::object run) : run_(run) {} + + protected: + virtual void run(int layer) { + run_(layer); + } + bp::object run_; +}; +void Net_before_forward(Net* net, bp::object run) { + net->add_before_forward(new NetCallback(run)); +} +void Net_after_forward(Net* net, bp::object run) { + net->add_after_forward(new NetCallback(run)); +} +void Net_before_backward(Net* net, bp::object run) { + net->add_before_backward(new NetCallback(run)); +} +void Net_after_backward(Net* net, bp::object run) { + net->add_after_backward(new NetCallback(run)); +} + +void Net_add_nccl(Net* net +#ifdef USE_NCCL + , NCCL* nccl +#endif +) { +#ifdef USE_NCCL + net->add_after_backward(nccl); +#endif +} +#ifndef USE_NCCL +template +class NCCL { + public: + NCCL(shared_ptr > solver, const string& uid) {} +}; +#endif + BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(SolveOverloads, Solve, 0, 1); BOOST_PYTHON_MODULE(_caffe) { @@ -303,6 +355,10 @@ BOOST_PYTHON_MODULE(_caffe) { bp::def("set_mode_gpu", &set_mode_gpu); bp::def("set_random_seed", &set_random_seed); bp::def("set_device", &Caffe::SetDevice); + bp::def("solver_count", &Caffe::solver_count); + bp::def("set_solver_count", &Caffe::set_solver_count); + bp::def("solver_rank", &Caffe::solver_rank); + bp::def("set_solver_rank", &Caffe::set_solver_rank); bp::def("layer_type_list", &LayerRegistry::LayerTypeList); @@ -346,7 +402,12 @@ BOOST_PYTHON_MODULE(_caffe) { bp::with_custodian_and_ward<1, 2, bp::with_custodian_and_ward<1, 3> >()) .def("save", &Net_Save) .def("save_hdf5", &Net_SaveHDF5) - .def("load_hdf5", &Net_LoadHDF5); + .def("load_hdf5", &Net_LoadHDF5) + .def("before_forward", &Net_before_forward) + .def("after_forward", &Net_after_forward) + .def("before_backward", &Net_before_backward) + .def("after_backward", &Net_after_backward) + .def("after_backward", &Net_add_nccl); BP_REGISTER_SHARED_PTR_TO_PYTHON(Net); bp::class_, shared_ptr >, boost::noncopyable>( @@ -378,6 +439,10 @@ BOOST_PYTHON_MODULE(_caffe) { .add_property("type", bp::make_function(&Layer::type)); BP_REGISTER_SHARED_PTR_TO_PYTHON(Layer); + bp::class_("SolverParameter", bp::no_init) + .add_property("max_iter", &SolverParameter::max_iter) + .add_property("display", &SolverParameter::display) + .add_property("layer_wise_reduce", &SolverParameter::layer_wise_reduce); bp::class_("LayerParameter", bp::no_init); bp::class_, shared_ptr >, boost::noncopyable>( @@ -387,11 +452,14 @@ BOOST_PYTHON_MODULE(_caffe) { bp::return_internal_reference<>())) .add_property("iter", &Solver::iter) .def("add_callback", &Solver_add_callback) + .def("add_callback", &Solver_add_nccl) .def("solve", static_cast::*)(const char*)>( &Solver::Solve), SolveOverloads()) .def("step", &Solver::Step) .def("restore", &Solver::Restore) - .def("snapshot", &Solver::Snapshot); + .def("snapshot", &Solver::Snapshot) + .add_property("param", bp::make_function(&Solver::param, + bp::return_value_policy())); BP_REGISTER_SHARED_PTR_TO_PYTHON(Solver); bp::class_, bp::bases >, @@ -435,6 +503,24 @@ BOOST_PYTHON_MODULE(_caffe) { bp::class_ >("BoolVec") .def(bp::vector_indexing_suite >()); + bp::class_, shared_ptr >, + boost::noncopyable>("NCCL", + bp::init >, const string&>()) +#ifdef USE_NCCL + .def("new_uid", &NCCL::new_uid).staticmethod("new_uid") + .def("bcast", &NCCL::Broadcast) +#endif + /* NOLINT_NEXT_LINE(whitespace/semicolon) */ + ; + BP_REGISTER_SHARED_PTR_TO_PYTHON(NCCL); + + bp::class_, boost::noncopyable>( + "Timer", bp::init<>()) + .def("start", &Timer::Start) + .def("stop", &Timer::Stop) + .add_property("ms", &Timer::MilliSeconds); + BP_REGISTER_SHARED_PTR_TO_PYTHON(Timer); + // boost python expects a void (missing) return value, while import_array // returns NULL for python3. import_array1() forces a void return value. import_array1(); diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 5bae18d9a..18803818f 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -11,7 +11,7 @@ import numpy as np from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ - RMSPropSolver, AdaDeltaSolver, AdamSolver + RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer import caffe.io import six diff --git a/python/train.py b/python/train.py new file mode 100644 index 000000000..730dbe701 --- /dev/null +++ b/python/train.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python +""" +Trains a model using one or more GPUs. +""" +from multiprocessing import Process + +import caffe + + +def train( + solver, # solver proto definition + snapshot, # solver snapshot to restore + gpus, # list of device ids + timing=False, # show timing info for compute and communications +): + # NCCL uses a uid to identify a session + uid = caffe.NCCL.new_uid() + + caffe.init_log() + caffe.log('Using devices %s' % str(gpus)) + + procs = [] + for rank in range(len(gpus)): + p = Process(target=solve, + args=(solver, snapshot, gpus, timing, uid, rank)) + p.daemon = True + p.start() + procs.append(p) + for p in procs: + p.join() + + +def time(solver, nccl): + fprop = [] + bprop = [] + total = caffe.Timer() + allrd = caffe.Timer() + for _ in range(len(solver.net.layers)): + fprop.append(caffe.Timer()) + bprop.append(caffe.Timer()) + display = solver.param.display + + def show_time(): + if solver.iter % display == 0: + s = '\n' + for i in range(len(solver.net.layers)): + s += 'forw %3d %8s ' % (i, solver.net.layers[i].layer_param.name) + s += ': %.2f\n' % fprop[i].ms + for i in range(len(solver.net.layers) - 1, -1, -1): + s += 'back %3d %8s ' % (i, solver.net.layers[i].layer_param.name) + s += ': %.2f\n' % bprop[i].ms + s += 'solver total: %.2f\n' % total.ms + s += 'allreduce: %.2f\n' % allrd.ms + caffe.log(s) + + solver.net.before_forward(lambda layer: fprop[layer].start()) + solver.net.after_forward(lambda layer: fprop[layer].stop()) + solver.net.before_backward(lambda layer: bprop[layer].start()) + solver.net.after_backward(lambda layer: bprop[layer].stop()) + solver.add_callback(lambda: total.start(), lambda: (total.stop(), allrd.start())) + solver.add_callback(nccl) + solver.add_callback(lambda: '', lambda: (allrd.stop(), show_time())) + + +def solve(proto, snapshot, gpus, timing, uid, rank): + caffe.set_mode_gpu() + caffe.set_device(gpus[rank]) + caffe.set_solver_count(len(gpus)) + caffe.set_solver_rank(rank) + + solver = caffe.SGDSolver(proto) + if snapshot and len(snapshot) != 0: + solver.restore(snapshot) + + nccl = caffe.NCCL(solver, uid) + nccl.bcast() + + if timing and rank == 0: + time(solver, nccl) + else: + solver.add_callback(nccl) + + if solver.param.layer_wise_reduce: + solver.net.after_backward(nccl) + solver.step(solver.param.max_iter) + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + + parser.add_argument("--solver", required=True, help="Solver proto definition.") + parser.add_argument("--snapshot", help="Solver snapshot to restore.") + parser.add_argument("--gpus", type=int, nargs='+', default=[0], + help="List of device ids.") + parser.add_argument("--timing", action='store_true', help="Show timing info.") + args = parser.parse_args() + + train(args.solver, args.snapshot, args.gpus, args.timing) From 0d27efc7e3d3d2edbf45cccb73bad03ad655c164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marian=20Gla=CC=88ser?= Date: Thu, 22 Dec 2016 12:25:46 -0800 Subject: [PATCH 374/458] Python layers should build on multiprocess & solver_cnt; enable with bindings --- include/caffe/layers/python_layer.hpp | 2 +- python/caffe/__init__.py | 2 +- python/caffe/_caffe.cpp | 1 + python/train.py | 5 +++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/caffe/layers/python_layer.hpp b/include/caffe/layers/python_layer.hpp index 529b09cb8..10c4bfd02 100644 --- a/include/caffe/layers/python_layer.hpp +++ b/include/caffe/layers/python_layer.hpp @@ -21,7 +21,7 @@ class PythonLayer : public Layer { // Disallow PythonLayer in MultiGPU training stage, due to GIL issues // Details: https://github.com/BVLC/caffe/issues/2936 if (this->phase_ == TRAIN && Caffe::solver_count() > 1 - && !Caffe::root_solver() && !Caffe::multiprocess()) { + && !Caffe::multiprocess()) { LOG(FATAL) << "PythonLayer does not support CLI Multi-GPU, use train.py"; } self_.attr("param_str") = bp::str( diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index dde2e9863..43a0c49be 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,5 @@ from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer -from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, Layer, get_solver +from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, set_multiprocess, Layer, get_solver from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 04dac2344..3589e476f 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -359,6 +359,7 @@ BOOST_PYTHON_MODULE(_caffe) { bp::def("set_solver_count", &Caffe::set_solver_count); bp::def("solver_rank", &Caffe::solver_rank); bp::def("set_solver_rank", &Caffe::set_solver_rank); + bp::def("set_multiprocess", &Caffe::set_multiprocess); bp::def("layer_type_list", &LayerRegistry::LayerTypeList); diff --git a/python/train.py b/python/train.py index 730dbe701..5897f5dcb 100644 --- a/python/train.py +++ b/python/train.py @@ -44,10 +44,10 @@ def show_time(): if solver.iter % display == 0: s = '\n' for i in range(len(solver.net.layers)): - s += 'forw %3d %8s ' % (i, solver.net.layers[i].layer_param.name) + s += 'forw %3d %8s ' % (i, solver.net._layer_names[i]) s += ': %.2f\n' % fprop[i].ms for i in range(len(solver.net.layers) - 1, -1, -1): - s += 'back %3d %8s ' % (i, solver.net.layers[i].layer_param.name) + s += 'back %3d %8s ' % (i, solver.net._layer_names[i]) s += ': %.2f\n' % bprop[i].ms s += 'solver total: %.2f\n' % total.ms s += 'allreduce: %.2f\n' % allrd.ms @@ -67,6 +67,7 @@ def solve(proto, snapshot, gpus, timing, uid, rank): caffe.set_device(gpus[rank]) caffe.set_solver_count(len(gpus)) caffe.set_solver_rank(rank) + caffe.set_multiprocess(True) solver = caffe.SGDSolver(proto) if snapshot and len(snapshot) != 0: From 5f28eb1147c1abb6e5e5c7cd282218679b0d531d Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Wed, 4 Jan 2017 00:25:00 -0800 Subject: [PATCH 375/458] Using default from proto for prefetch --- include/caffe/layers/base_data_layer.hpp | 3 --- src/caffe/layers/base_data_layer.cpp | 3 +-- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/include/caffe/layers/base_data_layer.hpp b/include/caffe/layers/base_data_layer.hpp index 925b019d4..21d3ada50 100644 --- a/include/caffe/layers/base_data_layer.hpp +++ b/include/caffe/layers/base_data_layer.hpp @@ -67,9 +67,6 @@ class BasePrefetchingDataLayer : virtual void Forward_gpu(const vector*>& bottom, const vector*>& top); - // Prefetches batches (asynchronously if to GPU memory) - static const int PREFETCH_COUNT = 4; // same as proto - protected: virtual void InternalThreadEntry(); virtual void load_batch(Batch* batch) = 0; diff --git a/src/caffe/layers/base_data_layer.cpp b/src/caffe/layers/base_data_layer.cpp index 9414f6f98..93a798f35 100644 --- a/src/caffe/layers/base_data_layer.cpp +++ b/src/caffe/layers/base_data_layer.cpp @@ -36,8 +36,7 @@ template BasePrefetchingDataLayer::BasePrefetchingDataLayer( const LayerParameter& param) : BaseDataLayer(param), - prefetch_(param.has_data_param() ? - param.data_param().prefetch() : PREFETCH_COUNT), + prefetch_(param.data_param().prefetch()), prefetch_free_(), prefetch_full_(), prefetch_current_() { for (int i = 0; i < prefetch_.size(); ++i) { prefetch_[i].reset(new Batch()); From 8e63bb6ef1537db2d94ddf2dc084020af5c8727d Mon Sep 17 00:00:00 2001 From: Fan Yang Date: Thu, 12 Jan 2017 15:26:07 +0800 Subject: [PATCH 376/458] minor typo --- models/bvlc_googlenet/train_val.prototxt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 models/bvlc_googlenet/train_val.prototxt diff --git a/models/bvlc_googlenet/train_val.prototxt b/models/bvlc_googlenet/train_val.prototxt old mode 100644 new mode 100755 index 5dee3abe2..5fe367f22 --- a/models/bvlc_googlenet/train_val.prototxt +++ b/models/bvlc_googlenet/train_val.prototxt @@ -1692,7 +1692,7 @@ layer { type: "SoftmaxWithLoss" bottom: "loss2/classifier" bottom: "label" - top: "loss2/loss1" + top: "loss2/loss2" loss_weight: 0.3 } layer { From 91c15e85124ce2b143d2c18ccab5c5740ef4ce31 Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Fri, 13 Jan 2017 14:33:35 -0500 Subject: [PATCH 377/458] Python 2/3 compatible download_model_binary.py --- scripts/download_model_binary.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/download_model_binary.py b/scripts/download_model_binary.py index fcdbb5a91..a72fd5d76 100755 --- a/scripts/download_model_binary.py +++ b/scripts/download_model_binary.py @@ -3,10 +3,11 @@ import sys import time import yaml -import urllib import hashlib import argparse +from six.moves import urllib + required_keys = ['caffemodel', 'caffemodel_url', 'sha1'] @@ -69,7 +70,7 @@ def model_checks_out(filename=model_filename, sha1=frontmatter['sha1']): sys.exit(0) # Download and verify model. - urllib.urlretrieve( + urllib.request.urlretrieve( frontmatter['caffemodel_url'], model_filename, reporthook) if not model_checks_out(): print('ERROR: model did not download correctly! Run this again.') From a19357a190664b1ea99d18e14eedc27e43ebed42 Mon Sep 17 00:00:00 2001 From: shai Date: Sun, 15 Jan 2017 08:54:45 +0000 Subject: [PATCH 378/458] fixing upgrade_proto for BatchNorm layer: be more conservative leave "name" in param, only set lr_mult and decay_mult to zero --- src/caffe/util/upgrade_proto.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/caffe/util/upgrade_proto.cpp b/src/caffe/util/upgrade_proto.cpp index a0aacbe92..94771c8c0 100644 --- a/src/caffe/util/upgrade_proto.cpp +++ b/src/caffe/util/upgrade_proto.cpp @@ -1018,7 +1018,13 @@ void UpgradeNetBatchNorm(NetParameter* net_param) { // the previous BatchNorm layer definition. if (net_param->layer(i).type() == "BatchNorm" && net_param->layer(i).param_size() == 3) { - net_param->mutable_layer(i)->clear_param(); + // set lr_mult and decay_mult to zero. leave all other param intact. + for (int ip = 0; ip < net_param->layer(i).param_size(); ip++) { + ParamSpec* fixed_param_spec = + net_param->mutable_layer(i)->mutable_param(ip); + fixed_param_spec->set_lr_mult(0.f); + fixed_param_spec->set_decay_mult(0.f); + } } } } From ceb25c8abe1e70558d8cc72545e4381cd1b4f273 Mon Sep 17 00:00:00 2001 From: Adam Browne Date: Wed, 18 Jan 2017 15:25:02 -0500 Subject: [PATCH 379/458] Fix various documentation typos (#4172) * fix typo (standaraized->standardized) * fix typo (convet->convert, etc..) * fix typo (incompartible->incompatible) * fix typo (does't->doesn't) * fix typo (decoded->decode) --- cmake/ConfigGen.cmake | 2 +- cmake/Cuda.cmake | 2 +- cmake/Targets.cmake | 6 +++--- examples/CMakeLists.txt | 2 +- src/caffe/data_transformer.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/ConfigGen.cmake b/cmake/ConfigGen.cmake index 056371110..fd9dd2d2b 100644 --- a/cmake/ConfigGen.cmake +++ b/cmake/ConfigGen.cmake @@ -109,7 +109,7 @@ function(caffe_generate_export_configs) # ---[ Configure and install version file ]--- - # TODO: Lines below are commented because Caffe does't declare its version in headers. + # TODO: Lines below are commented because Caffe doesn't declare its version in headers. # When the declarations are added, modify `caffe_extract_caffe_version()` macro and uncomment # configure_file(cmake/Templates/CaffeConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CaffeConfigVersion.cmake" @ONLY) diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index 7146a2445..0fbf30187 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -284,7 +284,7 @@ mark_as_advanced(CUDA_SDK_ROOT_DIR CUDA_SEPARABLE_COMPILATION) if(APPLE) caffe_detect_darwin_version(OSX_VERSION) - # OSX 10.9 and higher uses clang/libc++ by default which is incompartible with old CUDA toolkits + # OSX 10.9 and higher uses clang/libc++ by default which is incompatible with old CUDA toolkits if(OSX_VERSION VERSION_GREATER 10.8) # enabled by default if and only if CUDA version is less than 7.0 caffe_option(USE_libstdcpp "Use libstdc++ instead of libc++" (CUDA_VERSION VERSION_LESS 7.0)) diff --git a/cmake/Targets.cmake b/cmake/Targets.cmake index 2cb11584a..090f86c55 100644 --- a/cmake/Targets.cmake +++ b/cmake/Targets.cmake @@ -88,7 +88,7 @@ function(caffe_pickup_caffe_sources root) file(GLOB_RECURSE proto_files ${root}/src/caffe/*.proto) list(APPEND srcs ${proto_files}) - # convet to absolute paths + # convert to absolute paths caffe_convert_absolute_paths(srcs) caffe_convert_absolute_paths(cuda) caffe_convert_absolute_paths(test_srcs) @@ -102,7 +102,7 @@ function(caffe_pickup_caffe_sources root) endfunction() ################################################################################################ -# Short command for setting defeault target properties +# Short command for setting default target properties # Usage: # caffe_default_properties() function(caffe_default_properties target) @@ -111,7 +111,7 @@ function(caffe_default_properties target) ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib" LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib" RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") - # make sure we build all external depepdencies first + # make sure we build all external dependencies first if (DEFINED external_project_dependencies) add_dependencies(${target} ${external_project_dependencies}) endif() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 663d7360b..a59e0df36 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -23,7 +23,7 @@ foreach(source_file ${examples_srcs}) if(UNIX OR APPLE) # Funny command to make tutorials work - # TODO: remove in future as soon as naming is standartaized everywhere + # TODO: remove in future as soon as naming is standardized everywhere set(__outname ${PROJECT_BINARY_DIR}/examples/${folder}/${name}${Caffe_POSTFIX}) add_custom_command(TARGET ${name} POST_BUILD COMMAND ln -sf "${__outname}" "${__outname}.bin") diff --git a/src/caffe/data_transformer.cpp b/src/caffe/data_transformer.cpp index 7189d67e2..3012251e0 100644 --- a/src/caffe/data_transformer.cpp +++ b/src/caffe/data_transformer.cpp @@ -130,7 +130,7 @@ void DataTransformer::Transform(const Datum& datum, template void DataTransformer::Transform(const Datum& datum, Blob* transformed_blob) { - // If datum is encoded, decoded and transform the cv::image. + // If datum is encoded, decode and transform the cv::image. if (datum.encoded()) { #ifdef USE_OPENCV CHECK(!(param_.force_color() && param_.force_gray())) From e744056d8f7ebcf7f0410a52d801d9ca552f69ad Mon Sep 17 00:00:00 2001 From: xmyqsh Date: Thu, 19 Jan 2017 05:19:48 +0800 Subject: [PATCH 380/458] remove redundant operations in Crop layer (#5138) --- src/caffe/layers/crop_layer.cpp | 40 ++++++++++++++++----------------- src/caffe/layers/crop_layer.cu | 22 +++++++----------- 2 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index d36b61ca0..ef8c177c4 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -86,27 +86,25 @@ void CropLayer::crop_copy(const vector*>& bottom, } } else { // We are at the last dimensions, which is stored continuously in memory - for (int i = 0; i < top[0]->shape(cur_dim); ++i) { - // prepare index vector reduced(red) and with offsets(off) - std::vector ind_red(cur_dim, 0); - std::vector ind_off(cur_dim+1, 0); - for (int j = 0; j < cur_dim; ++j) { - ind_red[j] = indices[j]; - ind_off[j] = indices[j] + offsets[j]; - } - ind_off[cur_dim] = offsets[cur_dim]; - // do the copy - if (is_forward) { - caffe_copy(top[0]->shape(cur_dim), - src_data + bottom[0]->offset(ind_off), - dest_data + top[0]->offset(ind_red)); - } else { - // in the backwards pass the src_data is top_diff - // and the dest_data is bottom_diff - caffe_copy(top[0]->shape(cur_dim), - src_data + top[0]->offset(ind_red), - dest_data + bottom[0]->offset(ind_off)); - } + // prepare index vector reduced(red) and with offsets(off) + std::vector ind_red(cur_dim, 0); + std::vector ind_off(cur_dim+1, 0); + for (int j = 0; j < cur_dim; ++j) { + ind_red[j] = indices[j]; + ind_off[j] = indices[j] + offsets[j]; + } + ind_off[cur_dim] = offsets[cur_dim]; + // do the copy + if (is_forward) { + caffe_copy(top[0]->shape(cur_dim), + src_data + bottom[0]->offset(ind_off), + dest_data + top[0]->offset(ind_red)); + } else { + // in the backwards pass the src_data is top_diff + // and the dest_data is bottom_diff + caffe_copy(top[0]->shape(cur_dim), + src_data + top[0]->offset(ind_red), + dest_data + bottom[0]->offset(ind_off)); } } } diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 1ea132531..677077cdd 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -8,14 +8,12 @@ namespace caffe { // strides in the last two dimensions. template __global__ void copy_kernel(const int n, const int height, const int width, - const int src_outer_stride, const int src_inner_stride, - const int dest_outer_stride, const int dest_inner_stride, + const int src_inner_stride, + const int dest_inner_stride, const Dtype* src, Dtype* dest) { CUDA_KERNEL_LOOP(index, n) { - int src_start = index / height * src_outer_stride - + index % height * src_inner_stride; - int dest_start = index / height * dest_outer_stride - + index % height * dest_inner_stride; + int src_start = index * src_inner_stride; + int dest_start = index * dest_inner_stride; for (int i = 0; i < width; ++i) { dest[dest_start + i] = src[src_start + i]; } @@ -53,11 +51,7 @@ void CropLayer::crop_copy_gpu(const vector*>& bottom, ind_off[cur_dim] = offsets[cur_dim]; ind_off[cur_dim+1] = offsets[cur_dim+1]; // Compute copy strides - const int src_outer_stride = - bottom[0]->shape(cur_dim)*bottom[0]->shape(cur_dim+1); const int src_inner_stride = bottom[0]->shape(cur_dim+1); - const int dest_outer_stride = - top[0]->shape(cur_dim)*top[0]->shape(cur_dim+1); const int dest_inner_stride = top[0]->shape(cur_dim+1); if (is_forward) { @@ -68,8 +62,8 @@ void CropLayer::crop_copy_gpu(const vector*>& bottom, // NOLINT_NEXT_LINE(whitespace/operators) copy_kernel<<>>( lines, height, width, - src_outer_stride, src_inner_stride, - dest_outer_stride, dest_inner_stride, + src_inner_stride, + dest_inner_stride, bottom_data, top_data); } else { @@ -80,8 +74,8 @@ void CropLayer::crop_copy_gpu(const vector*>& bottom, // NOLINT_NEXT_LINE(whitespace/operators) copy_kernel<<>>( lines, height, width, - dest_outer_stride, dest_inner_stride, - src_outer_stride, src_inner_stride, + dest_inner_stride, + src_inner_stride, top_diff, bottom_diff); } } From 9b9f6d02ccb664b7f17ce2d3d17072ba578cac09 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Wed, 18 Jan 2017 16:03:55 -0800 Subject: [PATCH 381/458] [build] remove trailing backslash on comment --- Makefile.config.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.config.example b/Makefile.config.example index 541cf8077..b590bd16c 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -68,7 +68,7 @@ PYTHON_INCLUDE := /usr/include/python2.7 \ # ANACONDA_HOME := $(HOME)/anaconda # PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ # $(ANACONDA_HOME)/include/python2.7 \ - # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ + # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include # Uncomment to use Python 3 (default is Python 2) # PYTHON_LIBRARIES := boost_python3 python3.5m From ff3158a3d0f974a15981dfdbaa95c11ec2cee097 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 18 Jan 2017 17:39:35 -0800 Subject: [PATCH 382/458] ignore generated includes for docs --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 281ef3266..eff292b7f 100644 --- a/.gitignore +++ b/.gitignore @@ -84,6 +84,7 @@ cmake_build # Generated documentation docs/_site +docs/_includes docs/gathered _site doxygen From 9ab67099e08c03bf57e6a67538ca4746365beda8 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 18 Jan 2017 17:40:36 -0800 Subject: [PATCH 383/458] copyright spans 2014-2017 --- LICENSE | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index d69d16f5b..0c99adc18 100644 --- a/LICENSE +++ b/LICENSE @@ -1,11 +1,11 @@ COPYRIGHT All contributions by the University of California: -Copyright (c) 2014, 2015, The Regents of the University of California (Regents) +Copyright (c) 2014-2017 The Regents of the University of California (Regents) All rights reserved. All other contributions: -Copyright (c) 2014, 2015, the respective contributors +Copyright (c) 2014-2017, the respective contributors All rights reserved. Caffe uses a shared copyright model: each contributor holds copyright over From 4056f79f9d8ebf261db45883470a0e2939f725e9 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Tue, 17 Jan 2017 20:10:15 -0800 Subject: [PATCH 384/458] Docker refresh: simplified & update to 16.04, cuda8, cudnn5, nccl --- docker/Makefile | 50 ------------------ docker/README.md | 70 ++++++++++++-------------- docker/{standalone => }/cpu/Dockerfile | 12 +++-- docker/{standalone => }/gpu/Dockerfile | 15 +++--- docker/templates/Dockerfile.template | 42 ---------------- 5 files changed, 49 insertions(+), 140 deletions(-) delete mode 100644 docker/Makefile rename docker/{standalone => }/cpu/Dockerfile (76%) rename docker/{standalone => }/gpu/Dockerfile (66%) delete mode 100644 docker/templates/Dockerfile.template diff --git a/docker/Makefile b/docker/Makefile deleted file mode 100644 index 3a6575b0c..000000000 --- a/docker/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# A makefile to build the docker images for caffe. -# Two caffe images will be built: -# caffe:cpu --> A CPU-only build of caffe. -# caffe:gpu --> A GPU-enabled build using the latest CUDA and CUDNN versions. - -DOCKER ?= docker - -all: docker_files standalone - -.PHONY: standalone devel - -standalone: cpu_standalone gpu_standalone - - -cpu_standalone: standalone/cpu/Dockerfile - $(DOCKER) build -t caffe:cpu standalone/cpu - -gpu_standalone: standalone/gpu/Dockerfile - $(DOCKER) build -t caffe:gpu standalone/gpu - -docker_files: standalone_files - -standalone_files: standalone/cpu/Dockerfile standalone/gpu/Dockerfile - -FROM_GPU = "nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04" -FROM_CPU = "ubuntu:14.04" -GPU_CMAKE_ARGS = -DUSE_CUDNN=1 -CPU_CMAKE_ARGS = -DCPU_ONLY=1 - -# A make macro to select the CPU or GPU base image. -define from_image -$(if $(strip $(findstring gpu,$@)),$(FROM_GPU),$(FROM_CPU)) -endef - -# A make macro to select the CPU or GPU build args. -define build_args -$(if $(strip $(findstring gpu,$@)),$(GPU_CMAKE_ARGS),$(CPU_CMAKE_ARGS)) -endef - -# A make macro to construct the CPU or GPU Dockerfile from the template -define create_docker_file - @echo creating $@ - @echo "FROM "$(from_image) > $@ - @cat $^ | sed 's/$${CMAKE_ARGS}/$(build_args)/' >> $@ -endef - - -standalone/%/Dockerfile: templates/Dockerfile.template - $(create_docker_file) - diff --git a/docker/README.md b/docker/README.md index fdab641bd..11c181579 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,52 +1,48 @@ -# Caffe standalone Dockerfiles. +### Running an official image -The `standalone` subfolder contains docker files for generating both CPU and GPU executable images for Caffe. The images can be built using make, or by running: +You can run one of the automatic [builds](https://hub.docker.com/r/bvlc/caffe) +like this: -``` -docker build -t caffe:cpu standalone/cpu -``` -for example. (Here `gpu` can be substituted for `cpu`, but to keep the readme simple, only the `cpu` case will be discussed in detail). +`docker run -ti bvlc/caffe caffe --version` -Note that the GPU standalone requires a CUDA 7.5 capable driver to be installed on the system and [nvidia-docker] for running the Docker containers. Here it is generally sufficient to use `nvidia-docker` instead of `docker` in any of the commands mentioned. +or for GPU support (You need a CUDA 8.0 capable driver and +[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)): -# Running Caffe using the docker image +`nvidia-docker run -ti bvlc/caffe:gpu caffe --version` -In order to test the Caffe image, run: -``` -docker run -ti caffe:cpu caffe --version -``` -which should show a message like: -``` -libdc1394 error: Failed to initialize libdc1394 -caffe version 1.0.0-rc3 -``` +You might see an error about libdc1394, ignore it. -One can also build and run the Caffe tests in the image using: -``` -docker run -ti caffe:cpu bash -c "cd /opt/caffe/build; make runtest" -``` +### Docker run options -In order to get the most out of the caffe image, some more advanced `docker run` options could be used. For example, running: -``` -docker run -ti --volume=$(pwd):/workspace caffe:cpu caffe train --solver=example_solver.prototxt -``` -will train a network defined in the `example_solver.prototxt` file in the current directory (`$(pwd)` is maped to the container volume `/workspace` using the `--volume=` Docker flag). +By default caffe runs as root, thus any output files, e.g. snapshots, will be owned +by root. It also runs by default in a container-private folder. -Note that docker runs all commands as root by default, and thus any output files (e.g. snapshots) generated will be owned by the root user. In order to ensure that the current user is used instead, the following command can be used: -``` -docker run -ti --volume=$(pwd):/workspace -u $(id -u):$(id -g) caffe:cpu caffe train --solver=example_solver.prototxt -``` -where the `-u` Docker command line option runs the commands in the container as the specified user, and the shell command `id` is used to determine the user and group ID of the current user. Note that the Caffe docker images have `/workspace` defined as the default working directory. This can be overridden using the `--workdir=` Docker command line option. +You can change this using flags, like user (-u), current directory, and volumes (-w and -v). +E.g. this behaves like the usual caffe executable: -# Other use-cases +`docker run --rm -u $(id -u):$(id -g) -v $(pwd):$(pwd) -w $(pwd) bvlc/caffe caffe train --solver=example_solver.prototxt` -Although running the `caffe` command in the docker containers as described above serves many purposes, the container can also be used for more interactive use cases. For example, specifying `bash` as the command instead of `caffe` yields a shell that can be used for interactive tasks. (Since the caffe build requirements are included in the container, this can also be used to build and run local versions of caffe). +Containers can also be used interactively, specifying e.g. `bash` or `ipython` +instead of `caffe`. -Another use case is to run python scripts that depend on `caffe`'s Python modules. Using the `python` command instead of `bash` or `caffe` will allow this, and an interactive interpreter can be started by running: ``` -docker run -ti caffe:cpu python +docker run -ti bvlc/caffe ipython +import caffe +... ``` -(`ipython` is also available in the container). -Since the `caffe/python` folder is also added to the path, the utility executable scripts defined there can also be used as executables. This includes `draw_net.py`, `classify.py`, and `detect.py` +The caffe build requirements are included in the container, so this can be used to +build and run custom versions of caffe. Also, `caffe/python` is in PATH, so python +utilities can be used directly, e.g. `draw_net.py`, `classify.py`, or `detect.py`. + +### Building images yourself + +Examples: + +`docker build -t caffe cpu` + +`docker build -t caffe:gpu gpu` + +You can also build Caffe and run the tests in the image: +`docker run -ti caffe bash -c "cd /opt/caffe/build; make runtest"` diff --git a/docker/standalone/cpu/Dockerfile b/docker/cpu/Dockerfile similarity index 76% rename from docker/standalone/cpu/Dockerfile rename to docker/cpu/Dockerfile index 4fef25aa6..af6c03c65 100644 --- a/docker/standalone/cpu/Dockerfile +++ b/docker/cpu/Dockerfile @@ -1,5 +1,5 @@ -FROM ubuntu:14.04 -MAINTAINER caffe-maint@googlegroups.com +FROM ubuntu:16.04 +LABEL maintainer caffe-maint@googlegroups.com RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ @@ -20,17 +20,19 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ python-dev \ python-numpy \ python-pip \ + python-setuptools \ python-scipy && \ rm -rf /var/lib/apt/lists/* ENV CAFFE_ROOT=/opt/caffe WORKDIR $CAFFE_ROOT -# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this. -ENV CLONE_TAG=master +# FIXME: use ARG instead of ENV once DockerHub supports this +ENV CLONE_TAG=rc4 RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ - for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ + pip install --upgrade pip && \ + cd python && for req in $(cat requirements.txt) pydot; do pip install $req; done && cd .. && \ mkdir build && cd build && \ cmake -DCPU_ONLY=1 .. && \ make -j"$(nproc)" diff --git a/docker/standalone/gpu/Dockerfile b/docker/gpu/Dockerfile similarity index 66% rename from docker/standalone/gpu/Dockerfile rename to docker/gpu/Dockerfile index daf6a7223..0785b10f1 100644 --- a/docker/standalone/gpu/Dockerfile +++ b/docker/gpu/Dockerfile @@ -1,5 +1,5 @@ -FROM nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04 -MAINTAINER caffe-maint@googlegroups.com +FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 +LABEL maintainer caffe-maint@googlegroups.com RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ @@ -20,19 +20,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ python-dev \ python-numpy \ python-pip \ + python-setuptools \ python-scipy && \ rm -rf /var/lib/apt/lists/* ENV CAFFE_ROOT=/opt/caffe WORKDIR $CAFFE_ROOT -# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this. -ENV CLONE_TAG=master +# FIXME: use ARG instead of ENV once DockerHub supports this +ENV CLONE_TAG=rc4 RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ - for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ + pip install --upgrade pip && \ + cd python && for req in $(cat requirements.txt) pydot; do pip install $req; done && cd .. && \ + git clone https://github.com/NVIDIA/nccl.git && cd nccl && make -j install && cd .. && rm -rf nccl && \ mkdir build && cd build && \ - cmake -DUSE_CUDNN=1 .. && \ + cmake -DUSE_CUDNN=1 -DUSE_NCCL=1 .. && \ make -j"$(nproc)" ENV PYCAFFE_ROOT $CAFFE_ROOT/python diff --git a/docker/templates/Dockerfile.template b/docker/templates/Dockerfile.template deleted file mode 100644 index 8834f0579..000000000 --- a/docker/templates/Dockerfile.template +++ /dev/null @@ -1,42 +0,0 @@ -MAINTAINER caffe-maint@googlegroups.com - -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential \ - cmake \ - git \ - wget \ - libatlas-base-dev \ - libboost-all-dev \ - libgflags-dev \ - libgoogle-glog-dev \ - libhdf5-serial-dev \ - libleveldb-dev \ - liblmdb-dev \ - libopencv-dev \ - libprotobuf-dev \ - libsnappy-dev \ - protobuf-compiler \ - python-dev \ - python-numpy \ - python-pip \ - python-scipy && \ - rm -rf /var/lib/apt/lists/* - -ENV CAFFE_ROOT=/opt/caffe -WORKDIR $CAFFE_ROOT - -# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this. -ENV CLONE_TAG=master - -RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ - for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \ - mkdir build && cd build && \ - cmake ${CMAKE_ARGS} .. && \ - make -j"$(nproc)" - -ENV PYCAFFE_ROOT $CAFFE_ROOT/python -ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH -ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH -RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig - -WORKDIR /workspace From 135440371c7cb2932d5c1e8e671e0d2e231fd2cc Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Sat, 21 Jan 2017 03:06:38 +0000 Subject: [PATCH 385/458] cmake: bump soversion to rc4 --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3af394f7a..15a7fe46f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ endif() project(Caffe C CXX) # ---[ Caffe version -set(CAFFE_TARGET_VERSION "1.0.0-rc3" CACHE STRING "Caffe logical version") -set(CAFFE_TARGET_SOVERSION "1.0.0-rc3" CACHE STRING "Caffe soname version") +set(CAFFE_TARGET_VERSION "1.0.0-rc4" CACHE STRING "Caffe logical version") +set(CAFFE_TARGET_SOVERSION "1.0.0-rc4" CACHE STRING "Caffe soname version") add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) # ---[ Using cmake scripts and modules From 3a0b6c6e75ca17bae4c728c6987dc5db1e380ce6 Mon Sep 17 00:00:00 2001 From: Fyodor Tokarev Date: Sat, 21 Jan 2017 15:12:38 +0300 Subject: [PATCH 386/458] Update a comment in caffe.proto --- src/caffe/proto/caffe.proto | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 430a0dea1..815ead353 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -128,8 +128,7 @@ message SolverParameter { // The states for the train/test nets. Must be unspecified or // specified once per net. // - // By default, all states will have solver = true; - // train_state will have phase = TRAIN, + // By default, train_state will have phase = TRAIN, // and all test_state's will have phase = TEST. // Other defaults are set according to the NetState defaults. optional NetState train_state = 26; From e0cd85237c9ea756cf6bd35b8b0e3432ea3e5273 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Mon, 23 Jan 2017 10:31:26 -0800 Subject: [PATCH 387/458] Restore can be invoked on rank > 0 --- src/caffe/solver.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 1c1a9e595..fd4c03724 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -462,7 +462,6 @@ string Solver::SnapshotToHDF5() { template void Solver::Restore(const char* state_file) { - CHECK(Caffe::root_solver()); string state_filename(state_file); if (state_filename.size() >= 3 && state_filename.compare(state_filename.size() - 3, 3, ".h5") == 0) { From 29f0cdb9d785459126516dc58f755af5b486cf71 Mon Sep 17 00:00:00 2001 From: Ken Schutte Date: Tue, 24 Jan 2017 10:45:52 -0600 Subject: [PATCH 388/458] parse_log.py was not using --verbose argument --- tools/extra/parse_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/extra/parse_log.py b/tools/extra/parse_log.py index b47ffd0d8..4248e2b87 100755 --- a/tools/extra/parse_log.py +++ b/tools/extra/parse_log.py @@ -203,7 +203,7 @@ def main(): args = parse_args() train_dict_list, test_dict_list = parse_log(args.logfile_path) save_csv_files(args.logfile_path, args.output_dir, train_dict_list, - test_dict_list, delimiter=args.delimiter) + test_dict_list, delimiter=args.delimiter, verbose=args.verbose) if __name__ == '__main__': From 6bf10afd20f91366909318fe4e85a098bb742f58 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Fri, 20 Jan 2017 11:53:12 +0000 Subject: [PATCH 389/458] Fix broken links in layer documentation, minor fixes. --- docs/tutorial/layers/accuracy.md | 3 +-- docs/tutorial/layers/argmax.md | 3 +-- docs/tutorial/layers/infogainloss.md | 5 ++--- docs/tutorial/layers/lrn.md | 4 ++-- docs/tutorial/layers/memorydata.md | 2 +- docs/tutorial/layers/multinomiallogisticloss.md | 2 +- docs/tutorial/layers/silence.md | 8 +------- 7 files changed, 9 insertions(+), 18 deletions(-) diff --git a/docs/tutorial/layers/accuracy.md b/docs/tutorial/layers/accuracy.md index ecf84090e..80293b1c6 100644 --- a/docs/tutorial/layers/accuracy.md +++ b/docs/tutorial/layers/accuracy.md @@ -10,7 +10,6 @@ title: Accuracy and Top-k * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1AccuracyLayer.html) * Header: [`./include/caffe/layers/accuracy_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/accuracy_layer.hpp) * CPU implementation: [`./src/caffe/layers/accuracy_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/accuracy_layer.cpp) -* CUDA GPU implementation: [`./src/caffe/layers/accuracy_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/accuracy_layer.cu) ## Parameters * Parameters (`AccuracyParameter accuracy_param`) @@ -18,4 +17,4 @@ title: Accuracy and Top-k {% highlight Protobuf %} {% include proto/AccuracyParameter.txt %} -{% endhighlight %} \ No newline at end of file +{% endhighlight %} diff --git a/docs/tutorial/layers/argmax.md b/docs/tutorial/layers/argmax.md index f5f173ac7..9eb8b7739 100644 --- a/docs/tutorial/layers/argmax.md +++ b/docs/tutorial/layers/argmax.md @@ -8,7 +8,6 @@ title: ArgMax Layer * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1ArgMaxLayer.html) * Header: [`./include/caffe/layers/argmax_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/argmax_layer.hpp) * CPU implementation: [`./src/caffe/layers/argmax_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/argmax_layer.cpp) -* CUDA GPU implementation: [`./src/caffe/layers/argmax_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/argmax_layer.cu) ## Parameters * Parameters (`ArgMaxParameter argmax_param`) @@ -16,4 +15,4 @@ title: ArgMax Layer {% highlight Protobuf %} {% include proto/ArgMaxParameter.txt %} -{% endhighlight %} \ No newline at end of file +{% endhighlight %} diff --git a/docs/tutorial/layers/infogainloss.md b/docs/tutorial/layers/infogainloss.md index 86140b6cc..b3b690d26 100644 --- a/docs/tutorial/layers/infogainloss.md +++ b/docs/tutorial/layers/infogainloss.md @@ -8,11 +8,10 @@ title: Infogain Loss Layer * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1InfogainLossLayer.html) * Header: [`./include/caffe/layers/infogain_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/infogain_loss_layer.hpp) * CPU implementation: [`./src/caffe/layers/infogain_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/infogain_loss_layer.cpp) -* CUDA GPU implementation: [`./src/caffe/layers/infogain_loss_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/infogain_loss_layer.cu) -A generalization of [MultinomialLogisticLossLayer](layers/multinomiallogisticloss.md) that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. +A generalization of [MultinomialLogisticLossLayer](multinomiallogisticloss.html) that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. -Equivalent to the [MultinomialLogisticLossLayer](layers/multinomiallogisticloss.md) if the infogain matrix is the identity. +Equivalent to the [MultinomialLogisticLossLayer](multinomiallogisticloss.html) if the infogain matrix is the identity. ## Parameters diff --git a/docs/tutorial/layers/lrn.md b/docs/tutorial/layers/lrn.md index 387311c22..2fbef7346 100644 --- a/docs/tutorial/layers/lrn.md +++ b/docs/tutorial/layers/lrn.md @@ -20,9 +20,9 @@ The local response normalization layer performs a kind of "lateral inhibition" b ## Parameters -* Parameters (`Parameter lrn_param`) +* Parameters (`LRNParameter lrn_param`) * From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): {% highlight Protobuf %} -{% include proto/BatchNormParameter.txt %} +{% include proto/LRNParameter.txt %} {% endhighlight %} diff --git a/docs/tutorial/layers/memorydata.md b/docs/tutorial/layers/memorydata.md index 754e62aef..afce4a24a 100644 --- a/docs/tutorial/layers/memorydata.md +++ b/docs/tutorial/layers/memorydata.md @@ -7,7 +7,7 @@ title: Memory Data Layer * Layer type: `MemoryData` * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MemoryDataLayer.html) * Header: [`./include/caffe/layers/memory_data_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/memory_data_layer.hpp) -* CPU implementation: [`./src/caffe/layers/memory_data_layer.cpu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/memory_data_layer.cpu) +* CPU implementation: [`./src/caffe/layers/memory_data_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/memory_data_layer.cpp) The memory data layer reads data directly from memory, without copying it. In order to use it, one must call `MemoryDataLayer::Reset` (from C++) or `Net.set_input_arrays` (from Python) in order to specify a source of contiguous data (as 4D row major array), which is read one batch-sized chunk at a time. diff --git a/docs/tutorial/layers/multinomiallogisticloss.md b/docs/tutorial/layers/multinomiallogisticloss.md index a28ab9148..5eab74a8a 100644 --- a/docs/tutorial/layers/multinomiallogisticloss.md +++ b/docs/tutorial/layers/multinomiallogisticloss.md @@ -7,7 +7,7 @@ title: Multinomial Logistic Loss Layer * Layer type: `MultinomialLogisticLoss` * [Doxygen Documentation](http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html) * Header: [`./include/caffe/layers/multinomial_logistic_loss_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/multinomial_logistic_loss_layer.hpp) -* CPU implementation: [`./src/caffe/layers/multinomial_logistic_loss_layer.cpu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/multinomial_logistic_loss_layer.cpu) +* CPU implementation: [`./src/caffe/layers/multinomial_logistic_loss_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/multinomial_logistic_loss_layer.cpp) ## Parameters diff --git a/docs/tutorial/layers/silence.md b/docs/tutorial/layers/silence.md index 2c37a9cd6..8b4579a99 100644 --- a/docs/tutorial/layers/silence.md +++ b/docs/tutorial/layers/silence.md @@ -14,10 +14,4 @@ Silences a blob, so that it is not printed. ## Parameters -* Parameters (`SilenceParameter silence_param`) -* From [`./src/caffe/proto/caffe.proto`](https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto): - -{% highlight Protobuf %} -{% include proto/BatchNormParameter.txt %} -{% endhighlight %} - +No parameters. From 7b5731c6a68b6a9372c00eb8e13c697f832d8d1b Mon Sep 17 00:00:00 2001 From: Wenbo Yang Date: Mon, 30 Jan 2017 16:33:20 +0800 Subject: [PATCH 390/458] Remove sdk version from veclib searching path. --- cmake/Modules/FindvecLib.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/FindvecLib.cmake b/cmake/Modules/FindvecLib.cmake index 460433673..8eaab5947 100644 --- a/cmake/Modules/FindvecLib.cmake +++ b/cmake/Modules/FindvecLib.cmake @@ -16,7 +16,7 @@ find_path(vecLib_INCLUDE_DIR vecLib.h DOC "vecLib include directory" PATHS /System/Library/Frameworks/Accelerate.framework/Versions/Current/${__veclib_include_suffix} /System/Library/${__veclib_include_suffix} - /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers/ NO_DEFAULT_PATH) include(FindPackageHandleStandardArgs) From cd89d4b567529de086e409b66390c961624a84b3 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Wed, 1 Feb 2017 11:21:00 +0000 Subject: [PATCH 391/458] docs: update install_apt_debian guide --- docs/install_apt_debian.md | 76 ++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/docs/install_apt_debian.md b/docs/install_apt_debian.md index 0d39e3ae2..65fe70924 100644 --- a/docs/install_apt_debian.md +++ b/docs/install_apt_debian.md @@ -5,13 +5,13 @@ title: "Installation: Debian" # Debian Installation Caffe packages are available for several Debian versions, as shown in the -following chart +following chart: ``` Your Distro | CPU_ONLY | CUDA | Alias ----------------+------------+--------+------------------- Debian/stable | ✘ | ✘ | Debian Jessie -Debian/testing | ✔ | ☐ | Debian Stretch/Sid +Debian/testing | ✔ | ✔ | Debian Stretch/Sid Debian/unstable | ✔ | ✔ | Debian Sid ``` @@ -19,30 +19,32 @@ Debian/unstable | ✔ | ✔ | Debian Sid * `✔ ` You can install caffe with a single command line following this guide. -* `☐ ` The same with `✔ `. However it will not work any more when Debian/Stretch becomes the stable branch. - -Last update: 2017-01-05 +Last update: 2017-02-01 ## Binary installation with APT Apart from the installation methods based on source, Debian/unstable -and Debian/testing users can install pre-compiled Caffe packages via the official archive. +and Debian/testing users can install pre-compiled Caffe packages from +the official archive. + +Make sure that your `/etc/apt/sources.list` contains `contrib` and `non-free` +sections if you want to install the CUDA version, for instance: -Make sure that there is something like the follows in your `/etc/apt/sources.list`: ``` -deb http://MIRROR/debian CODENAME main contrib non-free +deb http://ftp2.cn.debian.org/debian sid main contrib non-free ``` -where `MIRROR` is your favorate Debian mirror, and `CODENAME ∈ {testing,stretch,sid}`. Then we update APT cache and directly install Caffe. Note, the cpu version and -the cuda version cannot be installed at the same time. +the cuda version cannot coexist. + ``` -# apt update -# apt install [ caffe-cpu | caffe-cuda ] -# caffe # command line interface working -# python3 -c 'import caffe; print(caffe.__path__)' # python3 interface working +$ sudo apt update +$ sudo apt install [ caffe-cpu | caffe-cuda ] +$ caffe # command line interface working +$ python3 -c 'import caffe; print(caffe.__path__)' # python3 interface working ``` -It should work out of box. + +These Caffe packages should work for you out of box. #### Customizing caffe packages @@ -50,46 +52,49 @@ Some users may need to customize the Caffe package. The way to customize the package is beyond this guide. Here is only a brief guide of producing the customized `.deb` packages. -Make sure that there is something like this in your `/etc/apt/sources.list`: +Make sure that there is a `dec-src` source in your `/etc/apt/sources.list`, +for instance: + ``` deb http://ftp2.cn.debian.org/debian sid main contrib non-free deb-src http://ftp2.cn.debian.org/debian sid main contrib non-free ``` Then we build caffe deb files with the following commands: + ``` $ sudo apt update -$ sudo apt install build-essential debhelper devscripts # standard package building tools -$ sudo apt build-dep [ caffe-cpu | caffe-cuda ] # the most elegant way to pull caffe build dependencies -$ apt source [ caffe-cpu | caffe-cuda ] # download the source tarball and extract +$ sudo apt install build-essential debhelper devscripts # standard package building tools +$ sudo apt build-dep [ caffe-cpu | caffe-cuda ] # the most elegant way to pull caffe build dependencies +$ apt source [ caffe-cpu | caffe-cuda ] # download the source tarball and extract $ cd caffe-XXXX -[ ... optional, customize caffe code/build ... ] -$ dch -llocal "Modified XXX in order to XXX" # write your one-line changelog -$ debuild -B -j4 # build caffe with 4 parallel jobs (similar to make -j4) +[ ... optional, customizing caffe code/build ... ] +$ dch --local "Modified XXX" # bump package version and write changelog +$ debuild -B -j4 # build caffe with 4 parallel jobs (similar to make -j4) [ ... building ...] -$ debc # optional, if you want to check the package contents -$ sudo debi # optional, install the generated packages +$ debc # optional, if you want to check the package contents +$ sudo debi # optional, install the generated packages +$ ls ../ # optional, you will see the resulting packages ``` -The resulting deb packages can be found under the parent directory of the source tree. -Note, the `dch ...` command line above is for bumping the package version number -and adding an entry to the package changelog. If you would like to write -more than one changelog entry, use subsequent `dch` command (see `man 1 dch`) -instead of manually modifing `debian/changelog` unless you know how to keep its format correct. +It is a BUG if the package failed to build without any change. The changelog will be installed at e.g. `/usr/share/doc/caffe-cpu/changelog.Debian.gz`. ## Source installation -Source installation under Debian/unstable is similar to that of Ubuntu, but +Source installation under Debian/unstable and Debian/testing is similar to that of Ubuntu, but here is a more elegant way to pull caffe build dependencies: + ``` $ sudo apt build-dep [ caffe-cpu | caffe-cuda ] ``` + Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. #### Compiler Combinations -Some users may find their favorate compiler doesn't work well with CUDA. +Some users may find their favorate compiler doesn't work with CUDA. + ``` CXX compiler | CUDA 7.5 | CUDA 8.0 | -------------+------------+------------+- @@ -144,12 +149,13 @@ and hack the packaging scripts, then build your customized package. * Where are the examples, the models and other documentation stuff? ``` -sudo apt install caffe-doc -dpkg -L caffe-doc +$ sudo apt install caffe-doc +$ dpkg -L caffe-doc ``` * Where can I find the Debian package status? -https://tracker.debian.org/pkg/caffe (for the CPU_ONLY version) - +``` +https://tracker.debian.org/pkg/caffe (for the CPU_ONLY version) https://tracker.debian.org/pkg/caffe-contrib (for the CUDA version) +``` From 734702b3703de0368e901644125ddca91bab4cb7 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Wed, 8 Feb 2017 11:42:05 -0800 Subject: [PATCH 392/458] Document switch to explicit flags for docker: cpu / gpu. --- docker/README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docker/README.md b/docker/README.md index 11c181579..f9c7c756f 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,9 +1,8 @@ ### Running an official image -You can run one of the automatic [builds](https://hub.docker.com/r/bvlc/caffe) -like this: +You can run one of the automatic [builds](https://hub.docker.com/r/bvlc/caffe). E.g. for the CPU version: -`docker run -ti bvlc/caffe caffe --version` +`docker run -ti bvlc/caffe:cpu caffe --version` or for GPU support (You need a CUDA 8.0 capable driver and [nvidia-docker](https://github.com/NVIDIA/nvidia-docker)): @@ -20,13 +19,13 @@ by root. It also runs by default in a container-private folder. You can change this using flags, like user (-u), current directory, and volumes (-w and -v). E.g. this behaves like the usual caffe executable: -`docker run --rm -u $(id -u):$(id -g) -v $(pwd):$(pwd) -w $(pwd) bvlc/caffe caffe train --solver=example_solver.prototxt` +`docker run --rm -u $(id -u):$(id -g) -v $(pwd):$(pwd) -w $(pwd) bvlc/caffe:cpu caffe train --solver=example_solver.prototxt` Containers can also be used interactively, specifying e.g. `bash` or `ipython` instead of `caffe`. ``` -docker run -ti bvlc/caffe ipython +docker run -ti bvlc/caffe:cpu ipython import caffe ... ``` @@ -39,10 +38,10 @@ utilities can be used directly, e.g. `draw_net.py`, `classify.py`, or `detect.py Examples: -`docker build -t caffe cpu` +`docker build -t caffe:cpu cpu` `docker build -t caffe:gpu gpu` You can also build Caffe and run the tests in the image: -`docker run -ti caffe bash -c "cd /opt/caffe/build; make runtest"` +`docker run -ti caffe:cpu bash -c "cd /opt/caffe/build; make runtest"` From 9c201e177994e31df430cf01baa3105aa5c00699 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 8 Feb 2017 17:13:53 -0800 Subject: [PATCH 393/458] make: bump version to rc4 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 65d08f7d3..1b73ae0fe 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ LIB_BUILD_DIR := $(BUILD_DIR)/lib STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a DYNAMIC_VERSION_MAJOR := 1 DYNAMIC_VERSION_MINOR := 0 -DYNAMIC_VERSION_REVISION := 0-rc3 +DYNAMIC_VERSION_REVISION := 0-rc4 DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so #DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) From 15dfcc1433441f01b0602474eb068e20e7451dd4 Mon Sep 17 00:00:00 2001 From: Katherine Crowson Date: Thu, 9 Feb 2017 11:40:52 -0800 Subject: [PATCH 394/458] Add Pascal CUDA architectures to Makefile.config.example --- Makefile.config.example | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile.config.example b/Makefile.config.example index b590bd16c..d552b38a9 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -31,13 +31,17 @@ CUDA_DIR := /usr/local/cuda # CUDA_DIR := /usr # CUDA architecture setting: going with all of them. -# For CUDA < 6.0, comment the *_50 lines for compatibility. +# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility. +# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility. CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ -gencode arch=compute_20,code=sm_21 \ -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=sm_50 \ - -gencode arch=compute_50,code=compute_50 + -gencode arch=compute_52,code=sm_52 \ + -gencode arch=compute_60,code=sm_60 \ + -gencode arch=compute_61,code=sm_61 \ + -gencode arch=compute_61,code=compute_61 # BLAS choice: # atlas for ATLAS (default) From 23fca12e579731cf21c783b4a82de3d0a8b6e2cf Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 16 Feb 2017 16:40:18 -0800 Subject: [PATCH 395/458] version bump: rc5 --- CMakeLists.txt | 4 ++-- Makefile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15a7fe46f..32b5bcb47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ endif() project(Caffe C CXX) # ---[ Caffe version -set(CAFFE_TARGET_VERSION "1.0.0-rc4" CACHE STRING "Caffe logical version") -set(CAFFE_TARGET_SOVERSION "1.0.0-rc4" CACHE STRING "Caffe soname version") +set(CAFFE_TARGET_VERSION "1.0.0-rc5" CACHE STRING "Caffe logical version") +set(CAFFE_TARGET_SOVERSION "1.0.0-rc5" CACHE STRING "Caffe soname version") add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) # ---[ Using cmake scripts and modules diff --git a/Makefile b/Makefile index 1b73ae0fe..77900b69b 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ LIB_BUILD_DIR := $(BUILD_DIR)/lib STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a DYNAMIC_VERSION_MAJOR := 1 DYNAMIC_VERSION_MINOR := 0 -DYNAMIC_VERSION_REVISION := 0-rc4 +DYNAMIC_VERSION_REVISION := 0-rc5 DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so #DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) From 85ab6100a122042c7dfd4adaf06f4c0b2e71148d Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 27 Feb 2017 11:54:37 -0800 Subject: [PATCH 396/458] fix broken link to hinge loss --- docs/tutorial/layers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/layers.md b/docs/tutorial/layers.md index a903d5ac9..2faacc583 100644 --- a/docs/tutorial/layers.md +++ b/docs/tutorial/layers.md @@ -128,7 +128,7 @@ Layers: * [Infogain Loss](layers/infogainloss.html) - a generalization of MultinomialLogisticLossLayer. * [Softmax with Loss](layers/softmaxwithloss.html) - computes the multinomial logistic loss of the softmax of its inputs. It's conceptually identical to a softmax layer followed by a multinomial logistic loss layer, but provides a more numerically stable gradient. * [Sum-of-Squares / Euclidean](layers/euclideanloss.html) - computes the sum of squares of differences of its two inputs, $$\frac 1 {2N} \sum_{i=1}^N \| x^1_i - x^2_i \|_2^2$$. -* [Hinge / Margin](layers/hiddenloss.html) - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2). +* [Hinge / Margin](layers/hingeloss.html) - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2). * [Sigmoid Cross-Entropy Loss](layers/sigmoidcrossentropyloss.html) - computes the cross-entropy (logistic) loss, often used for predicting targets interpreted as probabilities. * [Accuracy / Top-k layer](layers/accuracy.html) - scores the output as an accuracy with respect to target -- it is not actually a loss and has no backward step. * [Contrastive Loss](layers/contrastiveloss.html) From fe9e58d6360d99cde0a883a06590631bb11911e0 Mon Sep 17 00:00:00 2001 From: zhuyuanhao Date: Wed, 1 Mar 2017 20:42:30 +0800 Subject: [PATCH 397/458] Remove not used variable in base_conv_layer.cpp --- src/caffe/layers/base_conv_layer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/caffe/layers/base_conv_layer.cpp b/src/caffe/layers/base_conv_layer.cpp index 4a4c68e00..35c90145e 100644 --- a/src/caffe/layers/base_conv_layer.cpp +++ b/src/caffe/layers/base_conv_layer.cpp @@ -19,7 +19,6 @@ void BaseConvolutionLayer::LayerSetUp(const vector*>& bottom, const int num_axes = bottom[0]->num_axes(); num_spatial_axes_ = num_axes - first_spatial_axis; CHECK_GE(num_spatial_axes_, 0); - vector bottom_dim_blob_shape(1, num_spatial_axes_ + 1); vector spatial_dim_blob_shape(1, std::max(num_spatial_axes_, 1)); // Setup filter kernel dimensions (kernel_shape_). kernel_shape_.Reshape(spatial_dim_blob_shape); From 4529f12bdcd27d74655473b6665f5a23cd1214b1 Mon Sep 17 00:00:00 2001 From: gineshidalgo99 Date: Thu, 9 Mar 2017 19:24:06 -0500 Subject: [PATCH 398/458] =?UTF-8?q?Removed=20some=20'warning:=20extra=20?= =?UTF-8?q?=E2=80=98;=E2=80=99=20[-Wpedantic]'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/caffe/util/math_functions.hpp | 6 +++--- include/caffe/util/mkl_alternate.hpp | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/caffe/util/math_functions.hpp b/include/caffe/util/math_functions.hpp index 51068fe2b..37abce5ec 100644 --- a/include/caffe/util/math_functions.hpp +++ b/include/caffe/util/math_functions.hpp @@ -128,16 +128,16 @@ inline int8_t caffe_sign(Dtype val) { } // output is 1 for the positives, 0 for zero, and -1 for the negatives -DEFINE_CAFFE_CPU_UNARY_FUNC(sign, y[i] = caffe_sign(x[i])); +DEFINE_CAFFE_CPU_UNARY_FUNC(sign, y[i] = caffe_sign(x[i])) // This returns a nonzero value if the input has its sign bit set. // The name sngbit is meant to avoid conflicts with std::signbit in the macro. // The extra parens are needed because CUDA < 6.5 defines signbit as a macro, // and we don't want that to expand here when CUDA headers are also included. DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, \ - y[i] = static_cast((std::signbit)(x[i]))); + y[i] = static_cast((std::signbit)(x[i]))) -DEFINE_CAFFE_CPU_UNARY_FUNC(fabs, y[i] = std::fabs(x[i])); +DEFINE_CAFFE_CPU_UNARY_FUNC(fabs, y[i] = std::fabs(x[i])) template void caffe_cpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y); diff --git a/include/caffe/util/mkl_alternate.hpp b/include/caffe/util/mkl_alternate.hpp index 95df0f93b..79b2c32de 100644 --- a/include/caffe/util/mkl_alternate.hpp +++ b/include/caffe/util/mkl_alternate.hpp @@ -36,10 +36,10 @@ extern "C" { v##name(n, a, y); \ } -DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]); -DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i])); -DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i])); -DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i])); +DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]) +DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i])) +DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i])) +DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i])) // A simple way to define the vsl unary functions with singular parameter b. // The operation should be in the form e.g. y[i] = pow(a[i], b) @@ -58,7 +58,7 @@ DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i])); v##name(n, a, b, y); \ } -DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b)); +DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b)) // A simple way to define the vsl binary functions. The operation should // be in the form e.g. y[i] = a[i] + b[i] @@ -77,10 +77,10 @@ DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b)); v##name(n, a, b, y); \ } -DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]); -DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]); -DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]); -DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]); +DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]) +DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]) +DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]) +DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]) // In addition, MKL comes with an additional function axpby that is not present // in standard blas. We will simply use a two-step (inefficient, of course) way From 1d3e6e4522a95faf954e775b23a2f907e66caf31 Mon Sep 17 00:00:00 2001 From: folz Date: Mon, 13 Mar 2017 11:04:30 +0100 Subject: [PATCH 399/458] Solver_add_nccl accepts any kind of Solver --- python/caffe/_caffe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 3589e476f..be0116990 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -288,7 +288,7 @@ void Solver_add_callback(Solver * solver, bp::object on_start, } // Seems boost cannot call the base method directly -void Solver_add_nccl(SGDSolver* solver +void Solver_add_nccl(Solver* solver #ifdef USE_NCCL , NCCL* nccl #endif From 93993a3c2b25ad683dbf13ef3085b0ea5912911f Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Tue, 14 Mar 2017 15:41:40 -0700 Subject: [PATCH 400/458] Init test net on all GPUs, allows parallel inference --- src/caffe/solver.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index fd4c03724..044269371 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -51,8 +51,8 @@ void Solver::Init(const SolverParameter& param) { } // Scaffolding code InitTrainNet(); + InitTestNets(); if (Caffe::root_solver()) { - InitTestNets(); LOG(INFO) << "Solver scaffolding done."; } iter_ = 0; @@ -102,7 +102,6 @@ void Solver::InitTrainNet() { template void Solver::InitTestNets() { - CHECK(Caffe::root_solver()); const bool has_net_param = param_.has_net_param(); const bool has_net_file = param_.has_net(); const int num_generic_nets = has_net_param + has_net_file; From 802d90fe81f04e5e9c28c088da0f1b22e1b9fed2 Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Thu, 16 Mar 2017 23:08:20 -0400 Subject: [PATCH 401/458] Added python 3 compatibility to cpp_lint.py --- scripts/cpp_lint.py | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/scripts/cpp_lint.py b/scripts/cpp_lint.py index 6ec4fb76e..b2016d4b6 100755 --- a/scripts/cpp_lint.py +++ b/scripts/cpp_lint.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/env python # # Copyright (c) 2009 Google Inc. All rights reserved. # @@ -52,6 +52,10 @@ import sys import unicodedata +import six + +from six import iteritems, itervalues +from six.moves import xrange _USAGE = """ Syntax: cpp_lint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] @@ -756,7 +760,7 @@ def IncrementErrorCount(self, category): def PrintErrorCounts(self): """Print a summary of errors by category, and the total.""" - for category, count in self.errors_by_category.iteritems(): + for category, count in iteritems(self.errors_by_category): sys.stderr.write('Category \'%s\' errors found: %d\n' % (category, count)) sys.stderr.write('Total errors found: %d\n' % self.error_count) @@ -3444,16 +3448,16 @@ def GetLineWidth(line): The width of the line in column positions, accounting for Unicode combining characters and wide characters. """ - if isinstance(line, unicode): - width = 0 - for uc in unicodedata.normalize('NFC', line): - if unicodedata.east_asian_width(uc) in ('W', 'F'): - width += 2 - elif not unicodedata.combining(uc): - width += 1 - return width - else: - return len(line) + if six.PY2: + if isinstance(line, unicode): + width = 0 + for uc in unicodedata.normalize('NFC', line): + if unicodedata.east_asian_width(uc) in ('W', 'F'): + width += 2 + elif not unicodedata.combining(uc): + width += 1 + return width + return len(line) def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, @@ -3774,7 +3778,7 @@ def _GetTextInside(text, start_pattern): # Give opening punctuations to get the matching close-punctuations. matching_punctuation = {'(': ')', '{': '}', '[': ']'} - closing_punctuation = set(matching_punctuation.itervalues()) + closing_punctuation = set(itervalues(matching_punctuation)) # Find the position to start extracting text. match = re.search(start_pattern, text, re.M) @@ -4851,10 +4855,11 @@ def main(): # Change stderr to write with replacement characters so we don't die # if we try to print something containing non-ASCII characters. - sys.stderr = codecs.StreamReaderWriter(sys.stderr, - codecs.getreader('utf8'), - codecs.getwriter('utf8'), - 'replace') + if six.PY2: + sys.stderr = codecs.StreamReaderWriter(sys.stderr, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace') _cpplint_state.ResetErrorCounts() for filename in filenames: From accd188d3241c27a6d24b95cd95a4dca4f4078bc Mon Sep 17 00:00:00 2001 From: max argus Date: Wed, 8 Mar 2017 15:04:29 +0000 Subject: [PATCH 402/458] sane h5df file type check for weights --- src/caffe/net.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 70d51806d..353c2f95b 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -769,8 +769,7 @@ void Net::CopyTrainedLayersFrom(const NetParameter& param) { template void Net::CopyTrainedLayersFrom(const string trained_filename) { - if (trained_filename.size() >= 3 && - trained_filename.compare(trained_filename.size() - 3, 3, ".h5") == 0) { + if (H5Fis_hdf5(trained_filename.c_str())) { CopyTrainedLayersFromHDF5(trained_filename); } else { CopyTrainedLayersFromBinaryProto(trained_filename); From 11930f1416efb66795e1fabc5e362a568446d37d Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Wed, 22 Mar 2017 22:36:14 +0100 Subject: [PATCH 403/458] Clarify batch norm parameter documentation. --- src/caffe/proto/caffe.proto | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index a145c5419..02e0ddf57 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -502,11 +502,21 @@ message ConcatParameter { } message BatchNormParameter { - // If false, accumulate global mean/variance values via a moving average. If - // true, use those accumulated values instead of computing mean/variance - // across the batch. + // If false, normalization is performed over the current mini-batch + // and global statistics are accumulated (but not yet used) by a moving + // average. + // If true, those accumulated mean and variance values are used for the + // normalization. + // By default, it is set to false when the network is in the training + // phase and true when the network is in the testing phase. optional bool use_global_stats = 1; - // How much does the moving average decay each iteration? + // What fraction of the moving average remains each iteration? + // Smaller values make the moving average decay faster, giving more + // weight to the recent values. + // Each iteration updates the moving average @f$S_{t-1}@f$ with the + // current mean @f$ Y_t @f$ by + // @f$ S_t = (1-\beta)Y_t + \beta \cdot S_{t-1} @f$, where @f$ \beta @f$ + // is the moving_average_fraction parameter. optional float moving_average_fraction = 2 [default = .999]; // Small value to add to the variance estimate so that we don't divide by // zero. From 5c8e3545c650e9d3924f707334bde7cd67cf4e07 Mon Sep 17 00:00:00 2001 From: max argus Date: Wed, 22 Mar 2017 23:15:34 +0000 Subject: [PATCH 404/458] [caffe][build] added Atlas lapack Library name atllapack --- cmake/Modules/FindAtlas.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/FindAtlas.cmake b/cmake/Modules/FindAtlas.cmake index 9c665a47b..7ffa6393b 100644 --- a/cmake/Modules/FindAtlas.cmake +++ b/cmake/Modules/FindAtlas.cmake @@ -28,7 +28,7 @@ find_path(Atlas_CLAPACK_INCLUDE_DIR NAMES clapack.h PATHS ${Atlas_INCLUDE_SEARCH find_library(Atlas_CBLAS_LIBRARY NAMES ptcblas_r ptcblas cblas_r cblas PATHS ${Atlas_LIB_SEARCH_PATHS}) find_library(Atlas_BLAS_LIBRARY NAMES atlas_r atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) -find_library(Atlas_LAPACK_LIBRARY NAMES lapack alapack_r alapack lapack_atlas PATHS ${Atlas_LIB_SEARCH_PATHS}) +find_library(Atlas_LAPACK_LIBRARY NAMES lapack alapack_r alapack lapack_atlas atllapack PATHS ${Atlas_LIB_SEARCH_PATHS}) set(LOOKED_FOR Atlas_CBLAS_INCLUDE_DIR @@ -47,6 +47,6 @@ if(ATLAS_FOUND) set(Atlas_LIBRARIES ${Atlas_LAPACK_LIBRARY} ${Atlas_CBLAS_LIBRARY} ${Atlas_BLAS_LIBRARY}) mark_as_advanced(${LOOKED_FOR}) - message(STATUS "Found Atlas (include: ${Atlas_CBLAS_INCLUDE_DIR}, library: ${Atlas_BLAS_LIBRARY})") + message(STATUS "Found Atlas (include: ${Atlas_CBLAS_INCLUDE_DIR} library: ${Atlas_BLAS_LIBRARY} lapack: ${Atlas_LAPACK_LIBRARY}") endif(ATLAS_FOUND) From 1e02d622da5aa01fbcf1185bced8e4b0daa0a50b Mon Sep 17 00:00:00 2001 From: max argus Date: Wed, 22 Mar 2017 23:24:13 +0000 Subject: [PATCH 405/458] [caffe][build] added ABS_TEST_DATA_DIR var. --- cmake/Templates/caffe_config.h.in | 15 ++++----------- include/caffe/test/test_caffe_main.hpp | 3 +-- src/caffe/test/test_gradient_based_solver.cpp | 2 +- src/caffe/test/test_hdf5_output_layer.cpp | 3 +-- src/caffe/test/test_hdf5data_layer.cpp | 3 +-- 5 files changed, 8 insertions(+), 18 deletions(-) diff --git a/cmake/Templates/caffe_config.h.in b/cmake/Templates/caffe_config.h.in index 45465b983..2080c63df 100644 --- a/cmake/Templates/caffe_config.h.in +++ b/cmake/Templates/caffe_config.h.in @@ -4,16 +4,9 @@ /* Binaries directory */ #define BINARY_FOLDER "${PROJECT_BINARY_DIR}" +/* This is an absolute path so that we can run test from any build + * directory */ +#define ABS_TEST_DATA_DIR "${PROJECT_SOURCE_DIR}/src/caffe/test/test_data/" + /* Test device */ #define CUDA_TEST_DEVICE ${CUDA_TEST_DEVICE} - -/* Temporary (TODO: remove) */ -#if 1 - #define CMAKE_SOURCE_DIR SOURCE_FOLDER "/src/" - #define EXAMPLES_SOURCE_DIR BINARY_FOLDER "/examples/" - #define CMAKE_EXT ".gen.cmake" -#else - #define CMAKE_SOURCE_DIR "src/" - #define EXAMPLES_SOURCE_DIR "examples/" - #define CMAKE_EXT "" -#endif diff --git a/include/caffe/test/test_caffe_main.hpp b/include/caffe/test/test_caffe_main.hpp index fc1560914..294f7e501 100644 --- a/include/caffe/test/test_caffe_main.hpp +++ b/include/caffe/test/test_caffe_main.hpp @@ -18,9 +18,8 @@ using std::endl; #include "caffe_config.h" #else #define CUDA_TEST_DEVICE -1 - #define CMAKE_SOURCE_DIR "src/" #define EXAMPLES_SOURCE_DIR "examples/" - #define CMAKE_EXT "" + #define ABS_TEST_DATA_DIR "src/caffe/test/test_data" #endif int main(int argc, char** argv); diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 6ad0d8f65..465140f28 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -28,7 +28,7 @@ class GradientBasedSolverTest : public MultiDeviceTest { seed_(1701), num_(4), channels_(3), height_(10), width_(10), share_(false) { input_file_ = new string( - CMAKE_SOURCE_DIR "caffe/test/test_data/solver_data_list.txt" CMAKE_EXT); + ABS_TEST_DATA_DIR "/solver_data_list.txt"); } ~GradientBasedSolverTest() { delete input_file_; diff --git a/src/caffe/test/test_hdf5_output_layer.cpp b/src/caffe/test/test_hdf5_output_layer.cpp index 2bc2de1e6..f94dd57e7 100644 --- a/src/caffe/test/test_hdf5_output_layer.cpp +++ b/src/caffe/test/test_hdf5_output_layer.cpp @@ -20,8 +20,7 @@ class HDF5OutputLayerTest : public MultiDeviceTest { protected: HDF5OutputLayerTest() - : input_file_name_( - CMAKE_SOURCE_DIR "caffe/test/test_data/sample_data.h5"), + : input_file_name_(ABS_TEST_DATA_DIR "/sample_data.h5"), blob_data_(new Blob()), blob_label_(new Blob()), num_(5), diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 487f5176c..3977c4866 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -30,8 +30,7 @@ class HDF5DataLayerTest : public MultiDeviceTest { blob_top_vec_.push_back(blob_top_label2_); // Check out generate_sample_data.py in the same directory. - filename = new string( - CMAKE_SOURCE_DIR "caffe/test/test_data/sample_data_list.txt" CMAKE_EXT); + filename = new string(ABS_TEST_DATA_DIR "/sample_data_list.txt"); LOG(INFO)<< "Using sample HDF5 data file " << filename; } From 8602a238a712d50ac5a2d7dffadee2f34d755e3f Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Mon, 27 Mar 2017 11:33:06 -0700 Subject: [PATCH 406/458] Expose share_weights to python to allow running test nets --- python/caffe/_caffe.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index be0116990..276f21f85 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -298,6 +298,10 @@ void Solver_add_nccl(Solver* solver #endif } +void share_weights(Solver* solver, Net* net) { + net->ShareTrainedLayersWith(solver->net().get()); +} + template class NetCallback: public Net::Callback { public: @@ -459,6 +463,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("step", &Solver::Step) .def("restore", &Solver::Restore) .def("snapshot", &Solver::Snapshot) + .def("share_weights", &share_weights) .add_property("param", bp::make_function(&Solver::param, bp::return_value_policy())); BP_REGISTER_SHARED_PTR_TO_PYTHON(Solver); From 850ffd8d1cf18cabe36eb269b63d693db2b167ef Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Mon, 27 Mar 2017 13:15:18 -0700 Subject: [PATCH 407/458] Remove missed legacy parallel code --- include/caffe/layers/base_data_layer.hpp | 2 -- include/caffe/layers/data_layer.hpp | 2 -- include/caffe/layers/dummy_data_layer.hpp | 2 -- include/caffe/layers/hdf5_data_layer.hpp | 2 -- include/caffe/layers/hdf5_output_layer.hpp | 2 -- include/caffe/layers/input_layer.hpp | 2 -- include/caffe/layers/python_layer.hpp | 4 ---- src/caffe/proto/caffe.proto | 4 +--- 8 files changed, 1 insertion(+), 19 deletions(-) diff --git a/include/caffe/layers/base_data_layer.hpp b/include/caffe/layers/base_data_layer.hpp index 21d3ada50..c8b6998c8 100644 --- a/include/caffe/layers/base_data_layer.hpp +++ b/include/caffe/layers/base_data_layer.hpp @@ -26,8 +26,6 @@ class BaseDataLayer : public Layer { // This method may not be overridden except by the BasePrefetchingDataLayer. virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } virtual void DataLayerSetUp(const vector*>& bottom, const vector*>& top) {} // Data layers have no bottoms, so reshaping is trivial. diff --git a/include/caffe/layers/data_layer.hpp b/include/caffe/layers/data_layer.hpp index dec581809..667a4ae43 100644 --- a/include/caffe/layers/data_layer.hpp +++ b/include/caffe/layers/data_layer.hpp @@ -20,8 +20,6 @@ class DataLayer : public BasePrefetchingDataLayer { virtual ~DataLayer(); virtual void DataLayerSetUp(const vector*>& bottom, const vector*>& top); - // DataLayer uses DataReader instead for sharing for parallelism - virtual inline bool ShareInParallel() const { return false; } virtual inline const char* type() const { return "Data"; } virtual inline int ExactNumBottomBlobs() const { return 0; } virtual inline int MinTopBlobs() const { return 1; } diff --git a/include/caffe/layers/dummy_data_layer.hpp b/include/caffe/layers/dummy_data_layer.hpp index 4180f1d01..13a63d47e 100644 --- a/include/caffe/layers/dummy_data_layer.hpp +++ b/include/caffe/layers/dummy_data_layer.hpp @@ -22,8 +22,6 @@ class DummyDataLayer : public Layer { : Layer(param) {} virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } // Data layers have no bottoms, so reshaping is trivial. virtual void Reshape(const vector*>& bottom, const vector*>& top) {} diff --git a/include/caffe/layers/hdf5_data_layer.hpp b/include/caffe/layers/hdf5_data_layer.hpp index 650a3fb0c..601b36c6b 100644 --- a/include/caffe/layers/hdf5_data_layer.hpp +++ b/include/caffe/layers/hdf5_data_layer.hpp @@ -27,8 +27,6 @@ class HDF5DataLayer : public Layer { virtual ~HDF5DataLayer(); virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } // Data layers have no bottoms, so reshaping is trivial. virtual void Reshape(const vector*>& bottom, const vector*>& top) {} diff --git a/include/caffe/layers/hdf5_output_layer.hpp b/include/caffe/layers/hdf5_output_layer.hpp index 487d08fc0..061e279d7 100644 --- a/include/caffe/layers/hdf5_output_layer.hpp +++ b/include/caffe/layers/hdf5_output_layer.hpp @@ -28,8 +28,6 @@ class HDF5OutputLayer : public Layer { virtual ~HDF5OutputLayer(); virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } // Data layers have no bottoms, so reshaping is trivial. virtual void Reshape(const vector*>& bottom, const vector*>& top) {} diff --git a/include/caffe/layers/input_layer.hpp b/include/caffe/layers/input_layer.hpp index f4472678c..0ffdc7248 100644 --- a/include/caffe/layers/input_layer.hpp +++ b/include/caffe/layers/input_layer.hpp @@ -22,8 +22,6 @@ class InputLayer : public Layer { : Layer(param) {} virtual void LayerSetUp(const vector*>& bottom, const vector*>& top); - // Data layers should be shared by multiple solvers in parallel - virtual inline bool ShareInParallel() const { return true; } // Data layers have no bottoms, so reshaping is trivial. virtual void Reshape(const vector*>& bottom, const vector*>& top) {} diff --git a/include/caffe/layers/python_layer.hpp b/include/caffe/layers/python_layer.hpp index 10c4bfd02..1407d9217 100644 --- a/include/caffe/layers/python_layer.hpp +++ b/include/caffe/layers/python_layer.hpp @@ -34,10 +34,6 @@ class PythonLayer : public Layer { self_.attr("reshape")(bottom, top); } - virtual inline bool ShareInParallel() const { - return this->layer_param_.python_param().share_in_parallel(); - } - virtual inline const char* type() const { return "Python"; } protected: diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 02e0ddf57..8e528e8e0 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -937,9 +937,7 @@ message PythonParameter { // string, dictionary in Python dict format, JSON, etc. You may parse this // string in `setup` method and use it in `forward` and `backward`. optional string param_str = 3 [default = '']; - // Whether this PythonLayer is shared among worker solvers during data parallelism. - // If true, each worker solver sequentially run forward from this layer. - // This value should be set true if you are using it as a data layer. + // DEPRECATED optional bool share_in_parallel = 4 [default = false]; } From 9bd80b2f12649c6336b64c8ebcc2d1210755d1c7 Mon Sep 17 00:00:00 2001 From: Yuduo Wu Date: Wed, 29 Mar 2017 14:42:36 -0700 Subject: [PATCH 408/458] Fix typo in test_caffe_main.cpp: defice -> device --- src/caffe/test/test_caffe_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/test/test_caffe_main.cpp b/src/caffe/test/test_caffe_main.cpp index 6473b74d0..8f333bd71 100644 --- a/src/caffe/test/test_caffe_main.cpp +++ b/src/caffe/test/test_caffe_main.cpp @@ -15,7 +15,7 @@ int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); caffe::GlobalInit(&argc, &argv); #ifndef CPU_ONLY - // Before starting testing, let's first print out a few cuda defice info. + // Before starting testing, let's first print out a few cuda device info. int device; cudaGetDeviceCount(&device); cout << "Cuda number of devices: " << device << endl; From a32114e6b2e098e2fdef47e397542b105eb58b66 Mon Sep 17 00:00:00 2001 From: Will Crichton Date: Fri, 31 Mar 2017 11:22:22 -0400 Subject: [PATCH 409/458] Fixed memory leaks in cudnn conv and relu --- src/caffe/layers/cudnn_conv_layer.cpp | 1 + src/caffe/layers/cudnn_relu_layer.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/caffe/layers/cudnn_conv_layer.cpp b/src/caffe/layers/cudnn_conv_layer.cpp index 1987fb096..efc9e04e8 100644 --- a/src/caffe/layers/cudnn_conv_layer.cpp +++ b/src/caffe/layers/cudnn_conv_layer.cpp @@ -252,6 +252,7 @@ CuDNNConvolutionLayer::~CuDNNConvolutionLayer() { } cudaFree(workspaceData); + delete [] workspace; delete [] stream_; delete [] handle_; delete [] fwd_algo_; diff --git a/src/caffe/layers/cudnn_relu_layer.cpp b/src/caffe/layers/cudnn_relu_layer.cpp index 795e0a9ef..687c90576 100644 --- a/src/caffe/layers/cudnn_relu_layer.cpp +++ b/src/caffe/layers/cudnn_relu_layer.cpp @@ -36,6 +36,7 @@ CuDNNReLULayer::~CuDNNReLULayer() { cudnnDestroyTensorDescriptor(this->bottom_desc_); cudnnDestroyTensorDescriptor(this->top_desc_); + cudnnDestroyActivationDescriptor(this->activ_desc_); cudnnDestroy(this->handle_); } From a2601eddf65bab54429244e350899b6d994f4f37 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 31 Mar 2017 11:01:13 -0700 Subject: [PATCH 410/458] Revert "Fix Python net drawing script" This reverts commit db6cf0a728cad63c93b345f2203f3ad1f5d5c2f4. --- python/caffe/draw.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index e4fd7aacc..9eecf6d7b 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -104,11 +104,11 @@ def get_layer_label(layer, rankdir): pooling_types_dict[layer.pooling_param.pool], layer.type, separator, - layer.pooling_param.kernel_size[0] if len(layer.pooling_param.kernel_size._values) else 1, + layer.pooling_param.kernel_size, separator, - layer.pooling_param.stride[0] if len(layer.pooling_param.stride._values) else 1, + layer.pooling_param.stride, separator, - layer.pooling_param.pad[0] if len(layer.pooling_param.pad._values) else 0) + layer.pooling_param.pad) else: node_label = '"%s%s(%s)"' % (layer.name, separator, layer.type) return node_label From 0096fe3d270a4833479076e18492de8b28564c80 Mon Sep 17 00:00:00 2001 From: Felix Abecassis Date: Fri, 31 Mar 2017 11:18:39 -0700 Subject: [PATCH 411/458] Add support for cuDNN v6 Support for cuDNN v4 and v5 is preserved. --- docs/installation.md | 4 ++-- include/caffe/util/cudnn.hpp | 10 ++++++++++ scripts/travis/install-deps.sh | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 2e5580276..42f1d0ce0 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -42,14 +42,14 @@ Optional dependencies: * [OpenCV](http://opencv.org/) >= 2.4 including 3.0 * IO libraries: `lmdb`, `leveldb` (note: leveldb requires `snappy`) -* cuDNN for GPU acceleration (v5) +* cuDNN for GPU acceleration (v6) Pycaffe and Matcaffe interfaces have their own natural needs. * For Python Caffe: `Python 2.7` or `Python 3.3+`, `numpy (>= 1.7)`, boost-provided `boost.python` * For MATLAB Caffe: MATLAB with the `mex` compiler. -**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v5; older versions are supported in older Caffe. +**cuDNN Caffe**: for fastest operation Caffe is accelerated by drop-in integration of [NVIDIA cuDNN](https://developer.nvidia.com/cudnn). To speed up your Caffe models, install cuDNN then uncomment the `USE_CUDNN := 1` flag in `Makefile.config` when installing Caffe. Acceleration is automatic. The current version is cuDNN v6; older versions are supported in older Caffe. **CPU-only Caffe**: for cold-brewed CPU-only Caffe uncomment the `CPU_ONLY := 1` flag in `Makefile.config` to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment. diff --git a/include/caffe/util/cudnn.hpp b/include/caffe/util/cudnn.hpp index a7d8dbbad..498cfe385 100644 --- a/include/caffe/util/cudnn.hpp +++ b/include/caffe/util/cudnn.hpp @@ -41,6 +41,10 @@ inline const char* cudnnGetErrorString(cudnnStatus_t status) { return "CUDNN_STATUS_NOT_SUPPORTED"; case CUDNN_STATUS_LICENSE_ERROR: return "CUDNN_STATUS_LICENSE_ERROR"; +#if CUDNN_VERSION_MIN(6, 0, 0) + case CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING: + return "CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING"; +#endif } return "Unknown cudnn status"; } @@ -109,8 +113,14 @@ template inline void setConvolutionDesc(cudnnConvolutionDescriptor_t* conv, cudnnTensorDescriptor_t bottom, cudnnFilterDescriptor_t filter, int pad_h, int pad_w, int stride_h, int stride_w) { +#if CUDNN_VERSION_MIN(6, 0, 0) CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv, + pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION, + dataType::type)); +#else + CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv, pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION)); +#endif } template diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index 1900b16df..1593ed8b5 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -104,7 +104,7 @@ if $WITH_CUDA ; then ln -s /usr/local/cuda-$CUDA_VERSION /usr/local/cuda if $WITH_CUDNN ; then - apt-get install -y --no-install-recommends libcudnn5-dev + apt-get install -y --no-install-recommends libcudnn6-dev fi fi From 179dafdb1a930cf86ff0956618bf8411b8dcd90e Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 31 Mar 2017 11:24:56 -0700 Subject: [PATCH 412/458] Add test for caffe.draw.draw_net() --- python/caffe/test/test_draw.py | 33 +++++++++++++++++++++++++++ scripts/travis/install-deps.sh | 2 ++ scripts/travis/install-python-deps.sh | 1 + 3 files changed, 36 insertions(+) create mode 100644 python/caffe/test/test_draw.py diff --git a/python/caffe/test/test_draw.py b/python/caffe/test/test_draw.py new file mode 100644 index 000000000..1634145ee --- /dev/null +++ b/python/caffe/test/test_draw.py @@ -0,0 +1,33 @@ +import os +import unittest + +from google import protobuf + +import caffe.draw +from caffe.proto import caffe_pb2 + +def getFilenames(): + """Yields files in the source tree which are Net prototxts.""" + result = [] + + root_dir = os.path.abspath(os.path.join( + os.path.dirname(__file__), '..', '..', '..')) + assert os.path.exists(root_dir) + + for dirname in ('models', 'examples'): + dirname = os.path.join(root_dir, dirname) + assert os.path.exists(dirname) + for cwd, _, filenames in os.walk(dirname): + for filename in filenames: + filename = os.path.join(cwd, filename) + if filename.endswith('.prototxt') and 'solver' not in filename: + yield os.path.join(dirname, filename) + + +class TestDraw(unittest.TestCase): + def test_draw_net(self): + for filename in getFilenames(): + net = caffe_pb2.NetParameter() + with open(filename) as infile: + protobuf.text_format.Merge(infile.read(), net) + caffe.draw.draw_net(net, 'LR') diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index 1900b16df..59a9163d5 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -8,6 +8,7 @@ source $BASEDIR/defaults.sh apt-get -y update apt-get install -y --no-install-recommends \ build-essential \ + graphviz \ libboost-filesystem-dev \ libboost-python-dev \ libboost-system-dev \ @@ -31,6 +32,7 @@ if ! $WITH_PYTHON3 ; then python-dev \ python-numpy \ python-protobuf \ + python-pydot \ python-skimage else # Python3 diff --git a/scripts/travis/install-python-deps.sh b/scripts/travis/install-python-deps.sh index eeec30279..910d35a93 100755 --- a/scripts/travis/install-python-deps.sh +++ b/scripts/travis/install-python-deps.sh @@ -11,4 +11,5 @@ if ! $WITH_PYTHON3 ; then else # Python3 pip install --pre protobuf==3.0.0b3 + pip install pydot fi From 41e34c9061e9577c2b1dd56be65fd23ef26457fd Mon Sep 17 00:00:00 2001 From: Nitheesh Date: Tue, 4 Apr 2017 13:36:20 +0530 Subject: [PATCH 413/458] Minor fix for net drawing script --- python/caffe/draw.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/caffe/draw.py b/python/caffe/draw.py index 9eecf6d7b..8411a41d1 100644 --- a/python/caffe/draw.py +++ b/python/caffe/draw.py @@ -91,11 +91,11 @@ def get_layer_label(layer, rankdir): separator, layer.type, separator, - layer.convolution_param.kernel_size[0] if len(layer.convolution_param.kernel_size._values) else 1, + layer.convolution_param.kernel_size[0] if len(layer.convolution_param.kernel_size) else 1, separator, - layer.convolution_param.stride[0] if len(layer.convolution_param.stride._values) else 1, + layer.convolution_param.stride[0] if len(layer.convolution_param.stride) else 1, separator, - layer.convolution_param.pad[0] if len(layer.convolution_param.pad._values) else 0) + layer.convolution_param.pad[0] if len(layer.convolution_param.pad) else 0) elif layer.type == 'Pooling': pooling_types_dict = get_pooling_types_dict() node_label = '"%s%s(%s %s)%skernel size: %d%sstride: %d%spad: %d"' %\ From 31bfe8fb498ea2e528da6463c9045b397992e028 Mon Sep 17 00:00:00 2001 From: Nitheesh Date: Tue, 4 Apr 2017 13:40:31 +0530 Subject: [PATCH 414/458] Add main() for draw_net unittest, fix import errors --- python/caffe/test/test_draw.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/python/caffe/test/test_draw.py b/python/caffe/test/test_draw.py index 1634145ee..835bb5df0 100644 --- a/python/caffe/test/test_draw.py +++ b/python/caffe/test/test_draw.py @@ -1,7 +1,7 @@ import os import unittest -from google import protobuf +from google.protobuf import text_format import caffe.draw from caffe.proto import caffe_pb2 @@ -29,5 +29,9 @@ def test_draw_net(self): for filename in getFilenames(): net = caffe_pb2.NetParameter() with open(filename) as infile: - protobuf.text_format.Merge(infile.read(), net) + text_format.Merge(infile.read(), net) caffe.draw.draw_net(net, 'LR') + + +if __name__ == "__main__": + unittest.main() From 5f1ca848f8c9daa73f61f64413e15ab2cd6602e7 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Williford" Date: Wed, 5 Apr 2017 10:03:31 +0000 Subject: [PATCH 415/458] Add example and small blurb about sigmoid layer. --- docs/tutorial/layers/sigmoid.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/tutorial/layers/sigmoid.md b/docs/tutorial/layers/sigmoid.md index 505318352..f18ac4b84 100644 --- a/docs/tutorial/layers/sigmoid.md +++ b/docs/tutorial/layers/sigmoid.md @@ -9,6 +9,16 @@ title: Sigmoid Layer * Header: [`./include/caffe/layers/sigmoid_layer.hpp`](https://github.com/BVLC/caffe/blob/master/include/caffe/layers/sigmoid_layer.hpp) * CPU implementation: [`./src/caffe/layers/sigmoid_layer.cpp`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cpp) * CUDA GPU implementation: [`./src/caffe/layers/sigmoid_layer.cu`](https://github.com/BVLC/caffe/blob/master/src/caffe/layers/sigmoid_layer.cu) +* Example (from [`./examples/mnist/mnist_autoencoder.prototxt`](https://github.com/BVLC/caffe/blob/master/examples/mnist/mnist_autoencoder.prototxt)): + + layer { + name: "encode1neuron" + bottom: "encode1" + top: "encode1neuron" + type: "Sigmoid" + } + +The `Sigmoid` layer computes `sigmoid(x)` for each element `x` in the bottom blob. ## Parameters From ce7193c7385298825c8cabebd20f664f3f93f06a Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Sat, 8 Apr 2017 12:59:24 -0400 Subject: [PATCH 416/458] Removed repeated import Layer, get_solver --- python/caffe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index 43a0c49be..80f51716d 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,5 @@ from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer -from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, set_multiprocess, Layer, get_solver +from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, set_multiprocess from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier From b2a95fa7fcba2089b981eb30b47d9aeba2b89ce9 Mon Sep 17 00:00:00 2001 From: Bruno Bowden Date: Sat, 8 Apr 2017 15:54:04 -0700 Subject: [PATCH 417/458] Log shape dimensions for eltwise layer shape mismatch When layer shapes mismatch for the eltwise layer, caffe will fail a check but doesn't give any information on how the shapes mismatch. This logging information will make it easier to debug. Additionally this reorders the variables to CHECK(expected == actual), matching the JUnit convention. BEFORE: Check failed: bottom[i]->shape() == bottom[0]->shape() AFTER: Check failed: bottom[0]->shape() == bottom[i]->shape() bottom[0]: 1 4 (4), bottom[3]: 1 6 (6) NOTE: This removes use of CHECK_EQ in an earlier version of this PR, which caused a build warning due to include of glog/stl_logging.h. --- src/caffe/layers/eltwise_layer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/caffe/layers/eltwise_layer.cpp b/src/caffe/layers/eltwise_layer.cpp index 21256166b..3d82b0e1c 100644 --- a/src/caffe/layers/eltwise_layer.cpp +++ b/src/caffe/layers/eltwise_layer.cpp @@ -31,7 +31,9 @@ template void EltwiseLayer::Reshape(const vector*>& bottom, const vector*>& top) { for (int i = 1; i < bottom.size(); ++i) { - CHECK(bottom[i]->shape() == bottom[0]->shape()); + CHECK(bottom[0]->shape() == bottom[i]->shape()) + << "bottom[0]: " << bottom[0]->shape_string() + << ", bottom[" << i << "]: " << bottom[i]->shape_string(); } top[0]->ReshapeLike(*bottom[0]); // If max operation, we will initialize the vector index part. From 51728d1532dbee2853acb89a8a9653e82219953b Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Wed, 12 Apr 2017 01:42:59 -0700 Subject: [PATCH 418/458] Fix log parsing #5422 --- tools/extra/parse_log.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/extra/parse_log.sh b/tools/extra/parse_log.sh index 9892c8976..122eb9e6e 100755 --- a/tools/extra/parse_log.sh +++ b/tools/extra/parse_log.sh @@ -39,7 +39,7 @@ rm aux.txt aux0.txt aux1.txt aux2.txt aux3.txt aux4.txt grep '] Solving ' $1 > aux.txt grep ', loss = ' $1 >> aux.txt grep 'Iteration ' aux.txt | sed 's/.*Iteration \([[:digit:]]*\).*/\1/g' > aux0.txt -grep ', loss = ' $1 | awk '{print $9}' > aux1.txt +grep ', loss = ' $1 | awk -F = '{print $2}' > aux1.txt grep ', lr = ' $1 | awk '{print $9}' > aux2.txt # Extracting elapsed seconds From bac59bed485dfa195600b5b12031401613fade05 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Wed, 12 Apr 2017 02:05:34 -0700 Subject: [PATCH 419/458] Allow using env vars for glog init from python --- python/caffe/_caffe.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 276f21f85..01b34b841 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -51,14 +51,18 @@ const int NPY_DTYPE = NPY_FLOAT32; void set_mode_cpu() { Caffe::set_mode(Caffe::CPU); } void set_mode_gpu() { Caffe::set_mode(Caffe::GPU); } -void InitLog(int level) { - FLAGS_logtostderr = 1; - FLAGS_minloglevel = level; +void InitLog() { ::google::InitGoogleLogging(""); ::google::InstallFailureSignalHandler(); } -void InitLogInfo() { - InitLog(google::INFO); +void InitLogLevel(int level) { + FLAGS_minloglevel = level; + InitLog(); +} +void InitLogLevelPipe(int level, bool stderr) { + FLAGS_minloglevel = level; + FLAGS_logtostderr = stderr; + InitLog(); } void Log(const string& s) { LOG(INFO) << s; @@ -353,7 +357,8 @@ BOOST_PYTHON_MODULE(_caffe) { // Caffe utility functions bp::def("init_log", &InitLog); - bp::def("init_log", &InitLogInfo); + bp::def("init_log", &InitLogLevel); + bp::def("init_log", &InitLogLevelPipe); bp::def("log", &Log); bp::def("set_mode_cpu", &set_mode_cpu); bp::def("set_mode_gpu", &set_mode_gpu); From 35a7b87ad87457291dfc79bf8a7e7cf7ef278cbb Mon Sep 17 00:00:00 2001 From: Noiredd Date: Wed, 12 Apr 2017 11:59:06 +0200 Subject: [PATCH 420/458] fixes pycaffe forward() and backward() behavior for nets whose layer names do not match respective tops --- python/caffe/pycaffe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 63606591b..4a7b5a24c 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -113,7 +113,7 @@ def _Net_forward(self, blobs=None, start=None, end=None, **kwargs): if end is not None: end_ind = list(self._layer_names).index(end) - outputs = set([end] + blobs) + outputs = set(self.top_names[end] + blobs) else: end_ind = len(self.layers) - 1 outputs = set(self.outputs + blobs) @@ -161,7 +161,7 @@ def _Net_backward(self, diffs=None, start=None, end=None, **kwargs): if end is not None: end_ind = list(self._layer_names).index(end) - outputs = set([end] + diffs) + outputs = set(self.bottom_names[end] + diffs) else: end_ind = 0 outputs = set(self.inputs + diffs) From 3a987960d6a08b179eb6c0c526b27ab761ea2d6e Mon Sep 17 00:00:00 2001 From: Kang Kim Date: Thu, 13 Apr 2017 15:23:26 +0900 Subject: [PATCH 421/458] remove redundant check in LSTMUnitLayer --- src/caffe/layers/lstm_unit_layer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/caffe/layers/lstm_unit_layer.cpp b/src/caffe/layers/lstm_unit_layer.cpp index 277c031ad..d1ab59c4b 100644 --- a/src/caffe/layers/lstm_unit_layer.cpp +++ b/src/caffe/layers/lstm_unit_layer.cpp @@ -31,7 +31,6 @@ void LSTMUnitLayer::Reshape(const vector*>& bottom, CHECK_EQ(num_instances, bottom[i]->shape(1)); } hidden_dim_ = bottom[0]->shape(2); - CHECK_EQ(num_instances, bottom[1]->shape(1)); CHECK_EQ(4 * hidden_dim_, bottom[1]->shape(2)); top[0]->ReshapeLike(*bottom[0]); top[1]->ReshapeLike(*bottom[0]); From 96870628698090813d92a9b1f8af9a8311469354 Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Thu, 13 Apr 2017 13:15:24 -0400 Subject: [PATCH 422/458] Bump boost version to 1.55 in CMake build --- cmake/Dependencies.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 02c81525b..4a5bac471 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -5,7 +5,7 @@ set(Caffe_DEFINITIONS "") set(Caffe_COMPILE_OPTIONS "") # ---[ Boost -find_package(Boost 1.46 REQUIRED COMPONENTS system thread filesystem) +find_package(Boost 1.55 REQUIRED COMPONENTS system thread filesystem) list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Boost_INCLUDE_DIRS}) list(APPEND Caffe_LINKER_LIBS PUBLIC ${Boost_LIBRARIES}) From 0c9cc62379e4061b58b0dfa257d79c2ecaeb2be8 Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Sat, 11 Mar 2017 20:12:40 -0500 Subject: [PATCH 423/458] Added support for python 3 and NCCL --- python/caffe/__init__.py | 2 +- python/caffe/_caffe.cpp | 32 +++++++++++++++++++++++++++++++- python/caffe/test/test_nccl.py | 19 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 python/caffe/test/test_nccl.py diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index 80f51716d..776945eec 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1,5 +1,5 @@ from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer -from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, set_multiprocess +from ._caffe import init_log, log, set_mode_cpu, set_mode_gpu, set_device, Layer, get_solver, layer_type_list, set_random_seed, solver_count, set_solver_count, solver_rank, set_solver_rank, set_multiprocess, has_nccl from ._caffe import __version__ from .proto.caffe_pb2 import TRAIN, TEST from .classifier import Classifier diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 01b34b841..7fc06c08f 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -347,6 +347,35 @@ class NCCL { }; #endif +bool HasNCCL() { +#ifdef USE_NCCL + return true; +#else + return false; +#endif +} + +#ifdef USE_NCCL +bp::object NCCL_New_Uid() { + std::string uid = NCCL::new_uid(); +#if PY_MAJOR_VERSION >= 3 + // Convert std::string to bytes so that Python does not + // try to decode the string using the current locale. + + // Since boost 1.53 boost.python will convert str and bytes + // to std::string but will convert std::string to str. Here we + // force a bytes object to be returned. When this object + // is passed back to the NCCL constructor boost.python will + // correctly convert the bytes to std::string automatically + PyObject* py_uid = PyBytes_FromString(uid.c_str()); + return bp::object(bp::handle<>(py_uid)); +#else + // automatic conversion is correct for python 2. + return uid; +#endif +} +#endif + BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(SolveOverloads, Solve, 0, 1); BOOST_PYTHON_MODULE(_caffe) { @@ -360,6 +389,7 @@ BOOST_PYTHON_MODULE(_caffe) { bp::def("init_log", &InitLogLevel); bp::def("init_log", &InitLogLevelPipe); bp::def("log", &Log); + bp::def("has_nccl", &HasNCCL); bp::def("set_mode_cpu", &set_mode_cpu); bp::def("set_mode_gpu", &set_mode_gpu); bp::def("set_random_seed", &set_random_seed); @@ -518,7 +548,7 @@ BOOST_PYTHON_MODULE(_caffe) { boost::noncopyable>("NCCL", bp::init >, const string&>()) #ifdef USE_NCCL - .def("new_uid", &NCCL::new_uid).staticmethod("new_uid") + .def("new_uid", NCCL_New_Uid).staticmethod("new_uid") .def("bcast", &NCCL::Broadcast) #endif /* NOLINT_NEXT_LINE(whitespace/semicolon) */ diff --git a/python/caffe/test/test_nccl.py b/python/caffe/test/test_nccl.py new file mode 100644 index 000000000..127a93370 --- /dev/null +++ b/python/caffe/test/test_nccl.py @@ -0,0 +1,19 @@ +import sys +import unittest + +import caffe + + +class TestNCCL(unittest.TestCase): + + def test_newuid(self): + """ + Test that NCCL uids are of the proper type + according to python version + """ + if caffe.has_nccl(): + uid = caffe.NCCL.new_uid() + if sys.version_info.major >= 3: + self.assertTrue(isinstance(uid, bytes)) + else: + self.assertTrue(isinstance(uid, str)) From e98023af4a570e3105486b661e4c4d1855c0dd79 Mon Sep 17 00:00:00 2001 From: Patrick Follmann Date: Thu, 29 Dec 2016 14:37:21 +0100 Subject: [PATCH 424/458] Add GPU sqrt functions --- include/caffe/util/math_functions.hpp | 3 +++ src/caffe/util/math_functions.cu | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/caffe/util/math_functions.hpp b/include/caffe/util/math_functions.hpp index 37abce5ec..60a8404a0 100644 --- a/include/caffe/util/math_functions.hpp +++ b/include/caffe/util/math_functions.hpp @@ -214,6 +214,9 @@ void caffe_gpu_log(const int n, const Dtype* a, Dtype* y); template void caffe_gpu_powx(const int n, const Dtype* a, const Dtype b, Dtype* y); +template +void caffe_gpu_sqrt(const int n, const Dtype* a, Dtype* y); + // caffe_gpu_rng_uniform with two arguments generates integers in the range // [0, UINT_MAX]. void caffe_gpu_rng_uniform(const int n, unsigned int* r); diff --git a/src/caffe/util/math_functions.cu b/src/caffe/util/math_functions.cu index 6d0010260..314e6ba0f 100644 --- a/src/caffe/util/math_functions.cu +++ b/src/caffe/util/math_functions.cu @@ -387,6 +387,27 @@ void caffe_gpu_powx(const int N, const double* a, N, a, alpha, y); } +template +__global__ void sqrt_kernel(const int n, const Dtype* a, Dtype* y) { + CUDA_KERNEL_LOOP(index, n) { + y[index] = sqrt(a[index]); + } +} + +template <> +void caffe_gpu_sqrt(const int N, const float* a, float* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + sqrt_kernel<<>>( + N, a, y); +} + +template <> +void caffe_gpu_sqrt(const int N, const double* a, double* y) { + // NOLINT_NEXT_LINE(whitespace/operators) + sqrt_kernel<<>>( + N, a, y); +} + DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(sign, y[index] = (Dtype(0) < x[index]) - (x[index] < Dtype(0))); DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(sgnbit, y[index] = signbit(x[index])); From e93fcd267582888f960ca48d6e0c2e719d4ea09b Mon Sep 17 00:00:00 2001 From: Patrick Follmann Date: Thu, 29 Dec 2016 14:46:16 +0100 Subject: [PATCH 425/458] GPU BatchNormLayer: replace powx with mul and sqrt --- src/caffe/layers/batch_norm_layer.cu | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/caffe/layers/batch_norm_layer.cu b/src/caffe/layers/batch_norm_layer.cu index c21713c81..a35e778e2 100644 --- a/src/caffe/layers/batch_norm_layer.cu +++ b/src/caffe/layers/batch_norm_layer.cu @@ -48,14 +48,14 @@ void BatchNormLayer::Forward_gpu(const vector*>& bottom, if (!use_global_stats_) { // compute variance using var(X) = E((X-EX)^2) - caffe_gpu_powx(top[0]->count(), top_data, Dtype(2), + caffe_gpu_mul(top[0]->count(), top[0]->gpu_data(), top[0]->gpu_data(), temp_.mutable_gpu_data()); // (X-EX)^2 caffe_gpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1. / (num * spatial_dim), temp_.gpu_data(), spatial_sum_multiplier_.gpu_data(), 0., num_by_chans_.mutable_gpu_data()); - caffe_gpu_gemv(CblasTrans, num, channels_, 1., - num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), 0., + caffe_gpu_gemv(CblasTrans, num, channels_, Dtype(1.), + num_by_chans_.gpu_data(), batch_sum_multiplier_.gpu_data(), Dtype(0.), variance_.mutable_gpu_data()); // E((X_EX)^2) // compute and save moving average @@ -72,7 +72,7 @@ void BatchNormLayer::Forward_gpu(const vector*>& bottom, // normalize variance caffe_gpu_add_scalar(variance_.count(), eps_, variance_.mutable_gpu_data()); - caffe_gpu_powx(variance_.count(), variance_.gpu_data(), Dtype(0.5), + caffe_gpu_sqrt(variance_.count(), variance_.gpu_data(), variance_.mutable_gpu_data()); // replicate variance to input size From ab3398832964c1ff1bf6b78501e4e43a11f282a1 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Thu, 13 Apr 2017 13:25:16 -0700 Subject: [PATCH 426/458] Add CPU sqrt functions --- include/caffe/util/math_functions.hpp | 3 +++ src/caffe/util/math_functions.cpp | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/caffe/util/math_functions.hpp b/include/caffe/util/math_functions.hpp index 60a8404a0..e549120a9 100644 --- a/include/caffe/util/math_functions.hpp +++ b/include/caffe/util/math_functions.hpp @@ -52,6 +52,9 @@ void caffe_scal(const int N, const Dtype alpha, Dtype *X); template void caffe_sqr(const int N, const Dtype* a, Dtype* y); +template +void caffe_sqrt(const int N, const Dtype* a, Dtype* y); + template void caffe_add(const int N, const Dtype* a, const Dtype* b, Dtype* y); diff --git a/src/caffe/util/math_functions.cpp b/src/caffe/util/math_functions.cpp index 71c02274a..59625bc05 100644 --- a/src/caffe/util/math_functions.cpp +++ b/src/caffe/util/math_functions.cpp @@ -196,6 +196,16 @@ void caffe_sqr(const int n, const double* a, double* y) { vdSqr(n, a, y); } +template <> +void caffe_sqrt(const int n, const float* a, float* y) { + vsSqrt(n, a, y); +} + +template <> +void caffe_sqrt(const int n, const double* a, double* y) { + vdSqrt(n, a, y); +} + template <> void caffe_exp(const int n, const float* a, float* y) { vsExp(n, a, y); From 1c15d94f7da736945450e6ed321077f3045445b1 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Thu, 13 Apr 2017 13:26:16 -0700 Subject: [PATCH 427/458] CPU BatchNormLayer: replace powx with sqr and sqrt --- src/caffe/layers/batch_norm_layer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/caffe/layers/batch_norm_layer.cpp b/src/caffe/layers/batch_norm_layer.cpp index 0a08ed4cb..c6a1d5b1b 100644 --- a/src/caffe/layers/batch_norm_layer.cpp +++ b/src/caffe/layers/batch_norm_layer.cpp @@ -124,8 +124,8 @@ void BatchNormLayer::Forward_cpu(const vector*>& bottom, if (!use_global_stats_) { // compute variance using var(X) = E((X-EX)^2) - caffe_powx(top[0]->count(), top_data, Dtype(2), - temp_.mutable_cpu_data()); // (X-EX)^2 + caffe_sqr(top[0]->count(), top_data, + temp_.mutable_cpu_data()); // (X-EX)^2 caffe_cpu_gemv(CblasNoTrans, channels_ * num, spatial_dim, 1. / (num * spatial_dim), temp_.cpu_data(), spatial_sum_multiplier_.cpu_data(), 0., @@ -148,7 +148,7 @@ void BatchNormLayer::Forward_cpu(const vector*>& bottom, // normalize variance caffe_add_scalar(variance_.count(), eps_, variance_.mutable_cpu_data()); - caffe_powx(variance_.count(), variance_.cpu_data(), Dtype(0.5), + caffe_sqrt(variance_.count(), variance_.cpu_data(), variance_.mutable_cpu_data()); // replicate variance to input size From 3d5bed06a9b6b8a5dfd3db8da33f2fa3bc9a1213 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Thu, 13 Apr 2017 14:15:16 -0700 Subject: [PATCH 428/458] fix: add non-MKL sqrt (should have been included in ab33988) --- include/caffe/util/mkl_alternate.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/caffe/util/mkl_alternate.hpp b/include/caffe/util/mkl_alternate.hpp index 79b2c32de..8c2294c7c 100644 --- a/include/caffe/util/mkl_alternate.hpp +++ b/include/caffe/util/mkl_alternate.hpp @@ -37,6 +37,7 @@ extern "C" { } DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]) +DEFINE_VSL_UNARY_FUNC(Sqrt, y[i] = sqrt(a[i])) DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i])) DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i])) DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i])) From 2ec19b6177111526d2df362d29d0e08aa5645a22 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 13 Apr 2017 14:22:30 -0700 Subject: [PATCH 429/458] deprecate WindowData layer type --- include/caffe/layers/window_data_layer.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/caffe/layers/window_data_layer.hpp b/include/caffe/layers/window_data_layer.hpp index 35f41b80e..b9b66b7cf 100644 --- a/include/caffe/layers/window_data_layer.hpp +++ b/include/caffe/layers/window_data_layer.hpp @@ -16,7 +16,8 @@ namespace caffe { /** * @brief Provides data to the Net from windows of images files, specified - * by a window data file. + * by a window data file. This layer is *DEPRECATED* and only kept for + * archival purposes for use by the original R-CNN. * * TODO(dox): thorough documentation for Forward and proto params. */ From e7163f650885b9f7b9cae1c3253aa97d9fe30d86 Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Thu, 13 Apr 2017 20:32:40 -0400 Subject: [PATCH 430/458] Updated Travis boost dependencies --- scripts/travis/install-deps.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index 2fa2a74a4..dac5d2f9d 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -9,10 +9,10 @@ apt-get -y update apt-get install -y --no-install-recommends \ build-essential \ graphviz \ - libboost-filesystem-dev \ - libboost-python-dev \ - libboost-system-dev \ - libboost-thread-dev \ + libboost-filesystem1.55-dev \ + libboost-python1.55-dev \ + libboost-system1.55-dev \ + libboost-thread1.55-dev \ libgflags-dev \ libgoogle-glog-dev \ libhdf5-serial-dev \ From 8bc82c635914676d51ecd2849cc69f6fb6042496 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 13 Apr 2017 19:14:57 -0700 Subject: [PATCH 431/458] [examples] switch cifar-10 back to proto instead of h5 serialization (it's more common) --- examples/cifar10/cifar10_quick_solver.prototxt | 1 - examples/cifar10/train_full.sh | 4 ++-- examples/cifar10/train_quick.sh | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/examples/cifar10/cifar10_quick_solver.prototxt b/examples/cifar10/cifar10_quick_solver.prototxt index 5de276f72..14b4401ba 100644 --- a/examples/cifar10/cifar10_quick_solver.prototxt +++ b/examples/cifar10/cifar10_quick_solver.prototxt @@ -20,7 +20,6 @@ display: 100 max_iter: 4000 # snapshot intermediate results snapshot: 4000 -snapshot_format: HDF5 snapshot_prefix: "examples/cifar10/cifar10_quick" # solver mode: CPU or GPU solver_mode: GPU diff --git a/examples/cifar10/train_full.sh b/examples/cifar10/train_full.sh index 06ecc2dcc..fe46e60d7 100755 --- a/examples/cifar10/train_full.sh +++ b/examples/cifar10/train_full.sh @@ -9,9 +9,9 @@ $TOOLS/caffe train \ # reduce learning rate by factor of 10 $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_full_solver_lr1.prototxt \ - --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate.h5 $@ + --snapshot=examples/cifar10/cifar10_full_iter_60000.solverstate $@ # reduce learning rate by factor of 10 $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_full_solver_lr2.prototxt \ - --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate.h5 $@ + --snapshot=examples/cifar10/cifar10_full_iter_65000.solverstate $@ diff --git a/examples/cifar10/train_quick.sh b/examples/cifar10/train_quick.sh index d2b875340..257479e0d 100755 --- a/examples/cifar10/train_quick.sh +++ b/examples/cifar10/train_quick.sh @@ -9,4 +9,4 @@ $TOOLS/caffe train \ # reduce learning rate by factor of 10 after 8 epochs $TOOLS/caffe train \ --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \ - --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate.h5 $@ + --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate $@ From aa29eba26b781349174cb856b6ea96360ebbb3f2 Mon Sep 17 00:00:00 2001 From: Guillaume Dumont Date: Thu, 13 Apr 2017 22:37:13 -0400 Subject: [PATCH 432/458] Explicit std::string to bp::object conversion --- python/caffe/_caffe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 7fc06c08f..d7f43fff6 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -371,7 +371,7 @@ bp::object NCCL_New_Uid() { return bp::object(bp::handle<>(py_uid)); #else // automatic conversion is correct for python 2. - return uid; + return bp::object(uid); #endif } #endif From c19c9602d031274ce77eb6a94ce2a9e8d843d98f Mon Sep 17 00:00:00 2001 From: Carl Doersch Date: Tue, 25 Aug 2015 11:26:14 -0700 Subject: [PATCH 433/458] Test for python forward and backward with start and end layer. --- python/caffe/test/test_net.py | 45 +++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/python/caffe/test/test_net.py b/python/caffe/test/test_net.py index 24391cc50..afd276909 100644 --- a/python/caffe/test/test_net.py +++ b/python/caffe/test/test_net.py @@ -25,11 +25,11 @@ def simple_net_file(num_output): bias_filler { type: 'constant' value: 2 } } param { decay_mult: 1 } param { decay_mult: 0 } } - layer { type: 'InnerProduct' name: 'ip' bottom: 'conv' top: 'ip' + layer { type: 'InnerProduct' name: 'ip' bottom: 'conv' top: 'ip_blob' inner_product_param { num_output: """ + str(num_output) + """ weight_filler { type: 'gaussian' std: 2.5 } bias_filler { type: 'constant' value: -3 } } } - layer { type: 'SoftmaxWithLoss' name: 'loss' bottom: 'ip' bottom: 'label' + layer { type: 'SoftmaxWithLoss' name: 'loss' bottom: 'ip_blob' bottom: 'label' top: 'loss' }""") f.close() return f.name @@ -71,6 +71,43 @@ def test_forward_backward(self): self.net.forward() self.net.backward() + def test_forward_start_end(self): + conv_blob=self.net.blobs['conv']; + ip_blob=self.net.blobs['ip_blob']; + sample_data=np.random.uniform(size=conv_blob.data.shape); + sample_data=sample_data.astype(np.float32); + conv_blob.data[:]=sample_data; + forward_blob=self.net.forward(start='ip',end='ip'); + self.assertIn('ip_blob',forward_blob); + + manual_forward=[]; + for i in range(0,conv_blob.data.shape[0]): + dot=np.dot(self.net.params['ip'][0].data, + conv_blob.data[i].reshape(-1)); + manual_forward.append(dot+self.net.params['ip'][1].data); + manual_forward=np.array(manual_forward); + + np.testing.assert_allclose(ip_blob.data,manual_forward,rtol=1e-3); + + def test_backward_start_end(self): + conv_blob=self.net.blobs['conv']; + ip_blob=self.net.blobs['ip_blob']; + sample_data=np.random.uniform(size=ip_blob.data.shape) + sample_data=sample_data.astype(np.float32); + ip_blob.diff[:]=sample_data; + backward_blob=self.net.backward(start='ip',end='ip'); + self.assertIn('conv',backward_blob); + + manual_backward=[]; + for i in range(0,conv_blob.data.shape[0]): + dot=np.dot(self.net.params['ip'][0].data.transpose(), + sample_data[i].reshape(-1)); + manual_backward.append(dot); + manual_backward=np.array(manual_backward); + manual_backward=manual_backward.reshape(conv_blob.data.shape); + + np.testing.assert_allclose(conv_blob.diff,manual_backward,rtol=1e-3); + def test_clear_param_diffs(self): # Run a forward/backward step to have non-zero diffs self.net.forward() @@ -90,13 +127,13 @@ def test_top_bottom_names(self): self.assertEqual(self.net.top_names, OrderedDict([('data', ['data', 'label']), ('conv', ['conv']), - ('ip', ['ip']), + ('ip', ['ip_blob']), ('loss', ['loss'])])) self.assertEqual(self.net.bottom_names, OrderedDict([('data', []), ('conv', ['data']), ('ip', ['conv']), - ('loss', ['ip', 'label'])])) + ('loss', ['ip_blob', 'label'])])) def test_save_and_read(self): f = tempfile.NamedTemporaryFile(mode='w+', delete=False) From 451944333510e1ea9b0bdac11e4ec201e5284714 Mon Sep 17 00:00:00 2001 From: jgyllinsky Date: Fri, 14 Apr 2017 03:11:59 -0400 Subject: [PATCH 434/458] [docs] added apt command to install OpenBLAS (#4718) --- docs/install_apt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install_apt.md b/docs/install_apt.md index bc1566b0b..ee2cd2877 100644 --- a/docs/install_apt.md +++ b/docs/install_apt.md @@ -14,7 +14,7 @@ The NVIDIA package tends to follow more recent library and driver versions, but If installing from packages, install the library and latest driver separately; the driver bundled with the library is usually out-of-date. This can be skipped for CPU-only installation. -**BLAS**: install ATLAS by `sudo apt-get install libatlas-base-dev` or install OpenBLAS or MKL for better CPU performance. +**BLAS**: install ATLAS by `sudo apt-get install libatlas-base-dev` or install OpenBLAS by `sudo apt-get install libopenblas-dev` or MKL for better CPU performance. **Python** (optional): if you use the default Python you will need to `sudo apt-get install` the `python-dev` package to have the Python headers for building the pycaffe interface. From 80073497045d3101492a28a8a2c87dff65d64ff4 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 10:17:52 -0700 Subject: [PATCH 435/458] fix lint errors that snuck in by #4566 --- src/caffe/test/test_gradient_based_solver.cpp | 12 ++++++++---- src/caffe/test/test_neuron_layer.cpp | 9 ++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/caffe/test/test_gradient_based_solver.cpp b/src/caffe/test/test_gradient_based_solver.cpp index 05cab9097..f4395f531 100644 --- a/src/caffe/test/test_gradient_based_solver.cpp +++ b/src/caffe/test/test_gradient_based_solver.cpp @@ -558,9 +558,11 @@ class GradientBasedSolverTest : public MultiDeviceTest { const vector*>& params = solver_->net()->learnable_params(); for (int i = 0; i < params.size(); ++i) { for (int j = 0; j < params[i]->count(); ++j) { - EXPECT_FLOAT_EQ(param_copies[i]->cpu_data()[j], params[i]->cpu_data()[j]) + EXPECT_FLOAT_EQ(param_copies[i]->cpu_data()[j], + params[i]->cpu_data()[j]) << "param " << i << " data differed at dim " << j; - EXPECT_FLOAT_EQ(param_copies[i]->cpu_diff()[j], params[i]->cpu_diff()[j]) + EXPECT_FLOAT_EQ(param_copies[i]->cpu_diff()[j], + params[i]->cpu_diff()[j]) << "param " << i << " diff differed at dim " << j; } } @@ -569,9 +571,11 @@ class GradientBasedSolverTest : public MultiDeviceTest { const vector > >& history = solver_->history(); for (int i = 0; i < history.size(); ++i) { for (int j = 0; j < history[i]->count(); ++j) { - EXPECT_FLOAT_EQ(history_copies[i]->cpu_data()[j], history[i]->cpu_data()[j]) + EXPECT_FLOAT_EQ(history_copies[i]->cpu_data()[j], + history[i]->cpu_data()[j]) << "history blob " << i << " data differed at dim " << j; - EXPECT_FLOAT_EQ(history_copies[i]->cpu_diff()[j], history[i]->cpu_diff()[j]) + EXPECT_FLOAT_EQ(history_copies[i]->cpu_diff()[j], + history[i]->cpu_diff()[j]) << "history blob " << i << " diff differed at dim " << j; } } diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index 57bd47b3a..180871a29 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -791,13 +791,16 @@ TYPED_TEST(NeuronLayerTest, TestPReLUInPlace) { ip2.Backward(blob_middle_vec_2, propagate_down, blob_bottom_vec_2); // Check numbers for (int s = 0; s < blob_bottom_2->count(); ++s) { - EXPECT_FLOAT_EQ(this->blob_bottom_->cpu_diff()[s], blob_bottom_2->cpu_diff()[s]); + EXPECT_FLOAT_EQ(this->blob_bottom_->cpu_diff()[s], + blob_bottom_2->cpu_diff()[s]); } for (int s = 0; s < ip.blobs()[0]->count(); ++s) { - EXPECT_FLOAT_EQ(ip.blobs()[0]->cpu_diff()[s], ip2.blobs()[0]->cpu_diff()[s]); + EXPECT_FLOAT_EQ(ip.blobs()[0]->cpu_diff()[s], + ip2.blobs()[0]->cpu_diff()[s]); } for (int s = 0; s < ip.blobs()[1]->count(); ++s) { - EXPECT_FLOAT_EQ(ip.blobs()[1]->cpu_diff()[s], ip2.blobs()[1]->cpu_diff()[s]); + EXPECT_FLOAT_EQ(ip.blobs()[1]->cpu_diff()[s], + ip2.blobs()[1]->cpu_diff()[s]); } for (int s = 0; s < prelu.blobs()[0]->count(); ++s) { EXPECT_FLOAT_EQ(prelu.blobs()[0]->cpu_diff()[s], From 4db619aec9cd384b11a1c55fac257d14b704bb15 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Fri, 14 Apr 2017 12:30:50 -0700 Subject: [PATCH 436/458] Docker update to cuDNN 6 --- docker/cpu/Dockerfile | 3 ++- docker/gpu/Dockerfile | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docker/cpu/Dockerfile b/docker/cpu/Dockerfile index af6c03c65..67e2e61bd 100644 --- a/docker/cpu/Dockerfile +++ b/docker/cpu/Dockerfile @@ -28,7 +28,8 @@ ENV CAFFE_ROOT=/opt/caffe WORKDIR $CAFFE_ROOT # FIXME: use ARG instead of ENV once DockerHub supports this -ENV CLONE_TAG=rc4 +# https://github.com/docker/hub-feedback/issues/460 +ENV CLONE_TAG=1.0 RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ pip install --upgrade pip && \ diff --git a/docker/gpu/Dockerfile b/docker/gpu/Dockerfile index 0785b10f1..dcdbdf326 100644 --- a/docker/gpu/Dockerfile +++ b/docker/gpu/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 +FROM nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 LABEL maintainer caffe-maint@googlegroups.com RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -28,7 +28,8 @@ ENV CAFFE_ROOT=/opt/caffe WORKDIR $CAFFE_ROOT # FIXME: use ARG instead of ENV once DockerHub supports this -ENV CLONE_TAG=rc4 +# https://github.com/docker/hub-feedback/issues/460 +ENV CLONE_TAG=1.0 RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/BVLC/caffe.git . && \ pip install --upgrade pip && \ From 44da39f662a24de746fa83b92bd670fe41b3a7da Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 12:36:41 -0700 Subject: [PATCH 437/458] BVLC -> BAIR Berkeley AI Research (BAIR) is the the successor to the Berkeley Vision and Learning Center (BVLC). --- CONTRIBUTORS.md | 2 +- README.md | 6 +++--- docs/_layouts/default.html | 2 +- docs/development.md | 4 ++-- docs/index.md | 10 +++++----- docs/model_zoo.md | 18 +++++++++--------- docs/multigpu.md | 4 ++-- docs/performance_hardware.md | 2 +- docs/tutorial/interfaces.md | 4 ++-- examples/finetune_flickr_style/readme.md | 2 +- models/bvlc_alexnet/readme.md | 2 +- models/bvlc_googlenet/readme.md | 2 +- models/bvlc_reference_caffenet/readme.md | 2 +- models/bvlc_reference_rcnn_ilsvrc13/readme.md | 2 +- 14 files changed, 31 insertions(+), 31 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 8db66ea82..3fd767812 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,6 +1,6 @@ # Contributors -Caffe is developed by a core set of BVLC members and the open-source community. +Caffe is developed by a core set of BAIR members and the open-source community. We thank all of our [contributors](https://github.com/BVLC/caffe/graphs/contributors)! diff --git a/README.md b/README.md index 44b9e62c1..0ae3616b4 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ [![License](https://img.shields.io/badge/license-BSD-blue.svg)](LICENSE) Caffe is a deep learning framework made with expression, speed, and modularity in mind. -It is developed by the Berkeley Vision and Learning Center ([BVLC](http://bvlc.eecs.berkeley.edu)) and community contributors. +It is developed by Berkeley AI Research ([BAIR](http://bair.berkeley.edu))/The Berkeley Vision and Learning Center (BVLC) and community contributors. Check out the [project site](http://caffe.berkeleyvision.org) for all the details like - [DIY Deep Learning for Vision with Caffe](https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p) - [Tutorial Documentation](http://caffe.berkeleyvision.org/tutorial/) -- [BVLC reference models](http://caffe.berkeleyvision.org/model_zoo.html) and the [community model zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo) +- [BAIR reference models](http://caffe.berkeleyvision.org/model_zoo.html) and the [community model zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo) - [Installation instructions](http://caffe.berkeleyvision.org/installation.html) and step-by-step examples. @@ -25,7 +25,7 @@ Happy brewing! ## License and Citation Caffe is released under the [BSD 2-Clause license](https://github.com/BVLC/caffe/blob/master/LICENSE). -The BVLC reference models are released for unrestricted use. +The BAIR/BVLC reference models are released for unrestricted use. Please cite Caffe in your publications if it helps your research: diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html index b8efe60bc..3799e95af 100644 --- a/docs/_layouts/default.html +++ b/docs/_layouts/default.html @@ -36,7 +36,7 @@

Caffe

- Deep learning framework by the BVLC + Deep learning framework by BAIR

Created by diff --git a/docs/development.md b/docs/development.md index 107c2c3b2..ec05bbee1 100644 --- a/docs/development.md +++ b/docs/development.md @@ -4,7 +4,7 @@ title: Developing and Contributing # Development and Contributing Caffe is developed with active participation of the community.
-The [BVLC](http://bvlc.eecs.berkeley.edu/) brewers welcome all contributions! +The [BAIR](http://bair.berkeley.edu/)/BVLC brewers welcome all contributions! The exact details of contributions are recorded by versioning and cited in our [acknowledgements](http://caffe.berkeleyvision.org/#acknowledgements). This method is impartial and always up-to-date. @@ -37,7 +37,7 @@ We absolutely appreciate any contribution to this effort! The `master` branch receives all new development including community contributions. We try to keep it in a reliable state, but it is the bleeding edge, and things do get broken every now and then. -BVLC maintainers will periodically make releases by marking stable checkpoints as tags and maintenance branches. [Past releases](https://github.com/BVLC/caffe/releases) are catalogued online. +BAIR maintainers will periodically make releases by marking stable checkpoints as tags and maintenance branches. [Past releases](https://github.com/BVLC/caffe/releases) are catalogued online. #### Issues & Pull Request Protocol diff --git a/docs/index.md b/docs/index.md index 932b3b58d..302a7d56f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,7 +5,7 @@ title: Deep Learning Framework # Caffe Caffe is a deep learning framework made with expression, speed, and modularity in mind. -It is developed by the Berkeley Vision and Learning Center ([BVLC](http://bvlc.eecs.berkeley.edu)) and by community contributors. +It is developed by Berkeley AI Research ([BAIR](http://bair.berkeley.edu)) and by community contributors. [Yangqing Jia](http://daggerfs.com) created the project during his PhD at UC Berkeley. Caffe is released under the [BSD 2-Clause license](https://github.com/BVLC/caffe/blob/master/LICENSE). @@ -45,7 +45,7 @@ A 4-page report for the ACM Multimedia Open Source competition (arXiv:1408.5093v - [Installation instructions](/installation.html)
Tested on Ubuntu, Red Hat, OS X. * [Model Zoo](/model_zoo.html)
-BVLC suggests a standard distribution format for Caffe models, and provides trained models. +BAIR suggests a standard distribution format for Caffe models, and provides trained models. * [Developing & Contributing](/development.html)
Guidelines for development and contributing to Caffe. * [API Documentation](/doxygen/annotated.html)
@@ -92,9 +92,9 @@ The core Caffe developers offer [consulting services](mailto:caffe-coldpress@goo ## Acknowledgements -The BVLC Caffe developers would like to thank NVIDIA for GPU donation, A9 and Amazon Web Services for a research grant in support of Caffe development and reproducible research in deep learning, and BVLC PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for guidance. +The BAIR Caffe developers would like to thank NVIDIA for GPU donation, A9 and Amazon Web Services for a research grant in support of Caffe development and reproducible research in deep learning, and BAIR PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for guidance. -The BVLC members who have contributed to Caffe are (alphabetical by first name): +The BAIR members who have contributed to Caffe are (alphabetical by first name): [Eric Tzeng](https://github.com/erictzeng), [Evan Shelhamer](http://imaginarynumber.net/), [Jeff Donahue](http://jeffdonahue.com/), [Jon Long](https://github.com/longjon), [Ross Girshick](http://www.cs.berkeley.edu/~rbg/), [Sergey Karayev](http://sergeykarayev.com/), [Sergio Guadarrama](http://www.eecs.berkeley.edu/~sguada/), and [Yangqing Jia](http://daggerfs.com/). The open-source community plays an important and growing role in Caffe's development. @@ -103,4 +103,4 @@ Check out the Github [project pulse](https://github.com/BVLC/caffe/pulse) for re We sincerely appreciate your interest and contributions! If you'd like to contribute, please read the [developing & contributing](development.html) guide. -Yangqing would like to give a personal thanks to the NVIDIA Academic program for providing GPUs, [Oriol Vinyals](http://www1.icsi.berkeley.edu/~vinyals/) for discussions along the journey, and BVLC PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for advice. +Yangqing would like to give a personal thanks to the NVIDIA Academic program for providing GPUs, [Oriol Vinyals](http://www1.icsi.berkeley.edu/~vinyals/) for discussions along the journey, and BAIR PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for advice. diff --git a/docs/model_zoo.md b/docs/model_zoo.md index 06dc0a49e..f9078718a 100644 --- a/docs/model_zoo.md +++ b/docs/model_zoo.md @@ -14,15 +14,15 @@ To help share these models, we introduce the model zoo framework: ## Where to get trained models -First of all, we bundle BVLC-trained models for unrestricted, out of the box use. +First of all, we bundle BAIR-trained models for unrestricted, out of the box use.
-See the [BVLC model license](#bvlc-model-license) for details. +See the [BAIR model license](#bair-model-license) for details. Each one of these can be downloaded by running `scripts/download_model_binary.py ` where `` is specified below: -- **BVLC Reference CaffeNet** in `models/bvlc_reference_caffenet`: AlexNet trained on ILSVRC 2012, with a minor variation from the version as described in [ImageNet classification with deep convolutional neural networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) by Krizhevsky et al. in NIPS 2012. (Trained by Jeff Donahue @jeffdonahue) -- **BVLC AlexNet** in `models/bvlc_alexnet`: AlexNet trained on ILSVRC 2012, almost exactly as described in [ImageNet classification with deep convolutional neural networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) by Krizhevsky et al. in NIPS 2012. (Trained by Evan Shelhamer @shelhamer) -- **BVLC Reference R-CNN ILSVRC-2013** in `models/bvlc_reference_rcnn_ilsvrc13`: pure Caffe implementation of [R-CNN](https://github.com/rbgirshick/rcnn) as described by Girshick et al. in CVPR 2014. (Trained by Ross Girshick @rbgirshick) -- **BVLC GoogLeNet** in `models/bvlc_googlenet`: GoogLeNet trained on ILSVRC 2012, almost exactly as described in [Going Deeper with Convolutions](http://arxiv.org/abs/1409.4842) by Szegedy et al. in ILSVRC 2014. (Trained by Sergio Guadarrama @sguada) +- **BAIR Reference CaffeNet** in `models/bvlc_reference_caffenet`: AlexNet trained on ILSVRC 2012, with a minor variation from the version as described in [ImageNet classification with deep convolutional neural networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) by Krizhevsky et al. in NIPS 2012. (Trained by Jeff Donahue @jeffdonahue) +- **BAIR AlexNet** in `models/bvlc_alexnet`: AlexNet trained on ILSVRC 2012, almost exactly as described in [ImageNet classification with deep convolutional neural networks](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks) by Krizhevsky et al. in NIPS 2012. (Trained by Evan Shelhamer @shelhamer) +- **BAIR Reference R-CNN ILSVRC-2013** in `models/bvlc_reference_rcnn_ilsvrc13`: pure Caffe implementation of [R-CNN](https://github.com/rbgirshick/rcnn) as described by Girshick et al. in CVPR 2014. (Trained by Ross Girshick @rbgirshick) +- **BAIR GoogLeNet** in `models/bvlc_googlenet`: GoogLeNet trained on ILSVRC 2012, almost exactly as described in [Going Deeper with Convolutions](http://arxiv.org/abs/1409.4842) by Szegedy et al. in ILSVRC 2014. (Trained by Sergio Guadarrama @sguada) **Community models** made by Caffe users are posted to a publicly editable [wiki page](https://github.com/BVLC/caffe/wiki/Model-Zoo). These models are subject to conditions of their respective authors such as citation and license. @@ -55,14 +55,14 @@ Downloading model info is done just as easily with `scripts/download_model_from_ ### Hosting trained models It is up to the user where to host the `.caffemodel` file. -We host our BVLC-provided models on our own server. +We host our BAIR-provided models on our own server. Dropbox also works fine (tip: make sure that `?dl=1` is appended to the end of the URL). `scripts/download_model_binary.py ` downloads the `.caffemodel` from the URL specified in the `/readme.md` frontmatter and confirms SHA1. -## BVLC model license +## BAIR model license -The Caffe models bundled by the BVLC are released for unrestricted use. +The Caffe models bundled by the BAIR are released for unrestricted use. These models are trained on data from the [ImageNet project](http://www.image-net.org/) and training data includes internet photos that may be subject to copyright. diff --git a/docs/multigpu.md b/docs/multigpu.md index d91acef98..e04ebb0b7 100644 --- a/docs/multigpu.md +++ b/docs/multigpu.md @@ -13,7 +13,7 @@ The GPUs to be used for training can be set with the "-gpu" flag on the command # Hardware Configuration Assumptions The current implementation uses a tree reduction strategy. e.g. if there are 4 GPUs in the system, 0:1, 2:3 will exchange gradients, then 0:2 (top of the tree) will exchange gradients, 0 will calculate -updated model, 0\-\>2, and then 0\-\>1, 2\-\>3. +updated model, 0\-\>2, and then 0\-\>1, 2\-\>3. For best performance, P2P DMA access between devices is needed. Without P2P access, for example crossing PCIe root complex, data is copied through host and effective exchange bandwidth is greatly reduced. @@ -23,4 +23,4 @@ Current implementation has a "soft" assumption that the devices being used are h # Scaling Performance -Performance is **heavily** dependent on the PCIe topology of the system, the configuration of the neural network you are training, and the speed of each of the layers. Systems like the DIGITS DevBox have an optimized PCIe topology (X99-E WS chipset). In general, scaling on 2 GPUs tends to be ~1.8X on average for networks like AlexNet, CaffeNet, VGG, GoogleNet. 4 GPUs begins to have falloff in scaling. Generally with "weak scaling" where the batchsize increases with the number of GPUs you will see 3.5x scaling or so. With "strong scaling", the system can become communication bound, especially with layer performance optimizations like those in [cuDNNv3](http://nvidia.com/cudnn), and you will likely see closer to mid 2.x scaling in performance. Networks that have heavy computation compared to the number of parameters tend to have the best scaling performance. \ No newline at end of file +Performance is **heavily** dependent on the PCIe topology of the system, the configuration of the neural network you are training, and the speed of each of the layers. Systems like the DIGITS DevBox have an optimized PCIe topology (X99-E WS chipset). In general, scaling on 2 GPUs tends to be ~1.8X on average for networks like AlexNet, CaffeNet, VGG, GoogleNet. 4 GPUs begins to have falloff in scaling. Generally with "weak scaling" where the batchsize increases with the number of GPUs you will see 3.5x scaling or so. With "strong scaling", the system can become communication bound, especially with layer performance optimizations like those in [cuDNNv3](http://nvidia.com/cudnn), and you will likely see closer to mid 2.x scaling in performance. Networks that have heavy computation compared to the number of parameters tend to have the best scaling performance. diff --git a/docs/performance_hardware.md b/docs/performance_hardware.md index cdd4b361d..fbf256842 100644 --- a/docs/performance_hardware.md +++ b/docs/performance_hardware.md @@ -8,7 +8,7 @@ To measure performance on different NVIDIA GPUs we use CaffeNet, the Caffe refer For training, each time point is 20 iterations/minibatches of 256 images for 5,120 images total. For testing, a 50,000 image validation set is classified. -**Acknowledgements**: BVLC members are very grateful to NVIDIA for providing several GPUs to conduct this research. +**Acknowledgements**: BAIR members are very grateful to NVIDIA for providing several GPUs to conduct this research. ## NVIDIA K40 diff --git a/docs/tutorial/interfaces.md b/docs/tutorial/interfaces.md index d7ff37823..b5a4f1ad0 100644 --- a/docs/tutorial/interfaces.md +++ b/docs/tutorial/interfaces.md @@ -91,7 +91,7 @@ In MatCaffe, you can * Run for a certain number of iterations and give back control to Matlab * Intermingle arbitrary Matlab code with gradient steps -An ILSVRC image classification demo is in caffe/matlab/demo/classification_demo.m (you need to download BVLC CaffeNet from [Model Zoo](http://caffe.berkeleyvision.org/model_zoo.html) to run it). +An ILSVRC image classification demo is in caffe/matlab/demo/classification_demo.m (you need to download BAIR CaffeNet from [Model Zoo](http://caffe.berkeleyvision.org/model_zoo.html) to run it). ### Build MatCaffe @@ -114,7 +114,7 @@ You can save your Matlab search PATH by running `savepath` so that you don't hav MatCaffe is very similar to PyCaffe in usage. -Examples below shows detailed usages and assumes you have downloaded BVLC CaffeNet from [Model Zoo](http://caffe.berkeleyvision.org/model_zoo.html) and started `matlab` from caffe root folder. +Examples below shows detailed usages and assumes you have downloaded BAIR CaffeNet from [Model Zoo](http://caffe.berkeleyvision.org/model_zoo.html) and started `matlab` from caffe root folder. model = './models/bvlc_reference_caffenet/deploy.prototxt'; weights = './models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'; diff --git a/examples/finetune_flickr_style/readme.md b/examples/finetune_flickr_style/readme.md index 188dedf1b..dacfd01c8 100644 --- a/examples/finetune_flickr_style/readme.md +++ b/examples/finetune_flickr_style/readme.md @@ -9,7 +9,7 @@ priority: 5 # Fine-tuning CaffeNet for Style Recognition on "Flickr Style" Data Fine-tuning takes an already learned model, adapts the architecture, and resumes training from the already learned model weights. -Let's fine-tune the BVLC-distributed CaffeNet model on a different dataset, [Flickr Style](http://sergeykarayev.com/files/1311.3715v3.pdf), to predict image style instead of object category. +Let's fine-tune the BAIR-distributed CaffeNet model on a different dataset, [Flickr Style](http://sergeykarayev.com/files/1311.3715v3.pdf), to predict image style instead of object category. ## Explanation diff --git a/models/bvlc_alexnet/readme.md b/models/bvlc_alexnet/readme.md index 008d690f7..a83e3d4e2 100644 --- a/models/bvlc_alexnet/readme.md +++ b/models/bvlc_alexnet/readme.md @@ -1,5 +1,5 @@ --- -name: BVLC AlexNet Model +name: BAIR/BVLC AlexNet Model caffemodel: bvlc_alexnet.caffemodel caffemodel_url: http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel license: unrestricted diff --git a/models/bvlc_googlenet/readme.md b/models/bvlc_googlenet/readme.md index 061b6d745..ef04db62a 100644 --- a/models/bvlc_googlenet/readme.md +++ b/models/bvlc_googlenet/readme.md @@ -1,5 +1,5 @@ --- -name: BVLC GoogleNet Model +name: BAIR/BVLC GoogleNet Model caffemodel: bvlc_googlenet.caffemodel caffemodel_url: http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel license: unrestricted diff --git a/models/bvlc_reference_caffenet/readme.md b/models/bvlc_reference_caffenet/readme.md index 671e47a50..5352e536a 100644 --- a/models/bvlc_reference_caffenet/readme.md +++ b/models/bvlc_reference_caffenet/readme.md @@ -1,5 +1,5 @@ --- -name: BVLC CaffeNet Model +name: BAIR/BVLC CaffeNet Model caffemodel: bvlc_reference_caffenet.caffemodel caffemodel_url: http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel license: unrestricted diff --git a/models/bvlc_reference_rcnn_ilsvrc13/readme.md b/models/bvlc_reference_rcnn_ilsvrc13/readme.md index 9a11a24d8..12543b2bd 100644 --- a/models/bvlc_reference_rcnn_ilsvrc13/readme.md +++ b/models/bvlc_reference_rcnn_ilsvrc13/readme.md @@ -1,5 +1,5 @@ --- -name: BVLC Reference RCNN ILSVRC13 Model +name: BAIR/BVLC Reference RCNN ILSVRC13 Model caffemodel: bvlc_reference_rcnn_ilsvrc13.caffemodel caffemodel_url: http://dl.caffe.berkeleyvision.org/bvlc_reference_rcnn_ilsvrc13.caffemodel license: unrestricted From 3562698afb4b1f12f51eca752740e279f85714c4 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 12:45:21 -0700 Subject: [PATCH 438/458] drop performance + hardware page and switch to sheet simpler to read and update --- docs/index.md | 9 +++-- docs/performance_hardware.md | 73 ------------------------------------ 2 files changed, 5 insertions(+), 77 deletions(-) delete mode 100644 docs/performance_hardware.md diff --git a/docs/index.md b/docs/index.md index 302a7d56f..bbfd91fc7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,15 +23,14 @@ Thanks to these contributors the framework tracks the state-of-the-art in both c **Speed** makes Caffe perfect for research experiments and industry deployment. Caffe can process **over 60M images per day** with a single NVIDIA K40 GPU\*. -That's 1 ms/image for inference and 4 ms/image for learning. -We believe that Caffe is the fastest convnet implementation available. +That's 1 ms/image for inference and 4 ms/image for learning and more recent library versions and hardware are faster still. +We believe that Caffe is among the fastest convnet implementations available. **Community**: Caffe already powers academic research projects, startup prototypes, and even large-scale industrial applications in vision, speech, and multimedia. Join our community of brewers on the [caffe-users group](https://groups.google.com/forum/#!forum/caffe-users) and [Github](https://github.com/BVLC/caffe/).

-\* With the ILSVRC2012-winning [SuperVision](http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf) model and caching IO. -Consult performance [details](/performance_hardware.html). +\* With the ILSVRC2012-winning [SuperVision](http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf) model and prefetching IO.

## Documentation @@ -50,6 +49,8 @@ BAIR suggests a standard distribution format for Caffe models, and provides trai Guidelines for development and contributing to Caffe. * [API Documentation](/doxygen/annotated.html)
Developer documentation automagically generated from code comments. +* [Benchmarking](https://docs.google.com/spreadsheets/d/1Yp4rqHpT7mKxOPbpzYeUfEFLnELDAgxSSBQKp5uKDGQ/edit#gid=0)
+Comparison of inference and learning for different networks and GPUs. ### Examples diff --git a/docs/performance_hardware.md b/docs/performance_hardware.md deleted file mode 100644 index fbf256842..000000000 --- a/docs/performance_hardware.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Performance and Hardware Configuration ---- - -# Performance and Hardware Configuration - -To measure performance on different NVIDIA GPUs we use CaffeNet, the Caffe reference ImageNet model. - -For training, each time point is 20 iterations/minibatches of 256 images for 5,120 images total. For testing, a 50,000 image validation set is classified. - -**Acknowledgements**: BAIR members are very grateful to NVIDIA for providing several GPUs to conduct this research. - -## NVIDIA K40 - -Performance is best with ECC off and boost clock enabled. While ECC makes a negligible difference in speed, disabling it frees ~1 GB of GPU memory. - -Best settings with ECC off and maximum clock speed in standard Caffe: - -* Training is 26.5 secs / 20 iterations (5,120 images) -* Testing is 100 secs / validation set (50,000 images) - -Best settings with Caffe + [cuDNN acceleration](http://nvidia.com/cudnn): - -* Training is 19.2 secs / 20 iterations (5,120 images) -* Testing is 60.7 secs / validation set (50,000 images) - -Other settings: - -* ECC on, max speed: training 26.7 secs / 20 iterations, test 101 secs / validation set -* ECC on, default speed: training 31 secs / 20 iterations, test 117 secs / validation set -* ECC off, default speed: training 31 secs / 20 iterations, test 118 secs / validation set - -### K40 configuration tips - -For maximum K40 performance, turn off ECC and boost the clock speed (at your own risk). - -To turn off ECC, do - - sudo nvidia-smi -i 0 --ecc-config=0 # repeat with -i x for each GPU ID - -then reboot. - -Set the "persistence" mode of the GPU settings by - - sudo nvidia-smi -pm 1 - -and then set the clock speed with - - sudo nvidia-smi -i 0 -ac 3004,875 # repeat with -i x for each GPU ID - -but note that this configuration resets across driver reloading / rebooting. Include these commands in a boot script to initialize these settings. For a simple fix, add these commands to `/etc/rc.local` (on Ubuntu). - -## NVIDIA Titan - -Training: 26.26 secs / 20 iterations (5,120 images). -Testing: 100 secs / validation set (50,000 images). - -cuDNN Training: 20.25 secs / 20 iterations (5,120 images). -cuDNN Testing: 66.3 secs / validation set (50,000 images). - - -## NVIDIA K20 - -Training: 36.0 secs / 20 iterations (5,120 images). -Testing: 133 secs / validation set (50,000 images). - -## NVIDIA GTX 770 - -Training: 33.0 secs / 20 iterations (5,120 images). -Testing: 129 secs / validation set (50,000 images). - -cuDNN Training: 24.3 secs / 20 iterations (5,120 images). -cuDNN Testing: 104 secs / validation set (50,000 images). From 0f5bfc34e0b37b9ab3437d6755eb04a8dc9e8656 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 12:46:56 -0700 Subject: [PATCH 439/458] favor notebook examples as more clear and popular --- docs/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/index.md b/docs/index.md index bbfd91fc7..82eb059e3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -52,13 +52,6 @@ Developer documentation automagically generated from code comments. * [Benchmarking](https://docs.google.com/spreadsheets/d/1Yp4rqHpT7mKxOPbpzYeUfEFLnELDAgxSSBQKp5uKDGQ/edit#gid=0)
Comparison of inference and learning for different networks and GPUs. -### Examples - -{% assign examples = site.pages | where:'category','example' | sort: 'priority' %} -{% for page in examples %} --
{{page.title}}
{{page.description}}
-{% endfor %} - ### Notebook Examples {% assign notebooks = site.pages | where:'category','notebook' | sort: 'priority' %} @@ -66,6 +59,13 @@ Comparison of inference and learning for different networks and GPUs. -
{{page.title}}
{{page.description}}
{% endfor %} +### Command Line Examples + +{% assign examples = site.pages | where:'category','example' | sort: 'priority' %} +{% for page in examples %} +-
{{page.title}}
{{page.description}}
+{% endfor %} + ## Citing Caffe Please cite Caffe in your publications if it helps your research: From 2158bbb2151049dec2486b720c0a351164a0eb6b Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 12:50:19 -0700 Subject: [PATCH 440/458] model zoo: point out wiki link immediately, explain manual editing --- docs/model_zoo.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/model_zoo.md b/docs/model_zoo.md index f9078718a..3f77e8257 100644 --- a/docs/model_zoo.md +++ b/docs/model_zoo.md @@ -3,7 +3,7 @@ title: Model Zoo --- # Caffe Model Zoo -Lots of researchers and engineers have made Caffe models for different tasks with all kinds of architectures and data. +Lots of researchers and engineers have made Caffe models for different tasks with all kinds of architectures and data: check out the [model zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo)! These models are learned and applied for problems ranging from simple regression, to large-scale visual classification, to Siamese networks for image similarity, to speech and robotics applications. To help share these models, we introduce the model zoo framework: @@ -24,7 +24,7 @@ Each one of these can be downloaded by running `scripts/download_model_binary.py - **BAIR Reference R-CNN ILSVRC-2013** in `models/bvlc_reference_rcnn_ilsvrc13`: pure Caffe implementation of [R-CNN](https://github.com/rbgirshick/rcnn) as described by Girshick et al. in CVPR 2014. (Trained by Ross Girshick @rbgirshick) - **BAIR GoogLeNet** in `models/bvlc_googlenet`: GoogLeNet trained on ILSVRC 2012, almost exactly as described in [Going Deeper with Convolutions](http://arxiv.org/abs/1409.4842) by Szegedy et al. in ILSVRC 2014. (Trained by Sergio Guadarrama @sguada) -**Community models** made by Caffe users are posted to a publicly editable [wiki page](https://github.com/BVLC/caffe/wiki/Model-Zoo). +**Community models** made by Caffe users are posted to a publicly editable [model zoo wiki page](https://github.com/BVLC/caffe/wiki/Model-Zoo). These models are subject to conditions of their respective authors such as citation and license. Thank you for sharing your models! @@ -42,6 +42,8 @@ A caffe model is distributed as a directory containing: - License information. - [optional] Other helpful scripts. +This simple format can be handled through bundled scripts or manually if need be. + ### Hosting model info Github Gist is a good format for model info distribution because it can contain multiple files, is versionable, and has in-browser syntax highlighting and markdown rendering. From 414b74c06038c17924745b68954ef10827fe1edd Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 13:19:53 -0700 Subject: [PATCH 441/458] add missing names to BAIR roster --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 82eb059e3..db8eaffbe 100644 --- a/docs/index.md +++ b/docs/index.md @@ -96,7 +96,7 @@ The core Caffe developers offer [consulting services](mailto:caffe-coldpress@goo The BAIR Caffe developers would like to thank NVIDIA for GPU donation, A9 and Amazon Web Services for a research grant in support of Caffe development and reproducible research in deep learning, and BAIR PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for guidance. The BAIR members who have contributed to Caffe are (alphabetical by first name): -[Eric Tzeng](https://github.com/erictzeng), [Evan Shelhamer](http://imaginarynumber.net/), [Jeff Donahue](http://jeffdonahue.com/), [Jon Long](https://github.com/longjon), [Ross Girshick](http://www.cs.berkeley.edu/~rbg/), [Sergey Karayev](http://sergeykarayev.com/), [Sergio Guadarrama](http://www.eecs.berkeley.edu/~sguada/), and [Yangqing Jia](http://daggerfs.com/). +[Carl Doersch](http://www.carldoersch.com/), [Eric Tzeng](https://github.com/erictzeng), [Evan Shelhamer](http://imaginarynumber.net/), [Jeff Donahue](http://jeffdonahue.com/), [Jon Long](https://github.com/longjon), [Philipp Krähenbühl](http://www.philkr.net/), [Ronghang Hu](http://ronghanghu.com/), [Ross Girshick](http://www.cs.berkeley.edu/~rbg/), [Sergey Karayev](http://sergeykarayev.com/), [Sergio Guadarrama](http://www.eecs.berkeley.edu/~sguada/), [Takuya Narihira](https://github.com/tnarihi), and [Yangqing Jia](http://daggerfs.com/). The open-source community plays an important and growing role in Caffe's development. Check out the Github [project pulse](https://github.com/BVLC/caffe/pulse) for recent activity and the [contributors](https://github.com/BVLC/caffe/graphs/contributors) for the full list. From e90a6a6ca29423afb15f39adb1157bff9e6f8655 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 13:24:30 -0700 Subject: [PATCH 442/458] retire caffe-dev and caffe-coldpress dev has diffused into the community from the original Caffe core --- docs/index.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/index.md b/docs/index.md index db8eaffbe..0e21ae821 100644 --- a/docs/index.md +++ b/docs/index.md @@ -86,11 +86,6 @@ Join the [caffe-users group](https://groups.google.com/forum/#!forum/caffe-users Framework development discussions and thorough bug reports are collected on [Issues](https://github.com/BVLC/caffe/issues). -Contact [caffe-dev](mailto:caffe-dev@googlegroups.com) if you have a confidential proposal for the framework *and the ability to act on it*. -Requests for features, explanations, or personal help will be ignored; post to [caffe-users](https://groups.google.com/forum/#!forum/caffe-users) instead. - -The core Caffe developers offer [consulting services](mailto:caffe-coldpress@googlegroups.com) for appropriate projects. - ## Acknowledgements The BAIR Caffe developers would like to thank NVIDIA for GPU donation, A9 and Amazon Web Services for a research grant in support of Caffe development and reproducible research in deep learning, and BAIR PI [Trevor Darrell](http://www.eecs.berkeley.edu/~trevor/) for guidance. From 8985818e4fbb5fc207e4f383c63c28d80fd286f2 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 13:28:24 -0700 Subject: [PATCH 443/458] track publications by google scholar and not the wiki --- docs/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 0e21ae821..3385747c5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -77,8 +77,7 @@ Please cite Caffe in your publications if it helps your research: Year = {2014} } -If you do publish a paper where Caffe helped your research, we encourage you to update the [publications wiki](https://github.com/BVLC/caffe/wiki/Publications). -Citations are also tracked automatically by [Google Scholar](http://scholar.google.com/scholar?oi=bibs&hl=en&cites=17333247995453974016). +If you do publish a paper where Caffe helped your research, we encourage you to cite the framework for tracking by [Google Scholar](https://scholar.google.com/citations?view_op=view_citation&hl=en&citation_for_view=-ltRSM0AAAAJ:u5HHmVD_uO8C). ## Contacting Us From 8b8f2dd40ba87543f066cb157c6d65dd8187253f Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 15:26:30 -0700 Subject: [PATCH 444/458] link to new full-day crash course --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 3385747c5..b633f7cfd 100644 --- a/docs/index.md +++ b/docs/index.md @@ -35,8 +35,8 @@ Join our community of brewers on the [caffe-users group](https://groups.google.c ## Documentation -- [DIY Deep Learning for Vision with Caffe](https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p)
-Tutorial presentation. +- [DIY Deep Learning for Vision with Caffe](https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p) and [Caffe in a Day](https://docs.google.com/presentation/d/1HxGdeq8MPktHaPb-rlmYYQ723iWzq9ur6Gjo71YiG0Y/edit#slide=id.gc2fcdcce7_216_0)
+Tutorial presentation of the framework and a full-day crash course. - [Tutorial Documentation](/tutorial)
Practical guide and framework reference. - [arXiv / ACM MM '14 paper](http://arxiv.org/abs/1408.5093)
From 49761d34d18b7063af995b13ecca0fee1bdaf02c Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 15:32:50 -0700 Subject: [PATCH 445/458] Caffe 1.0 --- CMakeLists.txt | 4 ++-- Makefile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c52ff4664..08f56a33a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ endif() project(Caffe C CXX) # ---[ Caffe version -set(CAFFE_TARGET_VERSION "1.0.0-rc5" CACHE STRING "Caffe logical version") -set(CAFFE_TARGET_SOVERSION "1.0.0-rc5" CACHE STRING "Caffe soname version") +set(CAFFE_TARGET_VERSION "1.0.0" CACHE STRING "Caffe logical version") +set(CAFFE_TARGET_SOVERSION "1.0.0" CACHE STRING "Caffe soname version") add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION}) # ---[ Using cmake scripts and modules diff --git a/Makefile b/Makefile index 77900b69b..4d324160c 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ LIB_BUILD_DIR := $(BUILD_DIR)/lib STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a DYNAMIC_VERSION_MAJOR := 1 DYNAMIC_VERSION_MINOR := 0 -DYNAMIC_VERSION_REVISION := 0-rc5 +DYNAMIC_VERSION_REVISION := 0 DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so #DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR) DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION) From 33f86122970392fcda19ef80ed5cd349279b896d Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Tue, 18 Apr 2017 18:22:38 -0700 Subject: [PATCH 446/458] Rewrite crop cuda kernel --- include/caffe/layers/crop_layer.hpp | 6 +- src/caffe/layers/crop_layer.cpp | 21 +++-- src/caffe/layers/crop_layer.cu | 122 +++++++++++----------------- 3 files changed, 69 insertions(+), 80 deletions(-) diff --git a/include/caffe/layers/crop_layer.hpp b/include/caffe/layers/crop_layer.hpp index c4fda1220..5219fa5cb 100644 --- a/include/caffe/layers/crop_layer.hpp +++ b/include/caffe/layers/crop_layer.hpp @@ -41,13 +41,15 @@ class CropLayer : public Layer { virtual void Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom); - vector offsets; + Blob offsets; + Blob src_strides_; + Blob dest_strides_; private: // Recursive copy function. void crop_copy(const vector*>& bottom, const vector*>& top, - const vector& offsets, + const int* offsets, vector indices, int cur_dim, const Dtype* src_data, diff --git a/src/caffe/layers/crop_layer.cpp b/src/caffe/layers/crop_layer.cpp index ef8c177c4..65ea8f8b7 100644 --- a/src/caffe/layers/crop_layer.cpp +++ b/src/caffe/layers/crop_layer.cpp @@ -40,8 +40,10 @@ void CropLayer::Reshape(const vector*>& bottom, const int start_axis = bottom[0]->CanonicalAxisIndex(param.axis()); // Initialize offsets to 0 and the new shape to the current shape of the data. - offsets = vector(input_dim, 0); vector new_shape(bottom[0]->shape()); + vector offsets_shape(1, input_dim); + offsets.Reshape(offsets_shape); + int* offset_data = offsets.mutable_cpu_data(); // Determine crop offsets and the new shape post-crop. for (int i = 0; i < input_dim; ++i) { @@ -63,15 +65,22 @@ void CropLayer::Reshape(const vector*>& bottom, << "size " << bottom[1]->shape(i) << " and offset " << crop_offset; } new_shape[i] = new_size; - offsets[i] = crop_offset; + offset_data[i] = crop_offset; } top[0]->Reshape(new_shape); + // Compute strides + src_strides_.Reshape(offsets_shape); + dest_strides_.Reshape(offsets_shape); + for (int i = 0; i < input_dim; ++i) { + src_strides_.mutable_cpu_data()[i] = bottom[0]->count(i + 1, input_dim); + dest_strides_.mutable_cpu_data()[i] = top[0]->count(i + 1, input_dim); + } } template void CropLayer::crop_copy(const vector*>& bottom, const vector*>& top, - const vector& offsets, + const int* offsets, vector indices, int cur_dim, const Dtype* src_data, @@ -115,7 +124,8 @@ void CropLayer::Forward_cpu(const vector*>& bottom, std::vector indices(top[0]->num_axes(), 0); const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = top[0]->mutable_cpu_data(); - crop_copy(bottom, top, offsets, indices, 0, bottom_data, top_data, true); + crop_copy(bottom, top, offsets.cpu_data(), indices, 0, bottom_data, top_data, + true); } template @@ -127,7 +137,8 @@ void CropLayer::Backward_cpu(const vector*>& top, if (propagate_down[0]) { caffe_set(bottom[0]->count(), static_cast(0), bottom_diff); std::vector indices(top[0]->num_axes(), 0); - crop_copy(bottom, top, offsets, indices, 0, top_diff, bottom_diff, false); + crop_copy(bottom, top, offsets.cpu_data(), indices, 0, top_diff, + bottom_diff, false); } } diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index 677077cdd..a400f333e 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -4,90 +4,62 @@ namespace caffe { -// Copy (one line per thread) from one array to another, with arbitrary -// strides in the last two dimensions. +__device__ int compute_uncropped_index( + int index, + const int ndims, + const int* src_strides, + const int* dest_strides, + const int* offsets) { + int dest_index = index; + int src_index = 0; + for (int i = 0; i < ndims; ++i) { + int coord = dest_index / dest_strides[i]; + dest_index -= coord * dest_strides[i]; + src_index += src_strides[i] * (coord + offsets[i]); + } + return src_index; +} + template -__global__ void copy_kernel(const int n, const int height, const int width, - const int src_inner_stride, - const int dest_inner_stride, +__global__ void crop_kernel_forward(const int nthreads, + const int ndims, + const int* src_strides, + const int* dest_strides, + const int* offsets, const Dtype* src, Dtype* dest) { - CUDA_KERNEL_LOOP(index, n) { - int src_start = index * src_inner_stride; - int dest_start = index * dest_inner_stride; - for (int i = 0; i < width; ++i) { - dest[dest_start + i] = src[src_start + i]; - } + CUDA_KERNEL_LOOP(index, nthreads) { + int src_index = compute_uncropped_index( + index, ndims, src_strides, dest_strides, offsets); + dest[index] = src[src_index]; } } template -void CropLayer::crop_copy_gpu(const vector*>& bottom, - const vector*>& top, - const vector& offsets, - vector indices, - int cur_dim, - const Dtype* src_data, - Dtype* dest_data, - bool is_forward) { - if (cur_dim + 2 < top[0]->num_axes()) { - // We are not yet at the final dimension, call copy recursivley - for (int i = 0; i < top[0]->shape(cur_dim); ++i) { - indices[cur_dim] = i; - crop_copy_gpu(bottom, top, offsets, indices, cur_dim+1, - src_data, dest_data, is_forward); - } - } else { - // We are at the last two dimensions, which are stored continuously in - // memory. With (N,C,H,W) - // (0,1,2,3) cur_dim -> H - // cur_dim+1 -> W - const int lines = top[0]->shape(cur_dim); - const int height = top[0]->shape(cur_dim); - const int width = top[0]->shape(cur_dim+1); - std::vector ind_off(cur_dim+2, 0); - for (int j = 0; j < cur_dim; ++j) { - ind_off[j] = indices[j] + offsets[j]; - } - ind_off[cur_dim] = offsets[cur_dim]; - ind_off[cur_dim+1] = offsets[cur_dim+1]; - // Compute copy strides - const int src_inner_stride = bottom[0]->shape(cur_dim+1); - const int dest_inner_stride = top[0]->shape(cur_dim+1); - - if (is_forward) { - const Dtype* bottom_data = bottom[0]->gpu_data() + - bottom[0]->offset(ind_off); - Dtype* top_data = top[0]->mutable_gpu_data() + - top[0]->offset(indices); - // NOLINT_NEXT_LINE(whitespace/operators) - copy_kernel<<>>( - lines, height, width, - src_inner_stride, - dest_inner_stride, - bottom_data, top_data); - - } else { - const Dtype* top_diff = top[0]->gpu_diff() + - top[0]->offset(indices); - Dtype* bottom_diff = bottom[0]->mutable_gpu_diff() + - bottom[0]->offset(ind_off); - // NOLINT_NEXT_LINE(whitespace/operators) - copy_kernel<<>>( - lines, height, width, - dest_inner_stride, - src_inner_stride, - top_diff, bottom_diff); - } +__global__ void crop_kernel_backward(const int nthreads, + const int ndims, + const int* src_strides, + const int* dest_strides, + const int* offsets, + Dtype* src, const Dtype* dest) { + CUDA_KERNEL_LOOP(index, nthreads) { + int src_index = compute_uncropped_index( + index, ndims, src_strides, dest_strides, offsets); + src[src_index] = dest[index]; } } template void CropLayer::Forward_gpu(const vector*>& bottom, const vector*>& top) { - std::vector indices(top[0]->num_axes(), 0); const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); - crop_copy_gpu(bottom, top, offsets, indices, 0, bottom_data, top_data, true); + int n = top[0]->count(); + crop_kernel_forward<<>>(n, + bottom[0]->num_axes(), + src_strides_.gpu_data(), + dest_strides_.gpu_data(), + offsets.gpu_data(), + bottom_data, top_data); } template @@ -95,12 +67,16 @@ void CropLayer::Backward_gpu(const vector*>& top, const vector& propagate_down, const vector*>& bottom) { const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = bottom[0]->mutable_gpu_diff(); + int n = top[0]->count(); if (propagate_down[0]) { caffe_gpu_set(bottom[0]->count(), static_cast(0), bottom_diff); - std::vector indices(top[0]->num_axes(), 0); - crop_copy_gpu(bottom, top, offsets, indices, 0, top_diff, bottom_diff, - false); + crop_kernel_backward<<>>(n, + bottom[0]->num_axes(), + src_strides_.gpu_data(), + dest_strides_.gpu_data(), + offsets.gpu_data(), + bottom_diff, top_diff); } } From cd1696d00b995a1d8567cb6f3ad7f65ec4df4176 Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Tue, 18 Apr 2017 18:48:26 -0700 Subject: [PATCH 447/458] Fix crop layer lint errors --- src/caffe/layers/crop_layer.cu | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/caffe/layers/crop_layer.cu b/src/caffe/layers/crop_layer.cu index a400f333e..4ece9cd17 100644 --- a/src/caffe/layers/crop_layer.cu +++ b/src/caffe/layers/crop_layer.cu @@ -54,6 +54,7 @@ void CropLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = top[0]->mutable_gpu_data(); int n = top[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) crop_kernel_forward<<>>(n, bottom[0]->num_axes(), src_strides_.gpu_data(), @@ -71,6 +72,7 @@ void CropLayer::Backward_gpu(const vector*>& top, if (propagate_down[0]) { caffe_gpu_set(bottom[0]->count(), static_cast(0), bottom_diff); + // NOLINT_NEXT_LINE(whitespace/operators) crop_kernel_backward<<>>(n, bottom[0]->num_axes(), src_strides_.gpu_data(), From ec35395e131a0d5e7c55cbd74dadbd46a49a645c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Malte=20St=C3=A6r=20Nissen?= Date: Thu, 4 May 2017 14:33:40 +0200 Subject: [PATCH 448/458] Handling destruction of empty Net objects --- matlab/+caffe/Net.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/matlab/+caffe/Net.m b/matlab/+caffe/Net.m index 349e060eb..bb99ec890 100644 --- a/matlab/+caffe/Net.m +++ b/matlab/+caffe/Net.m @@ -69,7 +69,9 @@ self.blob_names = self.attributes.blob_names; end function delete (self) - caffe_('delete_net', self.hNet_self); + if ~isempty(self.hNet_self) + caffe_('delete_net', self.hNet_self); + end end function layer = layers(self, layer_name) CHECK(ischar(layer_name), 'layer_name must be a string'); From b7e2b99c7f0aeeb8e24046f8cbf5212065b9ccdf Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 12 May 2017 10:06:51 -0700 Subject: [PATCH 449/458] Downgrade boost requirement from 1.55 to 1.54 --- cmake/Dependencies.cmake | 2 +- scripts/travis/install-deps.sh | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake index 4a5bac471..c48255c89 100644 --- a/cmake/Dependencies.cmake +++ b/cmake/Dependencies.cmake @@ -5,7 +5,7 @@ set(Caffe_DEFINITIONS "") set(Caffe_COMPILE_OPTIONS "") # ---[ Boost -find_package(Boost 1.55 REQUIRED COMPONENTS system thread filesystem) +find_package(Boost 1.54 REQUIRED COMPONENTS system thread filesystem) list(APPEND Caffe_INCLUDE_DIRS PUBLIC ${Boost_INCLUDE_DIRS}) list(APPEND Caffe_LINKER_LIBS PUBLIC ${Boost_LIBRARIES}) diff --git a/scripts/travis/install-deps.sh b/scripts/travis/install-deps.sh index dac5d2f9d..2fa2a74a4 100755 --- a/scripts/travis/install-deps.sh +++ b/scripts/travis/install-deps.sh @@ -9,10 +9,10 @@ apt-get -y update apt-get install -y --no-install-recommends \ build-essential \ graphviz \ - libboost-filesystem1.55-dev \ - libboost-python1.55-dev \ - libboost-system1.55-dev \ - libboost-thread1.55-dev \ + libboost-filesystem-dev \ + libboost-python-dev \ + libboost-system-dev \ + libboost-thread-dev \ libgflags-dev \ libgoogle-glog-dev \ libhdf5-serial-dev \ From 30a2ab7e50430911f37ddf981e67e4f36f662f14 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Mon, 15 May 2017 02:16:19 +0000 Subject: [PATCH 450/458] cmake: rename libproto.a -> libcaffeproto.a --- cmake/ConfigGen.cmake | 2 +- src/caffe/CMakeLists.txt | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmake/ConfigGen.cmake b/cmake/ConfigGen.cmake index ad91f5421..09bb09b4f 100644 --- a/cmake/ConfigGen.cmake +++ b/cmake/ConfigGen.cmake @@ -33,7 +33,7 @@ function(caffe_generate_export_configs) configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/CaffeConfig.cmake" @ONLY) # Add targets to the build-tree export set - export(TARGETS caffe proto FILE "${PROJECT_BINARY_DIR}/CaffeTargets.cmake") + export(TARGETS caffe caffeproto FILE "${PROJECT_BINARY_DIR}/CaffeTargets.cmake") export(PACKAGE Caffe) # ---[ Configure install-tree CaffeConfig.cmake file ]--- diff --git a/src/caffe/CMakeLists.txt b/src/caffe/CMakeLists.txt index b9152e921..4a8055685 100644 --- a/src/caffe/CMakeLists.txt +++ b/src/caffe/CMakeLists.txt @@ -3,12 +3,12 @@ file(GLOB proto_files proto/*.proto) caffe_protobuf_generate_cpp_py(${proto_gen_folder} proto_srcs proto_hdrs proto_python ${proto_files}) # include python files either to force generation -add_library(proto STATIC ${proto_hdrs} ${proto_srcs} ${proto_python}) -caffe_default_properties(proto) -target_link_libraries(proto PUBLIC ${PROTOBUF_LIBRARIES}) -target_include_directories(proto PUBLIC ${PROTOBUF_INCLUDE_DIR}) +add_library(caffeproto STATIC ${proto_hdrs} ${proto_srcs} ${proto_python}) +caffe_default_properties(caffeproto) +target_link_libraries(caffeproto PUBLIC ${PROTOBUF_LIBRARIES}) +target_include_directories(caffeproto PUBLIC ${PROTOBUF_INCLUDE_DIR}) -list(INSERT Caffe_LINKER_LIBS 0 PUBLIC proto) # note, crucial to prepend! +list(INSERT Caffe_LINKER_LIBS 0 PUBLIC caffeproto) # note, crucial to prepend! # --[ Caffe library @@ -42,7 +42,7 @@ set_target_properties(caffe PROPERTIES # ---[ Install install(DIRECTORY ${Caffe_INCLUDE_DIR}/caffe DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES ${proto_hdrs} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/caffe/proto) -install(TARGETS caffe proto EXPORT CaffeTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS caffe caffeproto EXPORT CaffeTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}) file(WRITE ${PROJECT_BINARY_DIR}/__init__.py) list(APPEND proto_python ${PROJECT_BINARY_DIR}/__init__.py) From 83814da36d5a44039ddc35f58f9b341e9d1bd935 Mon Sep 17 00:00:00 2001 From: Zhou Mo Date: Mon, 15 May 2017 03:04:47 +0000 Subject: [PATCH 451/458] docs/debian guide: update compiler combination table --- docs/install_apt_debian.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/install_apt_debian.md b/docs/install_apt_debian.md index 65fe70924..bd91124a8 100644 --- a/docs/install_apt_debian.md +++ b/docs/install_apt_debian.md @@ -96,18 +96,22 @@ Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. Some users may find their favorate compiler doesn't work with CUDA. ``` -CXX compiler | CUDA 7.5 | CUDA 8.0 | --------------+------------+------------+- -GCC-7 | ? | ? | -GCC-6 | ✘ | ✘ | -GCC-5 | ✔ [1] | ✔ | -CLANG-4.0 | ? | ? | -CLANG-3.9 | ✘ | ✘ | -CLANG-3.8 | ? | ✔ | +CXX compiler | CUDA 7.5 | CUDA 8.0 | CUDA 9.0 | +-------------+------------+------------+------------+ +GCC-8 | ? | ? | ? | +GCC-7 | ? | ? | ? | +GCC-6 | ✘ | ✘ | ✔ | +GCC-5 | ✔ [1] | ✔ | ✔ | +-------------+------------+------------+------------+ +CLANG-4.0 | ? | ? | ? | +CLANG-3.9 | ✘ | ✘ | ✔ | +CLANG-3.8 | ? | ✔ | ✔ | ``` `[1]` CUDA 7.5 's `host_config.h` must be patched before working with GCC-5. +`[2]` CUDA 9.0: https://devblogs.nvidia.com/parallelforall/cuda-9-features-revealed/ + BTW, please forget the GCC-4.X series, since its `libstdc++` ABI is not compatible with GCC-5's. You may encounter failure linking GCC-4.X object files against GCC-5 libraries. (See https://wiki.debian.org/GCC5 ) From 264cf199e4e8bc44bb97762b1018137704157c2c Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Tue, 13 Jun 2017 11:59:26 -0700 Subject: [PATCH 452/458] List branches in readme --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 0ae3616b4..c40aee65c 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,14 @@ Check out the [project site](http://caffe.berkeleyvision.org) for all the detail and step-by-step examples. +## Custom distributions + +- [Intel optimized branch](https://github.com/BVLC/caffe/tree/intel) for CPU, in particular Xeon processors (HSW, BDW, Xeon Phi). +- [OpenCL Caffe](https://github.com/BVLC/caffe/tree/opencl) e.g. for AMD or Intel devices. +- [Windows Caffe](https://github.com/BVLC/caffe/tree/windows) + +## Community + [![Join the chat at https://gitter.im/BVLC/caffe](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/BVLC/caffe?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Please join the [caffe-users group](https://groups.google.com/forum/#!forum/caffe-users) or [gitter chat](https://gitter.im/BVLC/caffe) to ask questions and talk about methods and models. From 4efdf7ee49cffefdd7ea099c00dc5ea327640f04 Mon Sep 17 00:00:00 2001 From: Cyprien Noel Date: Tue, 20 Jun 2017 14:20:42 -0700 Subject: [PATCH 453/458] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c40aee65c..5148c69d3 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ and step-by-step examples. ## Custom distributions -- [Intel optimized branch](https://github.com/BVLC/caffe/tree/intel) for CPU, in particular Xeon processors (HSW, BDW, Xeon Phi). + - [Intel Caffe](https://github.com/BVLC/caffe/tree/intel) (Optimized for CPU and support for multi-node), in particular Xeon processors (HSW, BDW, Xeon Phi). - [OpenCL Caffe](https://github.com/BVLC/caffe/tree/opencl) e.g. for AMD or Intel devices. - [Windows Caffe](https://github.com/BVLC/caffe/tree/windows) From 9bf147db5c53c83a1b4eb5bfd4fed8e9863ce95d Mon Sep 17 00:00:00 2001 From: xizero00 Date: Sat, 22 Jul 2017 16:03:42 +0800 Subject: [PATCH 454/458] modify Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4d324160c..ad173f807 100644 --- a/Makefile +++ b/Makefile @@ -178,7 +178,7 @@ ifneq ($(CPU_ONLY), 1) LIBRARIES := cudart cublas curand endif -LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 +LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial # handle IO dependencies USE_LEVELDB ?= 1 From fddf7a182b59224776f61d6c4d8d0c805a9e269b Mon Sep 17 00:00:00 2001 From: xizero00 Date: Sat, 22 Jul 2017 17:23:22 +0800 Subject: [PATCH 455/458] modify data_heatmap and euclidean_loss_heatmap --- src/caffe/layers/data_heatmap.cpp | 11 ++++++----- src/caffe/layers/euclidean_loss_heatmap_layer.cpp | 3 ++- src/caffe/proto/caffe.proto | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/caffe/layers/data_heatmap.cpp b/src/caffe/layers/data_heatmap.cpp index ce249985c..504cd831f 100644 --- a/src/caffe/layers/data_heatmap.cpp +++ b/src/caffe/layers/data_heatmap.cpp @@ -6,8 +6,9 @@ #include #include -#include "caffe/data_layers.hpp" + #include "caffe/layer.hpp" +#include "caffe/layers/base_data_layer.hpp" #include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" #include "caffe/util/rng.hpp" @@ -244,8 +245,8 @@ void DataHeatmapLayer::DataLayerSetUp(const vector*>& bottom, // init data this->transformed_data_.Reshape(batchsize, this->datum_channels_, outsize, outsize); top[0]->Reshape(batchsize, this->datum_channels_, outsize, outsize); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) - this->prefetch_[i].data_.Reshape(batchsize, this->datum_channels_, outsize, outsize); + for (int i = 0; i < this->prefetch_.size(); ++i) + this->prefetch_[i]->data_.Reshape(batchsize, this->datum_channels_, outsize, outsize); this->datum_size_ = this->datum_channels_ * outsize * outsize; // init label @@ -256,8 +257,8 @@ void DataHeatmapLayer::DataLayerSetUp(const vector*>& bottom, label_num_channels = img_list_[0][0].second.first.size(); label_num_channels /= 2; top[1]->Reshape(label_batchsize, label_num_channels, label_height, label_width); - for (int i = 0; i < this->PREFETCH_COUNT; ++i) - this->prefetch_[i].label_.Reshape(label_batchsize, label_num_channels, label_height, label_width); + for (int i = 0; i < this->prefetch_.size(); ++i) + this->prefetch_[i]->label_.Reshape(label_batchsize, label_num_channels, label_height, label_width); LOG(INFO) << "output data size: " << top[0]->num() << "," << top[0]->channels() << "," << top[0]->height() << "," << top[0]->width(); LOG(INFO) << "output label size: " << top[1]->num() << "," << top[1]->channels() << "," << top[1]->height() << "," << top[1]->width(); diff --git a/src/caffe/layers/euclidean_loss_heatmap_layer.cpp b/src/caffe/layers/euclidean_loss_heatmap_layer.cpp index 8f8c5ed1d..863dd763d 100644 --- a/src/caffe/layers/euclidean_loss_heatmap_layer.cpp +++ b/src/caffe/layers/euclidean_loss_heatmap_layer.cpp @@ -3,7 +3,8 @@ #include "caffe/layer.hpp" #include "caffe/util/io.hpp" #include "caffe/util/math_functions.hpp" -#include "caffe/vision_layers.hpp" +#include "caffe/layers/loss_layer.hpp" +//#include "caffe/vision_layers.hpp" #include #include diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 801d4014f..a6905b1f2 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -308,7 +308,7 @@ message ParamSpec { // NOTE // Update the next available ID when you add a new LayerParameter field. // -// LayerParameter next available layer-specific ID: 147 (last added: recurrent_param) +// LayerParameter next available layer-specific ID: 148 (last added: dataheatmap_param) message LayerParameter { optional string name = 1; // the layer name optional string type = 2; // the layer type @@ -381,7 +381,7 @@ message LayerParameter { optional EmbedParameter embed_param = 137; optional ExpParameter exp_param = 111; optional FlattenParameter flatten_param = 135; - optional HeatmapDataParameter heatmap_data_param = 140; + optional HeatmapDataParameter heatmap_data_param = 147; optional HDF5DataParameter hdf5_data_param = 112; optional HDF5OutputParameter hdf5_output_param = 113; optional HingeLossParameter hinge_loss_param = 114; From e0da980c4c86c71cd9c83fed4e9f9887c1a8ce92 Mon Sep 17 00:00:00 2001 From: xizero00 Date: Sat, 22 Jul 2017 17:23:41 +0800 Subject: [PATCH 456/458] modify readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index bbf8480f1..2b6321074 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # Caffe-heatmap +I merge the latest caffe to support CUDNN 5 and 6 + This is a fork of Caffe that enables training of heatmap regressor ConvNets for the general problem of regressing (x,y) positions in images. From 1cd0ad453bd5c66f8a4387352a41de4da8256642 Mon Sep 17 00:00:00 2001 From: xizero00 Date: Sat, 22 Jul 2017 17:24:54 +0800 Subject: [PATCH 457/458] readme --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 2b6321074..bbf8480f1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ # Caffe-heatmap -I merge the latest caffe to support CUDNN 5 and 6 - This is a fork of Caffe that enables training of heatmap regressor ConvNets for the general problem of regressing (x,y) positions in images. From 42dbe04b8f9b71a8c245e91c33e0a6509a9ad65f Mon Sep 17 00:00:00 2001 From: xizero00 Date: Sat, 22 Jul 2017 17:30:06 +0800 Subject: [PATCH 458/458] fix hdf5 error in ubuntu --- Makefile.config.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.config.example b/Makefile.config.example index d552b38a9..6e53bf7b9 100644 --- a/Makefile.config.example +++ b/Makefile.config.example @@ -91,7 +91,7 @@ PYTHON_LIB := /usr/lib # WITH_PYTHON_LAYER := 1 # Whatever else you find you need goes here. -INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include +INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib # If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies